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 2203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2214 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, observer.navigation_type()); | 2214 EXPECT_EQ(NAVIGATION_TYPE_EXISTING_PAGE, observer.navigation_type()); |
2215 } | 2215 } |
2216 | 2216 |
2217 // Tests navigation via link click within a subframe. A new navigation entry | 2217 // Tests navigation via link click within a subframe. A new navigation entry |
2218 // should be created. | 2218 // should be created. |
2219 TEST_F(NavigationControllerTest, NewSubframe) { | 2219 TEST_F(NavigationControllerTest, NewSubframe) { |
2220 NavigationControllerImpl& controller = controller_impl(); | 2220 NavigationControllerImpl& controller = controller_impl(); |
2221 TestNotificationTracker notifications; | 2221 TestNotificationTracker notifications; |
2222 RegisterForAllNavNotifications(¬ifications, &controller); | 2222 RegisterForAllNavNotifications(¬ifications, &controller); |
2223 | 2223 |
2224 const GURL url1("http://foo1"); | 2224 const GURL url1("http://foo1"); |
lunalu1
2017/04/05 22:30:03
This might not be necessary, but I see this patter
| |
2225 main_test_rfh()->NavigateAndCommitRendererInitiated(true, url1); | 2225 main_test_rfh()->NavigateAndCommitRendererInitiated(true, url1); |
2226 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2226 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2227 navigation_entry_committed_counter_ = 0; | 2227 navigation_entry_committed_counter_ = 0; |
2228 | 2228 |
2229 // Prereq: add a subframe with an initial auto-subframe navigation. | 2229 // Prereq: add a subframe with an initial auto-subframe navigation. |
2230 std::string unique_name("uniqueName0"); | 2230 std::string unique_name("uniqueName0"); |
2231 main_test_rfh()->OnCreateChildFrame( | 2231 main_test_rfh()->OnCreateChildFrame( |
2232 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 2232 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2233 std::string(), unique_name, blink::WebSandboxFlags::None, | 2233 std::string(), unique_name, blink::WebSandboxFlags::None, |
2234 FrameOwnerProperties()); | 2234 ParsedFeaturePolicyHeader(), FrameOwnerProperties()); |
2235 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 2235 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
2236 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 2236 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
2237 const GURL subframe_url("http://foo1/subframe"); | 2237 const GURL subframe_url("http://foo1/subframe"); |
2238 { | 2238 { |
2239 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2239 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2240 params.nav_entry_id = 0; | 2240 params.nav_entry_id = 0; |
2241 params.frame_unique_name = unique_name; | 2241 params.frame_unique_name = unique_name; |
2242 params.did_create_new_entry = false; | 2242 params.did_create_new_entry = false; |
2243 params.url = subframe_url; | 2243 params.url = subframe_url; |
2244 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2244 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2304 const GURL url1("http://foo/1"); | 2304 const GURL url1("http://foo/1"); |
2305 main_test_rfh()->NavigateAndCommitRendererInitiated(true, url1); | 2305 main_test_rfh()->NavigateAndCommitRendererInitiated(true, url1); |
2306 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2306 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2307 navigation_entry_committed_counter_ = 0; | 2307 navigation_entry_committed_counter_ = 0; |
2308 | 2308 |
2309 // Add a subframe and navigate it. | 2309 // Add a subframe and navigate it. |
2310 std::string unique_name0("uniqueName0"); | 2310 std::string unique_name0("uniqueName0"); |
2311 main_test_rfh()->OnCreateChildFrame( | 2311 main_test_rfh()->OnCreateChildFrame( |
2312 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 2312 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2313 std::string(), unique_name0, blink::WebSandboxFlags::None, | 2313 std::string(), unique_name0, blink::WebSandboxFlags::None, |
2314 FrameOwnerProperties()); | 2314 ParsedFeaturePolicyHeader(), FrameOwnerProperties()); |
2315 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 2315 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
2316 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 2316 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
2317 const GURL url2("http://foo/2"); | 2317 const GURL url2("http://foo/2"); |
2318 { | 2318 { |
2319 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2319 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2320 params.nav_entry_id = 0; | 2320 params.nav_entry_id = 0; |
2321 params.frame_unique_name = unique_name0; | 2321 params.frame_unique_name = unique_name0; |
2322 params.did_create_new_entry = false; | 2322 params.did_create_new_entry = false; |
2323 params.url = url2; | 2323 params.url = url2; |
2324 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2324 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
(...skipping 23 matching lines...) Expand all Loading... | |
2348 ASSERT_EQ(1U, entry->root_node()->children.size()); | 2348 ASSERT_EQ(1U, entry->root_node()->children.size()); |
2349 FrameNavigationEntry* frame_entry = | 2349 FrameNavigationEntry* frame_entry = |
2350 entry->root_node()->children[0]->frame_entry.get(); | 2350 entry->root_node()->children[0]->frame_entry.get(); |
2351 EXPECT_EQ(url2, frame_entry->url()); | 2351 EXPECT_EQ(url2, frame_entry->url()); |
2352 | 2352 |
2353 // Add a second subframe and navigate. | 2353 // Add a second subframe and navigate. |
2354 std::string unique_name1("uniqueName1"); | 2354 std::string unique_name1("uniqueName1"); |
2355 main_test_rfh()->OnCreateChildFrame( | 2355 main_test_rfh()->OnCreateChildFrame( |
2356 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 2356 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2357 std::string(), unique_name1, blink::WebSandboxFlags::None, | 2357 std::string(), unique_name1, blink::WebSandboxFlags::None, |
2358 FrameOwnerProperties()); | 2358 ParsedFeaturePolicyHeader(), FrameOwnerProperties()); |
2359 TestRenderFrameHost* subframe2 = static_cast<TestRenderFrameHost*>( | 2359 TestRenderFrameHost* subframe2 = static_cast<TestRenderFrameHost*>( |
2360 contents()->GetFrameTree()->root()->child_at(1)->current_frame_host()); | 2360 contents()->GetFrameTree()->root()->child_at(1)->current_frame_host()); |
2361 const GURL url3("http://foo/3"); | 2361 const GURL url3("http://foo/3"); |
2362 { | 2362 { |
2363 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2363 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
2364 params.nav_entry_id = 0; | 2364 params.nav_entry_id = 0; |
2365 params.frame_unique_name = unique_name1; | 2365 params.frame_unique_name = unique_name1; |
2366 params.did_create_new_entry = false; | 2366 params.did_create_new_entry = false; |
2367 params.url = url3; | 2367 params.url = url3; |
2368 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 2368 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
(...skipping 20 matching lines...) Expand all Loading... | |
2389 EXPECT_EQ(url1, root_entry->url()); | 2389 EXPECT_EQ(url1, root_entry->url()); |
2390 | 2390 |
2391 // The entry should now have 2 subframe FrameNavigationEntries. | 2391 // The entry should now have 2 subframe FrameNavigationEntries. |
2392 ASSERT_EQ(2U, entry->root_node()->children.size()); | 2392 ASSERT_EQ(2U, entry->root_node()->children.size()); |
2393 FrameNavigationEntry* new_frame_entry = | 2393 FrameNavigationEntry* new_frame_entry = |
2394 entry->root_node()->children[1]->frame_entry.get(); | 2394 entry->root_node()->children[1]->frame_entry.get(); |
2395 EXPECT_EQ(url3, new_frame_entry->url()); | 2395 EXPECT_EQ(url3, new_frame_entry->url()); |
2396 | 2396 |
2397 // Add a nested subframe and navigate. | 2397 // Add a nested subframe and navigate. |
2398 std::string unique_name2("uniqueName2"); | 2398 std::string unique_name2("uniqueName2"); |
2399 subframe->OnCreateChildFrame(process()->GetNextRoutingID(), | 2399 subframe->OnCreateChildFrame( |
2400 blink::WebTreeScopeType::Document, std::string(), | 2400 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2401 unique_name2, blink::WebSandboxFlags::None, | 2401 std::string(), unique_name2, blink::WebSandboxFlags::None, |
2402 FrameOwnerProperties()); | 2402 ParsedFeaturePolicyHeader(), FrameOwnerProperties()); |
2403 TestRenderFrameHost* subframe3 = | 2403 TestRenderFrameHost* subframe3 = |
2404 static_cast<TestRenderFrameHost*>(contents() | 2404 static_cast<TestRenderFrameHost*>(contents() |
2405 ->GetFrameTree() | 2405 ->GetFrameTree() |
2406 ->root() | 2406 ->root() |
2407 ->child_at(0) | 2407 ->child_at(0) |
2408 ->child_at(0) | 2408 ->child_at(0) |
2409 ->current_frame_host()); | 2409 ->current_frame_host()); |
2410 const GURL url4("http://foo/4"); | 2410 const GURL url4("http://foo/4"); |
2411 { | 2411 { |
2412 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2412 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2456 main_test_rfh()->NavigateAndCommitRendererInitiated(true, url1); | 2456 main_test_rfh()->NavigateAndCommitRendererInitiated(true, url1); |
2457 EXPECT_EQ(1U, navigation_entry_committed_counter_); | 2457 EXPECT_EQ(1U, navigation_entry_committed_counter_); |
2458 NavigationEntry* entry1 = controller.GetLastCommittedEntry(); | 2458 NavigationEntry* entry1 = controller.GetLastCommittedEntry(); |
2459 navigation_entry_committed_counter_ = 0; | 2459 navigation_entry_committed_counter_ = 0; |
2460 | 2460 |
2461 // Prereq: add a subframe with an initial auto-subframe navigation. | 2461 // Prereq: add a subframe with an initial auto-subframe navigation. |
2462 std::string unique_name("uniqueName0"); | 2462 std::string unique_name("uniqueName0"); |
2463 main_test_rfh()->OnCreateChildFrame( | 2463 main_test_rfh()->OnCreateChildFrame( |
2464 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 2464 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
2465 std::string(), unique_name, blink::WebSandboxFlags::None, | 2465 std::string(), unique_name, blink::WebSandboxFlags::None, |
2466 FrameOwnerProperties()); | 2466 ParsedFeaturePolicyHeader(), FrameOwnerProperties()); |
2467 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 2467 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
2468 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 2468 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
2469 const GURL subframe_url("http://foo1/subframe"); | 2469 const GURL subframe_url("http://foo1/subframe"); |
2470 | 2470 |
2471 // Compute the sequence number assigned by Blink. | 2471 // Compute the sequence number assigned by Blink. |
2472 int64_t item_sequence_number1 = GenerateSequenceNumber(); | 2472 int64_t item_sequence_number1 = GenerateSequenceNumber(); |
2473 int64_t document_sequence_number1 = GenerateSequenceNumber(); | 2473 int64_t document_sequence_number1 = GenerateSequenceNumber(); |
2474 | 2474 |
2475 { | 2475 { |
2476 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 2476 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
(...skipping 1433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3910 | 3910 |
3911 // We should be at the first navigation entry. | 3911 // We should be at the first navigation entry. |
3912 EXPECT_EQ(controller.GetEntryCount(), 1); | 3912 EXPECT_EQ(controller.GetEntryCount(), 1); |
3913 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); | 3913 EXPECT_EQ(controller.GetLastCommittedEntryIndex(), 0); |
3914 | 3914 |
3915 // Add and navigate a subframe that would normally count as in-page. | 3915 // Add and navigate a subframe that would normally count as in-page. |
3916 std::string unique_name("uniqueName0"); | 3916 std::string unique_name("uniqueName0"); |
3917 main_test_rfh()->OnCreateChildFrame( | 3917 main_test_rfh()->OnCreateChildFrame( |
3918 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 3918 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
3919 std::string(), unique_name, blink::WebSandboxFlags::None, | 3919 std::string(), unique_name, blink::WebSandboxFlags::None, |
3920 FrameOwnerProperties()); | 3920 ParsedFeaturePolicyHeader(), FrameOwnerProperties()); |
3921 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 3921 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
3922 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 3922 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
3923 const GURL subframe_url("http://www.google.com/#"); | 3923 const GURL subframe_url("http://www.google.com/#"); |
3924 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 3924 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
3925 params.nav_entry_id = 0; | 3925 params.nav_entry_id = 0; |
3926 params.frame_unique_name = unique_name; | 3926 params.frame_unique_name = unique_name; |
3927 params.did_create_new_entry = false; | 3927 params.did_create_new_entry = false; |
3928 params.url = subframe_url; | 3928 params.url = subframe_url; |
3929 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 3929 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
3930 params.should_update_history = false; | 3930 params.should_update_history = false; |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4085 const GURL url2("http://bar/"); | 4085 const GURL url2("http://bar/"); |
4086 controller.LoadURL( | 4086 controller.LoadURL( |
4087 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); | 4087 url2, Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
4088 | 4088 |
4089 // Send a subframe update from the first page, as if one had just | 4089 // Send a subframe update from the first page, as if one had just |
4090 // automatically loaded. Auto subframes don't increment the page ID. | 4090 // automatically loaded. Auto subframes don't increment the page ID. |
4091 std::string unique_name("uniqueName0"); | 4091 std::string unique_name("uniqueName0"); |
4092 main_test_rfh()->OnCreateChildFrame( | 4092 main_test_rfh()->OnCreateChildFrame( |
4093 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, | 4093 process()->GetNextRoutingID(), blink::WebTreeScopeType::Document, |
4094 std::string(), unique_name, blink::WebSandboxFlags::None, | 4094 std::string(), unique_name, blink::WebSandboxFlags::None, |
4095 FrameOwnerProperties()); | 4095 ParsedFeaturePolicyHeader(), FrameOwnerProperties()); |
4096 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( | 4096 TestRenderFrameHost* subframe = static_cast<TestRenderFrameHost*>( |
4097 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); | 4097 contents()->GetFrameTree()->root()->child_at(0)->current_frame_host()); |
4098 const GURL url1_sub("http://foo/subframe"); | 4098 const GURL url1_sub("http://foo/subframe"); |
4099 FrameHostMsg_DidCommitProvisionalLoad_Params params; | 4099 FrameHostMsg_DidCommitProvisionalLoad_Params params; |
4100 params.nav_entry_id = 0; | 4100 params.nav_entry_id = 0; |
4101 params.frame_unique_name = unique_name; | 4101 params.frame_unique_name = unique_name; |
4102 params.did_create_new_entry = false; | 4102 params.did_create_new_entry = false; |
4103 params.url = url1_sub; | 4103 params.url = url1_sub; |
4104 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; | 4104 params.transition = ui::PAGE_TRANSITION_AUTO_SUBFRAME; |
4105 params.should_update_history = false; | 4105 params.should_update_history = false; |
(...skipping 1178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5284 main_test_rfh()->SimulateNavigationStart(url_1); | 5284 main_test_rfh()->SimulateNavigationStart(url_1); |
5285 EXPECT_EQ(url_1, controller.GetVisibleEntry()->GetURL()); | 5285 EXPECT_EQ(url_1, controller.GetVisibleEntry()->GetURL()); |
5286 EXPECT_EQ(ReloadType::NONE, last_reload_type_); | 5286 EXPECT_EQ(ReloadType::NONE, last_reload_type_); |
5287 | 5287 |
5288 main_test_rfh()->SimulateNavigationCommit(url_2); | 5288 main_test_rfh()->SimulateNavigationCommit(url_2); |
5289 main_test_rfh()->SimulateNavigationCommit(url_1); | 5289 main_test_rfh()->SimulateNavigationCommit(url_1); |
5290 main_test_rfh()->SimulateNavigationCommit(url_1); | 5290 main_test_rfh()->SimulateNavigationCommit(url_1); |
5291 } | 5291 } |
5292 | 5292 |
5293 } // namespace content | 5293 } // namespace content |
OLD | NEW |