OLD | NEW |
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 14 matching lines...) Expand all Loading... |
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
29 */ | 29 */ |
30 | 30 |
31 #include "public/web/WebFrame.h" | 31 #include "public/web/WebFrame.h" |
32 | 32 |
33 #include <stdarg.h> | 33 #include <stdarg.h> |
34 | 34 |
| 35 #include <limits> |
35 #include <map> | 36 #include <map> |
36 #include <memory> | 37 #include <memory> |
| 38 #include <set> |
37 | 39 |
38 #include "SkBitmap.h" | 40 #include "SkBitmap.h" |
39 #include "SkCanvas.h" | 41 #include "SkCanvas.h" |
40 #include "bindings/core/v8/V8BindingForCore.h" | 42 #include "bindings/core/v8/V8BindingForCore.h" |
41 #include "bindings/core/v8/V8Node.h" | 43 #include "bindings/core/v8/V8Node.h" |
42 #include "bindings/core/v8/serialization/SerializedScriptValueFactory.h" | 44 #include "bindings/core/v8/serialization/SerializedScriptValueFactory.h" |
43 #include "bindings/core/v8/serialization/V8ScriptValueSerializer.h" | 45 #include "bindings/core/v8/serialization/V8ScriptValueSerializer.h" |
44 #include "core/clipboard/DataTransfer.h" | 46 #include "core/clipboard/DataTransfer.h" |
45 #include "core/css/StyleSheetContents.h" | 47 #include "core/css/StyleSheetContents.h" |
46 #include "core/css/resolver/StyleResolver.h" | 48 #include "core/css/resolver/StyleResolver.h" |
(...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
615 EXPECT_EQ(String(), callback_helper.StringValue()); | 617 EXPECT_EQ(String(), callback_helper.StringValue()); |
616 } | 618 } |
617 | 619 |
618 TEST_P(ParameterizedWebFrameTest, FormWithNullFrame) { | 620 TEST_P(ParameterizedWebFrameTest, FormWithNullFrame) { |
619 RegisterMockedHttpURLLoad("form.html"); | 621 RegisterMockedHttpURLLoad("form.html"); |
620 | 622 |
621 FrameTestHelpers::WebViewHelper web_view_helper; | 623 FrameTestHelpers::WebViewHelper web_view_helper; |
622 web_view_helper.InitializeAndLoad(base_url_ + "form.html"); | 624 web_view_helper.InitializeAndLoad(base_url_ + "form.html"); |
623 | 625 |
624 WebVector<WebFormElement> forms; | 626 WebVector<WebFormElement> forms; |
625 web_view_helper.WebView()->MainFrame()->GetDocument().Forms(forms); | 627 web_view_helper.WebView()->MainFrameImpl()->GetDocument().Forms(forms); |
626 web_view_helper.Reset(); | 628 web_view_helper.Reset(); |
627 | 629 |
628 EXPECT_EQ(forms.size(), 1U); | 630 EXPECT_EQ(forms.size(), 1U); |
629 | 631 |
630 // This test passes if this doesn't crash. | 632 // This test passes if this doesn't crash. |
631 WebSearchableFormData searchable_data_form(forms[0]); | 633 WebSearchableFormData searchable_data_form(forms[0]); |
632 } | 634 } |
633 | 635 |
634 TEST_P(ParameterizedWebFrameTest, ChromePageJavascript) { | 636 TEST_P(ParameterizedWebFrameTest, ChromePageJavascript) { |
635 RegisterMockedChromeURLLoad("history.html"); | 637 RegisterMockedChromeURLLoad("history.html"); |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1003 | 1005 |
1004 TEST_P(ParameterizedWebFrameTest, DispatchMessageEventWithOriginCheck) { | 1006 TEST_P(ParameterizedWebFrameTest, DispatchMessageEventWithOriginCheck) { |
1005 RegisterMockedHttpURLLoad("postmessage_test.html"); | 1007 RegisterMockedHttpURLLoad("postmessage_test.html"); |
1006 | 1008 |
1007 FrameTestHelpers::WebViewHelper web_view_helper; | 1009 FrameTestHelpers::WebViewHelper web_view_helper; |
1008 web_view_helper.InitializeAndLoad(base_url_ + "postmessage_test.html"); | 1010 web_view_helper.InitializeAndLoad(base_url_ + "postmessage_test.html"); |
1009 | 1011 |
1010 // Send a message with the correct origin. | 1012 // Send a message with the correct origin. |
1011 WebSecurityOrigin correct_origin( | 1013 WebSecurityOrigin correct_origin( |
1012 WebSecurityOrigin::Create(ToKURL(base_url_))); | 1014 WebSecurityOrigin::Create(ToKURL(base_url_))); |
1013 WebDocument document = web_view_helper.WebView()->MainFrame()->GetDocument(); | 1015 WebDocument document = |
| 1016 web_view_helper.WebView()->MainFrameImpl()->GetDocument(); |
1014 WebSerializedScriptValue data(WebSerializedScriptValue::CreateInvalid()); | 1017 WebSerializedScriptValue data(WebSerializedScriptValue::CreateInvalid()); |
1015 WebDOMMessageEvent message(data, "http://origin.com"); | 1018 WebDOMMessageEvent message(data, "http://origin.com"); |
1016 web_view_helper.WebView() | 1019 web_view_helper.WebView() |
1017 ->MainFrameImpl() | 1020 ->MainFrameImpl() |
1018 ->DispatchMessageEventWithOriginCheck(correct_origin, message); | 1021 ->DispatchMessageEventWithOriginCheck(correct_origin, message); |
1019 | 1022 |
1020 // Send another message with incorrect origin. | 1023 // Send another message with incorrect origin. |
1021 WebSecurityOrigin incorrect_origin( | 1024 WebSecurityOrigin incorrect_origin( |
1022 WebSecurityOrigin::Create(ToKURL(chrome_url_))); | 1025 WebSecurityOrigin::Create(ToKURL(chrome_url_))); |
1023 web_view_helper.WebView() | 1026 web_view_helper.WebView() |
(...skipping 2883 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3907 web_view_helper.WebView()->EnableFakePageScaleAnimationForTesting(true); | 3910 web_view_helper.WebView()->EnableFakePageScaleAnimationForTesting(true); |
3908 | 3911 |
3909 WebRect edit_box_with_text(200, 200, 250, 20); | 3912 WebRect edit_box_with_text(200, 200, 250, 20); |
3910 WebRect edit_box_with_no_text(200, 250, 250, 20); | 3913 WebRect edit_box_with_no_text(200, 250, 250, 20); |
3911 | 3914 |
3912 // Test scrolling the focused node | 3915 // Test scrolling the focused node |
3913 // The edit box is shorter and narrower than the viewport when legible. | 3916 // The edit box is shorter and narrower than the viewport when legible. |
3914 web_view_helper.WebView()->AdvanceFocus(false); | 3917 web_view_helper.WebView()->AdvanceFocus(false); |
3915 // Set the caret to the end of the input box. | 3918 // Set the caret to the end of the input box. |
3916 web_view_helper.WebView() | 3919 web_view_helper.WebView() |
3917 ->MainFrame() | 3920 ->MainFrameImpl() |
3918 ->GetDocument() | 3921 ->GetDocument() |
3919 .GetElementById("EditBoxWithText") | 3922 .GetElementById("EditBoxWithText") |
3920 .To<WebInputElement>() | 3923 .To<WebInputElement>() |
3921 .SetSelectionRange(1000, 1000); | 3924 .SetSelectionRange(1000, 1000); |
3922 SetScaleAndScrollAndLayout(web_view_helper.WebView(), WebPoint(0, 0), 1); | 3925 SetScaleAndScrollAndLayout(web_view_helper.WebView(), WebPoint(0, 0), 1); |
3923 WebRect rect, caret; | 3926 WebRect rect, caret; |
3924 web_view_helper.WebView()->SelectionBounds(caret, rect); | 3927 web_view_helper.WebView()->SelectionBounds(caret, rect); |
3925 | 3928 |
3926 // Set the page scale to be smaller than the minimal readable scale. | 3929 // Set the page scale to be smaller than the minimal readable scale. |
3927 float initial_scale = min_readable_caret_height / caret.height * 0.5f; | 3930 float initial_scale = min_readable_caret_height / caret.height * 0.5f; |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4004 web_view_helper.WebView()->GetPage()->GetSettings().SetTextAutosizingEnabled( | 4007 web_view_helper.WebView()->GetPage()->GetSettings().SetTextAutosizingEnabled( |
4005 false); | 4008 false); |
4006 web_view_helper.Resize(WebSize(kViewportWidth, kViewportHeight)); | 4009 web_view_helper.Resize(WebSize(kViewportWidth, kViewportHeight)); |
4007 web_view_helper.WebView()->EnableFakePageScaleAnimationForTesting(true); | 4010 web_view_helper.WebView()->EnableFakePageScaleAnimationForTesting(true); |
4008 | 4011 |
4009 const WebRect edit_box_with_text(200, 200, 250, 20); | 4012 const WebRect edit_box_with_text(200, 200, 250, 20); |
4010 | 4013 |
4011 web_view_helper.WebView()->AdvanceFocus(false); | 4014 web_view_helper.WebView()->AdvanceFocus(false); |
4012 // Set the caret to the begining of the input box. | 4015 // Set the caret to the begining of the input box. |
4013 web_view_helper.WebView() | 4016 web_view_helper.WebView() |
4014 ->MainFrame() | 4017 ->MainFrameImpl() |
4015 ->GetDocument() | 4018 ->GetDocument() |
4016 .GetElementById("EditBoxWithText") | 4019 .GetElementById("EditBoxWithText") |
4017 .To<WebInputElement>() | 4020 .To<WebInputElement>() |
4018 .SetSelectionRange(0, 0); | 4021 .SetSelectionRange(0, 0); |
4019 SetScaleAndScrollAndLayout(web_view_helper.WebView(), WebPoint(0, 0), 1); | 4022 SetScaleAndScrollAndLayout(web_view_helper.WebView(), WebPoint(0, 0), 1); |
4020 WebRect rect, caret; | 4023 WebRect rect, caret; |
4021 web_view_helper.WebView()->SelectionBounds(caret, rect); | 4024 web_view_helper.WebView()->SelectionBounds(caret, rect); |
4022 | 4025 |
4023 // Set the page scale to be twice as large as the minimal readable scale. | 4026 // Set the page scale to be twice as large as the minimal readable scale. |
4024 float new_scale = kMinReadableCaretHeight / caret.height * 2.0; | 4027 float new_scale = kMinReadableCaretHeight / caret.height * 2.0; |
(...skipping 1282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5307 } | 5310 } |
5308 | 5311 |
5309 static WebPoint BottomRightMinusOne(const WebRect& rect) { | 5312 static WebPoint BottomRightMinusOne(const WebRect& rect) { |
5310 // FIXME: If we don't subtract 1 from the x- and y-coordinates of the | 5313 // FIXME: If we don't subtract 1 from the x- and y-coordinates of the |
5311 // selection bounds, selectRange() will select the *next* element. That's | 5314 // selection bounds, selectRange() will select the *next* element. That's |
5312 // strictly correct, as hit-testing checks the pixel to the lower-right of | 5315 // strictly correct, as hit-testing checks the pixel to the lower-right of |
5313 // the input coordinate, but it's a wart on the API. | 5316 // the input coordinate, but it's a wart on the API. |
5314 return WebPoint(rect.x + rect.width - 1, rect.y + rect.height - 1); | 5317 return WebPoint(rect.x + rect.width - 1, rect.y + rect.height - 1); |
5315 } | 5318 } |
5316 | 5319 |
5317 static WebRect ElementBounds(WebFrame* frame, const WebString& id) { | 5320 static WebRect ElementBounds(WebLocalFrame* frame, const WebString& id) { |
5318 return frame->GetDocument().GetElementById(id).BoundsInViewport(); | 5321 return frame->GetDocument().GetElementById(id).BoundsInViewport(); |
5319 } | 5322 } |
5320 | 5323 |
5321 static std::string SelectionAsString(WebFrame* frame) { | 5324 static std::string SelectionAsString(WebFrame* frame) { |
5322 return frame->ToWebLocalFrame()->SelectionAsText().Utf8(); | 5325 return frame->ToWebLocalFrame()->SelectionAsText().Utf8(); |
5323 } | 5326 } |
5324 | 5327 |
5325 TEST_P(ParameterizedWebFrameTest, SelectRange) { | 5328 TEST_P(ParameterizedWebFrameTest, SelectRange) { |
5326 WebLocalFrame* frame; | 5329 WebLocalFrame* frame; |
5327 WebRect start_web_rect; | 5330 WebRect start_web_rect; |
(...skipping 1356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6684 WebVector<unsigned> offsets2; | 6687 WebVector<unsigned> offsets2; |
6685 GetSpellingMarkerOffsets(&offsets2, *frame->GetDocument()); | 6688 GetSpellingMarkerOffsets(&offsets2, *frame->GetDocument()); |
6686 EXPECT_EQ(0U, offsets2.size()); | 6689 EXPECT_EQ(0U, offsets2.size()); |
6687 } | 6690 } |
6688 | 6691 |
6689 class StubbornTextCheckClient : public WebTextCheckClient { | 6692 class StubbornTextCheckClient : public WebTextCheckClient { |
6690 public: | 6693 public: |
6691 StubbornTextCheckClient() : completion_(0) {} | 6694 StubbornTextCheckClient() : completion_(0) {} |
6692 virtual ~StubbornTextCheckClient() {} | 6695 virtual ~StubbornTextCheckClient() {} |
6693 | 6696 |
6694 virtual void RequestCheckingOfText( | 6697 void RequestCheckingOfText(const WebString&, |
6695 const WebString&, | 6698 WebTextCheckingCompletion* completion) override { |
6696 WebTextCheckingCompletion* completion) override { | |
6697 completion_ = completion; | 6699 completion_ = completion; |
6698 } | 6700 } |
6699 | 6701 |
6700 void CancelAllPendingRequests() override { | 6702 void CancelAllPendingRequests() override { |
6701 if (!completion_) | 6703 if (!completion_) |
6702 return; | 6704 return; |
6703 completion_->DidCancelCheckingText(); | 6705 completion_->DidCancelCheckingText(); |
6704 completion_ = nullptr; | 6706 completion_ = nullptr; |
6705 } | 6707 } |
6706 | 6708 |
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7155 test_url, redirect_response, file_path); | 7157 test_url, redirect_response, file_path); |
7156 | 7158 |
7157 WebURLResponse final_response; | 7159 WebURLResponse final_response; |
7158 final_response.SetMIMEType("text/html"); | 7160 final_response.SetMIMEType("text/html"); |
7159 Platform::Current()->GetURLLoaderMockFactory()->RegisterURL( | 7161 Platform::Current()->GetURLLoaderMockFactory()->RegisterURL( |
7160 redirect_url, final_response, file_path); | 7162 redirect_url, final_response, file_path); |
7161 | 7163 |
7162 FrameTestHelpers::WebViewHelper web_view_helper; | 7164 FrameTestHelpers::WebViewHelper web_view_helper; |
7163 web_view_helper.InitializeAndLoad(base_url_ + "first_party_redirect.html"); | 7165 web_view_helper.InitializeAndLoad(base_url_ + "first_party_redirect.html"); |
7164 EXPECT_TRUE(web_view_helper.WebView() | 7166 EXPECT_TRUE(web_view_helper.WebView() |
7165 ->MainFrame() | 7167 ->MainFrameImpl() |
7166 ->GetDocument() | 7168 ->GetDocument() |
7167 .FirstPartyForCookies() == redirect_url); | 7169 .FirstPartyForCookies() == redirect_url); |
7168 } | 7170 } |
7169 | 7171 |
7170 class TestNavigationPolicyWebFrameClient | 7172 class TestNavigationPolicyWebFrameClient |
7171 : public FrameTestHelpers::TestWebFrameClient { | 7173 : public FrameTestHelpers::TestWebFrameClient { |
7172 public: | 7174 public: |
7173 void DidNavigateWithinPage(const WebHistoryItem&, | 7175 void DidNavigateWithinPage(const WebHistoryItem&, |
7174 WebHistoryCommitType, | 7176 WebHistoryCommitType, |
7175 bool) override { | 7177 bool) override { |
(...skipping 22 matching lines...) Expand all Loading... |
7198 MouseEvent::Create(nullptr, EventTypeNames::click, mouse_initializer); | 7200 MouseEvent::Create(nullptr, EventTypeNames::click, mouse_initializer); |
7199 FrameLoadRequest frame_request(document, ResourceRequest(destination)); | 7201 FrameLoadRequest frame_request(document, ResourceRequest(destination)); |
7200 frame_request.SetTriggeringEvent(event); | 7202 frame_request.SetTriggeringEvent(event); |
7201 ToLocalFrame(web_view_helper.WebView()->GetPage()->MainFrame()) | 7203 ToLocalFrame(web_view_helper.WebView()->GetPage()->MainFrame()) |
7202 ->Loader() | 7204 ->Loader() |
7203 .Load(frame_request); | 7205 .Load(frame_request); |
7204 } | 7206 } |
7205 | 7207 |
7206 class TestNewWindowWebViewClient : public FrameTestHelpers::TestWebViewClient { | 7208 class TestNewWindowWebViewClient : public FrameTestHelpers::TestWebViewClient { |
7207 public: | 7209 public: |
7208 virtual WebView* CreateView(WebLocalFrame*, | 7210 WebView* CreateView(WebLocalFrame*, |
7209 const WebURLRequest&, | 7211 const WebURLRequest&, |
7210 const WebWindowFeatures&, | 7212 const WebWindowFeatures&, |
7211 const WebString&, | 7213 const WebString&, |
7212 WebNavigationPolicy, | 7214 WebNavigationPolicy, |
7213 bool) override { | 7215 bool) override { |
7214 EXPECT_TRUE(false); | 7216 EXPECT_TRUE(false); |
7215 return 0; | 7217 return 0; |
7216 } | 7218 } |
7217 }; | 7219 }; |
7218 | 7220 |
7219 class TestNewWindowWebFrameClient | 7221 class TestNewWindowWebFrameClient |
7220 : public FrameTestHelpers::TestWebFrameClient { | 7222 : public FrameTestHelpers::TestWebFrameClient { |
7221 public: | 7223 public: |
7222 TestNewWindowWebFrameClient() : decide_policy_call_count_(0) {} | 7224 TestNewWindowWebFrameClient() : decide_policy_call_count_(0) {} |
7223 | 7225 |
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7682 | 7684 |
7683 TestHistoryWebFrameClient client; | 7685 TestHistoryWebFrameClient client; |
7684 FrameTestHelpers::WebViewHelper web_view_helper; | 7686 FrameTestHelpers::WebViewHelper web_view_helper; |
7685 web_view_helper.InitializeAndLoad("about:blank", &client); | 7687 web_view_helper.InitializeAndLoad("about:blank", &client); |
7686 | 7688 |
7687 WebLocalFrame* frame = web_view_helper.WebView()->MainFrameImpl(); | 7689 WebLocalFrame* frame = web_view_helper.WebView()->MainFrameImpl(); |
7688 | 7690 |
7689 frame->ExecuteScript(WebScriptSource(WebString::FromUTF8( | 7691 frame->ExecuteScript(WebScriptSource(WebString::FromUTF8( |
7690 "document.body.appendChild(document.createElement('iframe'))"))); | 7692 "document.body.appendChild(document.createElement('iframe'))"))); |
7691 | 7693 |
7692 WebLocalFrame* iframe = frame->FirstChild()->ToWebLocalFrame(); | 7694 WebLocalFrameBase* iframe = ToWebLocalFrameBase(frame->FirstChild()); |
7693 ASSERT_EQ(&client.ChildClient(), ToWebLocalFrameBase(iframe)->Client()); | 7695 ASSERT_EQ(&client.ChildClient(), iframe->Client()); |
7694 | 7696 |
7695 std::string url1 = base_url_ + "history.html"; | 7697 std::string url1 = base_url_ + "history.html"; |
7696 FrameTestHelpers::LoadFrame(iframe, url1); | 7698 FrameTestHelpers::LoadFrame(iframe, url1); |
7697 EXPECT_EQ(url1, iframe->GetDocument().Url().GetString().Utf8()); | 7699 EXPECT_EQ(url1, iframe->GetDocument().Url().GetString().Utf8()); |
7698 EXPECT_TRUE(client.ChildClient().ReplacesCurrentHistoryItem()); | 7700 EXPECT_TRUE(client.ChildClient().ReplacesCurrentHistoryItem()); |
7699 | 7701 |
7700 std::string url2 = base_url_ + "find.html"; | 7702 std::string url2 = base_url_ + "find.html"; |
7701 FrameTestHelpers::LoadFrame(iframe, url2); | 7703 FrameTestHelpers::LoadFrame(iframe, url2); |
7702 EXPECT_EQ(url2, iframe->GetDocument().Url().GetString().Utf8()); | 7704 EXPECT_EQ(url2, iframe->GetDocument().Url().GetString().Utf8()); |
7703 EXPECT_FALSE(client.ChildClient().ReplacesCurrentHistoryItem()); | 7705 EXPECT_FALSE(client.ChildClient().ReplacesCurrentHistoryItem()); |
(...skipping 1732 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9436 WebLocalFrame* local_frame = | 9438 WebLocalFrame* local_frame = |
9437 FrameTestHelpers::CreateProvisional(*remote_frame); | 9439 FrameTestHelpers::CreateProvisional(*remote_frame); |
9438 remote_frame->Swap(local_frame); | 9440 remote_frame->Swap(local_frame); |
9439 | 9441 |
9440 // And the opener cycle should still be preserved. | 9442 // And the opener cycle should still be preserved. |
9441 EXPECT_EQ(local_frame, local_frame->Opener()); | 9443 EXPECT_EQ(local_frame, local_frame->Opener()); |
9442 } | 9444 } |
9443 | 9445 |
9444 class CommitTypeWebFrameClient : public FrameTestHelpers::TestWebFrameClient { | 9446 class CommitTypeWebFrameClient : public FrameTestHelpers::TestWebFrameClient { |
9445 public: | 9447 public: |
9446 explicit CommitTypeWebFrameClient() | 9448 CommitTypeWebFrameClient() : history_commit_type_(kWebHistoryInertCommit) {} |
9447 : history_commit_type_(kWebHistoryInertCommit) {} | |
9448 | 9449 |
9449 void DidCommitProvisionalLoad( | 9450 void DidCommitProvisionalLoad( |
9450 const WebHistoryItem&, | 9451 const WebHistoryItem&, |
9451 WebHistoryCommitType history_commit_type) override { | 9452 WebHistoryCommitType history_commit_type) override { |
9452 history_commit_type_ = history_commit_type; | 9453 history_commit_type_ = history_commit_type; |
9453 } | 9454 } |
9454 | 9455 |
9455 WebHistoryCommitType HistoryCommitType() const { | 9456 WebHistoryCommitType HistoryCommitType() const { |
9456 return history_commit_type_; | 9457 return history_commit_type_; |
9457 } | 9458 } |
(...skipping 1047 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10505 local_frame->CopyImageAt(WebPoint(50, 50)); | 10506 local_frame->CopyImageAt(WebPoint(50, 50)); |
10506 | 10507 |
10507 EXPECT_NE(sequence, Platform::Current()->Clipboard()->SequenceNumber( | 10508 EXPECT_NE(sequence, Platform::Current()->Clipboard()->SequenceNumber( |
10508 WebClipboard::kBufferStandard)); | 10509 WebClipboard::kBufferStandard)); |
10509 | 10510 |
10510 WebImage image = | 10511 WebImage image = |
10511 static_cast<WebMockClipboard*>(Platform::Current()->Clipboard()) | 10512 static_cast<WebMockClipboard*>(Platform::Current()->Clipboard()) |
10512 ->ReadRawImage(WebClipboard::Buffer()); | 10513 ->ReadRawImage(WebClipboard::Buffer()); |
10513 | 10514 |
10514 EXPECT_EQ(SkColorSetARGB(255, 255, 0, 0), image.GetSkBitmap().getColor(0, 0)); | 10515 EXPECT_EQ(SkColorSetARGB(255, 255, 0, 0), image.GetSkBitmap().getColor(0, 0)); |
10515 }; | 10516 } |
10516 | 10517 |
10517 TEST_F(WebFrameTest, CopyImageAtWithPinchZoom) { | 10518 TEST_F(WebFrameTest, CopyImageAtWithPinchZoom) { |
10518 std::string url = base_url_ + "canvas-copy-image.html"; | 10519 std::string url = base_url_ + "canvas-copy-image.html"; |
10519 RegisterMockedURLLoadFromBase(base_url_, "canvas-copy-image.html"); | 10520 RegisterMockedURLLoadFromBase(base_url_, "canvas-copy-image.html"); |
10520 | 10521 |
10521 FrameTestHelpers::WebViewHelper helper; | 10522 FrameTestHelpers::WebViewHelper helper; |
10522 WebViewBase* web_view = helper.InitializeAndLoad(url); | 10523 WebViewBase* web_view = helper.InitializeAndLoad(url); |
10523 web_view->Resize(WebSize(400, 400)); | 10524 web_view->Resize(WebSize(400, 400)); |
10524 web_view->UpdateAllLifecyclePhases(); | 10525 web_view->UpdateAllLifecyclePhases(); |
10525 web_view->SetPageScaleFactor(2); | 10526 web_view->SetPageScaleFactor(2); |
10526 web_view->SetVisualViewportOffset(WebFloatPoint(200, 200)); | 10527 web_view->SetVisualViewportOffset(WebFloatPoint(200, 200)); |
10527 | 10528 |
10528 uint64_t sequence = Platform::Current()->Clipboard()->SequenceNumber( | 10529 uint64_t sequence = Platform::Current()->Clipboard()->SequenceNumber( |
10529 WebClipboard::kBufferStandard); | 10530 WebClipboard::kBufferStandard); |
10530 | 10531 |
10531 WebLocalFrame* local_frame = web_view->MainFrameImpl(); | 10532 WebLocalFrame* local_frame = web_view->MainFrameImpl(); |
10532 local_frame->CopyImageAt(WebPoint(0, 0)); | 10533 local_frame->CopyImageAt(WebPoint(0, 0)); |
10533 | 10534 |
10534 EXPECT_NE(sequence, Platform::Current()->Clipboard()->SequenceNumber( | 10535 EXPECT_NE(sequence, Platform::Current()->Clipboard()->SequenceNumber( |
10535 WebClipboard::kBufferStandard)); | 10536 WebClipboard::kBufferStandard)); |
10536 | 10537 |
10537 WebImage image = | 10538 WebImage image = |
10538 static_cast<WebMockClipboard*>(Platform::Current()->Clipboard()) | 10539 static_cast<WebMockClipboard*>(Platform::Current()->Clipboard()) |
10539 ->ReadRawImage(WebClipboard::Buffer()); | 10540 ->ReadRawImage(WebClipboard::Buffer()); |
10540 | 10541 |
10541 EXPECT_EQ(SkColorSetARGB(255, 255, 0, 0), image.GetSkBitmap().getColor(0, 0)); | 10542 EXPECT_EQ(SkColorSetARGB(255, 255, 0, 0), image.GetSkBitmap().getColor(0, 0)); |
10542 }; | 10543 } |
10543 | 10544 |
10544 TEST_F(WebFrameTest, CopyImageWithImageMap) { | 10545 TEST_F(WebFrameTest, CopyImageWithImageMap) { |
10545 SaveImageFromDataURLWebFrameClient client; | 10546 SaveImageFromDataURLWebFrameClient client; |
10546 | 10547 |
10547 std::string url = base_url_ + "image-map.html"; | 10548 std::string url = base_url_ + "image-map.html"; |
10548 RegisterMockedURLLoadFromBase(base_url_, "image-map.html"); | 10549 RegisterMockedURLLoadFromBase(base_url_, "image-map.html"); |
10549 | 10550 |
10550 FrameTestHelpers::WebViewHelper helper; | 10551 FrameTestHelpers::WebViewHelper helper; |
10551 WebViewBase* web_view = helper.InitializeAndLoad(url, &client); | 10552 WebViewBase* web_view = helper.InitializeAndLoad(url, &client); |
10552 web_view->Resize(WebSize(400, 400)); | 10553 web_view->Resize(WebSize(400, 400)); |
(...skipping 1280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11833 "document.querySelector('input').focus();")); | 11834 "document.querySelector('input').focus();")); |
11834 | 11835 |
11835 // Verify that the right WebWidgetClient has been notified. | 11836 // Verify that the right WebWidgetClient has been notified. |
11836 EXPECT_TRUE(web_widget_client.DidShowVirtualKeyboard()); | 11837 EXPECT_TRUE(web_widget_client.DidShowVirtualKeyboard()); |
11837 | 11838 |
11838 web_view_helper.Reset(); | 11839 web_view_helper.Reset(); |
11839 } | 11840 } |
11840 | 11841 |
11841 class ContextMenuWebFrameClient : public FrameTestHelpers::TestWebFrameClient { | 11842 class ContextMenuWebFrameClient : public FrameTestHelpers::TestWebFrameClient { |
11842 public: | 11843 public: |
11843 ContextMenuWebFrameClient(){}; | 11844 ContextMenuWebFrameClient() {} |
11844 // WebFrameClient methods | 11845 // WebFrameClient methods |
11845 void ShowContextMenu(const WebContextMenuData& data) override { | 11846 void ShowContextMenu(const WebContextMenuData& data) override { |
11846 menu_data_ = data; | 11847 menu_data_ = data; |
11847 } | 11848 } |
11848 | 11849 |
11849 WebContextMenuData GetMenuData() { return menu_data_; } | 11850 WebContextMenuData GetMenuData() { return menu_data_; } |
11850 | 11851 |
11851 private: | 11852 private: |
11852 WebContextMenuData menu_data_; | 11853 WebContextMenuData menu_data_; |
11853 DISALLOW_COPY_AND_ASSIGN(ContextMenuWebFrameClient); | 11854 DISALLOW_COPY_AND_ASSIGN(ContextMenuWebFrameClient); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11924 FrameTestHelpers::CreateLocalChild(*helper.RemoteMainFrame()); | 11925 FrameTestHelpers::CreateLocalChild(*helper.RemoteMainFrame()); |
11925 FrameTestHelpers::LoadFrame(local_frame, "data:text/html,some page"); | 11926 FrameTestHelpers::LoadFrame(local_frame, "data:text/html,some page"); |
11926 | 11927 |
11927 // Local frame with remote parent should have transparent baseBackgroundColor. | 11928 // Local frame with remote parent should have transparent baseBackgroundColor. |
11928 Color color = local_frame->GetFrameView()->BaseBackgroundColor(); | 11929 Color color = local_frame->GetFrameView()->BaseBackgroundColor(); |
11929 EXPECT_EQ(Color::kTransparent, color); | 11930 EXPECT_EQ(Color::kTransparent, color); |
11930 } | 11931 } |
11931 | 11932 |
11932 class TestFallbackWebFrameClient : public FrameTestHelpers::TestWebFrameClient { | 11933 class TestFallbackWebFrameClient : public FrameTestHelpers::TestWebFrameClient { |
11933 public: | 11934 public: |
11934 explicit TestFallbackWebFrameClient() : child_client_(nullptr) {} | 11935 TestFallbackWebFrameClient() : child_client_(nullptr) {} |
11935 | 11936 |
11936 void SetChildWebFrameClient(TestFallbackWebFrameClient* client) { | 11937 void SetChildWebFrameClient(TestFallbackWebFrameClient* client) { |
11937 child_client_ = client; | 11938 child_client_ = client; |
11938 } | 11939 } |
11939 | 11940 |
11940 WebLocalFrame* CreateChildFrame( | 11941 WebLocalFrame* CreateChildFrame( |
11941 WebLocalFrame* parent, | 11942 WebLocalFrame* parent, |
11942 WebTreeScopeType scope, | 11943 WebTreeScopeType scope, |
11943 const WebString&, | 11944 const WebString&, |
11944 const WebString&, | 11945 const WebString&, |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
12013 if (obj->IsText()) { | 12014 if (obj->IsText()) { |
12014 LayoutText* layout_text = ToLayoutText(obj); | 12015 LayoutText* layout_text = ToLayoutText(obj); |
12015 text = layout_text->GetText(); | 12016 text = layout_text->GetText(); |
12016 break; | 12017 break; |
12017 } | 12018 } |
12018 } | 12019 } |
12019 EXPECT_EQ("foo alt", text.Utf8()); | 12020 EXPECT_EQ("foo alt", text.Utf8()); |
12020 } | 12021 } |
12021 | 12022 |
12022 } // namespace blink | 12023 } // namespace blink |
OLD | NEW |