| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 #include "core/paint/PaintLayer.h" | 58 #include "core/paint/PaintLayer.h" |
| 59 #include "core/paint/PaintLayerPainter.h" | 59 #include "core/paint/PaintLayerPainter.h" |
| 60 #include "core/timing/DOMWindowPerformance.h" | 60 #include "core/timing/DOMWindowPerformance.h" |
| 61 #include "core/timing/Performance.h" | 61 #include "core/timing/Performance.h" |
| 62 #include "platform/KeyboardCodes.h" | 62 #include "platform/KeyboardCodes.h" |
| 63 #include "platform/UserGestureIndicator.h" | 63 #include "platform/UserGestureIndicator.h" |
| 64 #include "platform/geometry/IntRect.h" | 64 #include "platform/geometry/IntRect.h" |
| 65 #include "platform/geometry/IntSize.h" | 65 #include "platform/geometry/IntSize.h" |
| 66 #include "platform/graphics/Color.h" | 66 #include "platform/graphics/Color.h" |
| 67 #include "platform/graphics/GraphicsContext.h" | 67 #include "platform/graphics/GraphicsContext.h" |
| 68 #include "platform/graphics/GraphicsLayer.h" |
| 68 #include "platform/graphics/paint/PaintRecordBuilder.h" | 69 #include "platform/graphics/paint/PaintRecordBuilder.h" |
| 69 #include "platform/scroll/ScrollTypes.h" | 70 #include "platform/scroll/ScrollTypes.h" |
| 70 #include "platform/testing/RuntimeEnabledFeaturesTestHelpers.h" | 71 #include "platform/testing/RuntimeEnabledFeaturesTestHelpers.h" |
| 71 #include "platform/testing/URLTestHelpers.h" | 72 #include "platform/testing/URLTestHelpers.h" |
| 72 #include "platform/testing/UnitTestHelpers.h" | 73 #include "platform/testing/UnitTestHelpers.h" |
| 73 #include "platform/wtf/PtrUtil.h" | 74 #include "platform/wtf/PtrUtil.h" |
| 74 #include "public/platform/Platform.h" | 75 #include "public/platform/Platform.h" |
| 76 #include "public/platform/WebCoalescedInputEvent.h" |
| 75 #include "public/platform/WebDisplayMode.h" | 77 #include "public/platform/WebDisplayMode.h" |
| 76 #include "public/platform/WebDragData.h" | 78 #include "public/platform/WebDragData.h" |
| 77 #include "public/platform/WebDragOperation.h" | 79 #include "public/platform/WebDragOperation.h" |
| 78 #include "public/platform/WebFloatPoint.h" | 80 #include "public/platform/WebFloatPoint.h" |
| 79 #include "public/platform/WebInputEvent.h" | 81 #include "public/platform/WebInputEvent.h" |
| 80 #include "public/platform/WebKeyboardEvent.h" | 82 #include "public/platform/WebKeyboardEvent.h" |
| 81 #include "public/platform/WebLayerTreeView.h" | 83 #include "public/platform/WebLayerTreeView.h" |
| 82 #include "public/platform/WebMockClipboard.h" | 84 #include "public/platform/WebMockClipboard.h" |
| 83 #include "public/platform/WebSize.h" | 85 #include "public/platform/WebSize.h" |
| 84 #include "public/platform/WebThread.h" | 86 #include "public/platform/WebThread.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 kVisibleHorizontalScrollbar, | 127 kVisibleHorizontalScrollbar, |
| 126 }; | 128 }; |
| 127 | 129 |
| 128 enum VerticalScrollbarState { | 130 enum VerticalScrollbarState { |
| 129 kNoVerticalScrollbar, | 131 kNoVerticalScrollbar, |
| 130 kVisibleVerticalScrollbar, | 132 kVisibleVerticalScrollbar, |
| 131 }; | 133 }; |
| 132 | 134 |
| 133 class TestData { | 135 class TestData { |
| 134 public: | 136 public: |
| 135 void SetWebView(WebView* web_view) { web_view_ = ToWebViewImpl(web_view); } | 137 void SetWebView(WebView* web_view) { |
| 138 web_view_ = static_cast<WebViewBase*>(web_view); |
| 139 } |
| 136 void SetSize(const WebSize& new_size) { size_ = new_size; } | 140 void SetSize(const WebSize& new_size) { size_ = new_size; } |
| 137 HorizontalScrollbarState GetHorizontalScrollbarState() const { | 141 HorizontalScrollbarState GetHorizontalScrollbarState() const { |
| 138 return web_view_->HasHorizontalScrollbar() ? kVisibleHorizontalScrollbar | 142 return web_view_->HasHorizontalScrollbar() ? kVisibleHorizontalScrollbar |
| 139 : kNoHorizontalScrollbar; | 143 : kNoHorizontalScrollbar; |
| 140 } | 144 } |
| 141 VerticalScrollbarState GetVerticalScrollbarState() const { | 145 VerticalScrollbarState GetVerticalScrollbarState() const { |
| 142 return web_view_->HasVerticalScrollbar() ? kVisibleVerticalScrollbar | 146 return web_view_->HasVerticalScrollbar() ? kVisibleVerticalScrollbar |
| 143 : kNoVerticalScrollbar; | 147 : kNoVerticalScrollbar; |
| 144 } | 148 } |
| 145 int Width() const { return size_.width; } | 149 int Width() const { return size_.width; } |
| 146 int Height() const { return size_.height; } | 150 int Height() const { return size_.height; } |
| 147 | 151 |
| 148 private: | 152 private: |
| 149 WebSize size_; | 153 WebSize size_; |
| 150 WebViewImpl* web_view_; | 154 WebViewBase* web_view_; |
| 151 }; | 155 }; |
| 152 | 156 |
| 153 class AutoResizeWebViewClient : public FrameTestHelpers::TestWebViewClient { | 157 class AutoResizeWebViewClient : public FrameTestHelpers::TestWebViewClient { |
| 154 public: | 158 public: |
| 155 // WebViewClient methods | 159 // WebViewClient methods |
| 156 void DidAutoResize(const WebSize& new_size) override { | 160 void DidAutoResize(const WebSize& new_size) override { |
| 157 test_data_.SetSize(new_size); | 161 test_data_.SetSize(new_size); |
| 158 } | 162 } |
| 159 | 163 |
| 160 // Local methods | 164 // Local methods |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 386 EXPECT_EQ(image_url, HitTestAbsoluteUrl(web_view, 25, 25)); | 390 EXPECT_EQ(image_url, HitTestAbsoluteUrl(web_view, 25, 25)); |
| 387 } | 391 } |
| 388 | 392 |
| 389 TEST_P(WebViewTest, SetBaseBackgroundColor) { | 393 TEST_P(WebViewTest, SetBaseBackgroundColor) { |
| 390 const WebColor kWhite = 0xFFFFFFFF; | 394 const WebColor kWhite = 0xFFFFFFFF; |
| 391 const WebColor kBlue = 0xFF0000FF; | 395 const WebColor kBlue = 0xFF0000FF; |
| 392 const WebColor kDarkCyan = 0xFF227788; | 396 const WebColor kDarkCyan = 0xFF227788; |
| 393 const WebColor kTranslucentPutty = 0x80BFB196; | 397 const WebColor kTranslucentPutty = 0x80BFB196; |
| 394 const WebColor kTransparent = 0x00000000; | 398 const WebColor kTransparent = 0x00000000; |
| 395 | 399 |
| 396 WebViewImpl* web_view = web_view_helper_.Initialize(); | 400 WebViewBase* web_view = web_view_helper_.Initialize(); |
| 397 EXPECT_EQ(kWhite, web_view->BackgroundColor()); | 401 EXPECT_EQ(kWhite, web_view->BackgroundColor()); |
| 398 | 402 |
| 399 web_view->SetBaseBackgroundColor(kBlue); | 403 web_view->SetBaseBackgroundColor(kBlue); |
| 400 EXPECT_EQ(kBlue, web_view->BackgroundColor()); | 404 EXPECT_EQ(kBlue, web_view->BackgroundColor()); |
| 401 | 405 |
| 402 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); | 406 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); |
| 403 FrameTestHelpers::LoadHTMLString(web_view->MainFrame(), | 407 FrameTestHelpers::LoadHTMLString(web_view->MainFrame(), |
| 404 "<html><head><style>body " | 408 "<html><head><style>body " |
| 405 "{background-color:#227788}</style></head></" | 409 "{background-color:#227788}</style></head></" |
| 406 "html>", | 410 "html>", |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 | 444 |
| 441 const Color transparent_red(100, 0, 0, 0); | 445 const Color transparent_red(100, 0, 0, 0); |
| 442 frame->CreateView(IntSize(1024, 768), transparent_red); | 446 frame->CreateView(IntSize(1024, 768), transparent_red); |
| 443 EXPECT_EQ(transparent_red, frame->View()->BaseBackgroundColor()); | 447 EXPECT_EQ(transparent_red, frame->View()->BaseBackgroundColor()); |
| 444 frame->View()->Dispose(); | 448 frame->View()->Dispose(); |
| 445 } | 449 } |
| 446 | 450 |
| 447 TEST_P(WebViewTest, SetBaseBackgroundColorBeforeMainFrame) { | 451 TEST_P(WebViewTest, SetBaseBackgroundColorBeforeMainFrame) { |
| 448 const WebColor kBlue = 0xFF0000FF; | 452 const WebColor kBlue = 0xFF0000FF; |
| 449 FrameTestHelpers::TestWebViewClient web_view_client; | 453 FrameTestHelpers::TestWebViewClient web_view_client; |
| 450 WebViewImpl* web_view = | 454 WebViewBase* web_view = |
| 451 WebViewImpl::Create(&web_view_client, kWebPageVisibilityStateVisible); | 455 WebViewBase::Create(&web_view_client, kWebPageVisibilityStateVisible); |
| 452 EXPECT_NE(kBlue, web_view->BackgroundColor()); | 456 EXPECT_NE(kBlue, web_view->BackgroundColor()); |
| 453 // webView does not have a frame yet, but we should still be able to set the | 457 // webView does not have a frame yet, but we should still be able to set the |
| 454 // background color. | 458 // background color. |
| 455 web_view->SetBaseBackgroundColor(kBlue); | 459 web_view->SetBaseBackgroundColor(kBlue); |
| 456 EXPECT_EQ(kBlue, web_view->BackgroundColor()); | 460 EXPECT_EQ(kBlue, web_view->BackgroundColor()); |
| 457 FrameTestHelpers::TestWebFrameClient web_frame_client; | 461 FrameTestHelpers::TestWebFrameClient web_frame_client; |
| 458 WebLocalFrame* frame = WebLocalFrame::Create( | 462 WebLocalFrame* frame = WebLocalFrame::Create( |
| 459 WebTreeScopeType::kDocument, &web_frame_client, nullptr, nullptr); | 463 WebTreeScopeType::kDocument, &web_frame_client, nullptr, nullptr); |
| 460 web_view->SetMainFrame(frame); | 464 web_view->SetMainFrame(frame); |
| 461 web_view->Close(); | 465 web_view->Close(); |
| 462 } | 466 } |
| 463 | 467 |
| 464 TEST_P(WebViewTest, SetBaseBackgroundColorAndBlendWithExistingContent) { | 468 TEST_P(WebViewTest, SetBaseBackgroundColorAndBlendWithExistingContent) { |
| 465 const WebColor kAlphaRed = 0x80FF0000; | 469 const WebColor kAlphaRed = 0x80FF0000; |
| 466 const WebColor kAlphaGreen = 0x8000FF00; | 470 const WebColor kAlphaGreen = 0x8000FF00; |
| 467 const int kWidth = 100; | 471 const int kWidth = 100; |
| 468 const int kHeight = 100; | 472 const int kHeight = 100; |
| 469 | 473 |
| 470 WebViewImpl* web_view = web_view_helper_.Initialize(); | 474 WebViewBase* web_view = web_view_helper_.Initialize(); |
| 471 | 475 |
| 472 // Set WebView background to green with alpha. | 476 // Set WebView background to green with alpha. |
| 473 web_view->SetBaseBackgroundColor(kAlphaGreen); | 477 web_view->SetBaseBackgroundColor(kAlphaGreen); |
| 474 web_view->GetSettings()->SetShouldClearDocumentBackground(false); | 478 web_view->GetSettings()->SetShouldClearDocumentBackground(false); |
| 475 web_view->Resize(WebSize(kWidth, kHeight)); | 479 web_view->Resize(WebSize(kWidth, kHeight)); |
| 476 web_view->UpdateAllLifecyclePhases(); | 480 web_view->UpdateAllLifecyclePhases(); |
| 477 | 481 |
| 478 // Set canvas background to red with alpha. | 482 // Set canvas background to red with alpha. |
| 479 SkBitmap bitmap; | 483 SkBitmap bitmap; |
| 480 bitmap.allocN32Pixels(kWidth, kHeight); | 484 bitmap.allocN32Pixels(kWidth, kHeight); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 496 builder.EndRecording()->playback(&canvas); | 500 builder.EndRecording()->playback(&canvas); |
| 497 | 501 |
| 498 // The result should be a blend of red and green. | 502 // The result should be a blend of red and green. |
| 499 SkColor color = bitmap.getColor(kWidth / 2, kHeight / 2); | 503 SkColor color = bitmap.getColor(kWidth / 2, kHeight / 2); |
| 500 EXPECT_TRUE(RedChannel(color)); | 504 EXPECT_TRUE(RedChannel(color)); |
| 501 EXPECT_TRUE(GreenChannel(color)); | 505 EXPECT_TRUE(GreenChannel(color)); |
| 502 } | 506 } |
| 503 | 507 |
| 504 TEST_P(WebViewTest, FocusIsInactive) { | 508 TEST_P(WebViewTest, FocusIsInactive) { |
| 505 RegisterMockedHttpURLLoad("visible_iframe.html"); | 509 RegisterMockedHttpURLLoad("visible_iframe.html"); |
| 506 WebViewImpl* web_view = | 510 WebViewBase* web_view = |
| 507 web_view_helper_.InitializeAndLoad(base_url_ + "visible_iframe.html"); | 511 web_view_helper_.InitializeAndLoad(base_url_ + "visible_iframe.html"); |
| 508 | 512 |
| 509 web_view->SetFocus(true); | 513 web_view->SetFocus(true); |
| 510 web_view->SetIsActive(true); | 514 web_view->SetIsActive(true); |
| 511 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 515 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 512 EXPECT_TRUE(frame->GetFrame()->GetDocument()->IsHTMLDocument()); | 516 EXPECT_TRUE(frame->GetFrame()->GetDocument()->IsHTMLDocument()); |
| 513 | 517 |
| 514 Document* document = frame->GetFrame()->GetDocument(); | 518 Document* document = frame->GetFrame()->GetDocument(); |
| 515 EXPECT_TRUE(document->hasFocus()); | 519 EXPECT_TRUE(document->hasFocus()); |
| 516 web_view->SetFocus(false); | 520 web_view->SetFocus(false); |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 const std::string& page_height, | 663 const std::string& page_height, |
| 660 int expected_width, | 664 int expected_width, |
| 661 int expected_height, | 665 int expected_height, |
| 662 HorizontalScrollbarState expected_horizontal_state, | 666 HorizontalScrollbarState expected_horizontal_state, |
| 663 VerticalScrollbarState expected_vertical_state) { | 667 VerticalScrollbarState expected_vertical_state) { |
| 664 AutoResizeWebViewClient client; | 668 AutoResizeWebViewClient client; |
| 665 std::string url = | 669 std::string url = |
| 666 base_url_ + "specify_size.html?" + page_width + ":" + page_height; | 670 base_url_ + "specify_size.html?" + page_width + ":" + page_height; |
| 667 URLTestHelpers::RegisterMockedURLLoad( | 671 URLTestHelpers::RegisterMockedURLLoad( |
| 668 ToKURL(url), testing::WebTestDataPath("specify_size.html")); | 672 ToKURL(url), testing::WebTestDataPath("specify_size.html")); |
| 669 WebViewImpl* web_view = | 673 WebViewBase* web_view = |
| 670 web_view_helper_.InitializeAndLoad(url, true, 0, &client); | 674 web_view_helper_.InitializeAndLoad(url, true, 0, &client); |
| 671 client.GetTestData().SetWebView(web_view); | 675 client.GetTestData().SetWebView(web_view); |
| 672 | 676 |
| 673 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 677 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 674 FrameView* frame_view = frame->GetFrame()->View(); | 678 FrameView* frame_view = frame->GetFrame()->View(); |
| 675 frame_view->UpdateLayout(); | 679 frame_view->UpdateLayout(); |
| 676 EXPECT_FALSE(frame_view->LayoutPending()); | 680 EXPECT_FALSE(frame_view->LayoutPending()); |
| 677 EXPECT_FALSE(frame_view->NeedsLayout()); | 681 EXPECT_FALSE(frame_view->NeedsLayout()); |
| 678 | 682 |
| 679 web_view->EnableAutoResizeMode(min_auto_resize, max_auto_resize); | 683 web_view->EnableAutoResizeMode(min_auto_resize, max_auto_resize); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 768 int expected_width = 200; | 772 int expected_width = 200; |
| 769 int expected_height = 300; | 773 int expected_height = 300; |
| 770 TestAutoResize(min_auto_resize, max_auto_resize, page_width, page_height, | 774 TestAutoResize(min_auto_resize, max_auto_resize, page_width, page_height, |
| 771 expected_width, expected_height, kNoHorizontalScrollbar, | 775 expected_width, expected_height, kNoHorizontalScrollbar, |
| 772 kNoVerticalScrollbar); | 776 kNoVerticalScrollbar); |
| 773 } | 777 } |
| 774 | 778 |
| 775 void WebViewTest::TestTextInputType(WebTextInputType expected_type, | 779 void WebViewTest::TestTextInputType(WebTextInputType expected_type, |
| 776 const std::string& html_file) { | 780 const std::string& html_file) { |
| 777 RegisterMockedHttpURLLoad(html_file); | 781 RegisterMockedHttpURLLoad(html_file); |
| 778 WebViewImpl* web_view = | 782 WebViewBase* web_view = |
| 779 web_view_helper_.InitializeAndLoad(base_url_ + html_file); | 783 web_view_helper_.InitializeAndLoad(base_url_ + html_file); |
| 780 WebInputMethodControllerImpl* controller = | 784 WebInputMethodControllerImpl* controller = |
| 781 web_view->MainFrameImpl()->GetInputMethodController(); | 785 web_view->MainFrameImpl()->GetInputMethodController(); |
| 782 EXPECT_EQ(kWebTextInputTypeNone, controller->TextInputType()); | 786 EXPECT_EQ(kWebTextInputTypeNone, controller->TextInputType()); |
| 783 EXPECT_EQ(kWebTextInputTypeNone, controller->TextInputInfo().type); | 787 EXPECT_EQ(kWebTextInputTypeNone, controller->TextInputInfo().type); |
| 784 web_view->SetInitialFocus(false); | 788 web_view->SetInitialFocus(false); |
| 785 EXPECT_EQ(expected_type, controller->TextInputType()); | 789 EXPECT_EQ(expected_type, controller->TextInputType()); |
| 786 EXPECT_EQ(expected_type, controller->TextInputInfo().type); | 790 EXPECT_EQ(expected_type, controller->TextInputInfo().type); |
| 787 web_view->ClearFocusedElement(); | 791 web_view->ClearFocusedElement(); |
| 788 EXPECT_EQ(kWebTextInputTypeNone, controller->TextInputType()); | 792 EXPECT_EQ(kWebTextInputTypeNone, controller->TextInputType()); |
| 789 EXPECT_EQ(kWebTextInputTypeNone, controller->TextInputInfo().type); | 793 EXPECT_EQ(kWebTextInputTypeNone, controller->TextInputInfo().type); |
| 790 } | 794 } |
| 791 | 795 |
| 792 TEST_P(WebViewTest, TextInputType) { | 796 TEST_P(WebViewTest, TextInputType) { |
| 793 TestTextInputType(kWebTextInputTypeText, "input_field_default.html"); | 797 TestTextInputType(kWebTextInputTypeText, "input_field_default.html"); |
| 794 TestTextInputType(kWebTextInputTypePassword, "input_field_password.html"); | 798 TestTextInputType(kWebTextInputTypePassword, "input_field_password.html"); |
| 795 TestTextInputType(kWebTextInputTypeEmail, "input_field_email.html"); | 799 TestTextInputType(kWebTextInputTypeEmail, "input_field_email.html"); |
| 796 TestTextInputType(kWebTextInputTypeSearch, "input_field_search.html"); | 800 TestTextInputType(kWebTextInputTypeSearch, "input_field_search.html"); |
| 797 TestTextInputType(kWebTextInputTypeNumber, "input_field_number.html"); | 801 TestTextInputType(kWebTextInputTypeNumber, "input_field_number.html"); |
| 798 TestTextInputType(kWebTextInputTypeTelephone, "input_field_tel.html"); | 802 TestTextInputType(kWebTextInputTypeTelephone, "input_field_tel.html"); |
| 799 TestTextInputType(kWebTextInputTypeURL, "input_field_url.html"); | 803 TestTextInputType(kWebTextInputTypeURL, "input_field_url.html"); |
| 800 } | 804 } |
| 801 | 805 |
| 802 TEST_P(WebViewTest, TextInputInfoUpdateStyleAndLayout) { | 806 TEST_P(WebViewTest, TextInputInfoUpdateStyleAndLayout) { |
| 803 FrameTestHelpers::TestWebViewClient client; | 807 FrameTestHelpers::TestWebViewClient client; |
| 804 FrameTestHelpers::WebViewHelper web_view_helper; | 808 FrameTestHelpers::WebViewHelper web_view_helper; |
| 805 WebViewImpl* web_view_impl = web_view_helper.Initialize(true, 0, &client); | 809 WebViewBase* web_view_impl = web_view_helper.Initialize(true, 0, &client); |
| 806 | 810 |
| 807 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); | 811 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); |
| 808 // Here, we need to construct a document that has a special property: | 812 // Here, we need to construct a document that has a special property: |
| 809 // Adding id="foo" to the <path> element will trigger creation of an SVG | 813 // Adding id="foo" to the <path> element will trigger creation of an SVG |
| 810 // instance tree for the use <use> element. | 814 // instance tree for the use <use> element. |
| 811 // This is significant, because SVG instance trees are actually created lazily | 815 // This is significant, because SVG instance trees are actually created lazily |
| 812 // during Document::updateStyleAndLayout code, thus incrementing the DOM tree | 816 // during Document::updateStyleAndLayout code, thus incrementing the DOM tree |
| 813 // version and freaking out the EphemeralRange (invalidating it). | 817 // version and freaking out the EphemeralRange (invalidating it). |
| 814 FrameTestHelpers::LoadHTMLString( | 818 FrameTestHelpers::LoadHTMLString( |
| 815 web_view_impl->MainFrame(), | 819 web_view_impl->MainFrame(), |
| (...skipping 15 matching lines...) Expand all Loading... |
| 831 // This should not DCHECK. | 835 // This should not DCHECK. |
| 832 EXPECT_EQ(kWebTextInputTypeText, web_view_impl->MainFrameImpl() | 836 EXPECT_EQ(kWebTextInputTypeText, web_view_impl->MainFrameImpl() |
| 833 ->GetInputMethodController() | 837 ->GetInputMethodController() |
| 834 ->TextInputInfo() | 838 ->TextInputInfo() |
| 835 .type); | 839 .type); |
| 836 } | 840 } |
| 837 | 841 |
| 838 void WebViewTest::TestInputMode(WebTextInputMode expected_input_mode, | 842 void WebViewTest::TestInputMode(WebTextInputMode expected_input_mode, |
| 839 const std::string& html_file) { | 843 const std::string& html_file) { |
| 840 RegisterMockedHttpURLLoad(html_file); | 844 RegisterMockedHttpURLLoad(html_file); |
| 841 WebViewImpl* web_view_impl = | 845 WebViewBase* web_view_impl = |
| 842 web_view_helper_.InitializeAndLoad(base_url_ + html_file); | 846 web_view_helper_.InitializeAndLoad(base_url_ + html_file); |
| 843 web_view_impl->SetInitialFocus(false); | 847 web_view_impl->SetInitialFocus(false); |
| 844 EXPECT_EQ(expected_input_mode, web_view_impl->MainFrameImpl() | 848 EXPECT_EQ(expected_input_mode, web_view_impl->MainFrameImpl() |
| 845 ->GetInputMethodController() | 849 ->GetInputMethodController() |
| 846 ->TextInputInfo() | 850 ->TextInputInfo() |
| 847 .input_mode); | 851 .input_mode); |
| 848 } | 852 } |
| 849 | 853 |
| 850 TEST_P(WebViewTest, InputMode) { | 854 TEST_P(WebViewTest, InputMode) { |
| 851 TestInputMode(WebTextInputMode::kWebTextInputModeDefault, | 855 TestInputMode(WebTextInputMode::kWebTextInputModeDefault, |
| (...skipping 30 matching lines...) Expand all Loading... |
| 882 "input_mode_type_email.html"); | 886 "input_mode_type_email.html"); |
| 883 TestInputMode(WebTextInputMode::kWebTextInputModeUrl, | 887 TestInputMode(WebTextInputMode::kWebTextInputModeUrl, |
| 884 "input_mode_type_url.html"); | 888 "input_mode_type_url.html"); |
| 885 } | 889 } |
| 886 | 890 |
| 887 TEST_P(WebViewTest, TextInputInfoWithReplacedElements) { | 891 TEST_P(WebViewTest, TextInputInfoWithReplacedElements) { |
| 888 std::string url = RegisterMockedHttpURLLoad("div_with_image.html"); | 892 std::string url = RegisterMockedHttpURLLoad("div_with_image.html"); |
| 889 URLTestHelpers::RegisterMockedURLLoad( | 893 URLTestHelpers::RegisterMockedURLLoad( |
| 890 ToKURL("http://www.test.com/foo.png"), | 894 ToKURL("http://www.test.com/foo.png"), |
| 891 testing::WebTestDataPath("white-1x1.png")); | 895 testing::WebTestDataPath("white-1x1.png")); |
| 892 WebViewImpl* web_view_impl = web_view_helper_.InitializeAndLoad(url); | 896 WebViewBase* web_view_impl = web_view_helper_.InitializeAndLoad(url); |
| 893 web_view_impl->SetInitialFocus(false); | 897 web_view_impl->SetInitialFocus(false); |
| 894 WebTextInputInfo info = web_view_impl->MainFrameImpl() | 898 WebTextInputInfo info = web_view_impl->MainFrameImpl() |
| 895 ->GetInputMethodController() | 899 ->GetInputMethodController() |
| 896 ->TextInputInfo(); | 900 ->TextInputInfo(); |
| 897 | 901 |
| 898 EXPECT_EQ("foo\xef\xbf\xbc", info.value.Utf8()); | 902 EXPECT_EQ("foo\xef\xbf\xbc", info.value.Utf8()); |
| 899 } | 903 } |
| 900 | 904 |
| 901 TEST_P(WebViewTest, SetEditableSelectionOffsetsAndTextInputInfo) { | 905 TEST_P(WebViewTest, SetEditableSelectionOffsetsAndTextInputInfo) { |
| 902 RegisterMockedHttpURLLoad("input_field_populated.html"); | 906 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 903 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 907 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 904 base_url_ + "input_field_populated.html"); | 908 base_url_ + "input_field_populated.html"); |
| 905 web_view->SetInitialFocus(false); | 909 web_view->SetInitialFocus(false); |
| 906 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 910 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 907 WebInputMethodControllerImpl* active_input_method_controller = | 911 WebInputMethodControllerImpl* active_input_method_controller = |
| 908 frame->GetInputMethodController(); | 912 frame->GetInputMethodController(); |
| 909 frame->SetEditableSelectionOffsets(5, 13); | 913 frame->SetEditableSelectionOffsets(5, 13); |
| 910 EXPECT_EQ("56789abc", frame->SelectionAsText()); | 914 EXPECT_EQ("56789abc", frame->SelectionAsText()); |
| 911 WebTextInputInfo info = active_input_method_controller->TextInputInfo(); | 915 WebTextInputInfo info = active_input_method_controller->TextInputInfo(); |
| 912 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", info.value); | 916 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", info.value); |
| 913 EXPECT_EQ(5, info.selection_start); | 917 EXPECT_EQ(5, info.selection_start); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 927 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", info.value); | 931 EXPECT_EQ("0123456789abcdefghijklmnopqrstuvwxyz", info.value); |
| 928 EXPECT_EQ(8, info.selection_start); | 932 EXPECT_EQ(8, info.selection_start); |
| 929 EXPECT_EQ(19, info.selection_end); | 933 EXPECT_EQ(19, info.selection_end); |
| 930 EXPECT_EQ(-1, info.composition_start); | 934 EXPECT_EQ(-1, info.composition_start); |
| 931 EXPECT_EQ(-1, info.composition_end); | 935 EXPECT_EQ(-1, info.composition_end); |
| 932 } | 936 } |
| 933 | 937 |
| 934 // Regression test for crbug.com/663645 | 938 // Regression test for crbug.com/663645 |
| 935 TEST_P(WebViewTest, FinishComposingTextDoesNotAssert) { | 939 TEST_P(WebViewTest, FinishComposingTextDoesNotAssert) { |
| 936 RegisterMockedHttpURLLoad("input_field_default.html"); | 940 RegisterMockedHttpURLLoad("input_field_default.html"); |
| 937 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 941 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 938 base_url_ + "input_field_default.html"); | 942 base_url_ + "input_field_default.html"); |
| 939 web_view->SetInitialFocus(false); | 943 web_view->SetInitialFocus(false); |
| 940 | 944 |
| 941 WebInputMethodController* active_input_method_controller = | 945 WebInputMethodController* active_input_method_controller = |
| 942 web_view->MainFrameImpl() | 946 web_view->MainFrameImpl() |
| 943 ->FrameWidget() | 947 ->FrameWidget() |
| 944 ->GetActiveWebInputMethodController(); | 948 ->GetActiveWebInputMethodController(); |
| 945 | 949 |
| 946 // The test requires non-empty composition. | 950 // The test requires non-empty composition. |
| 947 std::string composition_text("hello"); | 951 std::string composition_text("hello"); |
| 948 WebVector<WebCompositionUnderline> empty_underlines; | 952 WebVector<WebCompositionUnderline> empty_underlines; |
| 949 active_input_method_controller->SetComposition( | 953 active_input_method_controller->SetComposition( |
| 950 WebString::FromUTF8(composition_text.c_str()), empty_underlines, | 954 WebString::FromUTF8(composition_text.c_str()), empty_underlines, |
| 951 WebRange(), 5, 5); | 955 WebRange(), 5, 5); |
| 952 | 956 |
| 953 // Do arbitrary change to make layout dirty. | 957 // Do arbitrary change to make layout dirty. |
| 954 Document& document = *web_view->MainFrameImpl()->GetFrame()->GetDocument(); | 958 Document& document = *web_view->MainFrameImpl()->GetFrame()->GetDocument(); |
| 955 Element* br = document.createElement("br"); | 959 Element* br = document.createElement("br"); |
| 956 document.body()->AppendChild(br); | 960 document.body()->AppendChild(br); |
| 957 | 961 |
| 958 // Should not hit assertion when calling | 962 // Should not hit assertion when calling |
| 959 // WebInputMethodController::finishComposingText with non-empty composition | 963 // WebInputMethodController::finishComposingText with non-empty composition |
| 960 // and dirty layout. | 964 // and dirty layout. |
| 961 active_input_method_controller->FinishComposingText( | 965 active_input_method_controller->FinishComposingText( |
| 962 WebInputMethodController::kKeepSelection); | 966 WebInputMethodController::kKeepSelection); |
| 963 } | 967 } |
| 964 | 968 |
| 965 TEST_P(WebViewTest, FinishComposingTextCursorPositionChange) { | 969 TEST_P(WebViewTest, FinishComposingTextCursorPositionChange) { |
| 966 RegisterMockedHttpURLLoad("input_field_populated.html"); | 970 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 967 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 971 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 968 base_url_ + "input_field_populated.html"); | 972 base_url_ + "input_field_populated.html"); |
| 969 web_view->SetInitialFocus(false); | 973 web_view->SetInitialFocus(false); |
| 970 | 974 |
| 971 // Set up a composition that needs to be committed. | 975 // Set up a composition that needs to be committed. |
| 972 std::string composition_text("hello"); | 976 std::string composition_text("hello"); |
| 973 | 977 |
| 974 WebInputMethodController* active_input_method_controller = | 978 WebInputMethodController* active_input_method_controller = |
| 975 web_view->MainFrameImpl() | 979 web_view->MainFrameImpl() |
| 976 ->FrameWidget() | 980 ->FrameWidget() |
| 977 ->GetActiveWebInputMethodController(); | 981 ->GetActiveWebInputMethodController(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1009 WebInputMethodController::kDoNotKeepSelection); | 1013 WebInputMethodController::kDoNotKeepSelection); |
| 1010 info = active_input_method_controller->TextInputInfo(); | 1014 info = active_input_method_controller->TextInputInfo(); |
| 1011 EXPECT_EQ(8, info.selection_start); | 1015 EXPECT_EQ(8, info.selection_start); |
| 1012 EXPECT_EQ(8, info.selection_end); | 1016 EXPECT_EQ(8, info.selection_end); |
| 1013 EXPECT_EQ(-1, info.composition_start); | 1017 EXPECT_EQ(-1, info.composition_start); |
| 1014 EXPECT_EQ(-1, info.composition_end); | 1018 EXPECT_EQ(-1, info.composition_end); |
| 1015 } | 1019 } |
| 1016 | 1020 |
| 1017 TEST_P(WebViewTest, SetCompositionForNewCaretPositions) { | 1021 TEST_P(WebViewTest, SetCompositionForNewCaretPositions) { |
| 1018 RegisterMockedHttpURLLoad("input_field_populated.html"); | 1022 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 1019 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 1023 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1020 base_url_ + "input_field_populated.html"); | 1024 base_url_ + "input_field_populated.html"); |
| 1021 web_view->SetInitialFocus(false); | 1025 web_view->SetInitialFocus(false); |
| 1022 WebInputMethodController* active_input_method_controller = | 1026 WebInputMethodController* active_input_method_controller = |
| 1023 web_view->MainFrameImpl() | 1027 web_view->MainFrameImpl() |
| 1024 ->FrameWidget() | 1028 ->FrameWidget() |
| 1025 ->GetActiveWebInputMethodController(); | 1029 ->GetActiveWebInputMethodController(); |
| 1026 | 1030 |
| 1027 WebVector<WebCompositionUnderline> empty_underlines; | 1031 WebVector<WebCompositionUnderline> empty_underlines; |
| 1028 | 1032 |
| 1029 active_input_method_controller->CommitText("hello", empty_underlines, | 1033 active_input_method_controller->CommitText("hello", empty_underlines, |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1125 info = active_input_method_controller->TextInputInfo(); | 1129 info = active_input_method_controller->TextInputInfo(); |
| 1126 EXPECT_EQ("helloABCworld", std::string(info.value.Utf8().data())); | 1130 EXPECT_EQ("helloABCworld", std::string(info.value.Utf8().data())); |
| 1127 EXPECT_EQ(13, info.selection_start); | 1131 EXPECT_EQ(13, info.selection_start); |
| 1128 EXPECT_EQ(13, info.selection_end); | 1132 EXPECT_EQ(13, info.selection_end); |
| 1129 EXPECT_EQ(5, info.composition_start); | 1133 EXPECT_EQ(5, info.composition_start); |
| 1130 EXPECT_EQ(8, info.composition_end); | 1134 EXPECT_EQ(8, info.composition_end); |
| 1131 } | 1135 } |
| 1132 | 1136 |
| 1133 TEST_P(WebViewTest, SetCompositionWithEmptyText) { | 1137 TEST_P(WebViewTest, SetCompositionWithEmptyText) { |
| 1134 RegisterMockedHttpURLLoad("input_field_populated.html"); | 1138 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 1135 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 1139 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1136 base_url_ + "input_field_populated.html"); | 1140 base_url_ + "input_field_populated.html"); |
| 1137 web_view->SetInitialFocus(false); | 1141 web_view->SetInitialFocus(false); |
| 1138 WebInputMethodController* active_input_method_controller = | 1142 WebInputMethodController* active_input_method_controller = |
| 1139 web_view->MainFrameImpl() | 1143 web_view->MainFrameImpl() |
| 1140 ->FrameWidget() | 1144 ->FrameWidget() |
| 1141 ->GetActiveWebInputMethodController(); | 1145 ->GetActiveWebInputMethodController(); |
| 1142 | 1146 |
| 1143 WebVector<WebCompositionUnderline> empty_underlines; | 1147 WebVector<WebCompositionUnderline> empty_underlines; |
| 1144 | 1148 |
| 1145 active_input_method_controller->CommitText("hello", empty_underlines, | 1149 active_input_method_controller->CommitText("hello", empty_underlines, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1166 info = active_input_method_controller->TextInputInfo(); | 1170 info = active_input_method_controller->TextInputInfo(); |
| 1167 EXPECT_EQ("hello", std::string(info.value.Utf8().data())); | 1171 EXPECT_EQ("hello", std::string(info.value.Utf8().data())); |
| 1168 EXPECT_EQ(3, info.selection_start); | 1172 EXPECT_EQ(3, info.selection_start); |
| 1169 EXPECT_EQ(3, info.selection_end); | 1173 EXPECT_EQ(3, info.selection_end); |
| 1170 EXPECT_EQ(-1, info.composition_start); | 1174 EXPECT_EQ(-1, info.composition_start); |
| 1171 EXPECT_EQ(-1, info.composition_end); | 1175 EXPECT_EQ(-1, info.composition_end); |
| 1172 } | 1176 } |
| 1173 | 1177 |
| 1174 TEST_P(WebViewTest, CommitTextForNewCaretPositions) { | 1178 TEST_P(WebViewTest, CommitTextForNewCaretPositions) { |
| 1175 RegisterMockedHttpURLLoad("input_field_populated.html"); | 1179 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 1176 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 1180 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1177 base_url_ + "input_field_populated.html"); | 1181 base_url_ + "input_field_populated.html"); |
| 1178 web_view->SetInitialFocus(false); | 1182 web_view->SetInitialFocus(false); |
| 1179 WebInputMethodController* active_input_method_controller = | 1183 WebInputMethodController* active_input_method_controller = |
| 1180 web_view->MainFrameImpl() | 1184 web_view->MainFrameImpl() |
| 1181 ->FrameWidget() | 1185 ->FrameWidget() |
| 1182 ->GetActiveWebInputMethodController(); | 1186 ->GetActiveWebInputMethodController(); |
| 1183 | 1187 |
| 1184 WebVector<WebCompositionUnderline> empty_underlines; | 1188 WebVector<WebCompositionUnderline> empty_underlines; |
| 1185 | 1189 |
| 1186 // Caret is on the left of composing text. | 1190 // Caret is on the left of composing text. |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1239 info = active_input_method_controller->TextInputInfo(); | 1243 info = active_input_method_controller->TextInputInfo(); |
| 1240 EXPECT_EQ("jkgcadefbhi", std::string(info.value.Utf8().data())); | 1244 EXPECT_EQ("jkgcadefbhi", std::string(info.value.Utf8().data())); |
| 1241 EXPECT_EQ(11, info.selection_start); | 1245 EXPECT_EQ(11, info.selection_start); |
| 1242 EXPECT_EQ(11, info.selection_end); | 1246 EXPECT_EQ(11, info.selection_end); |
| 1243 EXPECT_EQ(-1, info.composition_start); | 1247 EXPECT_EQ(-1, info.composition_start); |
| 1244 EXPECT_EQ(-1, info.composition_end); | 1248 EXPECT_EQ(-1, info.composition_end); |
| 1245 } | 1249 } |
| 1246 | 1250 |
| 1247 TEST_P(WebViewTest, CommitTextWhileComposing) { | 1251 TEST_P(WebViewTest, CommitTextWhileComposing) { |
| 1248 RegisterMockedHttpURLLoad("input_field_populated.html"); | 1252 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 1249 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 1253 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1250 base_url_ + "input_field_populated.html"); | 1254 base_url_ + "input_field_populated.html"); |
| 1251 web_view->SetInitialFocus(false); | 1255 web_view->SetInitialFocus(false); |
| 1252 WebInputMethodController* active_input_method_controller = | 1256 WebInputMethodController* active_input_method_controller = |
| 1253 web_view->MainFrameImpl() | 1257 web_view->MainFrameImpl() |
| 1254 ->FrameWidget() | 1258 ->FrameWidget() |
| 1255 ->GetActiveWebInputMethodController(); | 1259 ->GetActiveWebInputMethodController(); |
| 1256 | 1260 |
| 1257 WebVector<WebCompositionUnderline> empty_underlines; | 1261 WebVector<WebCompositionUnderline> empty_underlines; |
| 1258 active_input_method_controller->SetComposition( | 1262 active_input_method_controller->SetComposition( |
| 1259 WebString::FromUTF8("abc"), empty_underlines, WebRange(), 0, 0); | 1263 WebString::FromUTF8("abc"), empty_underlines, WebRange(), 0, 0); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1310 info = active_input_method_controller->TextInputInfo(); | 1314 info = active_input_method_controller->TextInputInfo(); |
| 1311 EXPECT_EQ("helloworld", std::string(info.value.Utf8().data())); | 1315 EXPECT_EQ("helloworld", std::string(info.value.Utf8().data())); |
| 1312 EXPECT_EQ(10, info.selection_start); | 1316 EXPECT_EQ(10, info.selection_start); |
| 1313 EXPECT_EQ(10, info.selection_end); | 1317 EXPECT_EQ(10, info.selection_end); |
| 1314 EXPECT_EQ(-1, info.composition_start); | 1318 EXPECT_EQ(-1, info.composition_start); |
| 1315 EXPECT_EQ(-1, info.composition_end); | 1319 EXPECT_EQ(-1, info.composition_end); |
| 1316 } | 1320 } |
| 1317 | 1321 |
| 1318 TEST_P(WebViewTest, FinishCompositionDoesNotRevealSelection) { | 1322 TEST_P(WebViewTest, FinishCompositionDoesNotRevealSelection) { |
| 1319 RegisterMockedHttpURLLoad("form_with_input.html"); | 1323 RegisterMockedHttpURLLoad("form_with_input.html"); |
| 1320 WebViewImpl* web_view = | 1324 WebViewBase* web_view = |
| 1321 web_view_helper_.InitializeAndLoad(base_url_ + "form_with_input.html"); | 1325 web_view_helper_.InitializeAndLoad(base_url_ + "form_with_input.html"); |
| 1322 web_view->Resize(WebSize(800, 600)); | 1326 web_view->Resize(WebSize(800, 600)); |
| 1323 web_view->SetInitialFocus(false); | 1327 web_view->SetInitialFocus(false); |
| 1324 EXPECT_EQ(0, web_view->MainFrame()->GetScrollOffset().width); | 1328 EXPECT_EQ(0, web_view->MainFrame()->GetScrollOffset().width); |
| 1325 EXPECT_EQ(0, web_view->MainFrame()->GetScrollOffset().height); | 1329 EXPECT_EQ(0, web_view->MainFrame()->GetScrollOffset().height); |
| 1326 | 1330 |
| 1327 // Set up a composition from existing text that needs to be committed. | 1331 // Set up a composition from existing text that needs to be committed. |
| 1328 Vector<CompositionUnderline> empty_underlines; | 1332 Vector<CompositionUnderline> empty_underlines; |
| 1329 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 1333 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 1330 frame->GetFrame()->GetInputMethodController().SetCompositionFromExistingText( | 1334 frame->GetFrame()->GetInputMethodController().SetCompositionFromExistingText( |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1344 // Verify that the input field is not scrolled back into the viewport. | 1348 // Verify that the input field is not scrolled back into the viewport. |
| 1345 frame->FrameWidget() | 1349 frame->FrameWidget() |
| 1346 ->GetActiveWebInputMethodController() | 1350 ->GetActiveWebInputMethodController() |
| 1347 ->FinishComposingText(WebInputMethodController::kDoNotKeepSelection); | 1351 ->FinishComposingText(WebInputMethodController::kDoNotKeepSelection); |
| 1348 EXPECT_EQ(0, web_view->MainFrame()->GetScrollOffset().width); | 1352 EXPECT_EQ(0, web_view->MainFrame()->GetScrollOffset().width); |
| 1349 EXPECT_EQ(offset_height, web_view->MainFrame()->GetScrollOffset().height); | 1353 EXPECT_EQ(offset_height, web_view->MainFrame()->GetScrollOffset().height); |
| 1350 } | 1354 } |
| 1351 | 1355 |
| 1352 TEST_P(WebViewTest, InsertNewLinePlacementAfterFinishComposingText) { | 1356 TEST_P(WebViewTest, InsertNewLinePlacementAfterFinishComposingText) { |
| 1353 RegisterMockedHttpURLLoad("text_area_populated.html"); | 1357 RegisterMockedHttpURLLoad("text_area_populated.html"); |
| 1354 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 1358 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1355 base_url_ + "text_area_populated.html"); | 1359 base_url_ + "text_area_populated.html"); |
| 1356 web_view->SetInitialFocus(false); | 1360 web_view->SetInitialFocus(false); |
| 1357 | 1361 |
| 1358 WebVector<WebCompositionUnderline> empty_underlines; | 1362 WebVector<WebCompositionUnderline> empty_underlines; |
| 1359 | 1363 |
| 1360 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 1364 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 1361 WebInputMethodController* active_input_method_controller = | 1365 WebInputMethodController* active_input_method_controller = |
| 1362 frame->GetInputMethodController(); | 1366 frame->GetInputMethodController(); |
| 1363 frame->SetEditableSelectionOffsets(4, 4); | 1367 frame->SetEditableSelectionOffsets(4, 4); |
| 1364 frame->SetCompositionFromExistingText(8, 12, empty_underlines); | 1368 frame->SetCompositionFromExistingText(8, 12, empty_underlines); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1387 EXPECT_EQ(5, info.selection_start); | 1391 EXPECT_EQ(5, info.selection_start); |
| 1388 EXPECT_EQ(5, info.selection_end); | 1392 EXPECT_EQ(5, info.selection_end); |
| 1389 EXPECT_EQ(-1, info.composition_start); | 1393 EXPECT_EQ(-1, info.composition_start); |
| 1390 EXPECT_EQ(-1, info.composition_end); | 1394 EXPECT_EQ(-1, info.composition_end); |
| 1391 EXPECT_EQ("0123\n456789abcdefghijklmnopqrstuvwxyz", | 1395 EXPECT_EQ("0123\n456789abcdefghijklmnopqrstuvwxyz", |
| 1392 std::string(info.value.Utf8().data())); | 1396 std::string(info.value.Utf8().data())); |
| 1393 } | 1397 } |
| 1394 | 1398 |
| 1395 TEST_P(WebViewTest, ExtendSelectionAndDelete) { | 1399 TEST_P(WebViewTest, ExtendSelectionAndDelete) { |
| 1396 RegisterMockedHttpURLLoad("input_field_populated.html"); | 1400 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 1397 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 1401 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1398 base_url_ + "input_field_populated.html"); | 1402 base_url_ + "input_field_populated.html"); |
| 1399 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 1403 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 1400 web_view->SetInitialFocus(false); | 1404 web_view->SetInitialFocus(false); |
| 1401 frame->SetEditableSelectionOffsets(10, 10); | 1405 frame->SetEditableSelectionOffsets(10, 10); |
| 1402 frame->ExtendSelectionAndDelete(5, 8); | 1406 frame->ExtendSelectionAndDelete(5, 8); |
| 1403 WebInputMethodController* active_input_method_controller = | 1407 WebInputMethodController* active_input_method_controller = |
| 1404 frame->GetInputMethodController(); | 1408 frame->GetInputMethodController(); |
| 1405 WebTextInputInfo info = active_input_method_controller->TextInputInfo(); | 1409 WebTextInputInfo info = active_input_method_controller->TextInputInfo(); |
| 1406 EXPECT_EQ("01234ijklmnopqrstuvwxyz", std::string(info.value.Utf8().data())); | 1410 EXPECT_EQ("01234ijklmnopqrstuvwxyz", std::string(info.value.Utf8().data())); |
| 1407 EXPECT_EQ(5, info.selection_start); | 1411 EXPECT_EQ(5, info.selection_start); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1449 | 1453 |
| 1450 frame->DeleteSurroundingText(10, 10); | 1454 frame->DeleteSurroundingText(10, 10); |
| 1451 info = active_input_method_controller->TextInputInfo(); | 1455 info = active_input_method_controller->TextInputInfo(); |
| 1452 EXPECT_EQ("", std::string(info.value.Utf8().data())); | 1456 EXPECT_EQ("", std::string(info.value.Utf8().data())); |
| 1453 EXPECT_EQ(0, info.selection_start); | 1457 EXPECT_EQ(0, info.selection_start); |
| 1454 EXPECT_EQ(0, info.selection_end); | 1458 EXPECT_EQ(0, info.selection_end); |
| 1455 } | 1459 } |
| 1456 | 1460 |
| 1457 TEST_P(WebViewTest, SetCompositionFromExistingText) { | 1461 TEST_P(WebViewTest, SetCompositionFromExistingText) { |
| 1458 RegisterMockedHttpURLLoad("input_field_populated.html"); | 1462 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 1459 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 1463 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1460 base_url_ + "input_field_populated.html"); | 1464 base_url_ + "input_field_populated.html"); |
| 1461 web_view->SetInitialFocus(false); | 1465 web_view->SetInitialFocus(false); |
| 1462 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); | 1466 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); |
| 1463 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); | 1467 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); |
| 1464 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 1468 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 1465 WebInputMethodController* active_input_method_controller = | 1469 WebInputMethodController* active_input_method_controller = |
| 1466 frame->GetInputMethodController(); | 1470 frame->GetInputMethodController(); |
| 1467 frame->SetEditableSelectionOffsets(4, 10); | 1471 frame->SetEditableSelectionOffsets(4, 10); |
| 1468 frame->SetCompositionFromExistingText(8, 12, underlines); | 1472 frame->SetCompositionFromExistingText(8, 12, underlines); |
| 1469 WebTextInputInfo info = active_input_method_controller->TextInputInfo(); | 1473 WebTextInputInfo info = active_input_method_controller->TextInputInfo(); |
| 1470 EXPECT_EQ(4, info.selection_start); | 1474 EXPECT_EQ(4, info.selection_start); |
| 1471 EXPECT_EQ(10, info.selection_end); | 1475 EXPECT_EQ(10, info.selection_end); |
| 1472 EXPECT_EQ(8, info.composition_start); | 1476 EXPECT_EQ(8, info.composition_start); |
| 1473 EXPECT_EQ(12, info.composition_end); | 1477 EXPECT_EQ(12, info.composition_end); |
| 1474 WebVector<WebCompositionUnderline> empty_underlines; | 1478 WebVector<WebCompositionUnderline> empty_underlines; |
| 1475 frame->SetCompositionFromExistingText(0, 0, empty_underlines); | 1479 frame->SetCompositionFromExistingText(0, 0, empty_underlines); |
| 1476 info = active_input_method_controller->TextInputInfo(); | 1480 info = active_input_method_controller->TextInputInfo(); |
| 1477 EXPECT_EQ(4, info.selection_start); | 1481 EXPECT_EQ(4, info.selection_start); |
| 1478 EXPECT_EQ(10, info.selection_end); | 1482 EXPECT_EQ(10, info.selection_end); |
| 1479 EXPECT_EQ(-1, info.composition_start); | 1483 EXPECT_EQ(-1, info.composition_start); |
| 1480 EXPECT_EQ(-1, info.composition_end); | 1484 EXPECT_EQ(-1, info.composition_end); |
| 1481 } | 1485 } |
| 1482 | 1486 |
| 1483 TEST_P(WebViewTest, SetCompositionFromExistingTextInTextArea) { | 1487 TEST_P(WebViewTest, SetCompositionFromExistingTextInTextArea) { |
| 1484 RegisterMockedHttpURLLoad("text_area_populated.html"); | 1488 RegisterMockedHttpURLLoad("text_area_populated.html"); |
| 1485 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 1489 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1486 base_url_ + "text_area_populated.html"); | 1490 base_url_ + "text_area_populated.html"); |
| 1487 web_view->SetInitialFocus(false); | 1491 web_view->SetInitialFocus(false); |
| 1488 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); | 1492 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); |
| 1489 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); | 1493 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); |
| 1490 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 1494 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 1491 WebInputMethodController* active_input_method_controller = | 1495 WebInputMethodController* active_input_method_controller = |
| 1492 frame->FrameWidget()->GetActiveWebInputMethodController(); | 1496 frame->FrameWidget()->GetActiveWebInputMethodController(); |
| 1493 frame->SetEditableSelectionOffsets(27, 27); | 1497 frame->SetEditableSelectionOffsets(27, 27); |
| 1494 std::string new_line_text("\n"); | 1498 std::string new_line_text("\n"); |
| 1495 WebVector<WebCompositionUnderline> empty_underlines; | 1499 WebVector<WebCompositionUnderline> empty_underlines; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1518 EXPECT_EQ("0123456789abcdefghijklmnopq\nrsyoloxyz", | 1522 EXPECT_EQ("0123456789abcdefghijklmnopq\nrsyoloxyz", |
| 1519 std::string(info.value.Utf8().data())); | 1523 std::string(info.value.Utf8().data())); |
| 1520 EXPECT_EQ(34, info.selection_start); | 1524 EXPECT_EQ(34, info.selection_start); |
| 1521 EXPECT_EQ(34, info.selection_end); | 1525 EXPECT_EQ(34, info.selection_end); |
| 1522 EXPECT_EQ(-1, info.composition_start); | 1526 EXPECT_EQ(-1, info.composition_start); |
| 1523 EXPECT_EQ(-1, info.composition_end); | 1527 EXPECT_EQ(-1, info.composition_end); |
| 1524 } | 1528 } |
| 1525 | 1529 |
| 1526 TEST_P(WebViewTest, SetCompositionFromExistingTextInRichText) { | 1530 TEST_P(WebViewTest, SetCompositionFromExistingTextInRichText) { |
| 1527 RegisterMockedHttpURLLoad("content_editable_rich_text.html"); | 1531 RegisterMockedHttpURLLoad("content_editable_rich_text.html"); |
| 1528 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 1532 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1529 base_url_ + "content_editable_rich_text.html"); | 1533 base_url_ + "content_editable_rich_text.html"); |
| 1530 web_view->SetInitialFocus(false); | 1534 web_view->SetInitialFocus(false); |
| 1531 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); | 1535 WebVector<WebCompositionUnderline> underlines(static_cast<size_t>(1)); |
| 1532 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); | 1536 underlines[0] = WebCompositionUnderline(0, 4, 0, false, 0); |
| 1533 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 1537 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 1534 frame->SetEditableSelectionOffsets(1, 1); | 1538 frame->SetEditableSelectionOffsets(1, 1); |
| 1535 WebDocument document = web_view->MainFrame()->GetDocument(); | 1539 WebDocument document = web_view->MainFrame()->GetDocument(); |
| 1536 EXPECT_FALSE(document.GetElementById("bold").IsNull()); | 1540 EXPECT_FALSE(document.GetElementById("bold").IsNull()); |
| 1537 frame->SetCompositionFromExistingText(0, 4, underlines); | 1541 frame->SetCompositionFromExistingText(0, 4, underlines); |
| 1538 EXPECT_FALSE(document.GetElementById("bold").IsNull()); | 1542 EXPECT_FALSE(document.GetElementById("bold").IsNull()); |
| 1539 } | 1543 } |
| 1540 | 1544 |
| 1541 TEST_P(WebViewTest, SetEditableSelectionOffsetsKeepsComposition) { | 1545 TEST_P(WebViewTest, SetEditableSelectionOffsetsKeepsComposition) { |
| 1542 RegisterMockedHttpURLLoad("input_field_populated.html"); | 1546 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 1543 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 1547 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1544 base_url_ + "input_field_populated.html"); | 1548 base_url_ + "input_field_populated.html"); |
| 1545 web_view->SetInitialFocus(false); | 1549 web_view->SetInitialFocus(false); |
| 1546 | 1550 |
| 1547 std::string composition_text_first("hello "); | 1551 std::string composition_text_first("hello "); |
| 1548 std::string composition_text_second("world"); | 1552 std::string composition_text_second("world"); |
| 1549 WebVector<WebCompositionUnderline> empty_underlines; | 1553 WebVector<WebCompositionUnderline> empty_underlines; |
| 1550 WebInputMethodController* active_input_method_controller = | 1554 WebInputMethodController* active_input_method_controller = |
| 1551 web_view->MainFrameImpl() | 1555 web_view->MainFrameImpl() |
| 1552 ->FrameWidget() | 1556 ->FrameWidget() |
| 1553 ->GetActiveWebInputMethodController(); | 1557 ->GetActiveWebInputMethodController(); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1603 EXPECT_EQ("hello world", std::string(info.value.Utf8().data())); | 1607 EXPECT_EQ("hello world", std::string(info.value.Utf8().data())); |
| 1604 EXPECT_EQ(2, info.selection_start); | 1608 EXPECT_EQ(2, info.selection_start); |
| 1605 EXPECT_EQ(2, info.selection_end); | 1609 EXPECT_EQ(2, info.selection_end); |
| 1606 // Composition range should be reset by browser process or keyboard apps. | 1610 // Composition range should be reset by browser process or keyboard apps. |
| 1607 EXPECT_EQ(6, info.composition_start); | 1611 EXPECT_EQ(6, info.composition_start); |
| 1608 EXPECT_EQ(11, info.composition_end); | 1612 EXPECT_EQ(11, info.composition_end); |
| 1609 } | 1613 } |
| 1610 | 1614 |
| 1611 TEST_P(WebViewTest, IsSelectionAnchorFirst) { | 1615 TEST_P(WebViewTest, IsSelectionAnchorFirst) { |
| 1612 RegisterMockedHttpURLLoad("input_field_populated.html"); | 1616 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 1613 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 1617 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 1614 base_url_ + "input_field_populated.html"); | 1618 base_url_ + "input_field_populated.html"); |
| 1615 WebLocalFrame* frame = web_view->MainFrameImpl(); | 1619 WebLocalFrame* frame = web_view->MainFrameImpl(); |
| 1616 | 1620 |
| 1617 web_view->SetInitialFocus(false); | 1621 web_view->SetInitialFocus(false); |
| 1618 frame->SetEditableSelectionOffsets(4, 10); | 1622 frame->SetEditableSelectionOffsets(4, 10); |
| 1619 EXPECT_TRUE(web_view->IsSelectionAnchorFirst()); | 1623 EXPECT_TRUE(web_view->IsSelectionAnchorFirst()); |
| 1620 WebRect anchor; | 1624 WebRect anchor; |
| 1621 WebRect focus; | 1625 WebRect focus; |
| 1622 web_view->SelectionBounds(anchor, focus); | 1626 web_view->SelectionBounds(anchor, focus); |
| 1623 frame->SelectRange(WebPoint(focus.x, focus.y), WebPoint(anchor.x, anchor.y)); | 1627 frame->SelectRange(WebPoint(focus.x, focus.y), WebPoint(anchor.x, anchor.y)); |
| 1624 EXPECT_FALSE(web_view->IsSelectionAnchorFirst()); | 1628 EXPECT_FALSE(web_view->IsSelectionAnchorFirst()); |
| 1625 } | 1629 } |
| 1626 | 1630 |
| 1627 TEST_P(WebViewTest, ExitingDeviceEmulationResetsPageScale) { | 1631 TEST_P(WebViewTest, ExitingDeviceEmulationResetsPageScale) { |
| 1628 RegisterMockedHttpURLLoad("200-by-300.html"); | 1632 RegisterMockedHttpURLLoad("200-by-300.html"); |
| 1629 WebViewImpl* web_view_impl = | 1633 WebViewBase* web_view_impl = |
| 1630 web_view_helper_.InitializeAndLoad(base_url_ + "200-by-300.html"); | 1634 web_view_helper_.InitializeAndLoad(base_url_ + "200-by-300.html"); |
| 1631 web_view_impl->Resize(WebSize(200, 300)); | 1635 web_view_impl->Resize(WebSize(200, 300)); |
| 1632 | 1636 |
| 1633 float page_scale_expected = web_view_impl->PageScaleFactor(); | 1637 float page_scale_expected = web_view_impl->PageScaleFactor(); |
| 1634 | 1638 |
| 1635 WebDeviceEmulationParams params; | 1639 WebDeviceEmulationParams params; |
| 1636 params.screen_position = WebDeviceEmulationParams::kDesktop; | 1640 params.screen_position = WebDeviceEmulationParams::kDesktop; |
| 1637 params.device_scale_factor = 0; | 1641 params.device_scale_factor = 0; |
| 1638 params.fit_to_view = false; | 1642 params.fit_to_view = false; |
| 1639 params.offset = WebFloatPoint(); | 1643 params.offset = WebFloatPoint(); |
| 1640 params.scale = 1; | 1644 params.scale = 1; |
| 1641 | 1645 |
| 1642 web_view_impl->EnableDeviceEmulation(params); | 1646 web_view_impl->EnableDeviceEmulation(params); |
| 1643 | 1647 |
| 1644 web_view_impl->SetPageScaleFactor(2); | 1648 web_view_impl->SetPageScaleFactor(2); |
| 1645 | 1649 |
| 1646 web_view_impl->DisableDeviceEmulation(); | 1650 web_view_impl->DisableDeviceEmulation(); |
| 1647 | 1651 |
| 1648 EXPECT_EQ(page_scale_expected, web_view_impl->PageScaleFactor()); | 1652 EXPECT_EQ(page_scale_expected, web_view_impl->PageScaleFactor()); |
| 1649 } | 1653 } |
| 1650 | 1654 |
| 1651 TEST_P(WebViewTest, HistoryResetScrollAndScaleState) { | 1655 TEST_P(WebViewTest, HistoryResetScrollAndScaleState) { |
| 1652 RegisterMockedHttpURLLoad("200-by-300.html"); | 1656 RegisterMockedHttpURLLoad("200-by-300.html"); |
| 1653 WebViewImpl* web_view_impl = | 1657 WebViewBase* web_view_impl = |
| 1654 web_view_helper_.InitializeAndLoad(base_url_ + "200-by-300.html"); | 1658 web_view_helper_.InitializeAndLoad(base_url_ + "200-by-300.html"); |
| 1655 web_view_impl->Resize(WebSize(100, 150)); | 1659 web_view_impl->Resize(WebSize(100, 150)); |
| 1656 web_view_impl->UpdateAllLifecyclePhases(); | 1660 web_view_impl->UpdateAllLifecyclePhases(); |
| 1657 EXPECT_EQ(0, web_view_impl->MainFrame()->GetScrollOffset().width); | 1661 EXPECT_EQ(0, web_view_impl->MainFrame()->GetScrollOffset().width); |
| 1658 EXPECT_EQ(0, web_view_impl->MainFrame()->GetScrollOffset().height); | 1662 EXPECT_EQ(0, web_view_impl->MainFrame()->GetScrollOffset().height); |
| 1659 | 1663 |
| 1660 // Make the page scale and scroll with the given paremeters. | 1664 // Make the page scale and scroll with the given paremeters. |
| 1661 web_view_impl->SetPageScaleFactor(2.0f); | 1665 web_view_impl->SetPageScaleFactor(2.0f); |
| 1662 web_view_impl->MainFrame()->SetScrollOffset(WebSize(94, 111)); | 1666 web_view_impl->MainFrame()->SetScrollOffset(WebSize(94, 111)); |
| 1663 EXPECT_EQ(2.0f, web_view_impl->PageScaleFactor()); | 1667 EXPECT_EQ(2.0f, web_view_impl->PageScaleFactor()); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1697 .Width()); | 1701 .Width()); |
| 1698 EXPECT_EQ(0, main_frame_local->Loader() | 1702 EXPECT_EQ(0, main_frame_local->Loader() |
| 1699 .GetDocumentLoader() | 1703 .GetDocumentLoader() |
| 1700 ->GetHistoryItem() | 1704 ->GetHistoryItem() |
| 1701 ->GetScrollOffset() | 1705 ->GetScrollOffset() |
| 1702 .Height()); | 1706 .Height()); |
| 1703 } | 1707 } |
| 1704 | 1708 |
| 1705 TEST_P(WebViewTest, BackForwardRestoreScroll) { | 1709 TEST_P(WebViewTest, BackForwardRestoreScroll) { |
| 1706 RegisterMockedHttpURLLoad("back_forward_restore_scroll.html"); | 1710 RegisterMockedHttpURLLoad("back_forward_restore_scroll.html"); |
| 1707 WebViewImpl* web_view_impl = web_view_helper_.InitializeAndLoad( | 1711 WebViewBase* web_view_impl = web_view_helper_.InitializeAndLoad( |
| 1708 base_url_ + "back_forward_restore_scroll.html"); | 1712 base_url_ + "back_forward_restore_scroll.html"); |
| 1709 web_view_impl->Resize(WebSize(640, 480)); | 1713 web_view_impl->Resize(WebSize(640, 480)); |
| 1710 web_view_impl->UpdateAllLifecyclePhases(); | 1714 web_view_impl->UpdateAllLifecyclePhases(); |
| 1711 | 1715 |
| 1712 // Emulate a user scroll | 1716 // Emulate a user scroll |
| 1713 web_view_impl->MainFrame()->SetScrollOffset(WebSize(0, 900)); | 1717 web_view_impl->MainFrame()->SetScrollOffset(WebSize(0, 900)); |
| 1714 LocalFrame* main_frame_local = | 1718 LocalFrame* main_frame_local = |
| 1715 ToLocalFrame(web_view_impl->GetPage()->MainFrame()); | 1719 ToLocalFrame(web_view_impl->GetPage()->MainFrame()); |
| 1716 Persistent<HistoryItem> item1 = | 1720 Persistent<HistoryItem> item1 = |
| 1717 main_frame_local->Loader().GetDocumentLoader()->GetHistoryItem(); | 1721 main_frame_local->Loader().GetDocumentLoader()->GetHistoryItem(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1755 WebCachePolicy::kUseProtocolCachePolicy)), | 1759 WebCachePolicy::kUseProtocolCachePolicy)), |
| 1756 kFrameLoadTypeBackForward, item3.Get(), kHistorySameDocumentLoad); | 1760 kFrameLoadTypeBackForward, item3.Get(), kHistorySameDocumentLoad); |
| 1757 EXPECT_EQ(0, web_view_impl->MainFrame()->GetScrollOffset().width); | 1761 EXPECT_EQ(0, web_view_impl->MainFrame()->GetScrollOffset().width); |
| 1758 EXPECT_GT(web_view_impl->MainFrame()->GetScrollOffset().height, 2000); | 1762 EXPECT_GT(web_view_impl->MainFrame()->GetScrollOffset().height, 2000); |
| 1759 } | 1763 } |
| 1760 | 1764 |
| 1761 // Tests that we restore scroll and scale *after* the fullscreen styles are | 1765 // Tests that we restore scroll and scale *after* the fullscreen styles are |
| 1762 // removed and the page is laid out. http://crbug.com/625683. | 1766 // removed and the page is laid out. http://crbug.com/625683. |
| 1763 TEST_P(WebViewTest, FullscreenResetScrollAndScaleFullscreenStyles) { | 1767 TEST_P(WebViewTest, FullscreenResetScrollAndScaleFullscreenStyles) { |
| 1764 RegisterMockedHttpURLLoad("fullscreen_style.html"); | 1768 RegisterMockedHttpURLLoad("fullscreen_style.html"); |
| 1765 WebViewImpl* web_view_impl = | 1769 WebViewBase* web_view_impl = |
| 1766 web_view_helper_.InitializeAndLoad(base_url_ + "fullscreen_style.html"); | 1770 web_view_helper_.InitializeAndLoad(base_url_ + "fullscreen_style.html"); |
| 1767 web_view_impl->Resize(WebSize(800, 600)); | 1771 web_view_impl->Resize(WebSize(800, 600)); |
| 1768 web_view_impl->UpdateAllLifecyclePhases(); | 1772 web_view_impl->UpdateAllLifecyclePhases(); |
| 1769 | 1773 |
| 1770 // Scroll the page down. | 1774 // Scroll the page down. |
| 1771 web_view_impl->MainFrame()->SetScrollOffset(WebSize(0, 2000)); | 1775 web_view_impl->MainFrame()->SetScrollOffset(WebSize(0, 2000)); |
| 1772 ASSERT_EQ(2000, web_view_impl->MainFrame()->GetScrollOffset().height); | 1776 ASSERT_EQ(2000, web_view_impl->MainFrame()->GetScrollOffset().height); |
| 1773 | 1777 |
| 1774 // Enter fullscreen. | 1778 // Enter fullscreen. |
| 1775 Document* document = | 1779 Document* document = |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1795 EXPECT_TRUE(web_view_impl->MainFrameImpl()->GetFrameView()->NeedsLayout()); | 1799 EXPECT_TRUE(web_view_impl->MainFrameImpl()->GetFrameView()->NeedsLayout()); |
| 1796 web_view_impl->UpdateAllLifecyclePhases(); | 1800 web_view_impl->UpdateAllLifecyclePhases(); |
| 1797 | 1801 |
| 1798 EXPECT_EQ(2000, web_view_impl->MainFrame()->GetScrollOffset().height); | 1802 EXPECT_EQ(2000, web_view_impl->MainFrame()->GetScrollOffset().height); |
| 1799 } | 1803 } |
| 1800 | 1804 |
| 1801 // Tests that exiting and immediately reentering fullscreen doesn't cause the | 1805 // Tests that exiting and immediately reentering fullscreen doesn't cause the |
| 1802 // scroll and scale restoration to occur when we enter fullscreen again. | 1806 // scroll and scale restoration to occur when we enter fullscreen again. |
| 1803 TEST_P(WebViewTest, FullscreenResetScrollAndScaleExitAndReenter) { | 1807 TEST_P(WebViewTest, FullscreenResetScrollAndScaleExitAndReenter) { |
| 1804 RegisterMockedHttpURLLoad("fullscreen_style.html"); | 1808 RegisterMockedHttpURLLoad("fullscreen_style.html"); |
| 1805 WebViewImpl* web_view_impl = | 1809 WebViewBase* web_view_impl = |
| 1806 web_view_helper_.InitializeAndLoad(base_url_ + "fullscreen_style.html"); | 1810 web_view_helper_.InitializeAndLoad(base_url_ + "fullscreen_style.html"); |
| 1807 web_view_impl->Resize(WebSize(800, 600)); | 1811 web_view_impl->Resize(WebSize(800, 600)); |
| 1808 web_view_impl->UpdateAllLifecyclePhases(); | 1812 web_view_impl->UpdateAllLifecyclePhases(); |
| 1809 | 1813 |
| 1810 // Scroll the page down. | 1814 // Scroll the page down. |
| 1811 web_view_impl->MainFrame()->SetScrollOffset(WebSize(0, 2000)); | 1815 web_view_impl->MainFrame()->SetScrollOffset(WebSize(0, 2000)); |
| 1812 ASSERT_EQ(2000, web_view_impl->MainFrame()->GetScrollOffset().height); | 1816 ASSERT_EQ(2000, web_view_impl->MainFrame()->GetScrollOffset().height); |
| 1813 | 1817 |
| 1814 // Enter fullscreen. | 1818 // Enter fullscreen. |
| 1815 Document* document = | 1819 Document* document = |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1844 | 1848 |
| 1845 // When we exit now, we should restore the original scroll value. | 1849 // When we exit now, we should restore the original scroll value. |
| 1846 web_view_impl->DidExitFullscreen(); | 1850 web_view_impl->DidExitFullscreen(); |
| 1847 web_view_impl->UpdateAllLifecyclePhases(); | 1851 web_view_impl->UpdateAllLifecyclePhases(); |
| 1848 | 1852 |
| 1849 EXPECT_EQ(2000, web_view_impl->MainFrame()->GetScrollOffset().height); | 1853 EXPECT_EQ(2000, web_view_impl->MainFrame()->GetScrollOffset().height); |
| 1850 } | 1854 } |
| 1851 | 1855 |
| 1852 TEST_P(WebViewTest, EnterFullscreenResetScrollAndScaleState) { | 1856 TEST_P(WebViewTest, EnterFullscreenResetScrollAndScaleState) { |
| 1853 RegisterMockedHttpURLLoad("200-by-300.html"); | 1857 RegisterMockedHttpURLLoad("200-by-300.html"); |
| 1854 WebViewImpl* web_view_impl = | 1858 WebViewBase* web_view_impl = |
| 1855 web_view_helper_.InitializeAndLoad(base_url_ + "200-by-300.html"); | 1859 web_view_helper_.InitializeAndLoad(base_url_ + "200-by-300.html"); |
| 1856 web_view_impl->Resize(WebSize(100, 150)); | 1860 web_view_impl->Resize(WebSize(100, 150)); |
| 1857 web_view_impl->UpdateAllLifecyclePhases(); | 1861 web_view_impl->UpdateAllLifecyclePhases(); |
| 1858 EXPECT_EQ(0, web_view_impl->MainFrame()->GetScrollOffset().width); | 1862 EXPECT_EQ(0, web_view_impl->MainFrame()->GetScrollOffset().width); |
| 1859 EXPECT_EQ(0, web_view_impl->MainFrame()->GetScrollOffset().height); | 1863 EXPECT_EQ(0, web_view_impl->MainFrame()->GetScrollOffset().height); |
| 1860 | 1864 |
| 1861 // Make the page scale and scroll with the given paremeters. | 1865 // Make the page scale and scroll with the given paremeters. |
| 1862 web_view_impl->SetPageScaleFactor(2.0f); | 1866 web_view_impl->SetPageScaleFactor(2.0f); |
| 1863 web_view_impl->MainFrame()->SetScrollOffset(WebSize(94, 111)); | 1867 web_view_impl->MainFrame()->SetScrollOffset(WebSize(94, 111)); |
| 1864 web_view_impl->SetVisualViewportOffset(WebFloatPoint(12, 20)); | 1868 web_view_impl->SetVisualViewportOffset(WebFloatPoint(12, 20)); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1903 | 1907 |
| 1904 bool PrintCalled() const { return print_called_; } | 1908 bool PrintCalled() const { return print_called_; } |
| 1905 | 1909 |
| 1906 private: | 1910 private: |
| 1907 bool print_called_; | 1911 bool print_called_; |
| 1908 }; | 1912 }; |
| 1909 | 1913 |
| 1910 TEST_P(WebViewTest, PrintWithXHRInFlight) { | 1914 TEST_P(WebViewTest, PrintWithXHRInFlight) { |
| 1911 PrintWebViewClient client; | 1915 PrintWebViewClient client; |
| 1912 RegisterMockedHttpURLLoad("print_with_xhr_inflight.html"); | 1916 RegisterMockedHttpURLLoad("print_with_xhr_inflight.html"); |
| 1913 WebViewImpl* web_view_impl = web_view_helper_.InitializeAndLoad( | 1917 WebViewBase* web_view_impl = web_view_helper_.InitializeAndLoad( |
| 1914 base_url_ + "print_with_xhr_inflight.html", true, 0, &client); | 1918 base_url_ + "print_with_xhr_inflight.html", true, 0, &client); |
| 1915 | 1919 |
| 1916 ASSERT_TRUE(ToLocalFrame(web_view_impl->GetPage()->MainFrame()) | 1920 ASSERT_TRUE(ToLocalFrame(web_view_impl->GetPage()->MainFrame()) |
| 1917 ->GetDocument() | 1921 ->GetDocument() |
| 1918 ->LoadEventFinished()); | 1922 ->LoadEventFinished()); |
| 1919 EXPECT_TRUE(client.PrintCalled()); | 1923 EXPECT_TRUE(client.PrintCalled()); |
| 1920 web_view_helper_.Reset(); | 1924 web_view_helper_.Reset(); |
| 1921 } | 1925 } |
| 1922 | 1926 |
| 1923 static void DragAndDropURL(WebViewImpl* web_view, const std::string& url) { | 1927 static void DragAndDropURL(WebViewBase* web_view, const std::string& url) { |
| 1924 WebDragData drag_data; | 1928 WebDragData drag_data; |
| 1925 drag_data.Initialize(); | 1929 drag_data.Initialize(); |
| 1926 | 1930 |
| 1927 WebDragData::Item item; | 1931 WebDragData::Item item; |
| 1928 item.storage_type = WebDragData::Item::kStorageTypeString; | 1932 item.storage_type = WebDragData::Item::kStorageTypeString; |
| 1929 item.string_type = "text/uri-list"; | 1933 item.string_type = "text/uri-list"; |
| 1930 item.string_data = WebString::FromUTF8(url); | 1934 item.string_data = WebString::FromUTF8(url); |
| 1931 drag_data.AddItem(item); | 1935 drag_data.AddItem(item); |
| 1932 | 1936 |
| 1933 const WebPoint client_point(0, 0); | 1937 const WebPoint client_point(0, 0); |
| 1934 const WebPoint screen_point(0, 0); | 1938 const WebPoint screen_point(0, 0); |
| 1935 WebFrameWidgetBase* widget = web_view->MainFrameImpl()->FrameWidget(); | 1939 WebFrameWidgetBase* widget = web_view->MainFrameImpl()->FrameWidget(); |
| 1936 widget->DragTargetDragEnter(drag_data, client_point, screen_point, | 1940 widget->DragTargetDragEnter(drag_data, client_point, screen_point, |
| 1937 kWebDragOperationCopy, 0); | 1941 kWebDragOperationCopy, 0); |
| 1938 widget->DragTargetDrop(drag_data, client_point, screen_point, 0); | 1942 widget->DragTargetDrop(drag_data, client_point, screen_point, 0); |
| 1939 FrameTestHelpers::PumpPendingRequestsForFrameToLoad(web_view->MainFrame()); | 1943 FrameTestHelpers::PumpPendingRequestsForFrameToLoad(web_view->MainFrame()); |
| 1940 } | 1944 } |
| 1941 | 1945 |
| 1942 TEST_P(WebViewTest, DragDropURL) { | 1946 TEST_P(WebViewTest, DragDropURL) { |
| 1943 RegisterMockedHttpURLLoad("foo.html"); | 1947 RegisterMockedHttpURLLoad("foo.html"); |
| 1944 RegisterMockedHttpURLLoad("bar.html"); | 1948 RegisterMockedHttpURLLoad("bar.html"); |
| 1945 | 1949 |
| 1946 const std::string foo_url = base_url_ + "foo.html"; | 1950 const std::string foo_url = base_url_ + "foo.html"; |
| 1947 const std::string bar_url = base_url_ + "bar.html"; | 1951 const std::string bar_url = base_url_ + "bar.html"; |
| 1948 | 1952 |
| 1949 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad(foo_url); | 1953 WebViewBase* web_view = web_view_helper_.InitializeAndLoad(foo_url); |
| 1950 | 1954 |
| 1951 ASSERT_TRUE(web_view); | 1955 ASSERT_TRUE(web_view); |
| 1952 | 1956 |
| 1953 // Drag and drop barUrl and verify that we've navigated to it. | 1957 // Drag and drop barUrl and verify that we've navigated to it. |
| 1954 DragAndDropURL(web_view, bar_url); | 1958 DragAndDropURL(web_view, bar_url); |
| 1955 EXPECT_EQ(bar_url, | 1959 EXPECT_EQ(bar_url, |
| 1956 web_view->MainFrame()->GetDocument().Url().GetString().Utf8()); | 1960 web_view->MainFrame()->GetDocument().Url().GetString().Utf8()); |
| 1957 | 1961 |
| 1958 // Drag and drop fooUrl and verify that we've navigated back to it. | 1962 // Drag and drop fooUrl and verify that we've navigated back to it. |
| 1959 DragAndDropURL(web_view, foo_url); | 1963 DragAndDropURL(web_view, foo_url); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2043 web_view->HandleInputEvent(WebCoalescedInputEvent(event)); | 2047 web_view->HandleInputEvent(WebCoalescedInputEvent(event)); |
| 2044 RunPendingTasks(); | 2048 RunPendingTasks(); |
| 2045 EXPECT_EQ(25, client.LongpressX()); | 2049 EXPECT_EQ(25, client.LongpressX()); |
| 2046 EXPECT_EQ(7, client.LongpressY()); | 2050 EXPECT_EQ(7, client.LongpressY()); |
| 2047 | 2051 |
| 2048 // Explicitly reset to break dependency on locally scoped client. | 2052 // Explicitly reset to break dependency on locally scoped client. |
| 2049 web_view_helper_.Reset(); | 2053 web_view_helper_.Reset(); |
| 2050 } | 2054 } |
| 2051 | 2055 |
| 2052 TEST_P(WebViewTest, ClientTapHandlingNullWebViewClient) { | 2056 TEST_P(WebViewTest, ClientTapHandlingNullWebViewClient) { |
| 2053 WebViewImpl* web_view = | 2057 WebViewBase* web_view = |
| 2054 WebViewImpl::Create(nullptr, kWebPageVisibilityStateVisible); | 2058 WebViewBase::Create(nullptr, kWebPageVisibilityStateVisible); |
| 2055 FrameTestHelpers::TestWebFrameClient web_frame_client; | 2059 FrameTestHelpers::TestWebFrameClient web_frame_client; |
| 2056 FrameTestHelpers::TestWebWidgetClient web_widget_client; | 2060 FrameTestHelpers::TestWebWidgetClient web_widget_client; |
| 2057 WebLocalFrame* local_frame = WebLocalFrame::Create( | 2061 WebLocalFrame* local_frame = WebLocalFrame::Create( |
| 2058 WebTreeScopeType::kDocument, &web_frame_client, nullptr, nullptr); | 2062 WebTreeScopeType::kDocument, &web_frame_client, nullptr, nullptr); |
| 2059 web_view->SetMainFrame(local_frame); | 2063 web_view->SetMainFrame(local_frame); |
| 2060 | 2064 |
| 2061 // TODO(dcheng): The main frame widget currently has a special case. | 2065 // TODO(dcheng): The main frame widget currently has a special case. |
| 2062 // Eliminate this once WebView is no longer a WebWidget. | 2066 // Eliminate this once WebView is no longer a WebWidget. |
| 2063 blink::WebFrameWidget::Create(&web_widget_client, web_view, local_frame); | 2067 blink::WebFrameWidget::Create(&web_widget_client, web_view, local_frame); |
| 2064 | 2068 |
| 2065 WebGestureEvent event(WebInputEvent::kGestureTap, WebInputEvent::kNoModifiers, | 2069 WebGestureEvent event(WebInputEvent::kGestureTap, WebInputEvent::kNoModifiers, |
| 2066 WebInputEvent::kTimeStampForTesting); | 2070 WebInputEvent::kTimeStampForTesting); |
| 2067 event.source_device = kWebGestureDeviceTouchscreen; | 2071 event.source_device = kWebGestureDeviceTouchscreen; |
| 2068 event.x = 3; | 2072 event.x = 3; |
| 2069 event.y = 8; | 2073 event.y = 8; |
| 2070 EXPECT_EQ(WebInputEventResult::kNotHandled, | 2074 EXPECT_EQ(WebInputEventResult::kNotHandled, |
| 2071 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); | 2075 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); |
| 2072 web_view->Close(); | 2076 web_view->Close(); |
| 2073 } | 2077 } |
| 2074 | 2078 |
| 2075 TEST_P(WebViewTest, LongPressEmptyDiv) { | 2079 TEST_P(WebViewTest, LongPressEmptyDiv) { |
| 2076 RegisterMockedHttpURLLoad("long_press_empty_div.html"); | 2080 RegisterMockedHttpURLLoad("long_press_empty_div.html"); |
| 2077 | 2081 |
| 2078 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2082 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2079 base_url_ + "long_press_empty_div.html", true); | 2083 base_url_ + "long_press_empty_div.html", true); |
| 2080 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); | 2084 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); |
| 2081 web_view->Resize(WebSize(500, 300)); | 2085 web_view->Resize(WebSize(500, 300)); |
| 2082 web_view->UpdateAllLifecyclePhases(); | 2086 web_view->UpdateAllLifecyclePhases(); |
| 2083 RunPendingTasks(); | 2087 RunPendingTasks(); |
| 2084 | 2088 |
| 2085 WebGestureEvent event(WebInputEvent::kGestureLongPress, | 2089 WebGestureEvent event(WebInputEvent::kGestureLongPress, |
| 2086 WebInputEvent::kNoModifiers, | 2090 WebInputEvent::kNoModifiers, |
| 2087 WebInputEvent::kTimeStampForTesting); | 2091 WebInputEvent::kTimeStampForTesting); |
| 2088 event.source_device = kWebGestureDeviceTouchscreen; | 2092 event.source_device = kWebGestureDeviceTouchscreen; |
| 2089 event.x = 250; | 2093 event.x = 250; |
| 2090 event.y = 150; | 2094 event.y = 150; |
| 2091 | 2095 |
| 2092 EXPECT_EQ(WebInputEventResult::kNotHandled, | 2096 EXPECT_EQ(WebInputEventResult::kNotHandled, |
| 2093 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); | 2097 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); |
| 2094 } | 2098 } |
| 2095 | 2099 |
| 2096 TEST_P(WebViewTest, LongPressEmptyDivAlwaysShow) { | 2100 TEST_P(WebViewTest, LongPressEmptyDivAlwaysShow) { |
| 2097 RegisterMockedHttpURLLoad("long_press_empty_div.html"); | 2101 RegisterMockedHttpURLLoad("long_press_empty_div.html"); |
| 2098 | 2102 |
| 2099 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2103 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2100 base_url_ + "long_press_empty_div.html", true); | 2104 base_url_ + "long_press_empty_div.html", true); |
| 2101 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(true); | 2105 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(true); |
| 2102 web_view->Resize(WebSize(500, 300)); | 2106 web_view->Resize(WebSize(500, 300)); |
| 2103 web_view->UpdateAllLifecyclePhases(); | 2107 web_view->UpdateAllLifecyclePhases(); |
| 2104 RunPendingTasks(); | 2108 RunPendingTasks(); |
| 2105 | 2109 |
| 2106 WebGestureEvent event(WebInputEvent::kGestureLongPress, | 2110 WebGestureEvent event(WebInputEvent::kGestureLongPress, |
| 2107 WebInputEvent::kNoModifiers, | 2111 WebInputEvent::kNoModifiers, |
| 2108 WebInputEvent::kTimeStampForTesting); | 2112 WebInputEvent::kTimeStampForTesting); |
| 2109 event.source_device = kWebGestureDeviceTouchscreen; | 2113 event.source_device = kWebGestureDeviceTouchscreen; |
| 2110 event.x = 250; | 2114 event.x = 250; |
| 2111 event.y = 150; | 2115 event.y = 150; |
| 2112 | 2116 |
| 2113 EXPECT_EQ(WebInputEventResult::kHandledSystem, | 2117 EXPECT_EQ(WebInputEventResult::kHandledSystem, |
| 2114 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); | 2118 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); |
| 2115 } | 2119 } |
| 2116 | 2120 |
| 2117 TEST_P(WebViewTest, LongPressObject) { | 2121 TEST_P(WebViewTest, LongPressObject) { |
| 2118 RegisterMockedHttpURLLoad("long_press_object.html"); | 2122 RegisterMockedHttpURLLoad("long_press_object.html"); |
| 2119 | 2123 |
| 2120 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2124 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2121 base_url_ + "long_press_object.html", true); | 2125 base_url_ + "long_press_object.html", true); |
| 2122 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(true); | 2126 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(true); |
| 2123 web_view->Resize(WebSize(500, 300)); | 2127 web_view->Resize(WebSize(500, 300)); |
| 2124 web_view->UpdateAllLifecyclePhases(); | 2128 web_view->UpdateAllLifecyclePhases(); |
| 2125 RunPendingTasks(); | 2129 RunPendingTasks(); |
| 2126 | 2130 |
| 2127 WebGestureEvent event(WebInputEvent::kGestureLongPress, | 2131 WebGestureEvent event(WebInputEvent::kGestureLongPress, |
| 2128 WebInputEvent::kNoModifiers, | 2132 WebInputEvent::kNoModifiers, |
| 2129 WebInputEvent::kTimeStampForTesting); | 2133 WebInputEvent::kTimeStampForTesting); |
| 2130 event.source_device = kWebGestureDeviceTouchscreen; | 2134 event.source_device = kWebGestureDeviceTouchscreen; |
| 2131 event.x = 10; | 2135 event.x = 10; |
| 2132 event.y = 10; | 2136 event.y = 10; |
| 2133 | 2137 |
| 2134 EXPECT_NE(WebInputEventResult::kHandledSystem, | 2138 EXPECT_NE(WebInputEventResult::kHandledSystem, |
| 2135 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); | 2139 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); |
| 2136 | 2140 |
| 2137 HTMLElement* element = | 2141 HTMLElement* element = |
| 2138 ToHTMLElement(web_view->MainFrame()->GetDocument().GetElementById("obj")); | 2142 ToHTMLElement(web_view->MainFrame()->GetDocument().GetElementById("obj")); |
| 2139 EXPECT_FALSE(element->CanStartSelection()); | 2143 EXPECT_FALSE(element->CanStartSelection()); |
| 2140 } | 2144 } |
| 2141 | 2145 |
| 2142 TEST_P(WebViewTest, LongPressObjectFallback) { | 2146 TEST_P(WebViewTest, LongPressObjectFallback) { |
| 2143 RegisterMockedHttpURLLoad("long_press_object_fallback.html"); | 2147 RegisterMockedHttpURLLoad("long_press_object_fallback.html"); |
| 2144 | 2148 |
| 2145 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2149 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2146 base_url_ + "long_press_object_fallback.html", true); | 2150 base_url_ + "long_press_object_fallback.html", true); |
| 2147 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(true); | 2151 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(true); |
| 2148 web_view->Resize(WebSize(500, 300)); | 2152 web_view->Resize(WebSize(500, 300)); |
| 2149 web_view->UpdateAllLifecyclePhases(); | 2153 web_view->UpdateAllLifecyclePhases(); |
| 2150 RunPendingTasks(); | 2154 RunPendingTasks(); |
| 2151 | 2155 |
| 2152 WebGestureEvent event(WebInputEvent::kGestureLongPress, | 2156 WebGestureEvent event(WebInputEvent::kGestureLongPress, |
| 2153 WebInputEvent::kNoModifiers, | 2157 WebInputEvent::kNoModifiers, |
| 2154 WebInputEvent::kTimeStampForTesting); | 2158 WebInputEvent::kTimeStampForTesting); |
| 2155 event.source_device = kWebGestureDeviceTouchscreen; | 2159 event.source_device = kWebGestureDeviceTouchscreen; |
| 2156 event.x = 10; | 2160 event.x = 10; |
| 2157 event.y = 10; | 2161 event.y = 10; |
| 2158 | 2162 |
| 2159 EXPECT_EQ(WebInputEventResult::kHandledSystem, | 2163 EXPECT_EQ(WebInputEventResult::kHandledSystem, |
| 2160 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); | 2164 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); |
| 2161 | 2165 |
| 2162 HTMLElement* element = | 2166 HTMLElement* element = |
| 2163 ToHTMLElement(web_view->MainFrame()->GetDocument().GetElementById("obj")); | 2167 ToHTMLElement(web_view->MainFrame()->GetDocument().GetElementById("obj")); |
| 2164 EXPECT_TRUE(element->CanStartSelection()); | 2168 EXPECT_TRUE(element->CanStartSelection()); |
| 2165 } | 2169 } |
| 2166 | 2170 |
| 2167 TEST_P(WebViewTest, LongPressImage) { | 2171 TEST_P(WebViewTest, LongPressImage) { |
| 2168 RegisterMockedHttpURLLoad("long_press_image.html"); | 2172 RegisterMockedHttpURLLoad("long_press_image.html"); |
| 2169 | 2173 |
| 2170 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2174 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2171 base_url_ + "long_press_image.html", true); | 2175 base_url_ + "long_press_image.html", true); |
| 2172 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); | 2176 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); |
| 2173 web_view->Resize(WebSize(500, 300)); | 2177 web_view->Resize(WebSize(500, 300)); |
| 2174 web_view->UpdateAllLifecyclePhases(); | 2178 web_view->UpdateAllLifecyclePhases(); |
| 2175 RunPendingTasks(); | 2179 RunPendingTasks(); |
| 2176 | 2180 |
| 2177 WebGestureEvent event(WebInputEvent::kGestureLongPress, | 2181 WebGestureEvent event(WebInputEvent::kGestureLongPress, |
| 2178 WebInputEvent::kNoModifiers, | 2182 WebInputEvent::kNoModifiers, |
| 2179 WebInputEvent::kTimeStampForTesting); | 2183 WebInputEvent::kTimeStampForTesting); |
| 2180 event.source_device = kWebGestureDeviceTouchscreen; | 2184 event.source_device = kWebGestureDeviceTouchscreen; |
| 2181 event.x = 10; | 2185 event.x = 10; |
| 2182 event.y = 10; | 2186 event.y = 10; |
| 2183 | 2187 |
| 2184 EXPECT_EQ(WebInputEventResult::kHandledSystem, | 2188 EXPECT_EQ(WebInputEventResult::kHandledSystem, |
| 2185 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); | 2189 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); |
| 2186 } | 2190 } |
| 2187 | 2191 |
| 2188 TEST_P(WebViewTest, LongPressVideo) { | 2192 TEST_P(WebViewTest, LongPressVideo) { |
| 2189 RegisterMockedHttpURLLoad("long_press_video.html"); | 2193 RegisterMockedHttpURLLoad("long_press_video.html"); |
| 2190 | 2194 |
| 2191 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2195 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2192 base_url_ + "long_press_video.html", true); | 2196 base_url_ + "long_press_video.html", true); |
| 2193 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); | 2197 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); |
| 2194 web_view->Resize(WebSize(500, 300)); | 2198 web_view->Resize(WebSize(500, 300)); |
| 2195 web_view->UpdateAllLifecyclePhases(); | 2199 web_view->UpdateAllLifecyclePhases(); |
| 2196 RunPendingTasks(); | 2200 RunPendingTasks(); |
| 2197 | 2201 |
| 2198 WebGestureEvent event(WebInputEvent::kGestureLongPress, | 2202 WebGestureEvent event(WebInputEvent::kGestureLongPress, |
| 2199 WebInputEvent::kNoModifiers, | 2203 WebInputEvent::kNoModifiers, |
| 2200 WebInputEvent::kTimeStampForTesting); | 2204 WebInputEvent::kTimeStampForTesting); |
| 2201 event.source_device = kWebGestureDeviceTouchscreen; | 2205 event.source_device = kWebGestureDeviceTouchscreen; |
| 2202 event.x = 10; | 2206 event.x = 10; |
| 2203 event.y = 10; | 2207 event.y = 10; |
| 2204 | 2208 |
| 2205 EXPECT_EQ(WebInputEventResult::kHandledSystem, | 2209 EXPECT_EQ(WebInputEventResult::kHandledSystem, |
| 2206 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); | 2210 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); |
| 2207 } | 2211 } |
| 2208 | 2212 |
| 2209 TEST_P(WebViewTest, LongPressLink) { | 2213 TEST_P(WebViewTest, LongPressLink) { |
| 2210 RegisterMockedHttpURLLoad("long_press_link.html"); | 2214 RegisterMockedHttpURLLoad("long_press_link.html"); |
| 2211 | 2215 |
| 2212 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2216 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2213 base_url_ + "long_press_link.html", true); | 2217 base_url_ + "long_press_link.html", true); |
| 2214 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); | 2218 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); |
| 2215 web_view->Resize(WebSize(500, 300)); | 2219 web_view->Resize(WebSize(500, 300)); |
| 2216 web_view->UpdateAllLifecyclePhases(); | 2220 web_view->UpdateAllLifecyclePhases(); |
| 2217 RunPendingTasks(); | 2221 RunPendingTasks(); |
| 2218 | 2222 |
| 2219 WebGestureEvent event(WebInputEvent::kGestureLongPress, | 2223 WebGestureEvent event(WebInputEvent::kGestureLongPress, |
| 2220 WebInputEvent::kNoModifiers, | 2224 WebInputEvent::kNoModifiers, |
| 2221 WebInputEvent::kTimeStampForTesting); | 2225 WebInputEvent::kTimeStampForTesting); |
| 2222 event.source_device = kWebGestureDeviceTouchscreen; | 2226 event.source_device = kWebGestureDeviceTouchscreen; |
| 2223 event.x = 500; | 2227 event.x = 500; |
| 2224 event.y = 300; | 2228 event.y = 300; |
| 2225 | 2229 |
| 2226 EXPECT_EQ(WebInputEventResult::kHandledSystem, | 2230 EXPECT_EQ(WebInputEventResult::kHandledSystem, |
| 2227 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); | 2231 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); |
| 2228 } | 2232 } |
| 2229 | 2233 |
| 2230 TEST_P(WebViewTest, showContextMenuOnLongPressingLinks) { | 2234 TEST_P(WebViewTest, showContextMenuOnLongPressingLinks) { |
| 2231 RegisterMockedHttpURLLoad("long_press_links_and_images.html"); | 2235 RegisterMockedHttpURLLoad("long_press_links_and_images.html"); |
| 2232 | 2236 |
| 2233 URLTestHelpers::RegisterMockedURLLoad( | 2237 URLTestHelpers::RegisterMockedURLLoad( |
| 2234 ToKURL("http://www.test.com/foo.png"), | 2238 ToKURL("http://www.test.com/foo.png"), |
| 2235 testing::WebTestDataPath("white-1x1.png")); | 2239 testing::WebTestDataPath("white-1x1.png")); |
| 2236 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2240 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2237 base_url_ + "long_press_links_and_images.html", true); | 2241 base_url_ + "long_press_links_and_images.html", true); |
| 2238 | 2242 |
| 2239 web_view->SettingsImpl()->SetTouchDragDropEnabled(true); | 2243 web_view->SettingsImpl()->SetTouchDragDropEnabled(true); |
| 2240 web_view->Resize(WebSize(500, 300)); | 2244 web_view->Resize(WebSize(500, 300)); |
| 2241 web_view->UpdateAllLifecyclePhases(); | 2245 web_view->UpdateAllLifecyclePhases(); |
| 2242 RunPendingTasks(); | 2246 RunPendingTasks(); |
| 2243 | 2247 |
| 2244 WebString anchor_tag_id = WebString::FromUTF8("anchorTag"); | 2248 WebString anchor_tag_id = WebString::FromUTF8("anchorTag"); |
| 2245 WebString image_tag_id = WebString::FromUTF8("imageTag"); | 2249 WebString image_tag_id = WebString::FromUTF8("imageTag"); |
| 2246 | 2250 |
| 2247 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, anchor_tag_id)); | 2251 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, anchor_tag_id)); |
| 2248 EXPECT_STREQ("anchor contextmenu", | 2252 EXPECT_STREQ("anchor contextmenu", |
| 2249 web_view->MainFrame()->GetDocument().Title().Utf8().data()); | 2253 web_view->MainFrame()->GetDocument().Title().Utf8().data()); |
| 2250 | 2254 |
| 2251 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, image_tag_id)); | 2255 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, image_tag_id)); |
| 2252 EXPECT_STREQ("image contextmenu", | 2256 EXPECT_STREQ("image contextmenu", |
| 2253 web_view->MainFrame()->GetDocument().Title().Utf8().data()); | 2257 web_view->MainFrame()->GetDocument().Title().Utf8().data()); |
| 2254 } | 2258 } |
| 2255 | 2259 |
| 2256 TEST_P(WebViewTest, LongPressEmptyEditableSelection) { | 2260 TEST_P(WebViewTest, LongPressEmptyEditableSelection) { |
| 2257 RegisterMockedHttpURLLoad("long_press_empty_editable_selection.html"); | 2261 RegisterMockedHttpURLLoad("long_press_empty_editable_selection.html"); |
| 2258 | 2262 |
| 2259 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2263 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2260 base_url_ + "long_press_empty_editable_selection.html", true); | 2264 base_url_ + "long_press_empty_editable_selection.html", true); |
| 2261 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); | 2265 web_view->SettingsImpl()->SetAlwaysShowContextMenuOnTouch(false); |
| 2262 web_view->Resize(WebSize(500, 300)); | 2266 web_view->Resize(WebSize(500, 300)); |
| 2263 web_view->UpdateAllLifecyclePhases(); | 2267 web_view->UpdateAllLifecyclePhases(); |
| 2264 RunPendingTasks(); | 2268 RunPendingTasks(); |
| 2265 | 2269 |
| 2266 WebGestureEvent event(WebInputEvent::kGestureLongPress, | 2270 WebGestureEvent event(WebInputEvent::kGestureLongPress, |
| 2267 WebInputEvent::kNoModifiers, | 2271 WebInputEvent::kNoModifiers, |
| 2268 WebInputEvent::kTimeStampForTesting); | 2272 WebInputEvent::kTimeStampForTesting); |
| 2269 event.source_device = kWebGestureDeviceTouchscreen; | 2273 event.source_device = kWebGestureDeviceTouchscreen; |
| 2270 event.x = 10; | 2274 event.x = 10; |
| 2271 event.y = 10; | 2275 event.y = 10; |
| 2272 | 2276 |
| 2273 EXPECT_EQ(WebInputEventResult::kHandledSystem, | 2277 EXPECT_EQ(WebInputEventResult::kHandledSystem, |
| 2274 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); | 2278 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); |
| 2275 } | 2279 } |
| 2276 | 2280 |
| 2277 TEST_P(WebViewTest, LongPressEmptyNonEditableSelection) { | 2281 TEST_P(WebViewTest, LongPressEmptyNonEditableSelection) { |
| 2278 RegisterMockedHttpURLLoad("long_press_image.html"); | 2282 RegisterMockedHttpURLLoad("long_press_image.html"); |
| 2279 | 2283 |
| 2280 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2284 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2281 base_url_ + "long_press_image.html", true); | 2285 base_url_ + "long_press_image.html", true); |
| 2282 web_view->Resize(WebSize(500, 500)); | 2286 web_view->Resize(WebSize(500, 500)); |
| 2283 web_view->UpdateAllLifecyclePhases(); | 2287 web_view->UpdateAllLifecyclePhases(); |
| 2284 RunPendingTasks(); | 2288 RunPendingTasks(); |
| 2285 | 2289 |
| 2286 WebGestureEvent event(WebInputEvent::kGestureLongPress, | 2290 WebGestureEvent event(WebInputEvent::kGestureLongPress, |
| 2287 WebInputEvent::kNoModifiers, | 2291 WebInputEvent::kNoModifiers, |
| 2288 WebInputEvent::kTimeStampForTesting); | 2292 WebInputEvent::kTimeStampForTesting); |
| 2289 event.source_device = kWebGestureDeviceTouchscreen; | 2293 event.source_device = kWebGestureDeviceTouchscreen; |
| 2290 event.x = 300; | 2294 event.x = 300; |
| 2291 event.y = 300; | 2295 event.y = 300; |
| 2292 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 2296 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 2293 | 2297 |
| 2294 EXPECT_EQ(WebInputEventResult::kHandledSystem, | 2298 EXPECT_EQ(WebInputEventResult::kHandledSystem, |
| 2295 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); | 2299 web_view->HandleInputEvent(WebCoalescedInputEvent(event))); |
| 2296 EXPECT_TRUE(frame->SelectionAsText().IsEmpty()); | 2300 EXPECT_TRUE(frame->SelectionAsText().IsEmpty()); |
| 2297 } | 2301 } |
| 2298 | 2302 |
| 2299 TEST_P(WebViewTest, LongPressSelection) { | 2303 TEST_P(WebViewTest, LongPressSelection) { |
| 2300 RegisterMockedHttpURLLoad("longpress_selection.html"); | 2304 RegisterMockedHttpURLLoad("longpress_selection.html"); |
| 2301 | 2305 |
| 2302 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2306 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2303 base_url_ + "longpress_selection.html", true); | 2307 base_url_ + "longpress_selection.html", true); |
| 2304 web_view->Resize(WebSize(500, 300)); | 2308 web_view->Resize(WebSize(500, 300)); |
| 2305 web_view->UpdateAllLifecyclePhases(); | 2309 web_view->UpdateAllLifecyclePhases(); |
| 2306 RunPendingTasks(); | 2310 RunPendingTasks(); |
| 2307 | 2311 |
| 2308 WebString target = WebString::FromUTF8("target"); | 2312 WebString target = WebString::FromUTF8("target"); |
| 2309 WebString onselectstartfalse = WebString::FromUTF8("onselectstartfalse"); | 2313 WebString onselectstartfalse = WebString::FromUTF8("onselectstartfalse"); |
| 2310 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 2314 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 2311 | 2315 |
| 2312 EXPECT_TRUE( | 2316 EXPECT_TRUE( |
| 2313 TapElementById(WebInputEvent::kGestureLongPress, onselectstartfalse)); | 2317 TapElementById(WebInputEvent::kGestureLongPress, onselectstartfalse)); |
| 2314 EXPECT_EQ("", std::string(frame->SelectionAsText().Utf8().data())); | 2318 EXPECT_EQ("", std::string(frame->SelectionAsText().Utf8().data())); |
| 2315 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, target)); | 2319 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, target)); |
| 2316 EXPECT_EQ("testword", std::string(frame->SelectionAsText().Utf8().data())); | 2320 EXPECT_EQ("testword", std::string(frame->SelectionAsText().Utf8().data())); |
| 2317 } | 2321 } |
| 2318 | 2322 |
| 2319 TEST_P(WebViewTest, FinishComposingTextDoesNotDismissHandles) { | 2323 TEST_P(WebViewTest, FinishComposingTextDoesNotDismissHandles) { |
| 2320 RegisterMockedHttpURLLoad("longpress_selection.html"); | 2324 RegisterMockedHttpURLLoad("longpress_selection.html"); |
| 2321 | 2325 |
| 2322 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2326 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2323 base_url_ + "longpress_selection.html", true); | 2327 base_url_ + "longpress_selection.html", true); |
| 2324 web_view->Resize(WebSize(500, 300)); | 2328 web_view->Resize(WebSize(500, 300)); |
| 2325 web_view->UpdateAllLifecyclePhases(); | 2329 web_view->UpdateAllLifecyclePhases(); |
| 2326 RunPendingTasks(); | 2330 RunPendingTasks(); |
| 2327 | 2331 |
| 2328 WebString target = WebString::FromUTF8("target"); | 2332 WebString target = WebString::FromUTF8("target"); |
| 2329 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 2333 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 2330 WebInputMethodController* active_input_method_controller = | 2334 WebInputMethodController* active_input_method_controller = |
| 2331 frame->FrameWidget()->GetActiveWebInputMethodController(); | 2335 frame->FrameWidget()->GetActiveWebInputMethodController(); |
| 2332 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureTap, target)); | 2336 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureTap, target)); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 2348 // Check that finishComposingText(KeepSelection) does not dismiss handles. | 2352 // Check that finishComposingText(KeepSelection) does not dismiss handles. |
| 2349 active_input_method_controller->FinishComposingText( | 2353 active_input_method_controller->FinishComposingText( |
| 2350 WebInputMethodController::kKeepSelection); | 2354 WebInputMethodController::kKeepSelection); |
| 2351 EXPECT_TRUE(frame->GetFrame()->Selection().IsHandleVisible()); | 2355 EXPECT_TRUE(frame->GetFrame()->Selection().IsHandleVisible()); |
| 2352 } | 2356 } |
| 2353 | 2357 |
| 2354 #if !OS(MACOSX) | 2358 #if !OS(MACOSX) |
| 2355 TEST_P(WebViewTest, TouchDoesntSelectEmptyTextarea) { | 2359 TEST_P(WebViewTest, TouchDoesntSelectEmptyTextarea) { |
| 2356 RegisterMockedHttpURLLoad("longpress_textarea.html"); | 2360 RegisterMockedHttpURLLoad("longpress_textarea.html"); |
| 2357 | 2361 |
| 2358 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2362 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2359 base_url_ + "longpress_textarea.html", true); | 2363 base_url_ + "longpress_textarea.html", true); |
| 2360 web_view->Resize(WebSize(500, 300)); | 2364 web_view->Resize(WebSize(500, 300)); |
| 2361 web_view->UpdateAllLifecyclePhases(); | 2365 web_view->UpdateAllLifecyclePhases(); |
| 2362 RunPendingTasks(); | 2366 RunPendingTasks(); |
| 2363 | 2367 |
| 2364 WebString blanklinestextbox = WebString::FromUTF8("blanklinestextbox"); | 2368 WebString blanklinestextbox = WebString::FromUTF8("blanklinestextbox"); |
| 2365 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 2369 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 2366 | 2370 |
| 2367 // Long-press on carriage returns. | 2371 // Long-press on carriage returns. |
| 2368 EXPECT_TRUE( | 2372 EXPECT_TRUE( |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2391 | 2395 |
| 2392 // Double-tap past last word of textbox. | 2396 // Double-tap past last word of textbox. |
| 2393 web_view->HandleInputEvent(WebCoalescedInputEvent(event)); | 2397 web_view->HandleInputEvent(WebCoalescedInputEvent(event)); |
| 2394 EXPECT_TRUE(frame->SelectionAsText().IsEmpty()); | 2398 EXPECT_TRUE(frame->SelectionAsText().IsEmpty()); |
| 2395 } | 2399 } |
| 2396 #endif | 2400 #endif |
| 2397 | 2401 |
| 2398 TEST_P(WebViewTest, LongPressImageTextarea) { | 2402 TEST_P(WebViewTest, LongPressImageTextarea) { |
| 2399 RegisterMockedHttpURLLoad("longpress_image_contenteditable.html"); | 2403 RegisterMockedHttpURLLoad("longpress_image_contenteditable.html"); |
| 2400 | 2404 |
| 2401 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2405 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2402 base_url_ + "longpress_image_contenteditable.html", true); | 2406 base_url_ + "longpress_image_contenteditable.html", true); |
| 2403 web_view->Resize(WebSize(500, 300)); | 2407 web_view->Resize(WebSize(500, 300)); |
| 2404 web_view->UpdateAllLifecyclePhases(); | 2408 web_view->UpdateAllLifecyclePhases(); |
| 2405 RunPendingTasks(); | 2409 RunPendingTasks(); |
| 2406 | 2410 |
| 2407 WebString image = WebString::FromUTF8("purpleimage"); | 2411 WebString image = WebString::FromUTF8("purpleimage"); |
| 2408 | 2412 |
| 2409 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, image)); | 2413 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, image)); |
| 2410 WebRange range = web_view->CaretOrSelectionRange(); | 2414 WebRange range = web_view->CaretOrSelectionRange(); |
| 2411 EXPECT_FALSE(range.IsNull()); | 2415 EXPECT_FALSE(range.IsNull()); |
| 2412 EXPECT_EQ(0, range.StartOffset()); | 2416 EXPECT_EQ(0, range.StartOffset()); |
| 2413 EXPECT_EQ(1, range.length()); | 2417 EXPECT_EQ(1, range.length()); |
| 2414 } | 2418 } |
| 2415 | 2419 |
| 2416 TEST_P(WebViewTest, BlinkCaretAfterLongPress) { | 2420 TEST_P(WebViewTest, BlinkCaretAfterLongPress) { |
| 2417 RegisterMockedHttpURLLoad("blink_caret_on_typing_after_long_press.html"); | 2421 RegisterMockedHttpURLLoad("blink_caret_on_typing_after_long_press.html"); |
| 2418 | 2422 |
| 2419 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2423 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2420 base_url_ + "blink_caret_on_typing_after_long_press.html", true); | 2424 base_url_ + "blink_caret_on_typing_after_long_press.html", true); |
| 2421 web_view->Resize(WebSize(640, 480)); | 2425 web_view->Resize(WebSize(640, 480)); |
| 2422 web_view->UpdateAllLifecyclePhases(); | 2426 web_view->UpdateAllLifecyclePhases(); |
| 2423 RunPendingTasks(); | 2427 RunPendingTasks(); |
| 2424 | 2428 |
| 2425 WebString target = WebString::FromUTF8("target"); | 2429 WebString target = WebString::FromUTF8("target"); |
| 2426 WebLocalFrameImpl* main_frame = web_view->MainFrameImpl(); | 2430 WebLocalFrameImpl* main_frame = web_view->MainFrameImpl(); |
| 2427 | 2431 |
| 2428 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, target)); | 2432 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureLongPress, target)); |
| 2429 EXPECT_FALSE(main_frame->GetFrame()->Selection().IsCaretBlinkingSuspended()); | 2433 EXPECT_FALSE(main_frame->GetFrame()->Selection().IsCaretBlinkingSuspended()); |
| 2430 } | 2434 } |
| 2431 | 2435 |
| 2432 TEST_P(WebViewTest, BlinkCaretOnClosingContextMenu) { | 2436 TEST_P(WebViewTest, BlinkCaretOnClosingContextMenu) { |
| 2433 RegisterMockedHttpURLLoad("form.html"); | 2437 RegisterMockedHttpURLLoad("form.html"); |
| 2434 WebViewImpl* web_view = | 2438 WebViewBase* web_view = |
| 2435 web_view_helper_.InitializeAndLoad(base_url_ + "form.html", true); | 2439 web_view_helper_.InitializeAndLoad(base_url_ + "form.html", true); |
| 2436 | 2440 |
| 2437 web_view->SetInitialFocus(false); | 2441 web_view->SetInitialFocus(false); |
| 2438 RunPendingTasks(); | 2442 RunPendingTasks(); |
| 2439 | 2443 |
| 2440 // We suspend caret blinking when pressing with mouse right button. | 2444 // We suspend caret blinking when pressing with mouse right button. |
| 2441 // Note that we do not send MouseUp event here since it will be consumed | 2445 // Note that we do not send MouseUp event here since it will be consumed |
| 2442 // by the context menu once it shows up. | 2446 // by the context menu once it shows up. |
| 2443 WebMouseEvent mouse_event(WebInputEvent::kMouseDown, | 2447 WebMouseEvent mouse_event(WebInputEvent::kMouseDown, |
| 2444 WebInputEvent::kNoModifiers, | 2448 WebInputEvent::kNoModifiers, |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2458 EXPECT_TRUE(main_frame->GetFrame()->Selection().IsCaretBlinkingSuspended()); | 2462 EXPECT_TRUE(main_frame->GetFrame()->Selection().IsCaretBlinkingSuspended()); |
| 2459 | 2463 |
| 2460 // Caret blinking will be resumed only after context menu is closed. | 2464 // Caret blinking will be resumed only after context menu is closed. |
| 2461 web_view->DidCloseContextMenu(); | 2465 web_view->DidCloseContextMenu(); |
| 2462 | 2466 |
| 2463 EXPECT_FALSE(main_frame->GetFrame()->Selection().IsCaretBlinkingSuspended()); | 2467 EXPECT_FALSE(main_frame->GetFrame()->Selection().IsCaretBlinkingSuspended()); |
| 2464 } | 2468 } |
| 2465 | 2469 |
| 2466 TEST_P(WebViewTest, SelectionOnReadOnlyInput) { | 2470 TEST_P(WebViewTest, SelectionOnReadOnlyInput) { |
| 2467 RegisterMockedHttpURLLoad("selection_readonly.html"); | 2471 RegisterMockedHttpURLLoad("selection_readonly.html"); |
| 2468 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2472 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2469 base_url_ + "selection_readonly.html", true); | 2473 base_url_ + "selection_readonly.html", true); |
| 2470 web_view->Resize(WebSize(640, 480)); | 2474 web_view->Resize(WebSize(640, 480)); |
| 2471 web_view->UpdateAllLifecyclePhases(); | 2475 web_view->UpdateAllLifecyclePhases(); |
| 2472 RunPendingTasks(); | 2476 RunPendingTasks(); |
| 2473 | 2477 |
| 2474 std::string test_word = "This text should be selected."; | 2478 std::string test_word = "This text should be selected."; |
| 2475 | 2479 |
| 2476 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 2480 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 2477 EXPECT_EQ(test_word, std::string(frame->SelectionAsText().Utf8().data())); | 2481 EXPECT_EQ(test_word, std::string(frame->SelectionAsText().Utf8().data())); |
| 2478 | 2482 |
| 2479 WebRange range = web_view->CaretOrSelectionRange(); | 2483 WebRange range = web_view->CaretOrSelectionRange(); |
| 2480 EXPECT_FALSE(range.IsNull()); | 2484 EXPECT_FALSE(range.IsNull()); |
| 2481 EXPECT_EQ(0, range.StartOffset()); | 2485 EXPECT_EQ(0, range.StartOffset()); |
| 2482 EXPECT_EQ(static_cast<int>(test_word.length()), range.length()); | 2486 EXPECT_EQ(static_cast<int>(test_word.length()), range.length()); |
| 2483 } | 2487 } |
| 2484 | 2488 |
| 2485 TEST_P(WebViewTest, KeyDownScrollsHandled) { | 2489 TEST_P(WebViewTest, KeyDownScrollsHandled) { |
| 2486 RegisterMockedHttpURLLoad("content-width-1000.html"); | 2490 RegisterMockedHttpURLLoad("content-width-1000.html"); |
| 2487 | 2491 |
| 2488 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2492 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2489 base_url_ + "content-width-1000.html", true); | 2493 base_url_ + "content-width-1000.html", true); |
| 2490 web_view->Resize(WebSize(100, 100)); | 2494 web_view->Resize(WebSize(100, 100)); |
| 2491 web_view->UpdateAllLifecyclePhases(); | 2495 web_view->UpdateAllLifecyclePhases(); |
| 2492 RunPendingTasks(); | 2496 RunPendingTasks(); |
| 2493 | 2497 |
| 2494 WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown, | 2498 WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown, |
| 2495 WebInputEvent::kNoModifiers, | 2499 WebInputEvent::kNoModifiers, |
| 2496 WebInputEvent::kTimeStampForTesting); | 2500 WebInputEvent::kTimeStampForTesting); |
| 2497 | 2501 |
| 2498 // RawKeyDown pagedown should be handled. | 2502 // RawKeyDown pagedown should be handled. |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2578 static void ConfigueCompositingWebView(WebSettings* settings) { | 2582 static void ConfigueCompositingWebView(WebSettings* settings) { |
| 2579 settings->SetAcceleratedCompositingEnabled(true); | 2583 settings->SetAcceleratedCompositingEnabled(true); |
| 2580 settings->SetPreferCompositingToLCDTextEnabled(true); | 2584 settings->SetPreferCompositingToLCDTextEnabled(true); |
| 2581 } | 2585 } |
| 2582 | 2586 |
| 2583 TEST_P(WebViewTest, ShowPressOnTransformedLink) { | 2587 TEST_P(WebViewTest, ShowPressOnTransformedLink) { |
| 2584 std::unique_ptr<FrameTestHelpers::TestWebViewClient> | 2588 std::unique_ptr<FrameTestHelpers::TestWebViewClient> |
| 2585 fake_compositing_web_view_client = | 2589 fake_compositing_web_view_client = |
| 2586 WTF::MakeUnique<FrameTestHelpers::TestWebViewClient>(); | 2590 WTF::MakeUnique<FrameTestHelpers::TestWebViewClient>(); |
| 2587 FrameTestHelpers::WebViewHelper web_view_helper; | 2591 FrameTestHelpers::WebViewHelper web_view_helper; |
| 2588 WebViewImpl* web_view_impl = web_view_helper.Initialize( | 2592 WebViewBase* web_view_impl = web_view_helper.Initialize( |
| 2589 true, nullptr, fake_compositing_web_view_client.get(), nullptr, | 2593 true, nullptr, fake_compositing_web_view_client.get(), nullptr, |
| 2590 &ConfigueCompositingWebView); | 2594 &ConfigueCompositingWebView); |
| 2591 | 2595 |
| 2592 int page_width = 640; | 2596 int page_width = 640; |
| 2593 int page_height = 480; | 2597 int page_height = 480; |
| 2594 web_view_impl->Resize(WebSize(page_width, page_height)); | 2598 web_view_impl->Resize(WebSize(page_width, page_height)); |
| 2595 | 2599 |
| 2596 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); | 2600 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); |
| 2597 FrameTestHelpers::LoadHTMLString( | 2601 FrameTestHelpers::LoadHTMLString( |
| 2598 web_view_impl->MainFrame(), | 2602 web_view_impl->MainFrame(), |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2639 | 2643 |
| 2640 private: | 2644 private: |
| 2641 int text_changes_; | 2645 int text_changes_; |
| 2642 int text_changes_from_user_gesture_; | 2646 int text_changes_from_user_gesture_; |
| 2643 int user_gesture_notifications_count_; | 2647 int user_gesture_notifications_count_; |
| 2644 }; | 2648 }; |
| 2645 | 2649 |
| 2646 TEST_P(WebViewTest, LosingFocusDoesNotTriggerAutofillTextChange) { | 2650 TEST_P(WebViewTest, LosingFocusDoesNotTriggerAutofillTextChange) { |
| 2647 RegisterMockedHttpURLLoad("input_field_populated.html"); | 2651 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 2648 MockAutofillClient client; | 2652 MockAutofillClient client; |
| 2649 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2653 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2650 base_url_ + "input_field_populated.html"); | 2654 base_url_ + "input_field_populated.html"); |
| 2651 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 2655 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 2652 frame->SetAutofillClient(&client); | 2656 frame->SetAutofillClient(&client); |
| 2653 web_view->SetInitialFocus(false); | 2657 web_view->SetInitialFocus(false); |
| 2654 | 2658 |
| 2655 // Set up a composition that needs to be committed. | 2659 // Set up a composition that needs to be committed. |
| 2656 WebVector<WebCompositionUnderline> empty_underlines; | 2660 WebVector<WebCompositionUnderline> empty_underlines; |
| 2657 frame->SetEditableSelectionOffsets(4, 10); | 2661 frame->SetEditableSelectionOffsets(4, 10); |
| 2658 frame->SetCompositionFromExistingText(8, 12, empty_underlines); | 2662 frame->SetCompositionFromExistingText(8, 12, empty_underlines); |
| 2659 WebTextInputInfo info = frame->GetInputMethodController()->TextInputInfo(); | 2663 WebTextInputInfo info = frame->GetInputMethodController()->TextInputInfo(); |
| 2660 EXPECT_EQ(4, info.selection_start); | 2664 EXPECT_EQ(4, info.selection_start); |
| 2661 EXPECT_EQ(10, info.selection_end); | 2665 EXPECT_EQ(10, info.selection_end); |
| 2662 EXPECT_EQ(8, info.composition_start); | 2666 EXPECT_EQ(8, info.composition_start); |
| 2663 EXPECT_EQ(12, info.composition_end); | 2667 EXPECT_EQ(12, info.composition_end); |
| 2664 | 2668 |
| 2665 // Clear the focus and track that the subsequent composition commit does not | 2669 // Clear the focus and track that the subsequent composition commit does not |
| 2666 // trigger a text changed notification for autofill. | 2670 // trigger a text changed notification for autofill. |
| 2667 client.ClearChangeCounts(); | 2671 client.ClearChangeCounts(); |
| 2668 web_view->SetFocus(false); | 2672 web_view->SetFocus(false); |
| 2669 EXPECT_EQ(0, client.TextChanges()); | 2673 EXPECT_EQ(0, client.TextChanges()); |
| 2670 | 2674 |
| 2671 frame->SetAutofillClient(0); | 2675 frame->SetAutofillClient(0); |
| 2672 } | 2676 } |
| 2673 | 2677 |
| 2674 static void VerifySelectionAndComposition(WebViewImpl* web_view, | 2678 static void VerifySelectionAndComposition(WebViewBase* web_view, |
| 2675 int selection_start, | 2679 int selection_start, |
| 2676 int selection_end, | 2680 int selection_end, |
| 2677 int composition_start, | 2681 int composition_start, |
| 2678 int composition_end, | 2682 int composition_end, |
| 2679 const char* fail_message) { | 2683 const char* fail_message) { |
| 2680 WebTextInputInfo info = | 2684 WebTextInputInfo info = |
| 2681 web_view->MainFrameImpl()->GetInputMethodController()->TextInputInfo(); | 2685 web_view->MainFrameImpl()->GetInputMethodController()->TextInputInfo(); |
| 2682 EXPECT_EQ(selection_start, info.selection_start) << fail_message; | 2686 EXPECT_EQ(selection_start, info.selection_start) << fail_message; |
| 2683 EXPECT_EQ(selection_end, info.selection_end) << fail_message; | 2687 EXPECT_EQ(selection_end, info.selection_end) << fail_message; |
| 2684 EXPECT_EQ(composition_start, info.composition_start) << fail_message; | 2688 EXPECT_EQ(composition_start, info.composition_start) << fail_message; |
| 2685 EXPECT_EQ(composition_end, info.composition_end) << fail_message; | 2689 EXPECT_EQ(composition_end, info.composition_end) << fail_message; |
| 2686 } | 2690 } |
| 2687 | 2691 |
| 2688 TEST_P(WebViewTest, CompositionNotCancelledByBackspace) { | 2692 TEST_P(WebViewTest, CompositionNotCancelledByBackspace) { |
| 2689 RegisterMockedHttpURLLoad("composition_not_cancelled_by_backspace.html"); | 2693 RegisterMockedHttpURLLoad("composition_not_cancelled_by_backspace.html"); |
| 2690 MockAutofillClient client; | 2694 MockAutofillClient client; |
| 2691 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2695 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2692 base_url_ + "composition_not_cancelled_by_backspace.html"); | 2696 base_url_ + "composition_not_cancelled_by_backspace.html"); |
| 2693 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 2697 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 2694 frame->SetAutofillClient(&client); | 2698 frame->SetAutofillClient(&client); |
| 2695 web_view->SetInitialFocus(false); | 2699 web_view->SetInitialFocus(false); |
| 2696 | 2700 |
| 2697 // Test both input elements. | 2701 // Test both input elements. |
| 2698 for (int i = 0; i < 2; ++i) { | 2702 for (int i = 0; i < 2; ++i) { |
| 2699 // Select composition and do sanity check. | 2703 // Select composition and do sanity check. |
| 2700 WebVector<WebCompositionUnderline> empty_underlines; | 2704 WebVector<WebCompositionUnderline> empty_underlines; |
| 2701 frame->SetEditableSelectionOffsets(6, 6); | 2705 frame->SetEditableSelectionOffsets(6, 6); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 2727 | 2731 |
| 2728 web_view->AdvanceFocus(false); | 2732 web_view->AdvanceFocus(false); |
| 2729 } | 2733 } |
| 2730 | 2734 |
| 2731 frame->SetAutofillClient(0); | 2735 frame->SetAutofillClient(0); |
| 2732 } | 2736 } |
| 2733 | 2737 |
| 2734 TEST_P(WebViewTest, FinishComposingTextDoesntTriggerAutofillTextChange) { | 2738 TEST_P(WebViewTest, FinishComposingTextDoesntTriggerAutofillTextChange) { |
| 2735 RegisterMockedHttpURLLoad("input_field_populated.html"); | 2739 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 2736 MockAutofillClient client; | 2740 MockAutofillClient client; |
| 2737 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2741 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2738 base_url_ + "input_field_populated.html"); | 2742 base_url_ + "input_field_populated.html"); |
| 2739 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 2743 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 2740 frame->SetAutofillClient(&client); | 2744 frame->SetAutofillClient(&client); |
| 2741 web_view->SetInitialFocus(false); | 2745 web_view->SetInitialFocus(false); |
| 2742 | 2746 |
| 2743 WebDocument document = web_view->MainFrame()->GetDocument(); | 2747 WebDocument document = web_view->MainFrame()->GetDocument(); |
| 2744 HTMLFormControlElement* form = | 2748 HTMLFormControlElement* form = |
| 2745 ToHTMLFormControlElement(document.GetElementById("sample")); | 2749 ToHTMLFormControlElement(document.GetElementById("sample")); |
| 2746 | 2750 |
| 2747 WebInputMethodController* active_input_method_controller = | 2751 WebInputMethodController* active_input_method_controller = |
| (...skipping 21 matching lines...) Expand all Loading... |
| 2769 | 2773 |
| 2770 EXPECT_TRUE(form->IsAutofilled()); | 2774 EXPECT_TRUE(form->IsAutofilled()); |
| 2771 | 2775 |
| 2772 frame->SetAutofillClient(0); | 2776 frame->SetAutofillClient(0); |
| 2773 } | 2777 } |
| 2774 | 2778 |
| 2775 TEST_P(WebViewTest, | 2779 TEST_P(WebViewTest, |
| 2776 SetCompositionFromExistingTextDoesntTriggerAutofillTextChange) { | 2780 SetCompositionFromExistingTextDoesntTriggerAutofillTextChange) { |
| 2777 RegisterMockedHttpURLLoad("input_field_populated.html"); | 2781 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 2778 MockAutofillClient client; | 2782 MockAutofillClient client; |
| 2779 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 2783 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 2780 base_url_ + "input_field_populated.html", true); | 2784 base_url_ + "input_field_populated.html", true); |
| 2781 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 2785 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 2782 frame->SetAutofillClient(&client); | 2786 frame->SetAutofillClient(&client); |
| 2783 web_view->SetInitialFocus(false); | 2787 web_view->SetInitialFocus(false); |
| 2784 | 2788 |
| 2785 WebVector<WebCompositionUnderline> empty_underlines; | 2789 WebVector<WebCompositionUnderline> empty_underlines; |
| 2786 | 2790 |
| 2787 client.ClearChangeCounts(); | 2791 client.ClearChangeCounts(); |
| 2788 frame->SetCompositionFromExistingText(8, 12, empty_underlines); | 2792 frame->SetCompositionFromExistingText(8, 12, empty_underlines); |
| 2789 | 2793 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2823 WebView* CreatedWebView() const { return web_view_helper_.WebView(); } | 2827 WebView* CreatedWebView() const { return web_view_helper_.WebView(); } |
| 2824 | 2828 |
| 2825 private: | 2829 private: |
| 2826 FrameTestHelpers::WebViewHelper web_view_helper_; | 2830 FrameTestHelpers::WebViewHelper web_view_helper_; |
| 2827 bool did_focus_called_; | 2831 bool did_focus_called_; |
| 2828 }; | 2832 }; |
| 2829 | 2833 |
| 2830 TEST_P(WebViewTest, DoNotFocusCurrentFrameOnNavigateFromLocalFrame) { | 2834 TEST_P(WebViewTest, DoNotFocusCurrentFrameOnNavigateFromLocalFrame) { |
| 2831 ViewCreatingWebViewClient client; | 2835 ViewCreatingWebViewClient client; |
| 2832 FrameTestHelpers::WebViewHelper web_view_helper; | 2836 FrameTestHelpers::WebViewHelper web_view_helper; |
| 2833 WebViewImpl* web_view_impl = web_view_helper.Initialize(true, 0, &client); | 2837 WebViewBase* web_view_impl = web_view_helper.Initialize(true, 0, &client); |
| 2834 web_view_impl->GetPage() | 2838 web_view_impl->GetPage() |
| 2835 ->GetSettings() | 2839 ->GetSettings() |
| 2836 .SetJavaScriptCanOpenWindowsAutomatically(true); | 2840 .SetJavaScriptCanOpenWindowsAutomatically(true); |
| 2837 | 2841 |
| 2838 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); | 2842 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); |
| 2839 FrameTestHelpers::LoadHTMLString( | 2843 FrameTestHelpers::LoadHTMLString( |
| 2840 web_view_impl->MainFrame(), | 2844 web_view_impl->MainFrame(), |
| 2841 "<html><body><iframe src=\"about:blank\"></iframe></body></html>", | 2845 "<html><body><iframe src=\"about:blank\"></iframe></body></html>", |
| 2842 base_url); | 2846 base_url); |
| 2843 | 2847 |
| 2844 // Make a request from a local frame. | 2848 // Make a request from a local frame. |
| 2845 WebURLRequest web_url_request_with_target_start; | 2849 WebURLRequest web_url_request_with_target_start; |
| 2846 LocalFrame* local_frame = | 2850 LocalFrame* local_frame = |
| 2847 ToWebLocalFrameImpl(web_view_impl->MainFrame()->FirstChild())->GetFrame(); | 2851 ToWebLocalFrameImpl(web_view_impl->MainFrame()->FirstChild())->GetFrame(); |
| 2848 FrameLoadRequest request_with_target_start( | 2852 FrameLoadRequest request_with_target_start( |
| 2849 local_frame->GetDocument(), | 2853 local_frame->GetDocument(), |
| 2850 web_url_request_with_target_start.ToResourceRequest(), "_top"); | 2854 web_url_request_with_target_start.ToResourceRequest(), "_top"); |
| 2851 local_frame->Loader().Load(request_with_target_start); | 2855 local_frame->Loader().Load(request_with_target_start); |
| 2852 EXPECT_FALSE(client.DidFocusCalled()); | 2856 EXPECT_FALSE(client.DidFocusCalled()); |
| 2853 | 2857 |
| 2854 web_view_helper.Reset(); // Remove dependency on locally scoped client. | 2858 web_view_helper.Reset(); // Remove dependency on locally scoped client. |
| 2855 } | 2859 } |
| 2856 | 2860 |
| 2857 TEST_P(WebViewTest, FocusExistingFrameOnNavigate) { | 2861 TEST_P(WebViewTest, FocusExistingFrameOnNavigate) { |
| 2858 ViewCreatingWebViewClient client; | 2862 ViewCreatingWebViewClient client; |
| 2859 FrameTestHelpers::WebViewHelper web_view_helper; | 2863 FrameTestHelpers::WebViewHelper web_view_helper; |
| 2860 WebViewImpl* web_view_impl = web_view_helper.Initialize(true, 0, &client); | 2864 WebViewBase* web_view_impl = web_view_helper.Initialize(true, 0, &client); |
| 2861 web_view_impl->GetPage() | 2865 web_view_impl->GetPage() |
| 2862 ->GetSettings() | 2866 ->GetSettings() |
| 2863 .SetJavaScriptCanOpenWindowsAutomatically(true); | 2867 .SetJavaScriptCanOpenWindowsAutomatically(true); |
| 2864 WebLocalFrameImpl* frame = web_view_impl->MainFrameImpl(); | 2868 WebLocalFrameImpl* frame = web_view_impl->MainFrameImpl(); |
| 2865 frame->SetName("_start"); | 2869 frame->SetName("_start"); |
| 2866 | 2870 |
| 2867 // Make a request that will open a new window | 2871 // Make a request that will open a new window |
| 2868 WebURLRequest web_url_request; | 2872 WebURLRequest web_url_request; |
| 2869 FrameLoadRequest request(0, web_url_request.ToResourceRequest(), "_blank"); | 2873 FrameLoadRequest request(0, web_url_request.ToResourceRequest(), "_blank"); |
| 2870 ToLocalFrame(web_view_impl->GetPage()->MainFrame())->Loader().Load(request); | 2874 ToLocalFrame(web_view_impl->GetPage()->MainFrame())->Loader().Load(request); |
| 2871 ASSERT_TRUE(client.CreatedWebView()); | 2875 ASSERT_TRUE(client.CreatedWebView()); |
| 2872 EXPECT_FALSE(client.DidFocusCalled()); | 2876 EXPECT_FALSE(client.DidFocusCalled()); |
| 2873 | 2877 |
| 2874 // Make a request from the new window that will navigate the original window. | 2878 // Make a request from the new window that will navigate the original window. |
| 2875 // The original window should be focused. | 2879 // The original window should be focused. |
| 2876 WebURLRequest web_url_request_with_target_start; | 2880 WebURLRequest web_url_request_with_target_start; |
| 2877 FrameLoadRequest request_with_target_start( | 2881 FrameLoadRequest request_with_target_start( |
| 2878 0, web_url_request_with_target_start.ToResourceRequest(), "_start"); | 2882 0, web_url_request_with_target_start.ToResourceRequest(), "_start"); |
| 2879 ToLocalFrame(ToWebViewImpl(client.CreatedWebView())->GetPage()->MainFrame()) | 2883 ToLocalFrame(static_cast<WebViewBase*>(client.CreatedWebView()) |
| 2884 ->GetPage() |
| 2885 ->MainFrame()) |
| 2880 ->Loader() | 2886 ->Loader() |
| 2881 .Load(request_with_target_start); | 2887 .Load(request_with_target_start); |
| 2882 EXPECT_TRUE(client.DidFocusCalled()); | 2888 EXPECT_TRUE(client.DidFocusCalled()); |
| 2883 | 2889 |
| 2884 web_view_helper.Reset(); // Remove dependency on locally scoped client. | 2890 web_view_helper.Reset(); // Remove dependency on locally scoped client. |
| 2885 } | 2891 } |
| 2886 | 2892 |
| 2887 TEST_P(WebViewTest, DispatchesFocusOutFocusInOnViewToggleFocus) { | 2893 TEST_P(WebViewTest, DispatchesFocusOutFocusInOnViewToggleFocus) { |
| 2888 RegisterMockedHttpURLLoad("focusout_focusin_events.html"); | 2894 RegisterMockedHttpURLLoad("focusout_focusin_events.html"); |
| 2889 WebView* web_view = web_view_helper_.InitializeAndLoad( | 2895 WebView* web_view = web_view_helper_.InitializeAndLoad( |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2931 #if OS(ANDROID) | 2937 #if OS(ANDROID) |
| 2932 TEST_P(WebViewTest, DISABLED_ChooseValueFromDateTimeChooser) { | 2938 TEST_P(WebViewTest, DISABLED_ChooseValueFromDateTimeChooser) { |
| 2933 #else | 2939 #else |
| 2934 TEST_P(WebViewTest, ChooseValueFromDateTimeChooser) { | 2940 TEST_P(WebViewTest, ChooseValueFromDateTimeChooser) { |
| 2935 #endif | 2941 #endif |
| 2936 bool original_multiple_fields_flag = | 2942 bool original_multiple_fields_flag = |
| 2937 RuntimeEnabledFeatures::inputMultipleFieldsUIEnabled(); | 2943 RuntimeEnabledFeatures::inputMultipleFieldsUIEnabled(); |
| 2938 RuntimeEnabledFeatures::setInputMultipleFieldsUIEnabled(false); | 2944 RuntimeEnabledFeatures::setInputMultipleFieldsUIEnabled(false); |
| 2939 DateTimeChooserWebViewClient client; | 2945 DateTimeChooserWebViewClient client; |
| 2940 std::string url = RegisterMockedHttpURLLoad("date_time_chooser.html"); | 2946 std::string url = RegisterMockedHttpURLLoad("date_time_chooser.html"); |
| 2941 WebViewImpl* web_view_impl = | 2947 WebViewBase* web_view_impl = |
| 2942 web_view_helper_.InitializeAndLoad(url, true, 0, &client); | 2948 web_view_helper_.InitializeAndLoad(url, true, 0, &client); |
| 2943 | 2949 |
| 2944 Document* document = | 2950 Document* document = |
| 2945 web_view_impl->MainFrameImpl()->GetFrame()->GetDocument(); | 2951 web_view_impl->MainFrameImpl()->GetFrame()->GetDocument(); |
| 2946 | 2952 |
| 2947 HTMLInputElement* input_element; | 2953 HTMLInputElement* input_element; |
| 2948 | 2954 |
| 2949 input_element = toHTMLInputElement(document->getElementById("date")); | 2955 input_element = toHTMLInputElement(document->getElementById("date")); |
| 2950 OpenDateTimeChooser(web_view_impl, input_element); | 2956 OpenDateTimeChooser(web_view_impl, input_element); |
| 2951 client.ChooserCompletion()->DidChooseValue(0); | 2957 client.ChooserCompletion()->DidChooseValue(0); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3046 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " | 3052 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " |
| 3047 "font-weight: normal; letter-spacing: normal; orphans: 2; text-align: " | 3053 "font-weight: normal; letter-spacing: normal; orphans: 2; text-align: " |
| 3048 "start; text-indent: 0px; text-transform: none; white-space: normal; " | 3054 "start; text-indent: 0px; text-transform: none; white-space: normal; " |
| 3049 "widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " | 3055 "widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " |
| 3050 "text-decoration-style: initial; text-decoration-color: initial;\">Price " | 3056 "text-decoration-style: initial; text-decoration-color: initial;\">Price " |
| 3051 "10,000,000won</div>"; | 3057 "10,000,000won</div>"; |
| 3052 WebString clip_text; | 3058 WebString clip_text; |
| 3053 WebString clip_html; | 3059 WebString clip_html; |
| 3054 RegisterMockedHttpURLLoad("Ahem.ttf"); | 3060 RegisterMockedHttpURLLoad("Ahem.ttf"); |
| 3055 RegisterMockedHttpURLLoad("smartclip.html"); | 3061 RegisterMockedHttpURLLoad("smartclip.html"); |
| 3056 WebViewImpl* web_view = | 3062 WebViewBase* web_view = |
| 3057 web_view_helper_.InitializeAndLoad(base_url_ + "smartclip.html"); | 3063 web_view_helper_.InitializeAndLoad(base_url_ + "smartclip.html"); |
| 3058 web_view->Resize(WebSize(500, 500)); | 3064 web_view->Resize(WebSize(500, 500)); |
| 3059 web_view->UpdateAllLifecyclePhases(); | 3065 web_view->UpdateAllLifecyclePhases(); |
| 3060 WebRect crop_rect(300, 125, 152, 50); | 3066 WebRect crop_rect(300, 125, 152, 50); |
| 3061 web_view->MainFrameImpl()->ExtractSmartClipData(crop_rect, clip_text, | 3067 web_view->MainFrameImpl()->ExtractSmartClipData(crop_rect, clip_text, |
| 3062 clip_html); | 3068 clip_html); |
| 3063 EXPECT_STREQ(kExpectedClipText, clip_text.Utf8().c_str()); | 3069 EXPECT_STREQ(kExpectedClipText, clip_text.Utf8().c_str()); |
| 3064 EXPECT_STREQ(kExpectedClipHtml, clip_html.Utf8().c_str()); | 3070 EXPECT_STREQ(kExpectedClipHtml, clip_html.Utf8().c_str()); |
| 3065 } | 3071 } |
| 3066 | 3072 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 3082 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " | 3088 "normal; font-variant-ligatures: normal; font-variant-caps: normal; " |
| 3083 "font-weight: normal; letter-spacing: normal; orphans: 2; text-align: " | 3089 "font-weight: normal; letter-spacing: normal; orphans: 2; text-align: " |
| 3084 "start; text-indent: 0px; text-transform: none; white-space: normal; " | 3090 "start; text-indent: 0px; text-transform: none; white-space: normal; " |
| 3085 "widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " | 3091 "widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; " |
| 3086 "text-decoration-style: initial; text-decoration-color: initial;\">Price " | 3092 "text-decoration-style: initial; text-decoration-color: initial;\">Price " |
| 3087 "10,000,000won</div>"; | 3093 "10,000,000won</div>"; |
| 3088 WebString clip_text; | 3094 WebString clip_text; |
| 3089 WebString clip_html; | 3095 WebString clip_html; |
| 3090 RegisterMockedHttpURLLoad("Ahem.ttf"); | 3096 RegisterMockedHttpURLLoad("Ahem.ttf"); |
| 3091 RegisterMockedHttpURLLoad("smartclip.html"); | 3097 RegisterMockedHttpURLLoad("smartclip.html"); |
| 3092 WebViewImpl* web_view = | 3098 WebViewBase* web_view = |
| 3093 web_view_helper_.InitializeAndLoad(base_url_ + "smartclip.html"); | 3099 web_view_helper_.InitializeAndLoad(base_url_ + "smartclip.html"); |
| 3094 web_view->Resize(WebSize(500, 500)); | 3100 web_view->Resize(WebSize(500, 500)); |
| 3095 web_view->UpdateAllLifecyclePhases(); | 3101 web_view->UpdateAllLifecyclePhases(); |
| 3096 web_view->SetPageScaleFactor(1.5); | 3102 web_view->SetPageScaleFactor(1.5); |
| 3097 web_view->SetVisualViewportOffset(WebFloatPoint(167, 100)); | 3103 web_view->SetVisualViewportOffset(WebFloatPoint(167, 100)); |
| 3098 WebRect crop_rect(200, 38, 228, 75); | 3104 WebRect crop_rect(200, 38, 228, 75); |
| 3099 web_view->MainFrameImpl()->ExtractSmartClipData(crop_rect, clip_text, | 3105 web_view->MainFrameImpl()->ExtractSmartClipData(crop_rect, clip_text, |
| 3100 clip_html); | 3106 clip_html); |
| 3101 EXPECT_STREQ(kExpectedClipText, clip_text.Utf8().c_str()); | 3107 EXPECT_STREQ(kExpectedClipText, clip_text.Utf8().c_str()); |
| 3102 EXPECT_STREQ(kExpectedClipHtml, clip_html.Utf8().c_str()); | 3108 EXPECT_STREQ(kExpectedClipHtml, clip_html.Utf8().c_str()); |
| 3103 } | 3109 } |
| 3104 | 3110 |
| 3105 TEST_P(WebViewTest, SmartClipReturnsEmptyStringsWhenUserSelectIsNone) { | 3111 TEST_P(WebViewTest, SmartClipReturnsEmptyStringsWhenUserSelectIsNone) { |
| 3106 WebString clip_text; | 3112 WebString clip_text; |
| 3107 WebString clip_html; | 3113 WebString clip_html; |
| 3108 RegisterMockedHttpURLLoad("Ahem.ttf"); | 3114 RegisterMockedHttpURLLoad("Ahem.ttf"); |
| 3109 RegisterMockedHttpURLLoad("smartclip_user_select_none.html"); | 3115 RegisterMockedHttpURLLoad("smartclip_user_select_none.html"); |
| 3110 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 3116 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3111 base_url_ + "smartclip_user_select_none.html"); | 3117 base_url_ + "smartclip_user_select_none.html"); |
| 3112 web_view->Resize(WebSize(500, 500)); | 3118 web_view->Resize(WebSize(500, 500)); |
| 3113 web_view->UpdateAllLifecyclePhases(); | 3119 web_view->UpdateAllLifecyclePhases(); |
| 3114 WebRect crop_rect(0, 0, 100, 100); | 3120 WebRect crop_rect(0, 0, 100, 100); |
| 3115 web_view->MainFrameImpl()->ExtractSmartClipData(crop_rect, clip_text, | 3121 web_view->MainFrameImpl()->ExtractSmartClipData(crop_rect, clip_text, |
| 3116 clip_html); | 3122 clip_html); |
| 3117 EXPECT_STREQ("", clip_text.Utf8().c_str()); | 3123 EXPECT_STREQ("", clip_text.Utf8().c_str()); |
| 3118 EXPECT_STREQ("", clip_html.Utf8().c_str()); | 3124 EXPECT_STREQ("", clip_html.Utf8().c_str()); |
| 3119 } | 3125 } |
| 3120 | 3126 |
| 3121 TEST_P(WebViewTest, SmartClipDoesNotCrashPositionReversed) { | 3127 TEST_P(WebViewTest, SmartClipDoesNotCrashPositionReversed) { |
| 3122 WebString clip_text; | 3128 WebString clip_text; |
| 3123 WebString clip_html; | 3129 WebString clip_html; |
| 3124 RegisterMockedHttpURLLoad("Ahem.ttf"); | 3130 RegisterMockedHttpURLLoad("Ahem.ttf"); |
| 3125 RegisterMockedHttpURLLoad("smartclip_reversed_positions.html"); | 3131 RegisterMockedHttpURLLoad("smartclip_reversed_positions.html"); |
| 3126 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 3132 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3127 base_url_ + "smartclip_reversed_positions.html"); | 3133 base_url_ + "smartclip_reversed_positions.html"); |
| 3128 web_view->Resize(WebSize(500, 500)); | 3134 web_view->Resize(WebSize(500, 500)); |
| 3129 web_view->UpdateAllLifecyclePhases(); | 3135 web_view->UpdateAllLifecyclePhases(); |
| 3130 // Left upper corner of the rect will be end position in the DOM hierarchy. | 3136 // Left upper corner of the rect will be end position in the DOM hierarchy. |
| 3131 WebRect crop_rect(30, 110, 400, 250); | 3137 WebRect crop_rect(30, 110, 400, 250); |
| 3132 // This should not still crash. See crbug.com/589082 for more details. | 3138 // This should not still crash. See crbug.com/589082 for more details. |
| 3133 web_view->MainFrameImpl()->ExtractSmartClipData(crop_rect, clip_text, | 3139 web_view->MainFrameImpl()->ExtractSmartClipData(crop_rect, clip_text, |
| 3134 clip_html); | 3140 clip_html); |
| 3135 } | 3141 } |
| 3136 | 3142 |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3247 // This test verifies that WebWidgetClient::hasTouchEventHandlers is called | 3253 // This test verifies that WebWidgetClient::hasTouchEventHandlers is called |
| 3248 // accordingly for various calls to EventHandlerRegistry::did{Add|Remove| | 3254 // accordingly for various calls to EventHandlerRegistry::did{Add|Remove| |
| 3249 // RemoveAll}EventHandler(..., TouchEvent). Verifying that those calls are made | 3255 // RemoveAll}EventHandler(..., TouchEvent). Verifying that those calls are made |
| 3250 // correctly is the job of LayoutTests/fast/events/event-handler-count.html. | 3256 // correctly is the job of LayoutTests/fast/events/event-handler-count.html. |
| 3251 TEST_P(WebViewTest, HasTouchEventHandlers) { | 3257 TEST_P(WebViewTest, HasTouchEventHandlers) { |
| 3252 TouchEventHandlerWebWidgetClient client; | 3258 TouchEventHandlerWebWidgetClient client; |
| 3253 // We need to create a LayerTreeView for the client before loading the page, | 3259 // We need to create a LayerTreeView for the client before loading the page, |
| 3254 // otherwise ChromeClient will default to assuming there are touch handlers. | 3260 // otherwise ChromeClient will default to assuming there are touch handlers. |
| 3255 WebLayerTreeView* layer_tree_view = client.InitializeLayerTreeView(); | 3261 WebLayerTreeView* layer_tree_view = client.InitializeLayerTreeView(); |
| 3256 std::string url = RegisterMockedHttpURLLoad("has_touch_event_handlers.html"); | 3262 std::string url = RegisterMockedHttpURLLoad("has_touch_event_handlers.html"); |
| 3257 WebViewImpl* web_view_impl = | 3263 WebViewBase* web_view_impl = |
| 3258 web_view_helper_.InitializeAndLoad(url, true, 0, 0, &client); | 3264 web_view_helper_.InitializeAndLoad(url, true, 0, 0, &client); |
| 3259 ASSERT_TRUE(layer_tree_view); | 3265 ASSERT_TRUE(layer_tree_view); |
| 3260 const EventHandlerRegistry::EventHandlerClass kTouchEvent = | 3266 const EventHandlerRegistry::EventHandlerClass kTouchEvent = |
| 3261 EventHandlerRegistry::kTouchStartOrMoveEventBlocking; | 3267 EventHandlerRegistry::kTouchStartOrMoveEventBlocking; |
| 3262 | 3268 |
| 3263 // The page is initialized with at least one no-handlers call. | 3269 // The page is initialized with at least one no-handlers call. |
| 3264 // In practice we get two such calls because WebViewHelper::initializeAndLoad | 3270 // In practice we get two such calls because WebViewHelper::initializeAndLoad |
| 3265 // first initializes an empty frame, and then loads a document into it, so | 3271 // first initializes an empty frame, and then loads a document into it, so |
| 3266 // there are two FrameLoader::commitProvisionalLoad calls. | 3272 // there are two FrameLoader::commitProvisionalLoad calls. |
| 3267 EXPECT_LT(0, client.GetAndResetHasTouchEventHandlerCallCount(false)); | 3273 EXPECT_LT(0, client.GetAndResetHasTouchEventHandlerCallCount(false)); |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3375 // Free the webView before the TouchEventHandlerWebViewClient gets freed. | 3381 // Free the webView before the TouchEventHandlerWebViewClient gets freed. |
| 3376 web_view_helper_.Reset(); | 3382 web_view_helper_.Reset(); |
| 3377 } | 3383 } |
| 3378 | 3384 |
| 3379 // This test checks that deleting nodes which have only non-JS-registered touch | 3385 // This test checks that deleting nodes which have only non-JS-registered touch |
| 3380 // handlers also removes them from the event handler registry. Note that this | 3386 // handlers also removes them from the event handler registry. Note that this |
| 3381 // is different from detaching and re-attaching the same node, which is covered | 3387 // is different from detaching and re-attaching the same node, which is covered |
| 3382 // by layout tests under fast/events/. | 3388 // by layout tests under fast/events/. |
| 3383 TEST_P(WebViewTest, DeleteElementWithRegisteredHandler) { | 3389 TEST_P(WebViewTest, DeleteElementWithRegisteredHandler) { |
| 3384 std::string url = RegisterMockedHttpURLLoad("simple_div.html"); | 3390 std::string url = RegisterMockedHttpURLLoad("simple_div.html"); |
| 3385 WebViewImpl* web_view_impl = web_view_helper_.InitializeAndLoad(url, true); | 3391 WebViewBase* web_view_impl = web_view_helper_.InitializeAndLoad(url, true); |
| 3386 | 3392 |
| 3387 Persistent<Document> document = | 3393 Persistent<Document> document = |
| 3388 web_view_impl->MainFrameImpl()->GetFrame()->GetDocument(); | 3394 web_view_impl->MainFrameImpl()->GetFrame()->GetDocument(); |
| 3389 Element* div = document->getElementById("div"); | 3395 Element* div = document->getElementById("div"); |
| 3390 EventHandlerRegistry& registry = | 3396 EventHandlerRegistry& registry = |
| 3391 document->GetPage()->GetEventHandlerRegistry(); | 3397 document->GetPage()->GetEventHandlerRegistry(); |
| 3392 | 3398 |
| 3393 registry.DidAddEventHandler(*div, EventHandlerRegistry::kScrollEvent); | 3399 registry.DidAddEventHandler(*div, EventHandlerRegistry::kScrollEvent); |
| 3394 EXPECT_TRUE(registry.HasEventHandlers(EventHandlerRegistry::kScrollEvent)); | 3400 EXPECT_TRUE(registry.HasEventHandlers(EventHandlerRegistry::kScrollEvent)); |
| 3395 | 3401 |
| 3396 DummyExceptionStateForTesting exception_state; | 3402 DummyExceptionStateForTesting exception_state; |
| 3397 div->remove(exception_state); | 3403 div->remove(exception_state); |
| 3398 | 3404 |
| 3399 // For oilpan we have to force a GC to ensure the event handlers have been | 3405 // For oilpan we have to force a GC to ensure the event handlers have been |
| 3400 // removed when checking below. We do a precise GC (collectAllGarbage does not | 3406 // removed when checking below. We do a precise GC (collectAllGarbage does not |
| 3401 // scan the stack) to ensure the div element dies. This is also why the | 3407 // scan the stack) to ensure the div element dies. This is also why the |
| 3402 // Document is in a Persistent since we want that to stay around. | 3408 // Document is in a Persistent since we want that to stay around. |
| 3403 ThreadState::Current()->CollectAllGarbage(); | 3409 ThreadState::Current()->CollectAllGarbage(); |
| 3404 | 3410 |
| 3405 EXPECT_FALSE(registry.HasEventHandlers(EventHandlerRegistry::kScrollEvent)); | 3411 EXPECT_FALSE(registry.HasEventHandlers(EventHandlerRegistry::kScrollEvent)); |
| 3406 } | 3412 } |
| 3407 | 3413 |
| 3408 // This test verifies the text input flags are correctly exposed to script. | 3414 // This test verifies the text input flags are correctly exposed to script. |
| 3409 TEST_P(WebViewTest, TextInputFlags) { | 3415 TEST_P(WebViewTest, TextInputFlags) { |
| 3410 std::string url = RegisterMockedHttpURLLoad("text_input_flags.html"); | 3416 std::string url = RegisterMockedHttpURLLoad("text_input_flags.html"); |
| 3411 WebViewImpl* web_view_impl = web_view_helper_.InitializeAndLoad(url, true); | 3417 WebViewBase* web_view_impl = web_view_helper_.InitializeAndLoad(url, true); |
| 3412 web_view_impl->SetInitialFocus(false); | 3418 web_view_impl->SetInitialFocus(false); |
| 3413 | 3419 |
| 3414 WebLocalFrameImpl* frame = web_view_impl->MainFrameImpl(); | 3420 WebLocalFrameImpl* frame = web_view_impl->MainFrameImpl(); |
| 3415 WebInputMethodControllerImpl* active_input_method_controller = | 3421 WebInputMethodControllerImpl* active_input_method_controller = |
| 3416 frame->GetInputMethodController(); | 3422 frame->GetInputMethodController(); |
| 3417 Document* document = frame->GetFrame()->GetDocument(); | 3423 Document* document = frame->GetFrame()->GetDocument(); |
| 3418 | 3424 |
| 3419 // (A) <input> | 3425 // (A) <input> |
| 3420 // (A.1) Verifies autocorrect/autocomplete/spellcheck flags are Off and | 3426 // (A.1) Verifies autocorrect/autocomplete/spellcheck flags are Off and |
| 3421 // autocapitalize is set to none. | 3427 // autocapitalize is set to none. |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3461 | 3467 |
| 3462 // Free the webView before freeing the NonUserInputTextUpdateWebViewClient. | 3468 // Free the webView before freeing the NonUserInputTextUpdateWebViewClient. |
| 3463 web_view_helper_.Reset(); | 3469 web_view_helper_.Reset(); |
| 3464 } | 3470 } |
| 3465 | 3471 |
| 3466 // Check that the WebAutofillClient is correctly notified about first user | 3472 // Check that the WebAutofillClient is correctly notified about first user |
| 3467 // gestures after load, following various input events. | 3473 // gestures after load, following various input events. |
| 3468 TEST_P(WebViewTest, FirstUserGestureObservedKeyEvent) { | 3474 TEST_P(WebViewTest, FirstUserGestureObservedKeyEvent) { |
| 3469 RegisterMockedHttpURLLoad("form.html"); | 3475 RegisterMockedHttpURLLoad("form.html"); |
| 3470 MockAutofillClient client; | 3476 MockAutofillClient client; |
| 3471 WebViewImpl* web_view = | 3477 WebViewBase* web_view = |
| 3472 web_view_helper_.InitializeAndLoad(base_url_ + "form.html", true); | 3478 web_view_helper_.InitializeAndLoad(base_url_ + "form.html", true); |
| 3473 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 3479 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 3474 frame->SetAutofillClient(&client); | 3480 frame->SetAutofillClient(&client); |
| 3475 web_view->SetInitialFocus(false); | 3481 web_view->SetInitialFocus(false); |
| 3476 | 3482 |
| 3477 EXPECT_EQ(0, client.GetUserGestureNotificationsCount()); | 3483 EXPECT_EQ(0, client.GetUserGestureNotificationsCount()); |
| 3478 | 3484 |
| 3479 WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown, | 3485 WebKeyboardEvent key_event(WebInputEvent::kRawKeyDown, |
| 3480 WebInputEvent::kNoModifiers, | 3486 WebInputEvent::kNoModifiers, |
| 3481 WebInputEvent::kTimeStampForTesting); | 3487 WebInputEvent::kTimeStampForTesting); |
| 3482 key_event.dom_key = Platform::Current()->DomKeyEnumFromString(" "); | 3488 key_event.dom_key = Platform::Current()->DomKeyEnumFromString(" "); |
| 3483 key_event.windows_key_code = VKEY_SPACE; | 3489 key_event.windows_key_code = VKEY_SPACE; |
| 3484 web_view->HandleInputEvent(WebCoalescedInputEvent(key_event)); | 3490 web_view->HandleInputEvent(WebCoalescedInputEvent(key_event)); |
| 3485 key_event.SetType(WebInputEvent::kKeyUp); | 3491 key_event.SetType(WebInputEvent::kKeyUp); |
| 3486 web_view->HandleInputEvent(WebCoalescedInputEvent(key_event)); | 3492 web_view->HandleInputEvent(WebCoalescedInputEvent(key_event)); |
| 3487 | 3493 |
| 3488 EXPECT_EQ(2, client.GetUserGestureNotificationsCount()); | 3494 EXPECT_EQ(2, client.GetUserGestureNotificationsCount()); |
| 3489 frame->SetAutofillClient(0); | 3495 frame->SetAutofillClient(0); |
| 3490 } | 3496 } |
| 3491 | 3497 |
| 3492 TEST_P(WebViewTest, FirstUserGestureObservedMouseEvent) { | 3498 TEST_P(WebViewTest, FirstUserGestureObservedMouseEvent) { |
| 3493 RegisterMockedHttpURLLoad("form.html"); | 3499 RegisterMockedHttpURLLoad("form.html"); |
| 3494 MockAutofillClient client; | 3500 MockAutofillClient client; |
| 3495 WebViewImpl* web_view = | 3501 WebViewBase* web_view = |
| 3496 web_view_helper_.InitializeAndLoad(base_url_ + "form.html", true); | 3502 web_view_helper_.InitializeAndLoad(base_url_ + "form.html", true); |
| 3497 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 3503 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 3498 frame->SetAutofillClient(&client); | 3504 frame->SetAutofillClient(&client); |
| 3499 web_view->SetInitialFocus(false); | 3505 web_view->SetInitialFocus(false); |
| 3500 | 3506 |
| 3501 EXPECT_EQ(0, client.GetUserGestureNotificationsCount()); | 3507 EXPECT_EQ(0, client.GetUserGestureNotificationsCount()); |
| 3502 | 3508 |
| 3503 WebMouseEvent mouse_event(WebInputEvent::kMouseDown, | 3509 WebMouseEvent mouse_event(WebInputEvent::kMouseDown, |
| 3504 WebInputEvent::kNoModifiers, | 3510 WebInputEvent::kNoModifiers, |
| 3505 WebInputEvent::kTimeStampForTesting); | 3511 WebInputEvent::kTimeStampForTesting); |
| 3506 mouse_event.button = WebMouseEvent::Button::kLeft; | 3512 mouse_event.button = WebMouseEvent::Button::kLeft; |
| 3507 mouse_event.SetPositionInWidget(1, 1); | 3513 mouse_event.SetPositionInWidget(1, 1); |
| 3508 mouse_event.click_count = 1; | 3514 mouse_event.click_count = 1; |
| 3509 web_view->HandleInputEvent(WebCoalescedInputEvent(mouse_event)); | 3515 web_view->HandleInputEvent(WebCoalescedInputEvent(mouse_event)); |
| 3510 mouse_event.SetType(WebInputEvent::kMouseUp); | 3516 mouse_event.SetType(WebInputEvent::kMouseUp); |
| 3511 web_view->HandleInputEvent(WebCoalescedInputEvent(mouse_event)); | 3517 web_view->HandleInputEvent(WebCoalescedInputEvent(mouse_event)); |
| 3512 | 3518 |
| 3513 EXPECT_EQ(1, client.GetUserGestureNotificationsCount()); | 3519 EXPECT_EQ(1, client.GetUserGestureNotificationsCount()); |
| 3514 frame->SetAutofillClient(0); | 3520 frame->SetAutofillClient(0); |
| 3515 } | 3521 } |
| 3516 | 3522 |
| 3517 TEST_P(WebViewTest, CompositionIsUserGesture) { | 3523 TEST_P(WebViewTest, CompositionIsUserGesture) { |
| 3518 RegisterMockedHttpURLLoad("input_field_populated.html"); | 3524 RegisterMockedHttpURLLoad("input_field_populated.html"); |
| 3519 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 3525 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3520 base_url_ + "input_field_populated.html"); | 3526 base_url_ + "input_field_populated.html"); |
| 3521 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 3527 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 3522 MockAutofillClient client; | 3528 MockAutofillClient client; |
| 3523 frame->SetAutofillClient(&client); | 3529 frame->SetAutofillClient(&client); |
| 3524 web_view->SetInitialFocus(false); | 3530 web_view->SetInitialFocus(false); |
| 3525 | 3531 |
| 3526 EXPECT_TRUE( | 3532 EXPECT_TRUE( |
| 3527 frame->FrameWidget()->GetActiveWebInputMethodController()->SetComposition( | 3533 frame->FrameWidget()->GetActiveWebInputMethodController()->SetComposition( |
| 3528 WebString::FromUTF8(std::string("hello").c_str()), | 3534 WebString::FromUTF8(std::string("hello").c_str()), |
| 3529 WebVector<WebCompositionUnderline>(), WebRange(), 3, 3)); | 3535 WebVector<WebCompositionUnderline>(), WebRange(), 3, 3)); |
| 3530 EXPECT_EQ(1, client.TextChangesFromUserGesture()); | 3536 EXPECT_EQ(1, client.TextChangesFromUserGesture()); |
| 3531 EXPECT_FALSE(UserGestureIndicator::ProcessingUserGesture()); | 3537 EXPECT_FALSE(UserGestureIndicator::ProcessingUserGesture()); |
| 3532 EXPECT_TRUE(frame->HasMarkedText()); | 3538 EXPECT_TRUE(frame->HasMarkedText()); |
| 3533 | 3539 |
| 3534 frame->SetAutofillClient(0); | 3540 frame->SetAutofillClient(0); |
| 3535 } | 3541 } |
| 3536 | 3542 |
| 3537 TEST_P(WebViewTest, CompareSelectAllToContentAsText) { | 3543 TEST_P(WebViewTest, CompareSelectAllToContentAsText) { |
| 3538 RegisterMockedHttpURLLoad("longpress_selection.html"); | 3544 RegisterMockedHttpURLLoad("longpress_selection.html"); |
| 3539 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 3545 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3540 base_url_ + "longpress_selection.html", true); | 3546 base_url_ + "longpress_selection.html", true); |
| 3541 | 3547 |
| 3542 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 3548 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 3543 frame->ExecuteScript(WebScriptSource( | 3549 frame->ExecuteScript(WebScriptSource( |
| 3544 WebString::FromUTF8("document.execCommand('SelectAll', false, null)"))); | 3550 WebString::FromUTF8("document.execCommand('SelectAll', false, null)"))); |
| 3545 std::string actual = frame->SelectionAsText().Utf8(); | 3551 std::string actual = frame->SelectionAsText().Utf8(); |
| 3546 | 3552 |
| 3547 const int kMaxOutputCharacters = 1024; | 3553 const int kMaxOutputCharacters = 1024; |
| 3548 std::string expected = | 3554 std::string expected = |
| 3549 WebFrameContentDumper::DumpWebViewAsText(web_view, kMaxOutputCharacters) | 3555 WebFrameContentDumper::DumpWebViewAsText(web_view, kMaxOutputCharacters) |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3721 frame->ExecuteScript(WebScriptSource("setTest('click-" handler "');")); \ | 3727 frame->ExecuteScript(WebScriptSource("setTest('click-" handler "');")); \ |
| 3722 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureTap, \ | 3728 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureTap, \ |
| 3723 WebString::FromUTF8("target"))); \ | 3729 WebString::FromUTF8("target"))); \ |
| 3724 EXPECT_##EXPECT(client.GetPageChanged()); | 3730 EXPECT_##EXPECT(client.GetPageChanged()); |
| 3725 | 3731 |
| 3726 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeededWithMutateDom) { | 3732 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeededWithMutateDom) { |
| 3727 std::string test_file = "show_unhandled_tap.html"; | 3733 std::string test_file = "show_unhandled_tap.html"; |
| 3728 RegisterMockedHttpURLLoad("Ahem.ttf"); | 3734 RegisterMockedHttpURLLoad("Ahem.ttf"); |
| 3729 RegisterMockedHttpURLLoad(test_file); | 3735 RegisterMockedHttpURLLoad(test_file); |
| 3730 UnhandledTapWebViewClient client; | 3736 UnhandledTapWebViewClient client; |
| 3731 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 3737 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3732 base_url_ + test_file, true, 0, &client); | 3738 base_url_ + test_file, true, 0, &client); |
| 3733 web_view->Resize(WebSize(500, 300)); | 3739 web_view->Resize(WebSize(500, 300)); |
| 3734 web_view->UpdateAllLifecyclePhases(); | 3740 web_view->UpdateAllLifecyclePhases(); |
| 3735 RunPendingTasks(); | 3741 RunPendingTasks(); |
| 3736 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 3742 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 3737 | 3743 |
| 3738 // Test dom mutation. | 3744 // Test dom mutation. |
| 3739 TEST_EACH_MOUSEEVENT("mutateDom", TRUE); | 3745 TEST_EACH_MOUSEEVENT("mutateDom", TRUE); |
| 3740 | 3746 |
| 3741 // Test without any DOM mutation. | 3747 // Test without any DOM mutation. |
| 3742 client.Reset(); | 3748 client.Reset(); |
| 3743 frame->ExecuteScript(WebScriptSource("setTest('none');")); | 3749 frame->ExecuteScript(WebScriptSource("setTest('none');")); |
| 3744 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureTap, | 3750 EXPECT_TRUE(TapElementById(WebInputEvent::kGestureTap, |
| 3745 WebString::FromUTF8("target"))); | 3751 WebString::FromUTF8("target"))); |
| 3746 EXPECT_FALSE(client.GetPageChanged()); | 3752 EXPECT_FALSE(client.GetPageChanged()); |
| 3747 | 3753 |
| 3748 web_view_helper_.Reset(); // Remove dependency on locally scoped client. | 3754 web_view_helper_.Reset(); // Remove dependency on locally scoped client. |
| 3749 } | 3755 } |
| 3750 | 3756 |
| 3751 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeededWithMutateStyle) { | 3757 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeededWithMutateStyle) { |
| 3752 std::string test_file = "show_unhandled_tap.html"; | 3758 std::string test_file = "show_unhandled_tap.html"; |
| 3753 RegisterMockedHttpURLLoad("Ahem.ttf"); | 3759 RegisterMockedHttpURLLoad("Ahem.ttf"); |
| 3754 RegisterMockedHttpURLLoad(test_file); | 3760 RegisterMockedHttpURLLoad(test_file); |
| 3755 UnhandledTapWebViewClient client; | 3761 UnhandledTapWebViewClient client; |
| 3756 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 3762 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3757 base_url_ + test_file, true, 0, &client); | 3763 base_url_ + test_file, true, 0, &client); |
| 3758 web_view->Resize(WebSize(500, 300)); | 3764 web_view->Resize(WebSize(500, 300)); |
| 3759 web_view->UpdateAllLifecyclePhases(); | 3765 web_view->UpdateAllLifecyclePhases(); |
| 3760 RunPendingTasks(); | 3766 RunPendingTasks(); |
| 3761 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 3767 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 3762 | 3768 |
| 3763 // Test style mutation. | 3769 // Test style mutation. |
| 3764 TEST_EACH_MOUSEEVENT("mutateStyle", TRUE); | 3770 TEST_EACH_MOUSEEVENT("mutateStyle", TRUE); |
| 3765 | 3771 |
| 3766 // Test checkbox:indeterminate style mutation. | 3772 // Test checkbox:indeterminate style mutation. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 3780 EXPECT_FALSE(client.GetPageChanged()); | 3786 EXPECT_FALSE(client.GetPageChanged()); |
| 3781 | 3787 |
| 3782 web_view_helper_.Reset(); // Remove dependency on locally scoped client. | 3788 web_view_helper_.Reset(); // Remove dependency on locally scoped client. |
| 3783 } | 3789 } |
| 3784 | 3790 |
| 3785 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeededWithPreventDefault) { | 3791 TEST_P(WebViewTest, ShowUnhandledTapUIIfNeededWithPreventDefault) { |
| 3786 std::string test_file = "show_unhandled_tap.html"; | 3792 std::string test_file = "show_unhandled_tap.html"; |
| 3787 RegisterMockedHttpURLLoad("Ahem.ttf"); | 3793 RegisterMockedHttpURLLoad("Ahem.ttf"); |
| 3788 RegisterMockedHttpURLLoad(test_file); | 3794 RegisterMockedHttpURLLoad(test_file); |
| 3789 UnhandledTapWebViewClient client; | 3795 UnhandledTapWebViewClient client; |
| 3790 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 3796 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3791 base_url_ + test_file, true, 0, &client); | 3797 base_url_ + test_file, true, 0, &client); |
| 3792 web_view->Resize(WebSize(500, 300)); | 3798 web_view->Resize(WebSize(500, 300)); |
| 3793 web_view->UpdateAllLifecyclePhases(); | 3799 web_view->UpdateAllLifecyclePhases(); |
| 3794 RunPendingTasks(); | 3800 RunPendingTasks(); |
| 3795 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 3801 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 3796 | 3802 |
| 3797 // Testswallowing. | 3803 // Testswallowing. |
| 3798 TEST_EACH_MOUSEEVENT("preventDefault", FALSE); | 3804 TEST_EACH_MOUSEEVENT("preventDefault", FALSE); |
| 3799 | 3805 |
| 3800 // Test without any preventDefault. | 3806 // Test without any preventDefault. |
| (...skipping 23 matching lines...) Expand all Loading... |
| 3824 ASSERT_TRUE(v8_value->IsObject()); | 3830 ASSERT_TRUE(v8_value->IsObject()); |
| 3825 Document* document = | 3831 Document* document = |
| 3826 V8Document::toImplWithTypeCheck(v8::Isolate::GetCurrent(), v8_value); | 3832 V8Document::toImplWithTypeCheck(v8::Isolate::GetCurrent(), v8_value); |
| 3827 ASSERT_TRUE(document); | 3833 ASSERT_TRUE(document); |
| 3828 EXPECT_FALSE(document->GetFrame()->IsLoading()); | 3834 EXPECT_FALSE(document->GetFrame()->IsLoading()); |
| 3829 } | 3835 } |
| 3830 | 3836 |
| 3831 #if OS(MACOSX) | 3837 #if OS(MACOSX) |
| 3832 TEST_P(WebViewTest, WebSubstringUtil) { | 3838 TEST_P(WebViewTest, WebSubstringUtil) { |
| 3833 RegisterMockedHttpURLLoad("content_editable_populated.html"); | 3839 RegisterMockedHttpURLLoad("content_editable_populated.html"); |
| 3834 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 3840 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3835 base_url_ + "content_editable_populated.html"); | 3841 base_url_ + "content_editable_populated.html"); |
| 3836 web_view->GetSettings()->SetDefaultFontSize(12); | 3842 web_view->GetSettings()->SetDefaultFontSize(12); |
| 3837 web_view->Resize(WebSize(400, 400)); | 3843 web_view->Resize(WebSize(400, 400)); |
| 3838 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 3844 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 3839 | 3845 |
| 3840 WebPoint baseline_point; | 3846 WebPoint baseline_point; |
| 3841 NSAttributedString* result = WebSubstringUtil::AttributedSubstringInRange( | 3847 NSAttributedString* result = WebSubstringUtil::AttributedSubstringInRange( |
| 3842 frame, 10, 3, &baseline_point); | 3848 frame, 10, 3, &baseline_point); |
| 3843 ASSERT_TRUE(!!result); | 3849 ASSERT_TRUE(!!result); |
| 3844 | 3850 |
| 3845 WebPoint point(baseline_point.x, baseline_point.y); | 3851 WebPoint point(baseline_point.x, baseline_point.y); |
| 3846 result = WebSubstringUtil::AttributedWordAtPoint(frame->FrameWidget(), point, | 3852 result = WebSubstringUtil::AttributedWordAtPoint(frame->FrameWidget(), point, |
| 3847 baseline_point); | 3853 baseline_point); |
| 3848 ASSERT_TRUE(!!result); | 3854 ASSERT_TRUE(!!result); |
| 3849 | 3855 |
| 3850 web_view->SetZoomLevel(3); | 3856 web_view->SetZoomLevel(3); |
| 3851 | 3857 |
| 3852 result = WebSubstringUtil::AttributedSubstringInRange(frame, 5, 5, | 3858 result = WebSubstringUtil::AttributedSubstringInRange(frame, 5, 5, |
| 3853 &baseline_point); | 3859 &baseline_point); |
| 3854 ASSERT_TRUE(!!result); | 3860 ASSERT_TRUE(!!result); |
| 3855 | 3861 |
| 3856 point = WebPoint(baseline_point.x, baseline_point.y); | 3862 point = WebPoint(baseline_point.x, baseline_point.y); |
| 3857 result = WebSubstringUtil::AttributedWordAtPoint(frame->FrameWidget(), point, | 3863 result = WebSubstringUtil::AttributedWordAtPoint(frame->FrameWidget(), point, |
| 3858 baseline_point); | 3864 baseline_point); |
| 3859 ASSERT_TRUE(!!result); | 3865 ASSERT_TRUE(!!result); |
| 3860 } | 3866 } |
| 3861 | 3867 |
| 3862 TEST_P(WebViewTest, WebSubstringUtilPinchZoom) { | 3868 TEST_P(WebViewTest, WebSubstringUtilPinchZoom) { |
| 3863 RegisterMockedHttpURLLoad("content_editable_populated.html"); | 3869 RegisterMockedHttpURLLoad("content_editable_populated.html"); |
| 3864 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 3870 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3865 base_url_ + "content_editable_populated.html"); | 3871 base_url_ + "content_editable_populated.html"); |
| 3866 web_view->GetSettings()->SetDefaultFontSize(12); | 3872 web_view->GetSettings()->SetDefaultFontSize(12); |
| 3867 web_view->Resize(WebSize(400, 400)); | 3873 web_view->Resize(WebSize(400, 400)); |
| 3868 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 3874 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 3869 NSAttributedString* result = nil; | 3875 NSAttributedString* result = nil; |
| 3870 | 3876 |
| 3871 WebPoint baseline_point; | 3877 WebPoint baseline_point; |
| 3872 result = WebSubstringUtil::AttributedSubstringInRange(frame, 10, 3, | 3878 result = WebSubstringUtil::AttributedSubstringInRange(frame, 10, 3, |
| 3873 &baseline_point); | 3879 &baseline_point); |
| 3874 ASSERT_TRUE(!!result); | 3880 ASSERT_TRUE(!!result); |
| 3875 | 3881 |
| 3876 web_view->SetPageScaleFactor(3); | 3882 web_view->SetPageScaleFactor(3); |
| 3877 | 3883 |
| 3878 WebPoint point_after_zoom; | 3884 WebPoint point_after_zoom; |
| 3879 result = WebSubstringUtil::AttributedSubstringInRange(frame, 10, 3, | 3885 result = WebSubstringUtil::AttributedSubstringInRange(frame, 10, 3, |
| 3880 &point_after_zoom); | 3886 &point_after_zoom); |
| 3881 ASSERT_TRUE(!!result); | 3887 ASSERT_TRUE(!!result); |
| 3882 | 3888 |
| 3883 // We won't have moved by a full factor of 3 because of the translations, but | 3889 // We won't have moved by a full factor of 3 because of the translations, but |
| 3884 // we should move by a factor of >2. | 3890 // we should move by a factor of >2. |
| 3885 EXPECT_LT(2 * baseline_point.x, point_after_zoom.x); | 3891 EXPECT_LT(2 * baseline_point.x, point_after_zoom.x); |
| 3886 EXPECT_LT(2 * baseline_point.y, point_after_zoom.y); | 3892 EXPECT_LT(2 * baseline_point.y, point_after_zoom.y); |
| 3887 } | 3893 } |
| 3888 | 3894 |
| 3889 TEST_P(WebViewTest, WebSubstringUtilIframe) { | 3895 TEST_P(WebViewTest, WebSubstringUtilIframe) { |
| 3890 RegisterMockedHttpURLLoad("single_iframe.html"); | 3896 RegisterMockedHttpURLLoad("single_iframe.html"); |
| 3891 RegisterMockedHttpURLLoad("visible_iframe.html"); | 3897 RegisterMockedHttpURLLoad("visible_iframe.html"); |
| 3892 WebViewImpl* web_view = | 3898 WebViewBase* web_view = |
| 3893 web_view_helper_.InitializeAndLoad(base_url_ + "single_iframe.html"); | 3899 web_view_helper_.InitializeAndLoad(base_url_ + "single_iframe.html"); |
| 3894 web_view->GetSettings()->SetDefaultFontSize(12); | 3900 web_view->GetSettings()->SetDefaultFontSize(12); |
| 3895 web_view->GetSettings()->SetJavaScriptEnabled(true); | 3901 web_view->GetSettings()->SetJavaScriptEnabled(true); |
| 3896 web_view->Resize(WebSize(400, 400)); | 3902 web_view->Resize(WebSize(400, 400)); |
| 3897 WebLocalFrameImpl* main_frame = web_view->MainFrameImpl(); | 3903 WebLocalFrameImpl* main_frame = web_view->MainFrameImpl(); |
| 3898 WebLocalFrameImpl* child_frame = WebLocalFrameImpl::FromFrame( | 3904 WebLocalFrameImpl* child_frame = WebLocalFrameImpl::FromFrame( |
| 3899 ToLocalFrame(main_frame->GetFrame()->Tree().FirstChild())); | 3905 ToLocalFrame(main_frame->GetFrame()->Tree().FirstChild())); |
| 3900 | 3906 |
| 3901 WebPoint baseline_point; | 3907 WebPoint baseline_point; |
| 3902 NSAttributedString* result = WebSubstringUtil::AttributedSubstringInRange( | 3908 NSAttributedString* result = WebSubstringUtil::AttributedSubstringInRange( |
| (...skipping 17 matching lines...) Expand all Loading... |
| 3920 ASSERT_NE(result, nullptr); | 3926 ASSERT_NE(result, nullptr); |
| 3921 | 3927 |
| 3922 EXPECT_EQ(y_before_change, baseline_point.y - 100); | 3928 EXPECT_EQ(y_before_change, baseline_point.y - 100); |
| 3923 } | 3929 } |
| 3924 | 3930 |
| 3925 #endif | 3931 #endif |
| 3926 | 3932 |
| 3927 TEST_P(WebViewTest, PasswordFieldEditingIsUserGesture) { | 3933 TEST_P(WebViewTest, PasswordFieldEditingIsUserGesture) { |
| 3928 RegisterMockedHttpURLLoad("input_field_password.html"); | 3934 RegisterMockedHttpURLLoad("input_field_password.html"); |
| 3929 MockAutofillClient client; | 3935 MockAutofillClient client; |
| 3930 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 3936 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3931 base_url_ + "input_field_password.html", true); | 3937 base_url_ + "input_field_password.html", true); |
| 3932 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); | 3938 WebLocalFrameImpl* frame = web_view->MainFrameImpl(); |
| 3933 frame->SetAutofillClient(&client); | 3939 frame->SetAutofillClient(&client); |
| 3934 web_view->SetInitialFocus(false); | 3940 web_view->SetInitialFocus(false); |
| 3935 | 3941 |
| 3936 WebVector<WebCompositionUnderline> empty_underlines; | 3942 WebVector<WebCompositionUnderline> empty_underlines; |
| 3937 | 3943 |
| 3938 EXPECT_TRUE( | 3944 EXPECT_TRUE( |
| 3939 frame->FrameWidget()->GetActiveWebInputMethodController()->CommitText( | 3945 frame->FrameWidget()->GetActiveWebInputMethodController()->CommitText( |
| 3940 WebString::FromUTF8(std::string("hello").c_str()), empty_underlines, | 3946 WebString::FromUTF8(std::string("hello").c_str()), empty_underlines, |
| 3941 WebRange(), 0)); | 3947 WebRange(), 0)); |
| 3942 EXPECT_EQ(1, client.TextChangesFromUserGesture()); | 3948 EXPECT_EQ(1, client.TextChangesFromUserGesture()); |
| 3943 EXPECT_FALSE(UserGestureIndicator::ProcessingUserGesture()); | 3949 EXPECT_FALSE(UserGestureIndicator::ProcessingUserGesture()); |
| 3944 frame->SetAutofillClient(0); | 3950 frame->SetAutofillClient(0); |
| 3945 } | 3951 } |
| 3946 | 3952 |
| 3947 // Verify that a WebView created with a ScopedPageSuspender already on the | 3953 // Verify that a WebView created with a ScopedPageSuspender already on the |
| 3948 // stack defers its loads. | 3954 // stack defers its loads. |
| 3949 TEST_P(WebViewTest, CreatedDuringPageSuspension) { | 3955 TEST_P(WebViewTest, CreatedDuringPageSuspension) { |
| 3950 { | 3956 { |
| 3951 WebViewImpl* web_view = web_view_helper_.Initialize(); | 3957 WebViewBase* web_view = web_view_helper_.Initialize(); |
| 3952 EXPECT_FALSE(web_view->GetPage()->Suspended()); | 3958 EXPECT_FALSE(web_view->GetPage()->Suspended()); |
| 3953 } | 3959 } |
| 3954 | 3960 |
| 3955 { | 3961 { |
| 3956 ScopedPageSuspender suspender; | 3962 ScopedPageSuspender suspender; |
| 3957 WebViewImpl* web_view = web_view_helper_.Initialize(); | 3963 WebViewBase* web_view = web_view_helper_.Initialize(); |
| 3958 EXPECT_TRUE(web_view->GetPage()->Suspended()); | 3964 EXPECT_TRUE(web_view->GetPage()->Suspended()); |
| 3959 } | 3965 } |
| 3960 } | 3966 } |
| 3961 | 3967 |
| 3962 // Make sure the SubframeBeforeUnloadUseCounter is only incremented on subframe | 3968 // Make sure the SubframeBeforeUnloadUseCounter is only incremented on subframe |
| 3963 // unloads. crbug.com/635029. | 3969 // unloads. crbug.com/635029. |
| 3964 TEST_P(WebViewTest, SubframeBeforeUnloadUseCounter) { | 3970 TEST_P(WebViewTest, SubframeBeforeUnloadUseCounter) { |
| 3965 RegisterMockedHttpURLLoad("visible_iframe.html"); | 3971 RegisterMockedHttpURLLoad("visible_iframe.html"); |
| 3966 RegisterMockedHttpURLLoad("single_iframe.html"); | 3972 RegisterMockedHttpURLLoad("single_iframe.html"); |
| 3967 WebViewImpl* web_view = web_view_helper_.InitializeAndLoad( | 3973 WebViewBase* web_view = web_view_helper_.InitializeAndLoad( |
| 3968 base_url_ + "single_iframe.html", true); | 3974 base_url_ + "single_iframe.html", true); |
| 3969 | 3975 |
| 3970 WebFrame* frame = web_view_helper_.WebView()->MainFrame(); | 3976 WebFrame* frame = web_view_helper_.WebView()->MainFrame(); |
| 3971 Document* document = | 3977 Document* document = |
| 3972 ToLocalFrame(web_view_helper_.WebView()->GetPage()->MainFrame()) | 3978 ToLocalFrame(web_view_helper_.WebView()->GetPage()->MainFrame()) |
| 3973 ->GetDocument(); | 3979 ->GetDocument(); |
| 3974 | 3980 |
| 3975 // Add a beforeunload handler in the main frame. Make sure firing | 3981 // Add a beforeunload handler in the main frame. Make sure firing |
| 3976 // beforeunload doesn't increment the subframe use counter. | 3982 // beforeunload doesn't increment the subframe use counter. |
| 3977 { | 3983 { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 4000 .FirstChild()) | 4006 .FirstChild()) |
| 4001 ->GetDocument(); | 4007 ->GetDocument(); |
| 4002 EXPECT_TRUE(UseCounter::IsCounted(*child_document, | 4008 EXPECT_TRUE(UseCounter::IsCounted(*child_document, |
| 4003 UseCounter::kSubFrameBeforeUnloadFired)); | 4009 UseCounter::kSubFrameBeforeUnloadFired)); |
| 4004 } | 4010 } |
| 4005 } | 4011 } |
| 4006 | 4012 |
| 4007 // Verify that page loads are deferred until all ScopedPageLoadDeferrers are | 4013 // Verify that page loads are deferred until all ScopedPageLoadDeferrers are |
| 4008 // destroyed. | 4014 // destroyed. |
| 4009 TEST_P(WebViewTest, NestedPageSuspensions) { | 4015 TEST_P(WebViewTest, NestedPageSuspensions) { |
| 4010 WebViewImpl* web_view = web_view_helper_.Initialize(); | 4016 WebViewBase* web_view = web_view_helper_.Initialize(); |
| 4011 EXPECT_FALSE(web_view->GetPage()->Suspended()); | 4017 EXPECT_FALSE(web_view->GetPage()->Suspended()); |
| 4012 | 4018 |
| 4013 { | 4019 { |
| 4014 ScopedPageSuspender suspender; | 4020 ScopedPageSuspender suspender; |
| 4015 EXPECT_TRUE(web_view->GetPage()->Suspended()); | 4021 EXPECT_TRUE(web_view->GetPage()->Suspended()); |
| 4016 | 4022 |
| 4017 { | 4023 { |
| 4018 ScopedPageSuspender suspender2; | 4024 ScopedPageSuspender suspender2; |
| 4019 EXPECT_TRUE(web_view->GetPage()->Suspended()); | 4025 EXPECT_TRUE(web_view->GetPage()->Suspended()); |
| 4020 } | 4026 } |
| 4021 | 4027 |
| 4022 EXPECT_TRUE(web_view->GetPage()->Suspended()); | 4028 EXPECT_TRUE(web_view->GetPage()->Suspended()); |
| 4023 } | 4029 } |
| 4024 | 4030 |
| 4025 EXPECT_FALSE(web_view->GetPage()->Suspended()); | 4031 EXPECT_FALSE(web_view->GetPage()->Suspended()); |
| 4026 } | 4032 } |
| 4027 | 4033 |
| 4028 TEST_P(WebViewTest, ClosingPageIsSuspended) { | 4034 TEST_P(WebViewTest, ClosingPageIsSuspended) { |
| 4029 WebViewImpl* web_view = web_view_helper_.Initialize(); | 4035 WebViewBase* web_view = web_view_helper_.Initialize(); |
| 4030 Page* page = web_view_helper_.WebView()->GetPage(); | 4036 Page* page = web_view_helper_.WebView()->GetPage(); |
| 4031 EXPECT_FALSE(page->Suspended()); | 4037 EXPECT_FALSE(page->Suspended()); |
| 4032 | 4038 |
| 4033 web_view->SetOpenedByDOM(); | 4039 web_view->SetOpenedByDOM(); |
| 4034 | 4040 |
| 4035 LocalFrame* main_frame = ToLocalFrame(page->MainFrame()); | 4041 LocalFrame* main_frame = ToLocalFrame(page->MainFrame()); |
| 4036 EXPECT_FALSE(main_frame->DomWindow()->closed()); | 4042 EXPECT_FALSE(main_frame->DomWindow()->closed()); |
| 4037 | 4043 |
| 4038 main_frame->DomWindow()->close(nullptr); | 4044 main_frame->DomWindow()->close(nullptr); |
| 4039 // The window should be marked closed... | 4045 // The window should be marked closed... |
| 4040 EXPECT_TRUE(main_frame->DomWindow()->closed()); | 4046 EXPECT_TRUE(main_frame->DomWindow()->closed()); |
| 4041 // EXPECT_TRUE(page->isClosing()); | 4047 // EXPECT_TRUE(page->isClosing()); |
| 4042 // ...but not yet detached. | 4048 // ...but not yet detached. |
| 4043 EXPECT_TRUE(main_frame->GetPage()); | 4049 EXPECT_TRUE(main_frame->GetPage()); |
| 4044 | 4050 |
| 4045 { | 4051 { |
| 4046 ScopedPageSuspender suspender; | 4052 ScopedPageSuspender suspender; |
| 4047 EXPECT_TRUE(page->Suspended()); | 4053 EXPECT_TRUE(page->Suspended()); |
| 4048 } | 4054 } |
| 4049 } | 4055 } |
| 4050 | 4056 |
| 4051 TEST_P(WebViewTest, ForceAndResetViewport) { | 4057 TEST_P(WebViewTest, ForceAndResetViewport) { |
| 4052 RegisterMockedHttpURLLoad("200-by-300.html"); | 4058 RegisterMockedHttpURLLoad("200-by-300.html"); |
| 4053 WebViewImpl* web_view_impl = | 4059 WebViewBase* web_view_impl = |
| 4054 web_view_helper_.InitializeAndLoad(base_url_ + "200-by-300.html"); | 4060 web_view_helper_.InitializeAndLoad(base_url_ + "200-by-300.html"); |
| 4055 web_view_impl->Resize(WebSize(100, 150)); | 4061 web_view_impl->Resize(WebSize(100, 150)); |
| 4056 web_view_impl->LayerTreeView()->SetViewportSize(WebSize(100, 150)); | 4062 web_view_impl->LayerTreeView()->SetViewportSize(WebSize(100, 150)); |
| 4057 VisualViewport* visual_viewport = | 4063 VisualViewport* visual_viewport = |
| 4058 &web_view_impl->GetPage()->GetVisualViewport(); | 4064 &web_view_impl->GetPage()->GetVisualViewport(); |
| 4059 DevToolsEmulator* dev_tools_emulator = web_view_impl->GetDevToolsEmulator(); | 4065 DevToolsEmulator* dev_tools_emulator = web_view_impl->GetDevToolsEmulator(); |
| 4060 | 4066 |
| 4061 TransformationMatrix expected_matrix; | 4067 TransformationMatrix expected_matrix; |
| 4062 expected_matrix.MakeIdentity(); | 4068 expected_matrix.MakeIdentity(); |
| 4063 EXPECT_EQ(expected_matrix, | 4069 EXPECT_EQ(expected_matrix, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 4089 dev_tools_emulator->ResetViewport(); | 4095 dev_tools_emulator->ResetViewport(); |
| 4090 expected_matrix.MakeIdentity(); | 4096 expected_matrix.MakeIdentity(); |
| 4091 EXPECT_EQ(expected_matrix, | 4097 EXPECT_EQ(expected_matrix, |
| 4092 web_view_impl->GetDeviceEmulationTransformForTesting()); | 4098 web_view_impl->GetDeviceEmulationTransformForTesting()); |
| 4093 EXPECT_FALSE(dev_tools_emulator->VisibleContentRectForPainting()); | 4099 EXPECT_FALSE(dev_tools_emulator->VisibleContentRectForPainting()); |
| 4094 EXPECT_TRUE(visual_viewport->ContainerLayer()->MasksToBounds()); | 4100 EXPECT_TRUE(visual_viewport->ContainerLayer()->MasksToBounds()); |
| 4095 } | 4101 } |
| 4096 | 4102 |
| 4097 TEST_P(WebViewTest, ViewportOverrideIntegratesDeviceMetricsOffsetAndScale) { | 4103 TEST_P(WebViewTest, ViewportOverrideIntegratesDeviceMetricsOffsetAndScale) { |
| 4098 RegisterMockedHttpURLLoad("200-by-300.html"); | 4104 RegisterMockedHttpURLLoad("200-by-300.html"); |
| 4099 WebViewImpl* web_view_impl = | 4105 WebViewBase* web_view_impl = |
| 4100 web_view_helper_.InitializeAndLoad(base_url_ + "200-by-300.html"); | 4106 web_view_helper_.InitializeAndLoad(base_url_ + "200-by-300.html"); |
| 4101 web_view_impl->Resize(WebSize(100, 150)); | 4107 web_view_impl->Resize(WebSize(100, 150)); |
| 4102 | 4108 |
| 4103 TransformationMatrix expected_matrix; | 4109 TransformationMatrix expected_matrix; |
| 4104 expected_matrix.MakeIdentity(); | 4110 expected_matrix.MakeIdentity(); |
| 4105 EXPECT_EQ(expected_matrix, | 4111 EXPECT_EQ(expected_matrix, |
| 4106 web_view_impl->GetDeviceEmulationTransformForTesting()); | 4112 web_view_impl->GetDeviceEmulationTransformForTesting()); |
| 4107 | 4113 |
| 4108 WebDeviceEmulationParams emulation_params; | 4114 WebDeviceEmulationParams emulation_params; |
| 4109 emulation_params.offset = WebFloatPoint(50, 50); | 4115 emulation_params.offset = WebFloatPoint(50, 50); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 4120 .Scale(1.5f) | 4126 .Scale(1.5f) |
| 4121 .Translate(-5, -10) | 4127 .Translate(-5, -10) |
| 4122 .Translate(50, 50) | 4128 .Translate(50, 50) |
| 4123 .Scale(2.f); | 4129 .Scale(2.f); |
| 4124 EXPECT_EQ(expected_matrix, | 4130 EXPECT_EQ(expected_matrix, |
| 4125 web_view_impl->GetDeviceEmulationTransformForTesting()); | 4131 web_view_impl->GetDeviceEmulationTransformForTesting()); |
| 4126 } | 4132 } |
| 4127 | 4133 |
| 4128 TEST_P(WebViewTest, ViewportOverrideAdaptsToScaleAndScroll) { | 4134 TEST_P(WebViewTest, ViewportOverrideAdaptsToScaleAndScroll) { |
| 4129 RegisterMockedHttpURLLoad("200-by-300.html"); | 4135 RegisterMockedHttpURLLoad("200-by-300.html"); |
| 4130 WebViewImpl* web_view_impl = | 4136 WebViewBase* web_view_impl = |
| 4131 web_view_helper_.InitializeAndLoad(base_url_ + "200-by-300.html"); | 4137 web_view_helper_.InitializeAndLoad(base_url_ + "200-by-300.html"); |
| 4132 web_view_impl->Resize(WebSize(100, 150)); | 4138 web_view_impl->Resize(WebSize(100, 150)); |
| 4133 web_view_impl->LayerTreeView()->SetViewportSize(WebSize(100, 150)); | 4139 web_view_impl->LayerTreeView()->SetViewportSize(WebSize(100, 150)); |
| 4134 FrameView* frame_view = web_view_impl->MainFrameImpl()->GetFrame()->View(); | 4140 FrameView* frame_view = web_view_impl->MainFrameImpl()->GetFrame()->View(); |
| 4135 DevToolsEmulator* dev_tools_emulator = web_view_impl->GetDevToolsEmulator(); | 4141 DevToolsEmulator* dev_tools_emulator = web_view_impl->GetDevToolsEmulator(); |
| 4136 | 4142 |
| 4137 TransformationMatrix expected_matrix; | 4143 TransformationMatrix expected_matrix; |
| 4138 expected_matrix.MakeIdentity(); | 4144 expected_matrix.MakeIdentity(); |
| 4139 EXPECT_EQ(expected_matrix, | 4145 EXPECT_EQ(expected_matrix, |
| 4140 web_view_impl->GetDeviceEmulationTransformForTesting()); | 4146 web_view_impl->GetDeviceEmulationTransformForTesting()); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4178 .Translate(50, 55) | 4184 .Translate(50, 55) |
| 4179 .Scale(1. / 2.f); | 4185 .Scale(1. / 2.f); |
| 4180 EXPECT_EQ(expected_matrix, | 4186 EXPECT_EQ(expected_matrix, |
| 4181 web_view_impl->GetDeviceEmulationTransformForTesting()); | 4187 web_view_impl->GetDeviceEmulationTransformForTesting()); |
| 4182 // visibleContentRect doesn't change. | 4188 // visibleContentRect doesn't change. |
| 4183 EXPECT_EQ(IntRect(50, 55, 50, 75), | 4189 EXPECT_EQ(IntRect(50, 55, 50, 75), |
| 4184 *dev_tools_emulator->VisibleContentRectForPainting()); | 4190 *dev_tools_emulator->VisibleContentRectForPainting()); |
| 4185 } | 4191 } |
| 4186 | 4192 |
| 4187 TEST_P(WebViewTest, ResizeForPrintingViewportUnits) { | 4193 TEST_P(WebViewTest, ResizeForPrintingViewportUnits) { |
| 4188 WebViewImpl* web_view = web_view_helper_.Initialize(); | 4194 WebViewBase* web_view = web_view_helper_.Initialize(); |
| 4189 web_view->Resize(WebSize(800, 600)); | 4195 web_view->Resize(WebSize(800, 600)); |
| 4190 | 4196 |
| 4191 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); | 4197 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); |
| 4192 FrameTestHelpers::LoadHTMLString(web_view->MainFrame(), | 4198 FrameTestHelpers::LoadHTMLString(web_view->MainFrame(), |
| 4193 "<style>" | 4199 "<style>" |
| 4194 " body { margin: 0px; }" | 4200 " body { margin: 0px; }" |
| 4195 " #vw { width: 100vw; height: 100vh; }" | 4201 " #vw { width: 100vw; height: 100vh; }" |
| 4196 "</style>" | 4202 "</style>" |
| 4197 "<div id=vw></div>", | 4203 "<div id=vw></div>", |
| 4198 base_url); | 4204 base_url); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 4221 EXPECT_EQ(expected_size.Width(), vw_element->OffsetWidth()); | 4227 EXPECT_EQ(expected_size.Width(), vw_element->OffsetWidth()); |
| 4222 EXPECT_EQ(expected_size.Height(), vw_element->OffsetHeight()); | 4228 EXPECT_EQ(expected_size.Height(), vw_element->OffsetHeight()); |
| 4223 | 4229 |
| 4224 web_view->Resize(WebSize(800, 600)); | 4230 web_view->Resize(WebSize(800, 600)); |
| 4225 frame->PrintEnd(); | 4231 frame->PrintEnd(); |
| 4226 | 4232 |
| 4227 EXPECT_EQ(800, vw_element->OffsetWidth()); | 4233 EXPECT_EQ(800, vw_element->OffsetWidth()); |
| 4228 } | 4234 } |
| 4229 | 4235 |
| 4230 TEST_P(WebViewTest, WidthMediaQueryWithPageZoomAfterPrinting) { | 4236 TEST_P(WebViewTest, WidthMediaQueryWithPageZoomAfterPrinting) { |
| 4231 WebViewImpl* web_view = web_view_helper_.Initialize(); | 4237 WebViewBase* web_view = web_view_helper_.Initialize(); |
| 4232 web_view->Resize(WebSize(800, 600)); | 4238 web_view->Resize(WebSize(800, 600)); |
| 4233 web_view->SetZoomLevel(WebView::ZoomFactorToZoomLevel(2.0)); | 4239 web_view->SetZoomLevel(WebView::ZoomFactorToZoomLevel(2.0)); |
| 4234 | 4240 |
| 4235 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); | 4241 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); |
| 4236 FrameTestHelpers::LoadHTMLString(web_view->MainFrame(), | 4242 FrameTestHelpers::LoadHTMLString(web_view->MainFrame(), |
| 4237 "<style>" | 4243 "<style>" |
| 4238 " @media (max-width: 600px) {" | 4244 " @media (max-width: 600px) {" |
| 4239 " div { color: green }" | 4245 " div { color: green }" |
| 4240 " }" | 4246 " }" |
| 4241 "</style>" | 4247 "</style>" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 4256 print_params.print_content_area.height = page_size.Height(); | 4262 print_params.print_content_area.height = page_size.Height(); |
| 4257 | 4263 |
| 4258 frame->PrintBegin(print_params, WebNode()); | 4264 frame->PrintBegin(print_params, WebNode()); |
| 4259 frame->PrintEnd(); | 4265 frame->PrintEnd(); |
| 4260 | 4266 |
| 4261 EXPECT_EQ(MakeRGB(0, 128, 0), | 4267 EXPECT_EQ(MakeRGB(0, 128, 0), |
| 4262 div->GetComputedStyle()->VisitedDependentColor(CSSPropertyColor)); | 4268 div->GetComputedStyle()->VisitedDependentColor(CSSPropertyColor)); |
| 4263 } | 4269 } |
| 4264 | 4270 |
| 4265 TEST_P(WebViewTest, ViewportUnitsPrintingWithPageZoom) { | 4271 TEST_P(WebViewTest, ViewportUnitsPrintingWithPageZoom) { |
| 4266 WebViewImpl* web_view = web_view_helper_.Initialize(); | 4272 WebViewBase* web_view = web_view_helper_.Initialize(); |
| 4267 web_view->Resize(WebSize(800, 600)); | 4273 web_view->Resize(WebSize(800, 600)); |
| 4268 web_view->SetZoomLevel(WebView::ZoomFactorToZoomLevel(2.0)); | 4274 web_view->SetZoomLevel(WebView::ZoomFactorToZoomLevel(2.0)); |
| 4269 | 4275 |
| 4270 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); | 4276 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); |
| 4271 FrameTestHelpers::LoadHTMLString(web_view->MainFrame(), | 4277 FrameTestHelpers::LoadHTMLString(web_view->MainFrame(), |
| 4272 "<style>" | 4278 "<style>" |
| 4273 " body { margin: 0 }" | 4279 " body { margin: 0 }" |
| 4274 " #t1 { width: 100% }" | 4280 " #t1 { width: 100% }" |
| 4275 " #t2 { width: 100vw }" | 4281 " #t2 { width: 100vw }" |
| 4276 "</style>" | 4282 "</style>" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 4295 | 4301 |
| 4296 frame->PrintBegin(print_params, WebNode()); | 4302 frame->PrintBegin(print_params, WebNode()); |
| 4297 | 4303 |
| 4298 EXPECT_EQ(expected_width, t1->OffsetWidth()); | 4304 EXPECT_EQ(expected_width, t1->OffsetWidth()); |
| 4299 EXPECT_EQ(expected_width, t2->OffsetWidth()); | 4305 EXPECT_EQ(expected_width, t2->OffsetWidth()); |
| 4300 | 4306 |
| 4301 frame->PrintEnd(); | 4307 frame->PrintEnd(); |
| 4302 } | 4308 } |
| 4303 | 4309 |
| 4304 TEST_P(WebViewTest, DeviceEmulationResetScrollbars) { | 4310 TEST_P(WebViewTest, DeviceEmulationResetScrollbars) { |
| 4305 WebViewImpl* web_view = web_view_helper_.Initialize(); | 4311 WebViewBase* web_view = web_view_helper_.Initialize(); |
| 4306 web_view->Resize(WebSize(800, 600)); | 4312 web_view->Resize(WebSize(800, 600)); |
| 4307 | 4313 |
| 4308 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); | 4314 WebURL base_url = URLTestHelpers::ToKURL("http://example.com/"); |
| 4309 FrameTestHelpers::LoadHTMLString(web_view->MainFrame(), | 4315 FrameTestHelpers::LoadHTMLString(web_view->MainFrame(), |
| 4310 "<!doctype html>" | 4316 "<!doctype html>" |
| 4311 "<meta name='viewport'" | 4317 "<meta name='viewport'" |
| 4312 " content='width=device-width'>" | 4318 " content='width=device-width'>" |
| 4313 "<style>" | 4319 "<style>" |
| 4314 " body {margin: 0px; height:3000px;}" | 4320 " body {margin: 0px; height:3000px;}" |
| 4315 "</style>", | 4321 "</style>", |
| (...skipping 28 matching lines...) Expand all Loading... |
| 4344 EXPECT_FALSE(frame_view->VisualViewportSuppliesScrollbars()); | 4350 EXPECT_FALSE(frame_view->VisualViewportSuppliesScrollbars()); |
| 4345 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { | 4351 if (RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { |
| 4346 EXPECT_NE(nullptr, | 4352 EXPECT_NE(nullptr, |
| 4347 frame_view->LayoutViewportScrollableArea()->VerticalScrollbar()); | 4353 frame_view->LayoutViewportScrollableArea()->VerticalScrollbar()); |
| 4348 } else { | 4354 } else { |
| 4349 EXPECT_NE(nullptr, frame_view->VerticalScrollbar()); | 4355 EXPECT_NE(nullptr, frame_view->VerticalScrollbar()); |
| 4350 } | 4356 } |
| 4351 } | 4357 } |
| 4352 | 4358 |
| 4353 } // namespace blink | 4359 } // namespace blink |
| OLD | NEW |