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

Side by Side Diff: third_party/WebKit/Source/web/tests/WebFrameTest.cpp

Issue 2923433002: Move ExecuteScript method from WebFrame to WebLocalFrame. (Closed)
Patch Set: Tweaked a comment in WebViewPlugin::WebViewHelper::main_frame [as suggested in CR feedback] Created 3 years, 6 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 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 TEST_P(ParameterizedWebFrameTest, RequestExecuteScript) { 445 TEST_P(ParameterizedWebFrameTest, RequestExecuteScript) {
446 RegisterMockedHttpURLLoad("foo.html"); 446 RegisterMockedHttpURLLoad("foo.html");
447 447
448 FrameTestHelpers::WebViewHelper web_view_helper; 448 FrameTestHelpers::WebViewHelper web_view_helper;
449 web_view_helper.InitializeAndLoad(base_url_ + "foo.html", true); 449 web_view_helper.InitializeAndLoad(base_url_ + "foo.html", true);
450 450
451 v8::HandleScope scope(v8::Isolate::GetCurrent()); 451 v8::HandleScope scope(v8::Isolate::GetCurrent());
452 ScriptExecutionCallbackHelper callback_helper( 452 ScriptExecutionCallbackHelper callback_helper(
453 web_view_helper.WebView()->MainFrame()->MainWorldScriptContext()); 453 web_view_helper.WebView()->MainFrame()->MainWorldScriptContext());
454 web_view_helper.WebView() 454 web_view_helper.WebView()
455 ->MainFrame() 455 ->MainFrameImpl()
456 ->ToWebLocalFrame()
457 ->RequestExecuteScriptAndReturnValue( 456 ->RequestExecuteScriptAndReturnValue(
458 WebScriptSource(WebString("'hello';")), false, &callback_helper); 457 WebScriptSource(WebString("'hello';")), false, &callback_helper);
459 RunPendingTasks(); 458 RunPendingTasks();
460 EXPECT_TRUE(callback_helper.DidComplete()); 459 EXPECT_TRUE(callback_helper.DidComplete());
461 EXPECT_EQ("hello", callback_helper.StringValue()); 460 EXPECT_EQ("hello", callback_helper.StringValue());
462 } 461 }
463 462
464 TEST_P(ParameterizedWebFrameTest, SuspendedRequestExecuteScript) { 463 TEST_P(ParameterizedWebFrameTest, SuspendedRequestExecuteScript) {
465 RegisterMockedHttpURLLoad("foo.html"); 464 RegisterMockedHttpURLLoad("foo.html");
466 RegisterMockedHttpURLLoad("bar.html"); 465 RegisterMockedHttpURLLoad("bar.html");
(...skipping 3746 matching lines...) Expand 10 before | Expand all | Expand 10 after
4213 EXPECT_EQ(2ul, ix); 4212 EXPECT_EQ(2ul, ix);
4214 } 4213 }
4215 4214
4216 TEST_P(ParameterizedWebFrameTest, FirstRectForCharacterRangeWithPinchZoom) { 4215 TEST_P(ParameterizedWebFrameTest, FirstRectForCharacterRangeWithPinchZoom) {
4217 RegisterMockedHttpURLLoad("textbox.html"); 4216 RegisterMockedHttpURLLoad("textbox.html");
4218 4217
4219 FrameTestHelpers::WebViewHelper web_view_helper; 4218 FrameTestHelpers::WebViewHelper web_view_helper;
4220 web_view_helper.InitializeAndLoad(base_url_ + "textbox.html", true); 4219 web_view_helper.InitializeAndLoad(base_url_ + "textbox.html", true);
4221 web_view_helper.Resize(WebSize(640, 480)); 4220 web_view_helper.Resize(WebSize(640, 480));
4222 4221
4223 WebLocalFrame* main_frame = 4222 WebLocalFrame* main_frame = web_view_helper.WebView()->MainFrameImpl();
4224 web_view_helper.WebView()->MainFrame()->ToWebLocalFrame();
4225 main_frame->ExecuteScript(WebScriptSource("selectRange();")); 4223 main_frame->ExecuteScript(WebScriptSource("selectRange();"));
4226 4224
4227 WebRect old_rect; 4225 WebRect old_rect;
4228 main_frame->FirstRectForCharacterRange(0, 5, old_rect); 4226 main_frame->FirstRectForCharacterRange(0, 5, old_rect);
4229 4227
4230 WebFloatPoint visual_offset(100, 130); 4228 WebFloatPoint visual_offset(100, 130);
4231 float scale = 2; 4229 float scale = 2;
4232 web_view_helper.WebView()->SetPageScaleFactor(scale); 4230 web_view_helper.WebView()->SetPageScaleFactor(scale);
4233 web_view_helper.WebView()->SetVisualViewportOffset(visual_offset); 4231 web_view_helper.WebView()->SetVisualViewportOffset(visual_offset);
4234 4232
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
4669 FrameTestHelpers::WebViewHelper web_view_helper; 4667 FrameTestHelpers::WebViewHelper web_view_helper;
4670 web_view_helper.InitializeAndLoad( 4668 web_view_helper.InitializeAndLoad(
4671 base_url_ + "context_notifications_test.html", true, &web_frame_client); 4669 base_url_ + "context_notifications_test.html", true, &web_frame_client);
4672 4670
4673 // Add an isolated world. 4671 // Add an isolated world.
4674 web_frame_client.Reset(); 4672 web_frame_client.Reset();
4675 4673
4676 int isolated_world_id = 42; 4674 int isolated_world_id = 42;
4677 WebScriptSource script_source("hi!"); 4675 WebScriptSource script_source("hi!");
4678 int num_sources = 1; 4676 int num_sources = 1;
4679 web_view_helper.WebView()->MainFrame()->ExecuteScriptInIsolatedWorld( 4677 web_view_helper.WebView()->MainFrameImpl()->ExecuteScriptInIsolatedWorld(
4680 isolated_world_id, &script_source, num_sources); 4678 isolated_world_id, &script_source, num_sources);
4681 4679
4682 // We should now have a new create notification. 4680 // We should now have a new create notification.
4683 ASSERT_EQ(1u, create_notifications.size()); 4681 ASSERT_EQ(1u, create_notifications.size());
4684 auto& notification = create_notifications[0]; 4682 auto& notification = create_notifications[0];
4685 ASSERT_EQ(isolated_world_id, notification->world_id); 4683 ASSERT_EQ(isolated_world_id, notification->world_id);
4686 ASSERT_EQ(web_view_helper.WebView()->MainFrame(), notification->frame); 4684 ASSERT_EQ(web_view_helper.WebView()->MainFrame(), notification->frame);
4687 4685
4688 // We don't have an API to enumarate isolated worlds for a frame, but we can 4686 // We don't have an API to enumarate isolated worlds for a frame, but we can
4689 // at least assert that the context we got is *not* the main world's context. 4687 // at least assert that the context we got is *not* the main world's context.
(...skipping 2270 matching lines...) Expand 10 before | Expand all | Expand 10 after
6960 6958
6961 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentBody) { 6959 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentBody) {
6962 TestAccessInitialDocumentWebFrameClient web_frame_client; 6960 TestAccessInitialDocumentWebFrameClient web_frame_client;
6963 FrameTestHelpers::WebViewHelper web_view_helper; 6961 FrameTestHelpers::WebViewHelper web_view_helper;
6964 web_view_helper.Initialize(true, &web_frame_client); 6962 web_view_helper.Initialize(true, &web_frame_client);
6965 RunPendingTasks(); 6963 RunPendingTasks();
6966 EXPECT_EQ(0, web_frame_client.did_access_initial_document_); 6964 EXPECT_EQ(0, web_frame_client.did_access_initial_document_);
6967 6965
6968 // Create another window that will try to access it. 6966 // Create another window that will try to access it.
6969 FrameTestHelpers::WebViewHelper new_web_view_helper; 6967 FrameTestHelpers::WebViewHelper new_web_view_helper;
6970 WebView* new_view = new_web_view_helper.InitializeWithOpener( 6968 WebViewBase* new_view = new_web_view_helper.InitializeWithOpener(
6971 web_view_helper.WebView()->MainFrame(), true); 6969 web_view_helper.WebView()->MainFrame(), true);
6972 RunPendingTasks(); 6970 RunPendingTasks();
6973 EXPECT_EQ(0, web_frame_client.did_access_initial_document_); 6971 EXPECT_EQ(0, web_frame_client.did_access_initial_document_);
6974 6972
6975 // Access the initial document by modifying the body. 6973 // Access the initial document by modifying the body.
6976 new_view->MainFrame()->ExecuteScript( 6974 new_view->MainFrameImpl()->ExecuteScript(
6977 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")); 6975 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';"));
6978 RunPendingTasks(); 6976 RunPendingTasks();
6979 EXPECT_EQ(2, web_frame_client.did_access_initial_document_); 6977 EXPECT_EQ(2, web_frame_client.did_access_initial_document_);
6980 6978
6981 web_view_helper.Reset(); 6979 web_view_helper.Reset();
6982 } 6980 }
6983 6981
6984 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentOpen) { 6982 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentOpen) {
6985 TestAccessInitialDocumentWebFrameClient web_frame_client; 6983 TestAccessInitialDocumentWebFrameClient web_frame_client;
6986 FrameTestHelpers::WebViewHelper web_view_helper; 6984 FrameTestHelpers::WebViewHelper web_view_helper;
6987 web_view_helper.Initialize(true, &web_frame_client); 6985 web_view_helper.Initialize(true, &web_frame_client);
6988 RunPendingTasks(); 6986 RunPendingTasks();
6989 EXPECT_EQ(0, web_frame_client.did_access_initial_document_); 6987 EXPECT_EQ(0, web_frame_client.did_access_initial_document_);
6990 6988
6991 // Create another window that will try to access it. 6989 // Create another window that will try to access it.
6992 FrameTestHelpers::WebViewHelper new_web_view_helper; 6990 FrameTestHelpers::WebViewHelper new_web_view_helper;
6993 WebView* new_view = new_web_view_helper.InitializeWithOpener( 6991 WebViewBase* new_view = new_web_view_helper.InitializeWithOpener(
6994 web_view_helper.WebView()->MainFrame(), true); 6992 web_view_helper.WebView()->MainFrame(), true);
6995 RunPendingTasks(); 6993 RunPendingTasks();
6996 EXPECT_EQ(0, web_frame_client.did_access_initial_document_); 6994 EXPECT_EQ(0, web_frame_client.did_access_initial_document_);
6997 6995
6998 // Access the initial document by calling document.open(), which allows 6996 // Access the initial document by calling document.open(), which allows
6999 // arbitrary modification of the initial document. 6997 // arbitrary modification of the initial document.
7000 new_view->MainFrame()->ExecuteScript( 6998 new_view->MainFrameImpl()->ExecuteScript(
7001 WebScriptSource("window.opener.document.open();")); 6999 WebScriptSource("window.opener.document.open();"));
7002 RunPendingTasks(); 7000 RunPendingTasks();
7003 EXPECT_EQ(1, web_frame_client.did_access_initial_document_); 7001 EXPECT_EQ(1, web_frame_client.did_access_initial_document_);
7004 7002
7005 web_view_helper.Reset(); 7003 web_view_helper.Reset();
7006 } 7004 }
7007 7005
7008 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentNavigator) { 7006 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentNavigator) {
7009 TestAccessInitialDocumentWebFrameClient web_frame_client; 7007 TestAccessInitialDocumentWebFrameClient web_frame_client;
7010 FrameTestHelpers::WebViewHelper web_view_helper; 7008 FrameTestHelpers::WebViewHelper web_view_helper;
7011 web_view_helper.Initialize(true, &web_frame_client); 7009 web_view_helper.Initialize(true, &web_frame_client);
7012 RunPendingTasks(); 7010 RunPendingTasks();
7013 EXPECT_EQ(0, web_frame_client.did_access_initial_document_); 7011 EXPECT_EQ(0, web_frame_client.did_access_initial_document_);
7014 7012
7015 // Create another window that will try to access it. 7013 // Create another window that will try to access it.
7016 FrameTestHelpers::WebViewHelper new_web_view_helper; 7014 FrameTestHelpers::WebViewHelper new_web_view_helper;
7017 WebView* new_view = new_web_view_helper.InitializeWithOpener( 7015 WebViewBase* new_view = new_web_view_helper.InitializeWithOpener(
7018 web_view_helper.WebView()->MainFrame(), true); 7016 web_view_helper.WebView()->MainFrame(), true);
7019 RunPendingTasks(); 7017 RunPendingTasks();
7020 EXPECT_EQ(0, web_frame_client.did_access_initial_document_); 7018 EXPECT_EQ(0, web_frame_client.did_access_initial_document_);
7021 7019
7022 // Access the initial document to get to the navigator object. 7020 // Access the initial document to get to the navigator object.
7023 new_view->MainFrame()->ExecuteScript( 7021 new_view->MainFrameImpl()->ExecuteScript(
7024 WebScriptSource("console.log(window.opener.navigator);")); 7022 WebScriptSource("console.log(window.opener.navigator);"));
7025 RunPendingTasks(); 7023 RunPendingTasks();
7026 EXPECT_EQ(3, web_frame_client.did_access_initial_document_); 7024 EXPECT_EQ(3, web_frame_client.did_access_initial_document_);
7027 7025
7028 web_view_helper.Reset(); 7026 web_view_helper.Reset();
7029 } 7027 }
7030 7028
7031 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentViaJavascriptUrl) { 7029 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentViaJavascriptUrl) {
7032 TestAccessInitialDocumentWebFrameClient web_frame_client; 7030 TestAccessInitialDocumentWebFrameClient web_frame_client;
7033 FrameTestHelpers::WebViewHelper web_view_helper; 7031 FrameTestHelpers::WebViewHelper web_view_helper;
(...skipping 13 matching lines...) Expand all
7047 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentBodyBeforeModalDialog) 7045 TEST_P(ParameterizedWebFrameTest, DidAccessInitialDocumentBodyBeforeModalDialog)
7048 { 7046 {
7049 TestAccessInitialDocumentWebFrameClient web_frame_client; 7047 TestAccessInitialDocumentWebFrameClient web_frame_client;
7050 FrameTestHelpers::WebViewHelper web_view_helper; 7048 FrameTestHelpers::WebViewHelper web_view_helper;
7051 web_view_helper.Initialize(true, &web_frame_client); 7049 web_view_helper.Initialize(true, &web_frame_client);
7052 RunPendingTasks(); 7050 RunPendingTasks();
7053 EXPECT_EQ(0, web_frame_client.did_access_initial_document_); 7051 EXPECT_EQ(0, web_frame_client.did_access_initial_document_);
7054 7052
7055 // Create another window that will try to access it. 7053 // Create another window that will try to access it.
7056 FrameTestHelpers::WebViewHelper new_web_view_helper; 7054 FrameTestHelpers::WebViewHelper new_web_view_helper;
7057 WebView* new_view = new_web_view_helper.InitializeWithOpener( 7055 WebViewBase* new_view = new_web_view_helper.InitializeWithOpener(
7058 web_view_helper.WebView()->MainFrame(), true); 7056 web_view_helper.WebView()->MainFrame(), true);
7059 RunPendingTasks(); 7057 RunPendingTasks();
7060 EXPECT_EQ(0, web_frame_client.did_access_initial_document_); 7058 EXPECT_EQ(0, web_frame_client.did_access_initial_document_);
7061 7059
7062 // Access the initial document by modifying the body. 7060 // Access the initial document by modifying the body.
7063 new_view->MainFrame()->ExecuteScript( 7061 new_view->MainFrameImpl()->ExecuteScript(
7064 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';")); 7062 WebScriptSource("window.opener.document.body.innerHTML += 'Modified';"));
7065 EXPECT_EQ(2, web_frame_client.did_access_initial_document_); 7063 EXPECT_EQ(2, web_frame_client.did_access_initial_document_);
7066 7064
7067 // Run a modal dialog, which used to run a nested run loop and require 7065 // Run a modal dialog, which used to run a nested run loop and require
7068 // a special case for notifying about the access. 7066 // a special case for notifying about the access.
7069 new_view->MainFrame()->ExecuteScript( 7067 new_view->MainFrameImpl()->ExecuteScript(
7070 WebScriptSource("window.opener.confirm('Modal');")); 7068 WebScriptSource("window.opener.confirm('Modal');"));
7071 EXPECT_EQ(3, web_frame_client.did_access_initial_document_); 7069 EXPECT_EQ(3, web_frame_client.did_access_initial_document_);
7072 7070
7073 // Ensure that we don't notify again later. 7071 // Ensure that we don't notify again later.
7074 RunPendingTasks(); 7072 RunPendingTasks();
7075 EXPECT_EQ(3, web_frame_client.did_access_initial_document_); 7073 EXPECT_EQ(3, web_frame_client.did_access_initial_document_);
7076 7074
7077 web_view_helper.Reset(); 7075 web_view_helper.Reset();
7078 } 7076 }
7079 7077
7080 TEST_P(ParameterizedWebFrameTest, DidWriteToInitialDocumentBeforeModalDialog) 7078 TEST_P(ParameterizedWebFrameTest, DidWriteToInitialDocumentBeforeModalDialog)
7081 { 7079 {
7082 TestAccessInitialDocumentWebFrameClient web_frame_client; 7080 TestAccessInitialDocumentWebFrameClient web_frame_client;
7083 FrameTestHelpers::WebViewHelper web_view_helper; 7081 FrameTestHelpers::WebViewHelper web_view_helper;
7084 web_view_helper.Initialize(true, &web_frame_client); 7082 web_view_helper.Initialize(true, &web_frame_client);
7085 RunPendingTasks(); 7083 RunPendingTasks();
7086 EXPECT_EQ(0, web_frame_client.did_access_initial_document_); 7084 EXPECT_EQ(0, web_frame_client.did_access_initial_document_);
7087 7085
7088 // Create another window that will try to access it. 7086 // Create another window that will try to access it.
7089 FrameTestHelpers::WebViewHelper new_web_view_helper; 7087 FrameTestHelpers::WebViewHelper new_web_view_helper;
7090 WebView* new_view = new_web_view_helper.InitializeWithOpener( 7088 WebViewBase* new_view = new_web_view_helper.InitializeWithOpener(
7091 web_view_helper.WebView()->MainFrame(), true); 7089 web_view_helper.WebView()->MainFrame(), true);
7092 RunPendingTasks(); 7090 RunPendingTasks();
7093 EXPECT_EQ(0, web_frame_client.did_access_initial_document_); 7091 EXPECT_EQ(0, web_frame_client.did_access_initial_document_);
7094 7092
7095 // Access the initial document with document.write, which moves us past the 7093 // Access the initial document with document.write, which moves us past the
7096 // initial empty document state of the state machine. 7094 // initial empty document state of the state machine.
7097 new_view->MainFrame()->ExecuteScript( 7095 new_view->MainFrameImpl()->ExecuteScript(
7098 WebScriptSource("window.opener.document.write('Modified'); " 7096 WebScriptSource("window.opener.document.write('Modified'); "
7099 "window.opener.document.close();")); 7097 "window.opener.document.close();"));
7100 EXPECT_EQ(1, web_frame_client.did_access_initial_document_); 7098 EXPECT_EQ(1, web_frame_client.did_access_initial_document_);
7101 7099
7102 // Run a modal dialog, which used to run a nested run loop and require 7100 // Run a modal dialog, which used to run a nested run loop and require
7103 // a special case for notifying about the access. 7101 // a special case for notifying about the access.
7104 new_view->MainFrame()->ExecuteScript( 7102 new_view->MainFrameImpl()->ExecuteScript(
7105 WebScriptSource("window.opener.confirm('Modal');")); 7103 WebScriptSource("window.opener.confirm('Modal');"));
7106 EXPECT_EQ(1, web_frame_client.did_access_initial_document_); 7104 EXPECT_EQ(1, web_frame_client.did_access_initial_document_);
7107 7105
7108 // Ensure that we don't notify again later. 7106 // Ensure that we don't notify again later.
7109 RunPendingTasks(); 7107 RunPendingTasks();
7110 EXPECT_EQ(1, web_frame_client.did_access_initial_document_); 7108 EXPECT_EQ(1, web_frame_client.did_access_initial_document_);
7111 7109
7112 web_view_helper.Reset(); 7110 web_view_helper.Reset();
7113 } 7111 }
7114 7112
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after
7755 // Tests that the first navigation in an initially blank subframe will result in 7753 // Tests that the first navigation in an initially blank subframe will result in
7756 // a history entry being replaced and not a new one being added. 7754 // a history entry being replaced and not a new one being added.
7757 TEST_P(ParameterizedWebFrameTest, FirstBlankSubframeNavigation) { 7755 TEST_P(ParameterizedWebFrameTest, FirstBlankSubframeNavigation) {
7758 RegisterMockedHttpURLLoad("history.html"); 7756 RegisterMockedHttpURLLoad("history.html");
7759 RegisterMockedHttpURLLoad("find.html"); 7757 RegisterMockedHttpURLLoad("find.html");
7760 7758
7761 TestHistoryWebFrameClient client; 7759 TestHistoryWebFrameClient client;
7762 FrameTestHelpers::WebViewHelper web_view_helper; 7760 FrameTestHelpers::WebViewHelper web_view_helper;
7763 web_view_helper.InitializeAndLoad("about:blank", true, &client); 7761 web_view_helper.InitializeAndLoad("about:blank", true, &client);
7764 7762
7765 WebFrame* frame = web_view_helper.WebView()->MainFrame(); 7763 WebLocalFrame* frame = web_view_helper.WebView()->MainFrameImpl();
7766 7764
7767 frame->ExecuteScript(WebScriptSource(WebString::FromUTF8( 7765 frame->ExecuteScript(WebScriptSource(WebString::FromUTF8(
7768 "document.body.appendChild(document.createElement('iframe'))"))); 7766 "document.body.appendChild(document.createElement('iframe'))")));
7769 7767
7770 WebFrame* iframe = frame->FirstChild(); 7768 WebFrame* iframe = frame->FirstChild();
7771 ASSERT_EQ(&client, ToWebLocalFrameBase(iframe)->Client()); 7769 ASSERT_EQ(&client, ToWebLocalFrameBase(iframe)->Client());
7772 7770
7773 std::string url1 = base_url_ + "history.html"; 7771 std::string url1 = base_url_ + "history.html";
7774 FrameTestHelpers::LoadFrame(iframe, url1); 7772 FrameTestHelpers::LoadFrame(iframe, url1);
7775 EXPECT_EQ(url1, iframe->GetDocument().Url().GetString().Utf8()); 7773 EXPECT_EQ(url1, iframe->GetDocument().Url().GetString().Utf8());
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
7829 PaintLayerCompositor* compositor = web_view_helper.WebView()->Compositor(); 7827 PaintLayerCompositor* compositor = web_view_helper.WebView()->Compositor();
7830 ASSERT_TRUE(compositor->ScrollLayer()); 7828 ASSERT_TRUE(compositor->ScrollLayer());
7831 7829
7832 // Verify that the WebLayer is not scrollable initially. 7830 // Verify that the WebLayer is not scrollable initially.
7833 GraphicsLayer* scroll_layer = compositor->ScrollLayer(); 7831 GraphicsLayer* scroll_layer = compositor->ScrollLayer();
7834 WebLayer* web_scroll_layer = scroll_layer->PlatformLayer(); 7832 WebLayer* web_scroll_layer = scroll_layer->PlatformLayer();
7835 ASSERT_FALSE(web_scroll_layer->UserScrollableHorizontal()); 7833 ASSERT_FALSE(web_scroll_layer->UserScrollableHorizontal());
7836 ASSERT_FALSE(web_scroll_layer->UserScrollableVertical()); 7834 ASSERT_FALSE(web_scroll_layer->UserScrollableVertical());
7837 7835
7838 // Call javascript to make the layer scrollable, and verify it. 7836 // Call javascript to make the layer scrollable, and verify it.
7839 WebLocalFrameBase* frame = 7837 WebLocalFrameBase* frame = web_view_helper.WebView()->MainFrameImpl();
7840 (WebLocalFrameBase*)web_view_helper.WebView()->MainFrame();
7841 frame->ExecuteScript(WebScriptSource("allowScroll();")); 7838 frame->ExecuteScript(WebScriptSource("allowScroll();"));
7842 web_view_helper.WebView()->UpdateAllLifecyclePhases(); 7839 web_view_helper.WebView()->UpdateAllLifecyclePhases();
7843 ASSERT_TRUE(web_scroll_layer->UserScrollableHorizontal()); 7840 ASSERT_TRUE(web_scroll_layer->UserScrollableHorizontal());
7844 ASSERT_TRUE(web_scroll_layer->UserScrollableVertical()); 7841 ASSERT_TRUE(web_scroll_layer->UserScrollableVertical());
7845 } 7842 }
7846 7843
7847 // Test that currentHistoryItem reflects the current page, not the provisional 7844 // Test that currentHistoryItem reflects the current page, not the provisional
7848 // load. 7845 // load.
7849 TEST_P(ParameterizedWebFrameTest, CurrentHistoryItem) { 7846 TEST_P(ParameterizedWebFrameTest, CurrentHistoryItem) {
7850 RegisterMockedHttpURLLoad("fixed_layout.html"); 7847 RegisterMockedHttpURLLoad("fixed_layout.html");
(...skipping 1040 matching lines...) Expand 10 before | Expand all | Expand 10 after
8891 RegisterMockedHttpURLLoad("frame-a-b-c.html"); 8888 RegisterMockedHttpURLLoad("frame-a-b-c.html");
8892 RegisterMockedHttpURLLoad("subframe-a.html"); 8889 RegisterMockedHttpURLLoad("subframe-a.html");
8893 RegisterMockedHttpURLLoad("subframe-b.html"); 8890 RegisterMockedHttpURLLoad("subframe-b.html");
8894 RegisterMockedHttpURLLoad("subframe-c.html"); 8891 RegisterMockedHttpURLLoad("subframe-c.html");
8895 RegisterMockedHttpURLLoad("subframe-hello.html"); 8892 RegisterMockedHttpURLLoad("subframe-hello.html");
8896 8893
8897 web_view_helper_.InitializeAndLoad(base_url_ + "frame-a-b-c.html", true); 8894 web_view_helper_.InitializeAndLoad(base_url_ + "frame-a-b-c.html", true);
8898 } 8895 }
8899 8896
8900 void Reset() { web_view_helper_.Reset(); } 8897 void Reset() { web_view_helper_.Reset(); }
8901 WebFrame* MainFrame() const { 8898 WebLocalFrame* MainFrame() const {
8902 return web_view_helper_.WebView()->MainFrame(); 8899 return web_view_helper_.WebView()->MainFrameImpl();
8903 } 8900 }
8904 WebViewBase* WebView() const { return web_view_helper_.WebView(); } 8901 WebViewBase* WebView() const { return web_view_helper_.WebView(); }
8905 8902
8906 private: 8903 private:
8907 FrameTestHelpers::WebViewHelper web_view_helper_; 8904 FrameTestHelpers::WebViewHelper web_view_helper_;
8908 }; 8905 };
8909 8906
8910 TEST_F(WebFrameSwapTest, SwapMainFrame) { 8907 TEST_F(WebFrameSwapTest, SwapMainFrame) {
8911 WebRemoteFrame* remote_frame = 8908 WebRemoteFrame* remote_frame =
8912 WebRemoteFrame::Create(WebTreeScopeType::kDocument, nullptr); 8909 WebRemoteFrame::Create(WebTreeScopeType::kDocument, nullptr);
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after
9553 Reset(); 9550 Reset();
9554 } 9551 }
9555 9552
9556 TEST_F(WebFrameSwapTest, WindowOpenOnRemoteFrame) { 9553 TEST_F(WebFrameSwapTest, WindowOpenOnRemoteFrame) {
9557 RemoteNavigationClient remote_client; 9554 RemoteNavigationClient remote_client;
9558 WebRemoteFrame* remote_frame = remote_client.GetFrame(); 9555 WebRemoteFrame* remote_frame = remote_client.GetFrame();
9559 MainFrame()->FirstChild()->Swap(remote_frame); 9556 MainFrame()->FirstChild()->Swap(remote_frame);
9560 remote_frame->SetReplicatedOrigin( 9557 remote_frame->SetReplicatedOrigin(
9561 WebSecurityOrigin::CreateFromString("http://127.0.0.1")); 9558 WebSecurityOrigin::CreateFromString("http://127.0.0.1"));
9562 9559
9563 ASSERT_TRUE(MainFrame()->IsWebLocalFrame());
9564 ASSERT_TRUE(MainFrame()->FirstChild()->IsWebRemoteFrame()); 9560 ASSERT_TRUE(MainFrame()->FirstChild()->IsWebRemoteFrame());
9565 LocalDOMWindow* main_window = 9561 LocalDOMWindow* main_window =
9566 ToWebLocalFrameBase(MainFrame())->GetFrame()->DomWindow(); 9562 ToWebLocalFrameBase(MainFrame())->GetFrame()->DomWindow();
9567 9563
9568 KURL destination = ToKURL("data:text/html:destination"); 9564 KURL destination = ToKURL("data:text/html:destination");
9569 NonThrowableExceptionState exception_state; 9565 NonThrowableExceptionState exception_state;
9570 main_window->open(destination.GetString(), "frame1", "", main_window, 9566 main_window->open(destination.GetString(), "frame1", "", main_window,
9571 main_window, exception_state); 9567 main_window, exception_state);
9572 ASSERT_FALSE(remote_client.LastRequest().IsNull()); 9568 ASSERT_FALSE(remote_client.LastRequest().IsNull());
9573 EXPECT_EQ(remote_client.LastRequest().Url(), WebURL(destination)); 9569 EXPECT_EQ(remote_client.LastRequest().Url(), WebURL(destination));
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
9834 FrameTestHelpers::WebViewHelper web_view_helper; 9830 FrameTestHelpers::WebViewHelper web_view_helper;
9835 TestConsoleMessageWebFrameClient web_frame_client; 9831 TestConsoleMessageWebFrameClient web_frame_client;
9836 FrameTestHelpers::TestWebViewClient web_view_client; 9832 FrameTestHelpers::TestWebViewClient web_view_client;
9837 web_view_helper.InitializeAndLoad(base_url_ + "hidden_frames.html", true, 9833 web_view_helper.InitializeAndLoad(base_url_ + "hidden_frames.html", true,
9838 &web_frame_client, &web_view_client); 9834 &web_frame_client, &web_view_client);
9839 9835
9840 // Create another window with a cross-origin page, and point its opener to 9836 // Create another window with a cross-origin page, and point its opener to
9841 // first window. 9837 // first window.
9842 FrameTestHelpers::WebViewHelper popup_web_view_helper; 9838 FrameTestHelpers::WebViewHelper popup_web_view_helper;
9843 TestConsoleMessageWebFrameClient popup_web_frame_client; 9839 TestConsoleMessageWebFrameClient popup_web_frame_client;
9844 WebView* popup_view = popup_web_view_helper.InitializeAndLoad( 9840 WebViewBase* popup_view = popup_web_view_helper.InitializeAndLoad(
9845 chrome_url_ + "hello_world.html", true, &popup_web_frame_client); 9841 chrome_url_ + "hello_world.html", true, &popup_web_frame_client);
9846 popup_view->MainFrame()->SetOpener(web_view_helper.WebView()->MainFrame()); 9842 popup_view->MainFrame()->SetOpener(web_view_helper.WebView()->MainFrame());
9847 9843
9848 // Attempt a blocked navigation of an opener's subframe, and ensure that 9844 // Attempt a blocked navigation of an opener's subframe, and ensure that
9849 // the error shows up on the popup (calling) window's console, rather than 9845 // the error shows up on the popup (calling) window's console, rather than
9850 // the target window. 9846 // the target window.
9851 popup_view->MainFrame()->ExecuteScript(WebScriptSource( 9847 popup_view->MainFrameImpl()->ExecuteScript(WebScriptSource(
9852 "try { opener.frames[1].location.href='data:text/html,foo'; } catch (e) " 9848 "try { opener.frames[1].location.href='data:text/html,foo'; } catch (e) "
9853 "{}")); 9849 "{}"));
9854 EXPECT_TRUE(web_frame_client.messages.IsEmpty()); 9850 EXPECT_TRUE(web_frame_client.messages.IsEmpty());
9855 ASSERT_EQ(1u, popup_web_frame_client.messages.size()); 9851 ASSERT_EQ(1u, popup_web_frame_client.messages.size());
9856 EXPECT_TRUE(std::string::npos != 9852 EXPECT_TRUE(std::string::npos !=
9857 popup_web_frame_client.messages[0].text.Utf8().find( 9853 popup_web_frame_client.messages[0].text.Utf8().find(
9858 "Unsafe JavaScript attempt to initiate navigation")); 9854 "Unsafe JavaScript attempt to initiate navigation"));
9859 9855
9860 // Try setting a cross-origin iframe element's source to a javascript: URL, 9856 // Try setting a cross-origin iframe element's source to a javascript: URL,
9861 // and check that this error is also printed on the calling window. 9857 // and check that this error is also printed on the calling window.
9862 popup_view->MainFrame()->ExecuteScript( 9858 popup_view->MainFrameImpl()->ExecuteScript(
9863 WebScriptSource("opener.document.querySelectorAll('iframe')[1].src='" 9859 WebScriptSource("opener.document.querySelectorAll('iframe')[1].src='"
9864 "javascript:alert()'")); 9860 "javascript:alert()'"));
9865 EXPECT_TRUE(web_frame_client.messages.IsEmpty()); 9861 EXPECT_TRUE(web_frame_client.messages.IsEmpty());
9866 ASSERT_EQ(2u, popup_web_frame_client.messages.size()); 9862 ASSERT_EQ(2u, popup_web_frame_client.messages.size());
9867 EXPECT_TRUE( 9863 EXPECT_TRUE(
9868 std::string::npos != 9864 std::string::npos !=
9869 popup_web_frame_client.messages[1].text.Utf8().find("Blocked a frame")); 9865 popup_web_frame_client.messages[1].text.Utf8().find("Blocked a frame"));
9870 9866
9871 // Manually reset to break WebViewHelpers' dependencies on the stack 9867 // Manually reset to break WebViewHelpers' dependencies on the stack
9872 // allocated WebFrameClients. 9868 // allocated WebFrameClients.
(...skipping 670 matching lines...) Expand 10 before | Expand all | Expand 10 after
10543 bool visible_; 10539 bool visible_;
10544 }; 10540 };
10545 10541
10546 class WebFrameVisibilityChangeTest : public WebFrameTest { 10542 class WebFrameVisibilityChangeTest : public WebFrameTest {
10547 public: 10543 public:
10548 WebFrameVisibilityChangeTest() { 10544 WebFrameVisibilityChangeTest() {
10549 RegisterMockedHttpURLLoad("visible_iframe.html"); 10545 RegisterMockedHttpURLLoad("visible_iframe.html");
10550 RegisterMockedHttpURLLoad("single_iframe.html"); 10546 RegisterMockedHttpURLLoad("single_iframe.html");
10551 frame_ = web_view_helper_ 10547 frame_ = web_view_helper_
10552 .InitializeAndLoad(base_url_ + "single_iframe.html", true) 10548 .InitializeAndLoad(base_url_ + "single_iframe.html", true)
10553 ->MainFrame(); 10549 ->MainFrameImpl();
10554 web_remote_frame_ = RemoteFrameClient()->GetFrame(); 10550 web_remote_frame_ = RemoteFrameClient()->GetFrame();
10555 } 10551 }
10556 10552
10557 ~WebFrameVisibilityChangeTest() {} 10553 ~WebFrameVisibilityChangeTest() {}
10558 10554
10559 void ExecuteScriptOnMainFrame(const WebScriptSource& script) { 10555 void ExecuteScriptOnMainFrame(const WebScriptSource& script) {
10560 MainFrame()->ExecuteScript(script); 10556 MainFrame()->ExecuteScript(script);
10561 MainFrame()->View()->UpdateAllLifecyclePhases(); 10557 MainFrame()->View()->UpdateAllLifecyclePhases();
10562 RunPendingTasks(); 10558 RunPendingTasks();
10563 } 10559 }
10564 10560
10565 void SwapLocalFrameToRemoteFrame() { 10561 void SwapLocalFrameToRemoteFrame() {
10566 LastChild(MainFrame())->Swap(RemoteFrame()); 10562 LastChild(MainFrame())->Swap(RemoteFrame());
10567 RemoteFrame()->SetReplicatedOrigin(SecurityOrigin::CreateUnique()); 10563 RemoteFrame()->SetReplicatedOrigin(SecurityOrigin::CreateUnique());
10568 } 10564 }
10569 10565
10570 WebFrame* MainFrame() { return frame_; } 10566 WebLocalFrame* MainFrame() { return frame_; }
10571 WebRemoteFrameImpl* RemoteFrame() { return web_remote_frame_; } 10567 WebRemoteFrameImpl* RemoteFrame() { return web_remote_frame_; }
10572 TestWebRemoteFrameClientForVisibility* RemoteFrameClient() { 10568 TestWebRemoteFrameClientForVisibility* RemoteFrameClient() {
10573 return &remote_frame_client_; 10569 return &remote_frame_client_;
10574 } 10570 }
10575 10571
10576 private: 10572 private:
10577 TestWebRemoteFrameClientForVisibility remote_frame_client_; 10573 TestWebRemoteFrameClientForVisibility remote_frame_client_;
10578 FrameTestHelpers::WebViewHelper web_view_helper_; 10574 FrameTestHelpers::WebViewHelper web_view_helper_;
10579 WebFrame* frame_; 10575 WebLocalFrame* frame_;
10580 Persistent<WebRemoteFrameImpl> web_remote_frame_; 10576 Persistent<WebRemoteFrameImpl> web_remote_frame_;
10581 }; 10577 };
10582 10578
10583 TEST_F(WebFrameVisibilityChangeTest, RemoteFrameVisibilityChange) { 10579 TEST_F(WebFrameVisibilityChangeTest, RemoteFrameVisibilityChange) {
10584 SwapLocalFrameToRemoteFrame(); 10580 SwapLocalFrameToRemoteFrame();
10585 ExecuteScriptOnMainFrame(WebScriptSource( 10581 ExecuteScriptOnMainFrame(WebScriptSource(
10586 "document.querySelector('iframe').style.display = 'none';")); 10582 "document.querySelector('iframe').style.display = 'none';"));
10587 EXPECT_FALSE(RemoteFrameClient()->IsVisible()); 10583 EXPECT_FALSE(RemoteFrameClient()->IsVisible());
10588 10584
10589 ExecuteScriptOnMainFrame(WebScriptSource( 10585 ExecuteScriptOnMainFrame(WebScriptSource(
(...skipping 1595 matching lines...) Expand 10 before | Expand all | Expand 10 after
12185 if (obj->IsText()) { 12181 if (obj->IsText()) {
12186 LayoutText* layout_text = ToLayoutText(obj); 12182 LayoutText* layout_text = ToLayoutText(obj);
12187 text = layout_text->GetText(); 12183 text = layout_text->GetText();
12188 break; 12184 break;
12189 } 12185 }
12190 } 12186 }
12191 EXPECT_EQ("foo alt", text.Utf8()); 12187 EXPECT_EQ("foo alt", text.Utf8());
12192 } 12188 }
12193 12189
12194 } // namespace blink 12190 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/tests/VisualViewportTest.cpp ('k') | third_party/WebKit/Source/web/tests/WebViewTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698