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

Side by Side Diff: content/browser/site_per_process_browsertest.cc

Issue 2478803003: Remove DOMAutomationController::automation_id_ (Closed)
Patch Set: Rebasing... Created 3 years, 5 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/site_per_process_browsertest.h" 5 #include "content/browser/site_per_process_browsertest.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 2177 matching lines...) Expand 10 before | Expand all | Expand 10 after
2188 " |--Site D ------- proxies for A\n" 2188 " |--Site D ------- proxies for A\n"
2189 " +--Site A ------- proxies for D\n" 2189 " +--Site A ------- proxies for D\n"
2190 " +--Site A -- proxies for D\n" 2190 " +--Site A -- proxies for D\n"
2191 "Where A = http://a.com/\n" 2191 "Where A = http://a.com/\n"
2192 " D = http://f00.com/", 2192 " D = http://f00.com/",
2193 DepictFrameTree(root)); 2193 DepictFrameTree(root));
2194 2194
2195 // Navigate the iframe itself to about:blank using a script executing in its 2195 // Navigate the iframe itself to about:blank using a script executing in its
2196 // own context. It should stay in the same SiteInstance as before, not the 2196 // own context. It should stay in the same SiteInstance as before, not the
2197 // parent one. 2197 // parent one.
2198 std::string script(
2199 "window.domAutomationController.send("
2200 "window.location.href = 'about:blank');");
2201 TestFrameNavigationObserver frame_observer(child); 2198 TestFrameNavigationObserver frame_observer(child);
2202 EXPECT_TRUE(ExecuteScript(child, script)); 2199 ExecuteScriptAsync(child, "window.location.href = 'about:blank';");
2203 frame_observer.Wait(); 2200 frame_observer.Wait();
2204 EXPECT_EQ(about_blank_url, child->current_url()); 2201 EXPECT_EQ(about_blank_url, child->current_url());
2205 2202
2206 // Ensure that we have navigated using the top level process. 2203 // Ensure that we have navigated using the top level process.
2207 EXPECT_EQ( 2204 EXPECT_EQ(
2208 " Site A ------------ proxies for D\n" 2205 " Site A ------------ proxies for D\n"
2209 " |--Site D ------- proxies for A\n" 2206 " |--Site D ------- proxies for A\n"
2210 " +--Site A ------- proxies for D\n" 2207 " +--Site A ------- proxies for D\n"
2211 " +--Site A -- proxies for D\n" 2208 " +--Site A -- proxies for D\n"
2212 "Where A = http://a.com/\n" 2209 "Where A = http://a.com/\n"
(...skipping 3236 matching lines...) Expand 10 before | Expand all | Expand 10 after
5449 const char kSetupFocusEvents[] = 5446 const char kSetupFocusEvents[] =
5450 "window.addEventListener('focus', function() {" 5447 "window.addEventListener('focus', function() {"
5451 " domAutomationController.setAutomationId(0);" 5448 " domAutomationController.setAutomationId(0);"
5452 " domAutomationController.send('%s-got-focus');" 5449 " domAutomationController.send('%s-got-focus');"
5453 "});" 5450 "});"
5454 "window.addEventListener('blur', function() {" 5451 "window.addEventListener('blur', function() {"
5455 " domAutomationController.setAutomationId(0);" 5452 " domAutomationController.setAutomationId(0);"
5456 " domAutomationController.send('%s-lost-focus');" 5453 " domAutomationController.send('%s-lost-focus');"
5457 "});"; 5454 "});";
5458 std::string script = base::StringPrintf(kSetupFocusEvents, "main", "main"); 5455 std::string script = base::StringPrintf(kSetupFocusEvents, "main", "main");
5459 EXPECT_TRUE(ExecuteScript(shell(), script)); 5456 ExecuteScriptAsync(shell(), script);
5460 script = base::StringPrintf(kSetupFocusEvents, "child1", "child1"); 5457 script = base::StringPrintf(kSetupFocusEvents, "child1", "child1");
5461 EXPECT_TRUE(ExecuteScript(child1, script)); 5458 ExecuteScriptAsync(child1, script);
5462 script = base::StringPrintf(kSetupFocusEvents, "child2", "child2"); 5459 script = base::StringPrintf(kSetupFocusEvents, "child2", "child2");
5463 EXPECT_TRUE(ExecuteScript(child2, script)); 5460 ExecuteScriptAsync(child2, script);
5464 5461
5465 // Execute window.focus on the B subframe from the A main frame. 5462 // Execute window.focus on the B subframe from the A main frame.
5466 EXPECT_TRUE(ExecuteScript(root, "frames[0].focus()")); 5463 ExecuteScriptAsync(root, "frames[0].focus()");
5467 5464
5468 // Helper to wait for two specified messages to arrive on the specified 5465 // Helper to wait for two specified messages to arrive on the specified
5469 // DOMMessageQueue, assuming that the two messages can arrive in any order. 5466 // DOMMessageQueue, assuming that the two messages can arrive in any order.
5470 auto wait_for_two_messages = [](DOMMessageQueue* msg_queue, 5467 auto wait_for_two_messages = [](DOMMessageQueue* msg_queue,
5471 const std::string& msg1, 5468 const std::string& msg1,
5472 const std::string& msg2) { 5469 const std::string& msg2) {
5473 bool msg1_received = false; 5470 bool msg1_received = false;
5474 bool msg2_received = false; 5471 bool msg2_received = false;
5475 std::string status; 5472 std::string status;
5476 while (msg_queue->WaitForMessage(&status)) { 5473 while (msg_queue->WaitForMessage(&status)) {
5477 if (status == msg1) 5474 if (status == msg1)
5478 msg1_received = true; 5475 msg1_received = true;
5479 if (status == msg2) 5476 if (status == msg2)
5480 msg2_received = true; 5477 msg2_received = true;
5481 if (msg1_received && msg2_received) 5478 if (msg1_received && msg2_received)
5482 break; 5479 break;
5483 } 5480 }
5484 }; 5481 };
5485 5482
5486 // Process A should fire a blur event, and process B should fire a focus 5483 // Process A should fire a blur event, and process B should fire a focus
5487 // event. Wait for both events. 5484 // event. Wait for both events.
5488 wait_for_two_messages(&msg_queue, "\"main-lost-focus\"", 5485 wait_for_two_messages(&msg_queue, "\"main-lost-focus\"",
5489 "\"child1-got-focus\""); 5486 "\"child1-got-focus\"");
5490 5487
5491 // The B subframe should now be focused in the browser process. 5488 // The B subframe should now be focused in the browser process.
5492 EXPECT_EQ(child1, root->frame_tree()->GetFocusedFrame()); 5489 EXPECT_EQ(child1, root->frame_tree()->GetFocusedFrame());
5493 5490
5494 // Now, execute window.focus on the C subframe from A main frame. This 5491 // Now, execute window.focus on the C subframe from A main frame. This
5495 // checks that we can shift focus from one remote frame to another. 5492 // checks that we can shift focus from one remote frame to another.
5496 EXPECT_TRUE(ExecuteScript(root, "frames[1].focus()")); 5493 ExecuteScriptAsync(root, "frames[1].focus()");
5497 5494
5498 // Wait for the two subframes (B and C) to fire blur and focus events. 5495 // Wait for the two subframes (B and C) to fire blur and focus events.
5499 wait_for_two_messages(&msg_queue, "\"child1-lost-focus\"", 5496 wait_for_two_messages(&msg_queue, "\"child1-lost-focus\"",
5500 "\"child2-got-focus\""); 5497 "\"child2-got-focus\"");
5501 5498
5502 // The C subframe should now be focused. 5499 // The C subframe should now be focused.
5503 EXPECT_EQ(child2, root->frame_tree()->GetFocusedFrame()); 5500 EXPECT_EQ(child2, root->frame_tree()->GetFocusedFrame());
5504 5501
5505 // window.focus the main frame from the C subframe. 5502 // window.focus the main frame from the C subframe.
5506 EXPECT_TRUE(ExecuteScript(child2, "parent.focus()")); 5503 ExecuteScriptAsync(child2, "parent.focus()");
5507 5504
5508 // Wait for the C subframe to blur and main frame to focus. 5505 // Wait for the C subframe to blur and main frame to focus.
5509 wait_for_two_messages(&msg_queue, "\"child2-lost-focus\"", 5506 wait_for_two_messages(&msg_queue, "\"child2-lost-focus\"",
5510 "\"main-got-focus\""); 5507 "\"main-got-focus\"");
5511 5508
5512 // The main frame should now be focused. 5509 // The main frame should now be focused.
5513 EXPECT_EQ(root, root->frame_tree()->GetFocusedFrame()); 5510 EXPECT_EQ(root, root->frame_tree()->GetFocusedFrame());
5514 } 5511 }
5515 5512
5516 // There are no cursors on Android. 5513 // There are no cursors on Android.
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
5640 " domAutomationController.setAutomationId(0);" 5637 " domAutomationController.setAutomationId(0);"
5641 " domAutomationController.send('wheel: ' + wheel_count);" 5638 " domAutomationController.send('wheel: ' + wheel_count);"
5642 "}" 5639 "}"
5643 "function scroll_handler(e) {" 5640 "function scroll_handler(e) {"
5644 " domAutomationController.setAutomationId(0);" 5641 " domAutomationController.setAutomationId(0);"
5645 " domAutomationController.send('scroll: ' + wheel_count);" 5642 " domAutomationController.send('scroll: ' + wheel_count);"
5646 "}" 5643 "}"
5647 "scroll_div = document.getElementById('scrollable_div');" 5644 "scroll_div = document.getElementById('scrollable_div');"
5648 "scroll_div.addEventListener('wheel', wheel_handler);" 5645 "scroll_div.addEventListener('wheel', wheel_handler);"
5649 "scroll_div.addEventListener('scroll', scroll_handler);" 5646 "scroll_div.addEventListener('scroll', scroll_handler);"
5650 "domAutomationController.setAutomationId(0);"
5651 "domAutomationController.send('wheel handler installed');"
5652 "document.body.style.background = 'black';"; 5647 "document.body.style.background = 'black';";
5653 5648
5654 content::DOMMessageQueue msg_queue; 5649 content::DOMMessageQueue msg_queue;
5655 std::string reply; 5650 std::string reply;
5656 EXPECT_TRUE(ExecuteScript(rfh, script)); 5651 EXPECT_TRUE(ExecuteScript(rfh, script));
5657 5652
5658 // Wait until renderer's compositor thread is synced. Otherwise the event 5653 // Wait until renderer's compositor thread is synced. Otherwise the event
5659 // handler won't be installed when the event arrives. 5654 // handler won't be installed when the event arrives.
5660 { 5655 {
5661 MainThreadFrameObserver observer(rfh->GetRenderWidgetHost()); 5656 MainThreadFrameObserver observer(rfh->GetRenderWidgetHost());
(...skipping 2184 matching lines...) Expand 10 before | Expand all | Expand 10 after
7846 EXPECT_EQ(1U, root->child_count()); 7841 EXPECT_EQ(1U, root->child_count());
7847 7842
7848 // Ensure the RenderViewHost for the SiteInstance of the child is considered 7843 // Ensure the RenderViewHost for the SiteInstance of the child is considered
7849 // in swapped out state. 7844 // in swapped out state.
7850 RenderViewHostImpl* rvh = contents->GetFrameTree()->GetRenderViewHost( 7845 RenderViewHostImpl* rvh = contents->GetFrameTree()->GetRenderViewHost(
7851 root->child_at(0)->current_frame_host()->GetSiteInstance()); 7846 root->child_at(0)->current_frame_host()->GetSiteInstance());
7852 EXPECT_TRUE(rvh->is_swapped_out_); 7847 EXPECT_TRUE(rvh->is_swapped_out_);
7853 7848
7854 // Have the child frame navigate its parent to its SiteInstance. 7849 // Have the child frame navigate its parent to its SiteInstance.
7855 GURL b_url(embedded_test_server()->GetURL("b.com", "/title1.html")); 7850 GURL b_url(embedded_test_server()->GetURL("b.com", "/title1.html"));
7856 std::string script = base::StringPrintf( 7851 std::string script =
7857 "window.domAutomationController.send(" 7852 base::StringPrintf("parent.location = '%s';", b_url.spec().c_str());
7858 "parent.location = '%s');",
7859 b_url.spec().c_str());
7860 7853
7861 // Ensure the child has received a user gesture, so that it has permission 7854 // Ensure the child has received a user gesture, so that it has permission
7862 // to framebust. 7855 // to framebust.
7863 SimulateMouseClick( 7856 SimulateMouseClick(
7864 root->child_at(0)->current_frame_host()->GetRenderWidgetHost(), 1, 1); 7857 root->child_at(0)->current_frame_host()->GetRenderWidgetHost(), 1, 1);
7865 TestFrameNavigationObserver frame_observer(root); 7858 TestFrameNavigationObserver frame_observer(root);
7866 EXPECT_TRUE(ExecuteScript(root->child_at(0), script)); 7859 EXPECT_TRUE(ExecuteScript(root->child_at(0), script));
7867 frame_observer.Wait(); 7860 frame_observer.Wait();
7868 EXPECT_EQ(b_url, root->current_url()); 7861 EXPECT_EQ(b_url, root->current_url());
7869 7862
(...skipping 2916 matching lines...) Expand 10 before | Expand all | Expand 10 after
10786 SimpleTap(gfx::Point(point_outside_iframe.x(), point_outside_iframe.y())); 10779 SimpleTap(gfx::Point(point_outside_iframe.x(), point_outside_iframe.y()));
10787 selection_controller_client->Wait(); 10780 selection_controller_client->Wait();
10788 10781
10789 EXPECT_EQ(ui::TouchSelectionController::INACTIVE, 10782 EXPECT_EQ(ui::TouchSelectionController::INACTIVE,
10790 parent_view->touch_selection_controller()->active_status()); 10783 parent_view->touch_selection_controller()->active_status());
10791 } 10784 }
10792 10785
10793 #endif // defined(OS_ANDROID) 10786 #endif // defined(OS_ANDROID)
10794 10787
10795 } // namespace content 10788 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/security_exploit_browsertest.cc ('k') | content/public/test/browser_test_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698