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

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

Issue 2494633004: Remove about:srcdoc url conversion. (Closed)
Patch Set: Rebase Created 4 years 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stdint.h> 7 #include <stdint.h>
8 #include <algorithm> 8 #include <algorithm>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 3282 matching lines...) Expand 10 before | Expand all | Expand 10 after
3293 // FrameNavigationEntry_RecreatedInjectedBlankSubframe). 3293 // FrameNavigationEntry_RecreatedInjectedBlankSubframe).
3294 // 3294 //
3295 // This test worked before and after the fix for https://crbug.com/657896, but 3295 // This test worked before and after the fix for https://crbug.com/657896, but
3296 // it failed with a preliminary version of the fix. 3296 // it failed with a preliminary version of the fix.
3297 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest, 3297 IN_PROC_BROWSER_TEST_F(NavigationControllerBrowserTest,
3298 FrameNavigationEntry_RecreatedInjectedSrcdocSubframe) { 3298 FrameNavigationEntry_RecreatedInjectedSrcdocSubframe) {
3299 // 1. Start on a page that injects a nested iframe srcdoc which contains a 3299 // 1. Start on a page that injects a nested iframe srcdoc which contains a
3300 // nested iframe. 3300 // nested iframe.
3301 GURL main_url(embedded_test_server()->GetURL( 3301 GURL main_url(embedded_test_server()->GetURL(
3302 "/navigation_controller/inject_iframe_srcdoc_with_nested_frame.html")); 3302 "/navigation_controller/inject_iframe_srcdoc_with_nested_frame.html"));
3303 GURL blank_url(url::kAboutBlankURL); 3303 GURL srcdoc_url(content::kAboutSrcDocURL);
3304 GURL inner_url( 3304 GURL inner_url(
3305 embedded_test_server()->GetURL("/navigation_controller/form.html")); 3305 embedded_test_server()->GetURL("/navigation_controller/form.html"));
3306 EXPECT_TRUE(NavigateToURL(shell(), main_url)); 3306 EXPECT_TRUE(NavigateToURL(shell(), main_url));
3307 NavigationControllerImpl& controller = static_cast<NavigationControllerImpl&>( 3307 NavigationControllerImpl& controller = static_cast<NavigationControllerImpl&>(
3308 shell()->web_contents()->GetController()); 3308 shell()->web_contents()->GetController());
3309 FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents()) 3309 FrameTreeNode* root = static_cast<WebContentsImpl*>(shell()->web_contents())
3310 ->GetFrameTree() 3310 ->GetFrameTree()
3311 ->root(); 3311 ->root();
3312 3312
3313 // Verify that the inner iframe was able to load. 3313 // Verify that the inner iframe was able to load.
3314 ASSERT_EQ(1U, root->child_count()); 3314 ASSERT_EQ(1U, root->child_count());
3315 ASSERT_EQ(1U, root->child_at(0)->child_count()); 3315 ASSERT_EQ(1U, root->child_at(0)->child_count());
3316 ASSERT_EQ(0U, root->child_at(0)->child_at(0)->child_count()); 3316 ASSERT_EQ(0U, root->child_at(0)->child_at(0)->child_count());
3317 EXPECT_EQ(main_url, root->current_url()); 3317 EXPECT_EQ(main_url, root->current_url());
3318 EXPECT_EQ(blank_url, root->child_at(0)->current_url()); 3318 EXPECT_EQ(srcdoc_url, root->child_at(0)->current_url());
3319 EXPECT_EQ(inner_url, root->child_at(0)->child_at(0)->current_url()); 3319 EXPECT_EQ(inner_url, root->child_at(0)->child_at(0)->current_url());
3320 3320
3321 EXPECT_EQ(1, controller.GetEntryCount()); 3321 EXPECT_EQ(1, controller.GetEntryCount());
3322 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); 3322 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex());
3323 NavigationEntryImpl* entry = controller.GetLastCommittedEntry(); 3323 NavigationEntryImpl* entry = controller.GetLastCommittedEntry();
3324 3324
3325 // The entry should have FrameNavigationEntries for the subframes. 3325 // The entry should have FrameNavigationEntries for the subframes.
3326 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { 3326 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) {
3327 ASSERT_EQ(1U, entry->root_node()->children.size()); 3327 ASSERT_EQ(1U, entry->root_node()->children.size());
3328 EXPECT_EQ(blank_url, entry->root_node()->children[0]->frame_entry->url()); 3328 EXPECT_EQ(srcdoc_url, entry->root_node()->children[0]->frame_entry->url());
3329 EXPECT_EQ(inner_url, 3329 EXPECT_EQ(inner_url,
3330 entry->root_node()->children[0]->children[0]->frame_entry->url()); 3330 entry->root_node()->children[0]->children[0]->frame_entry->url());
3331 } 3331 }
3332 3332
3333 // Set a value in the form which will be stored in the PageState. 3333 // Set a value in the form which will be stored in the PageState.
3334 EXPECT_TRUE( 3334 EXPECT_TRUE(
3335 ExecuteScript(root->child_at(0)->child_at(0), 3335 ExecuteScript(root->child_at(0)->child_at(0),
3336 "document.getElementById('itext').value = 'modified';")); 3336 "document.getElementById('itext').value = 'modified';"));
3337 3337
3338 // 2. Navigate the main frame same-site, destroying the subframes. 3338 // 2. Navigate the main frame same-site, destroying the subframes.
3339 GURL main_url_2(embedded_test_server()->GetURL( 3339 GURL main_url_2(embedded_test_server()->GetURL(
3340 "/navigation_controller/simple_page_1.html")); 3340 "/navigation_controller/simple_page_1.html"));
3341 EXPECT_TRUE(NavigateToURL(shell(), main_url_2)); 3341 EXPECT_TRUE(NavigateToURL(shell(), main_url_2));
3342 ASSERT_EQ(0U, root->child_count()); 3342 ASSERT_EQ(0U, root->child_count());
3343 EXPECT_EQ(main_url_2, root->current_url()); 3343 EXPECT_EQ(main_url_2, root->current_url());
3344 3344
3345 EXPECT_EQ(2, controller.GetEntryCount()); 3345 EXPECT_EQ(2, controller.GetEntryCount());
3346 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex()); 3346 EXPECT_EQ(1, controller.GetLastCommittedEntryIndex());
3347 3347
3348 // 3. Go back, recreating the subframes. 3348 // 3. Go back, recreating the subframes.
3349 { 3349 {
3350 TestNavigationObserver back_load_observer(shell()->web_contents()); 3350 TestNavigationObserver back_load_observer(shell()->web_contents());
3351 controller.GoBack(); 3351 controller.GoBack();
3352 back_load_observer.Wait(); 3352 back_load_observer.Wait();
3353 } 3353 }
3354 ASSERT_EQ(1U, root->child_count()); 3354 ASSERT_EQ(1U, root->child_count());
3355 // TODO(creis): This line is unexpectedly failing in PlzNavigate, so the test
3356 // is disabled there for now.
3357 ASSERT_EQ(1U, root->child_at(0)->child_count()); 3355 ASSERT_EQ(1U, root->child_at(0)->child_count());
3358 ASSERT_EQ(0U, root->child_at(0)->child_at(0)->child_count()); 3356 ASSERT_EQ(0U, root->child_at(0)->child_at(0)->child_count());
3359 EXPECT_EQ(main_url, root->current_url()); 3357 EXPECT_EQ(main_url, root->current_url());
3360 EXPECT_EQ(blank_url, root->child_at(0)->current_url()); 3358 EXPECT_EQ(srcdoc_url, root->child_at(0)->current_url());
3361 3359
3362 // Verify that the inner iframe went to the correct URL. 3360 // Verify that the inner iframe went to the correct URL.
3363 EXPECT_EQ(inner_url, root->child_at(0)->child_at(0)->current_url()); 3361 EXPECT_EQ(inner_url, root->child_at(0)->child_at(0)->current_url());
3364 3362
3365 EXPECT_EQ(2, controller.GetEntryCount()); 3363 EXPECT_EQ(2, controller.GetEntryCount());
3366 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex()); 3364 EXPECT_EQ(0, controller.GetLastCommittedEntryIndex());
3367 EXPECT_EQ(entry, controller.GetLastCommittedEntry()); 3365 EXPECT_EQ(entry, controller.GetLastCommittedEntry());
3368 3366
3369 // The entry should have FrameNavigationEntries for the subframes. 3367 // The entry should have FrameNavigationEntries for the subframes.
3370 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) { 3368 if (SiteIsolationPolicy::UseSubframeNavigationEntries()) {
3371 ASSERT_EQ(1U, entry->root_node()->children.size()); 3369 ASSERT_EQ(1U, entry->root_node()->children.size());
3372 EXPECT_EQ(blank_url, entry->root_node()->children[0]->frame_entry->url()); 3370 EXPECT_EQ(srcdoc_url, entry->root_node()->children[0]->frame_entry->url());
3373 EXPECT_EQ(inner_url, 3371 EXPECT_EQ(inner_url,
3374 entry->root_node()->children[0]->children[0]->frame_entry->url()); 3372 entry->root_node()->children[0]->children[0]->frame_entry->url());
3375 } 3373 }
3376 3374
3377 // With injected iframe srcdoc pages, we do restore form values from 3375 // With injected iframe srcdoc pages, we do restore form values from
3378 // PageState. 3376 // PageState.
3379 std::string form_value; 3377 std::string form_value;
3380 EXPECT_TRUE( 3378 EXPECT_TRUE(
3381 ExecuteScriptAndExtractString(root->child_at(0)->child_at(0), 3379 ExecuteScriptAndExtractString(root->child_at(0)->child_at(0),
3382 "window.domAutomationController.send(" 3380 "window.domAutomationController.send("
(...skipping 3639 matching lines...) Expand 10 before | Expand all | Expand 10 after
7022 NavigationHandleCommitObserver handle_observer(shell()->web_contents(), 7020 NavigationHandleCommitObserver handle_observer(shell()->web_contents(),
7023 kFragmentURL); 7021 kFragmentURL);
7024 EXPECT_TRUE(NavigateToURL(shell(), kFragmentURL)); 7022 EXPECT_TRUE(NavigateToURL(shell(), kFragmentURL));
7025 7023
7026 EXPECT_TRUE(handle_observer.has_committed()); 7024 EXPECT_TRUE(handle_observer.has_committed());
7027 EXPECT_TRUE(handle_observer.was_same_page()); 7025 EXPECT_TRUE(handle_observer.was_same_page());
7028 EXPECT_FALSE(handle_observer.was_renderer_initiated()); 7026 EXPECT_FALSE(handle_observer.was_renderer_initiated());
7029 } 7027 }
7030 7028
7031 } // namespace content 7029 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/interstitial_page_navigator_impl.cc ('k') | content/browser/frame_host/navigation_entry_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698