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

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

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

Powered by Google App Engine
This is Rietveld 408576698