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

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

Issue 602583003: Revert of Use the pinch viewport offset for tap disambiguation. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/web/WebViewImpl.cpp ('k') | Source/web/tests/data/disambiguation_popup_200_by_800.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 #include "core/dom/DocumentMarkerController.h" 42 #include "core/dom/DocumentMarkerController.h"
43 #include "core/dom/Fullscreen.h" 43 #include "core/dom/Fullscreen.h"
44 #include "core/dom/NodeRenderStyle.h" 44 #include "core/dom/NodeRenderStyle.h"
45 #include "core/dom/Range.h" 45 #include "core/dom/Range.h"
46 #include "core/editing/Editor.h" 46 #include "core/editing/Editor.h"
47 #include "core/editing/FrameSelection.h" 47 #include "core/editing/FrameSelection.h"
48 #include "core/editing/SpellChecker.h" 48 #include "core/editing/SpellChecker.h"
49 #include "core/editing/VisiblePosition.h" 49 #include "core/editing/VisiblePosition.h"
50 #include "core/events/MouseEvent.h" 50 #include "core/events/MouseEvent.h"
51 #include "core/fetch/MemoryCache.h" 51 #include "core/fetch/MemoryCache.h"
52 #include "core/frame/FrameHost.h"
53 #include "core/frame/FrameView.h" 52 #include "core/frame/FrameView.h"
54 #include "core/frame/LocalFrame.h" 53 #include "core/frame/LocalFrame.h"
55 #include "core/frame/PinchViewport.h"
56 #include "core/frame/Settings.h" 54 #include "core/frame/Settings.h"
57 #include "core/html/HTMLDocument.h" 55 #include "core/html/HTMLDocument.h"
58 #include "core/html/HTMLFormElement.h" 56 #include "core/html/HTMLFormElement.h"
59 #include "core/loader/DocumentThreadableLoader.h" 57 #include "core/loader/DocumentThreadableLoader.h"
60 #include "core/loader/DocumentThreadableLoaderClient.h" 58 #include "core/loader/DocumentThreadableLoaderClient.h"
61 #include "core/loader/FrameLoadRequest.h" 59 #include "core/loader/FrameLoadRequest.h"
62 #include "core/loader/ThreadableLoader.h" 60 #include "core/loader/ThreadableLoader.h"
63 #include "core/page/EventHandler.h" 61 #include "core/page/EventHandler.h"
64 #include "core/page/Page.h" 62 #include "core/page/Page.h"
65 #include "core/rendering/HitTestResult.h" 63 #include "core/rendering/HitTestResult.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 #include <v8.h> 109 #include <v8.h>
112 110
113 namespace { 111 namespace {
114 112
115 using blink::URLTestHelpers::toKURL; 113 using blink::URLTestHelpers::toKURL;
116 using blink::FrameTestHelpers::runPendingTasks; 114 using blink::FrameTestHelpers::runPendingTasks;
117 using namespace blink; 115 using namespace blink;
118 116
119 const int touchPointPadding = 32; 117 const int touchPointPadding = 32;
120 118
121 #define EXPECT_RECT_EQ(a, b) \ 119 #define EXPECT_EQ_RECT(a, b) \
122 do { \ 120 EXPECT_EQ(a.x(), b.x()); \
123 EXPECT_EQ(a.x(), b.x()); \ 121 EXPECT_EQ(a.y(), b.y()); \
124 EXPECT_EQ(a.y(), b.y()); \ 122 EXPECT_EQ(a.width(), b.width()); \
125 EXPECT_EQ(a.width(), b.width()); \ 123 EXPECT_EQ(a.height(), b.height());
126 EXPECT_EQ(a.height(), b.height()); \
127 } while (false)
128
129 #define EXPECT_POINT_EQ(expected, actual) \
130 do { \
131 EXPECT_EQ((expected).x(), (actual).x()); \
132 EXPECT_EQ((expected).y(), (actual).y()); \
133 } while (false)
134
135 #define EXPECT_FLOAT_POINT_EQ(expected, actual) \
136 do { \
137 EXPECT_FLOAT_EQ((expected).x(), (actual).x()); \
138 EXPECT_FLOAT_EQ((expected).y(), (actual).y()); \
139 } while (false)
140 124
141 class FakeCompositingWebViewClient : public FrameTestHelpers::TestWebViewClient { 125 class FakeCompositingWebViewClient : public FrameTestHelpers::TestWebViewClient {
142 public: 126 public:
143 virtual bool enterFullScreen() OVERRIDE { return true; } 127 virtual bool enterFullScreen() OVERRIDE { return true; }
144 }; 128 };
145 129
146 class WebFrameTest : public testing::Test { 130 class WebFrameTest : public testing::Test {
147 protected: 131 protected:
148 WebFrameTest() 132 WebFrameTest()
149 : m_baseURL("http://www.test.com/") 133 : m_baseURL("http://www.test.com/")
(...skipping 2056 matching lines...) Expand 10 before | Expand all | Expand 10 after
2206 webViewHelper.webView()->setPageScaleFactor(0.5); 2190 webViewHelper.webView()->setPageScaleFactor(0.5);
2207 2191
2208 SkBitmap bitmap; 2192 SkBitmap bitmap;
2209 bitmap.allocN32Pixels(200, 200); 2193 bitmap.allocN32Pixels(200, 200);
2210 bitmap.eraseColor(0); 2194 bitmap.eraseColor(0);
2211 SkCanvas canvas(bitmap); 2195 SkCanvas canvas(bitmap);
2212 2196
2213 GraphicsContext context(&canvas); 2197 GraphicsContext context(&canvas);
2214 context.setRegionTrackingMode(GraphicsContext::RegionTrackingOpaque); 2198 context.setRegionTrackingMode(GraphicsContext::RegionTrackingOpaque);
2215 2199
2216 EXPECT_RECT_EQ(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect()); 2200 EXPECT_EQ_RECT(IntRect(0, 0, 0, 0), context.opaqueRegion().asRect());
2217 2201
2218 FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->frameView(); 2202 FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->frameView();
2219 IntRect paintRect(0, 0, 200, 200); 2203 IntRect paintRect(0, 0, 200, 200);
2220 view->paint(&context, paintRect); 2204 view->paint(&context, paintRect);
2221 2205
2222 // FIXME: This test broke in release builds when changing the FixedLayoutTes tWebViewClient 2206 // FIXME: This test broke in release builds when changing the FixedLayoutTes tWebViewClient
2223 // to return a non-null layerTreeView, which is what all our shipping config urations do, 2207 // to return a non-null layerTreeView, which is what all our shipping config urations do,
2224 // so this is just exposing an existing bug. 2208 // so this is just exposing an existing bug.
2225 // crbug.com/365812 2209 // crbug.com/365812
2226 #ifndef NDEBUG 2210 #ifndef NDEBUG
2227 int viewportWidthMinusScrollbar = 50 - (view->verticalScrollbar()->isOverlay Scrollbar() ? 0 : 15); 2211 int viewportWidthMinusScrollbar = 50 - (view->verticalScrollbar()->isOverlay Scrollbar() ? 0 : 15);
2228 int viewportHeightMinusScrollbar = 50 - (view->horizontalScrollbar()->isOver layScrollbar() ? 0 : 15); 2212 int viewportHeightMinusScrollbar = 50 - (view->horizontalScrollbar()->isOver layScrollbar() ? 0 : 15);
2229 IntRect clippedRect(0, 0, viewportWidthMinusScrollbar * 2, viewportHeightMin usScrollbar * 2); 2213 IntRect clippedRect(0, 0, viewportWidthMinusScrollbar * 2, viewportHeightMin usScrollbar * 2);
2230 EXPECT_RECT_EQ(clippedRect, context.opaqueRegion().asRect()); 2214 EXPECT_EQ_RECT(clippedRect, context.opaqueRegion().asRect());
2231 #endif 2215 #endif
2232 } 2216 }
2233 2217
2234 TEST_F(WebFrameTest, pageScaleFactorUpdatesScrollbars) 2218 TEST_F(WebFrameTest, pageScaleFactorUpdatesScrollbars)
2235 { 2219 {
2236 UseMockScrollbarSettings mockScrollbarSettings; 2220 UseMockScrollbarSettings mockScrollbarSettings;
2237 registerMockedHttpURLLoad("fixed_layout.html"); 2221 registerMockedHttpURLLoad("fixed_layout.html");
2238 2222
2239 FixedLayoutTestWebViewClient client; 2223 FixedLayoutTestWebViewClient client;
2240 client.m_screenInfo.deviceScaleFactor = 1; 2224 client.m_screenInfo.deviceScaleFactor = 1;
(...skipping 1899 matching lines...) Expand 10 before | Expand all | Expand 10 after
4140 4124
4141 frame = webViewHelper.webView()->mainFrame(); 4125 frame = webViewHelper.webView()->mainFrame();
4142 frame->executeCommand(WebString::fromUTF8("Unselect")); 4126 frame->executeCommand(WebString::fromUTF8("Unselect"));
4143 webViewHelper.webView()->layout(); 4127 webViewHelper.webView()->layout();
4144 ASSERT_FALSE(frame->hasSelection()); 4128 ASSERT_FALSE(frame->hasSelection());
4145 EXPECT_TRUE(fakeSelectionLayerTreeView.getAndResetSelectionCleared()); 4129 EXPECT_TRUE(fakeSelectionLayerTreeView.getAndResetSelectionCleared());
4146 } 4130 }
4147 4131
4148 class DisambiguationPopupTestWebViewClient : public FrameTestHelpers::TestWebVie wClient { 4132 class DisambiguationPopupTestWebViewClient : public FrameTestHelpers::TestWebVie wClient {
4149 public: 4133 public:
4150 virtual bool didTapMultipleTargets(const WebSize&, const WebRect&, const Web Vector<WebRect>& targetRects) OVERRIDE 4134 virtual bool didTapMultipleTargets(const WebGestureEvent&, const WebVector<W ebRect>& targetRects) OVERRIDE
4151 { 4135 {
4152 EXPECT_GE(targetRects.size(), 2u); 4136 EXPECT_GE(targetRects.size(), 2u);
4153 m_triggered = true; 4137 m_triggered = true;
4154 return true; 4138 return true;
4155 } 4139 }
4156 4140
4157 bool triggered() const { return m_triggered; } 4141 bool triggered() const { return m_triggered; }
4158 void resetTriggered() { m_triggered = false; } 4142 void resetTriggered() { m_triggered = false; }
4159 bool m_triggered; 4143 bool m_triggered;
4160 }; 4144 };
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
4298 EXPECT_FALSE(client.triggered()); 4282 EXPECT_FALSE(client.triggered());
4299 } 4283 }
4300 4284
4301 for (int i = 0; i <= 46; i++) { 4285 for (int i = 0; i <= 46; i++) {
4302 client.resetTriggered(); 4286 client.resetTriggered();
4303 webViewHelper.webView()->handleInputEvent(fatTap(10 + i * 5, 590)); 4287 webViewHelper.webView()->handleInputEvent(fatTap(10 + i * 5, 590));
4304 EXPECT_FALSE(client.triggered()); 4288 EXPECT_FALSE(client.triggered());
4305 } 4289 }
4306 } 4290 }
4307 4291
4308 static void enableVirtualViewport(WebSettings* settings)
4309 {
4310 settings->setPinchVirtualViewportEnabled(true);
4311 settings->setViewportEnabled(true);
4312 settings->setViewportMetaEnabled(true);
4313 settings->setShrinksViewportContentToFit(true);
4314 }
4315
4316 TEST_F(WebFrameTest, DisambiguationPopupPinchViewport)
4317 {
4318 const std::string htmlFile = "disambiguation_popup_200_by_800.html";
4319 registerMockedHttpURLLoad(htmlFile);
4320
4321 DisambiguationPopupTestWebViewClient client;
4322
4323 FrameTestHelpers::WebViewHelper webViewHelper;
4324 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client, enab leVirtualViewport);
4325
4326 WebViewImpl* webViewImpl = webViewHelper.webViewImpl();
4327 ASSERT_TRUE(webViewImpl);
4328 LocalFrame* frame = webViewImpl->mainFrameImpl()->frame();
4329 ASSERT_TRUE(frame);
4330
4331 webViewHelper.webView()->resize(WebSize(200, 400));
4332
4333 // Scroll main frame to the bottom of the document
4334 webViewImpl->setMainFrameScrollOffset(WebPoint(0, 400));
4335 EXPECT_POINT_EQ(IntPoint(0, 400), frame->view()->scrollPosition());
4336
4337 webViewImpl->setPageScaleFactor(2.0);
4338
4339 // Scroll pinch viewport to the top of the main frame.
4340 PinchViewport& pinchViewport = frame->page()->frameHost().pinchViewport();
4341 pinchViewport.setLocation(FloatPoint(0, 0));
4342 EXPECT_FLOAT_POINT_EQ(FloatPoint(0, 0), pinchViewport.location());
4343
4344 // Tap at the top: there is nothing there.
4345 client.resetTriggered();
4346 webViewHelper.webView()->handleInputEvent(fatTap(10, 60));
4347 EXPECT_FALSE(client.triggered());
4348
4349 // Scroll pinch viewport to the bottom of the main frame.
4350 pinchViewport.setLocation(FloatPoint(0, 200));
4351 EXPECT_FLOAT_POINT_EQ(FloatPoint(0, 200), pinchViewport.location());
4352
4353 // Now the tap with the same coordinates should hit two elements.
4354 client.resetTriggered();
4355 webViewHelper.webView()->handleInputEvent(fatTap(10, 60));
4356 EXPECT_TRUE(client.triggered());
4357 }
4358
4359 TEST_F(WebFrameTest, DisambiguationPopupBlacklist) 4292 TEST_F(WebFrameTest, DisambiguationPopupBlacklist)
4360 { 4293 {
4361 const unsigned viewportWidth = 500; 4294 const unsigned viewportWidth = 500;
4362 const unsigned viewportHeight = 1000; 4295 const unsigned viewportHeight = 1000;
4363 const unsigned divHeight = 100; 4296 const unsigned divHeight = 100;
4364 const std::string htmlFile = "disambiguation_popup_blacklist.html"; 4297 const std::string htmlFile = "disambiguation_popup_blacklist.html";
4365 registerMockedHttpURLLoad(htmlFile); 4298 registerMockedHttpURLLoad(htmlFile);
4366 4299
4367 DisambiguationPopupTestWebViewClient client; 4300 DisambiguationPopupTestWebViewClient client;
4368 4301
(...skipping 1412 matching lines...) Expand 10 before | Expand all | Expand 10 after
5781 EXPECT_EQ(200, leftRightFixed->offsetWidth()); 5714 EXPECT_EQ(200, leftRightFixed->offsetWidth());
5782 } 5715 }
5783 5716
5784 TEST_F(WebFrameTest, FrameViewSetFrameRect) 5717 TEST_F(WebFrameTest, FrameViewSetFrameRect)
5785 { 5718 {
5786 FrameTestHelpers::WebViewHelper webViewHelper; 5719 FrameTestHelpers::WebViewHelper webViewHelper;
5787 webViewHelper.initializeAndLoad("about:blank"); 5720 webViewHelper.initializeAndLoad("about:blank");
5788 5721
5789 FrameView* frameView = webViewHelper.webViewImpl()->mainFrameImpl()->frameVi ew(); 5722 FrameView* frameView = webViewHelper.webViewImpl()->mainFrameImpl()->frameVi ew();
5790 frameView->setFrameRect(IntRect(0, 0, 200, 200)); 5723 frameView->setFrameRect(IntRect(0, 0, 200, 200));
5791 EXPECT_RECT_EQ(IntRect(0, 0, 200, 200), frameView->frameRect()); 5724 EXPECT_EQ_RECT(IntRect(0, 0, 200, 200), frameView->frameRect());
5792 frameView->setFrameRect(IntRect(100, 100, 200, 200)); 5725 frameView->setFrameRect(IntRect(100, 100, 200, 200));
5793 EXPECT_RECT_EQ(IntRect(100, 100, 200, 200), frameView->frameRect()); 5726 EXPECT_EQ_RECT(IntRect(100, 100, 200, 200), frameView->frameRect());
5794 } 5727 }
5795 5728
5796 TEST_F(WebFrameTest, FullscreenLayerNonScrollable) 5729 TEST_F(WebFrameTest, FullscreenLayerNonScrollable)
5797 { 5730 {
5798 FakeCompositingWebViewClient client; 5731 FakeCompositingWebViewClient client;
5799 registerMockedHttpURLLoad("fullscreen_div.html"); 5732 registerMockedHttpURLLoad("fullscreen_div.html");
5800 FrameTestHelpers::WebViewHelper webViewHelper; 5733 FrameTestHelpers::WebViewHelper webViewHelper;
5801 int viewportWidth = 640; 5734 int viewportWidth = 640;
5802 int viewportHeight = 480; 5735 int viewportHeight = 480;
5803 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_div.html", true, 0, &client, &configueCompositingWebView); 5736 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "full screen_div.html", true, 0, &client, &configueCompositingWebView);
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
6335 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount()); 6268 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount());
6336 6269
6337 // Neither should a page reload. 6270 // Neither should a page reload.
6338 localFrame->reload(); 6271 localFrame->reload();
6339 EXPECT_EQ(4u, frameClient.provisionalLoadCount()); 6272 EXPECT_EQ(4u, frameClient.provisionalLoadCount());
6340 EXPECT_FALSE(frameClient.wasLastProvisionalLoadATransition()); 6273 EXPECT_FALSE(frameClient.wasLastProvisionalLoadATransition());
6341 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount()); 6274 EXPECT_EQ(1u, frameClient.navigationalDataReceivedCount());
6342 } 6275 }
6343 6276
6344 } // namespace 6277 } // namespace
OLDNEW
« no previous file with comments | « Source/web/WebViewImpl.cpp ('k') | Source/web/tests/data/disambiguation_popup_200_by_800.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698