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

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

Issue 2928033002: Move GetDocument method from WebFrame to WebLocalFrame. (Closed)
Patch Set: Split a DCHECK in two as suggested by boliu@. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 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 20 matching lines...) Expand all
31 #include "core/dom/ClientRect.h" 31 #include "core/dom/ClientRect.h"
32 #include "core/dom/ClientRectList.h" 32 #include "core/dom/ClientRectList.h"
33 #include "core/dom/Document.h" 33 #include "core/dom/Document.h"
34 #include "core/dom/Element.h" 34 #include "core/dom/Element.h"
35 #include "core/dom/StaticNodeList.h" 35 #include "core/dom/StaticNodeList.h"
36 #include "core/dom/shadow/ShadowRoot.h" 36 #include "core/dom/shadow/ShadowRoot.h"
37 #include "core/exported/WebViewBase.h" 37 #include "core/exported/WebViewBase.h"
38 #include "core/frame/FrameTestHelpers.h" 38 #include "core/frame/FrameTestHelpers.h"
39 #include "core/frame/LocalFrame.h" 39 #include "core/frame/LocalFrame.h"
40 #include "core/frame/LocalFrameView.h" 40 #include "core/frame/LocalFrameView.h"
41 #include "core/frame/WebLocalFrameBase.h"
41 #include "core/html/HTMLIFrameElement.h" 42 #include "core/html/HTMLIFrameElement.h"
42 #include "core/input/EventHandler.h" 43 #include "core/input/EventHandler.h"
43 #include "core/layout/HitTestResult.h" 44 #include "core/layout/HitTestResult.h"
44 #include "core/layout/LayoutTreeAsText.h" 45 #include "core/layout/LayoutTreeAsText.h"
45 #include "core/layout/api/LayoutViewItem.h" 46 #include "core/layout/api/LayoutViewItem.h"
46 #include "platform/graphics/TouchAction.h" 47 #include "platform/graphics/TouchAction.h"
47 #include "platform/testing/URLTestHelpers.h" 48 #include "platform/testing/URLTestHelpers.h"
48 #include "platform/testing/UnitTestHelpers.h" 49 #include "platform/testing/UnitTestHelpers.h"
49 #include "public/platform/Platform.h" 50 #include "public/platform/Platform.h"
50 #include "public/platform/WebCoalescedInputEvent.h" 51 #include "public/platform/WebCoalescedInputEvent.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 Platform::Current() 110 Platform::Current()
110 ->GetURLLoaderMockFactory() 111 ->GetURLLoaderMockFactory()
111 ->UnregisterAllURLsAndClearMemoryCache(); 112 ->UnregisterAllURLsAndClearMemoryCache();
112 } 113 }
113 114
114 protected: 115 protected:
115 void RunTouchActionTest(std::string file); 116 void RunTouchActionTest(std::string file);
116 void RunShadowDOMTest(std::string file); 117 void RunShadowDOMTest(std::string file);
117 void RunIFrameTest(std::string file); 118 void RunIFrameTest(std::string file);
118 void SendTouchEvent(WebView*, WebInputEvent::Type, IntPoint client_point); 119 void SendTouchEvent(WebView*, WebInputEvent::Type, IntPoint client_point);
119 WebView* SetupTest(std::string file, TouchActionTrackingWebWidgetClient&); 120 WebViewBase* SetupTest(std::string file, TouchActionTrackingWebWidgetClient&);
120 void RunTestOnTree(ContainerNode* root, 121 void RunTestOnTree(ContainerNode* root,
121 WebView*, 122 WebView*,
122 TouchActionTrackingWebWidgetClient&); 123 TouchActionTrackingWebWidgetClient&);
123 124
124 std::string base_url_; 125 std::string base_url_;
125 FrameTestHelpers::WebViewHelper web_view_helper_; 126 FrameTestHelpers::WebViewHelper web_view_helper_;
126 }; 127 };
127 128
128 void TouchActionTest::RunTouchActionTest(std::string file) { 129 void TouchActionTest::RunTouchActionTest(std::string file) {
129 TouchActionTrackingWebWidgetClient client; 130 TouchActionTrackingWebWidgetClient client;
130 131
131 // runTouchActionTest() loads a document in a frame, setting up a 132 // runTouchActionTest() loads a document in a frame, setting up a
132 // nested run loop. Should any Oilpan GC happen while it is in 133 // nested run loop. Should any Oilpan GC happen while it is in
133 // effect, the implicit assumption that we're outside any event 134 // effect, the implicit assumption that we're outside any event
134 // loop (=> there being no pointers on the stack needing scanning) 135 // loop (=> there being no pointers on the stack needing scanning)
135 // when that GC strikes will no longer hold. 136 // when that GC strikes will no longer hold.
136 // 137 //
137 // To ensure that the references on the stack are also traced, we 138 // To ensure that the references on the stack are also traced, we
138 // turn them into persistent, stack allocated references. This 139 // turn them into persistent, stack allocated references. This
139 // workaround is sufficient to handle this artificial test 140 // workaround is sufficient to handle this artificial test
140 // scenario. 141 // scenario.
141 WebView* web_view = SetupTest(file, client); 142 WebViewBase* web_view = SetupTest(file, client);
142 143
143 Persistent<Document> document = 144 Persistent<Document> document =
144 static_cast<Document*>(web_view->MainFrame()->GetDocument()); 145 static_cast<Document*>(web_view->MainFrameImpl()->GetDocument());
145 RunTestOnTree(document.Get(), web_view, client); 146 RunTestOnTree(document.Get(), web_view, client);
146 147
147 // Explicitly reset to break dependency on locally scoped client. 148 // Explicitly reset to break dependency on locally scoped client.
148 web_view_helper_.Reset(); 149 web_view_helper_.Reset();
149 } 150 }
150 151
151 void TouchActionTest::RunShadowDOMTest(std::string file) { 152 void TouchActionTest::RunShadowDOMTest(std::string file) {
152 TouchActionTrackingWebWidgetClient client; 153 TouchActionTrackingWebWidgetClient client;
153 154
154 WebView* web_view = SetupTest(file, client); 155 WebViewBase* web_view = SetupTest(file, client);
155 156
156 DummyExceptionStateForTesting es; 157 DummyExceptionStateForTesting es;
157 158
158 // Oilpan: see runTouchActionTest() comment why these are persistent 159 // Oilpan: see runTouchActionTest() comment why these are persistent
159 // references. 160 // references.
160 Persistent<Document> document = 161 Persistent<Document> document =
161 static_cast<Document*>(web_view->MainFrame()->GetDocument()); 162 static_cast<Document*>(web_view->MainFrameImpl()->GetDocument());
162 Persistent<StaticElementList> host_nodes = 163 Persistent<StaticElementList> host_nodes =
163 document->QuerySelectorAll("[shadow-host]", es); 164 document->QuerySelectorAll("[shadow-host]", es);
164 ASSERT_FALSE(es.HadException()); 165 ASSERT_FALSE(es.HadException());
165 ASSERT_GE(host_nodes->length(), 1u); 166 ASSERT_GE(host_nodes->length(), 1u);
166 167
167 for (unsigned index = 0; index < host_nodes->length(); index++) { 168 for (unsigned index = 0; index < host_nodes->length(); index++) {
168 ShadowRoot* shadow_root = host_nodes->item(index)->openShadowRoot(); 169 ShadowRoot* shadow_root = host_nodes->item(index)->openShadowRoot();
169 RunTestOnTree(shadow_root, web_view, client); 170 RunTestOnTree(shadow_root, web_view, client);
170 } 171 }
171 172
172 // Projections show up in the main document. 173 // Projections show up in the main document.
173 RunTestOnTree(document.Get(), web_view, client); 174 RunTestOnTree(document.Get(), web_view, client);
174 175
175 // Explicitly reset to break dependency on locally scoped client. 176 // Explicitly reset to break dependency on locally scoped client.
176 web_view_helper_.Reset(); 177 web_view_helper_.Reset();
177 } 178 }
178 179
179 void TouchActionTest::RunIFrameTest(std::string file) { 180 void TouchActionTest::RunIFrameTest(std::string file) {
180 TouchActionTrackingWebWidgetClient client; 181 TouchActionTrackingWebWidgetClient client;
181 182
182 WebView* web_view = SetupTest(file, client); 183 WebViewBase* web_view = SetupTest(file, client);
183 WebFrame* cur_frame = web_view->MainFrame()->FirstChild(); 184 WebFrame* cur_frame = web_view->MainFrame()->FirstChild();
184 ASSERT_TRUE(cur_frame); 185 ASSERT_TRUE(cur_frame);
185 186
186 for (; cur_frame; cur_frame = cur_frame->NextSibling()) { 187 for (; cur_frame; cur_frame = cur_frame->NextSibling()) {
187 // Oilpan: see runTouchActionTest() comment why these are persistent 188 // Oilpan: see runTouchActionTest() comment why these are persistent
188 // references. 189 // references.
189 Persistent<Document> content_doc = 190 Persistent<Document> content_doc =
190 static_cast<Document*>(cur_frame->GetDocument()); 191 static_cast<Document*>(cur_frame->ToWebLocalFrame()->GetDocument());
191 RunTestOnTree(content_doc.Get(), web_view, client); 192 RunTestOnTree(content_doc.Get(), web_view, client);
192 } 193 }
193 194
194 // Explicitly reset to break dependency on locally scoped client. 195 // Explicitly reset to break dependency on locally scoped client.
195 web_view_helper_.Reset(); 196 web_view_helper_.Reset();
196 } 197 }
197 198
198 WebView* TouchActionTest::SetupTest( 199 WebViewBase* TouchActionTest::SetupTest(
199 std::string file, 200 std::string file,
200 TouchActionTrackingWebWidgetClient& client) { 201 TouchActionTrackingWebWidgetClient& client) {
201 URLTestHelpers::RegisterMockedURLLoadFromBase(WebString::FromUTF8(base_url_), 202 URLTestHelpers::RegisterMockedURLLoadFromBase(WebString::FromUTF8(base_url_),
202 testing::WebTestDataPath(), 203 testing::WebTestDataPath(),
203 WebString::FromUTF8(file)); 204 WebString::FromUTF8(file));
204 // Note that JavaScript must be enabled for shadow DOM tests. 205 // Note that JavaScript must be enabled for shadow DOM tests.
205 WebView* web_view = web_view_helper_.InitializeAndLoad( 206 WebViewBase* web_view = web_view_helper_.InitializeAndLoad(
206 base_url_ + file, nullptr, nullptr, &client); 207 base_url_ + file, nullptr, nullptr, &client);
207 208
208 // Set size to enable hit testing, and avoid line wrapping for consistency 209 // Set size to enable hit testing, and avoid line wrapping for consistency
209 // with browser. 210 // with browser.
210 web_view->Resize(WebSize(800, 1200)); 211 web_view->Resize(WebSize(800, 1200));
211 212
212 // Scroll to verify the code properly transforms windows to client co-ords. 213 // Scroll to verify the code properly transforms windows to client co-ords.
213 const int kScrollOffset = 100; 214 const int kScrollOffset = 100;
214 Document* document = 215 Document* document =
215 static_cast<Document*>(web_view->MainFrame()->GetDocument()); 216 static_cast<Document*>(web_view->MainFrameImpl()->GetDocument());
216 document->GetFrame()->View()->LayoutViewportScrollableArea()->SetScrollOffset( 217 document->GetFrame()->View()->LayoutViewportScrollableArea()->SetScrollOffset(
217 ScrollOffset(0, kScrollOffset), kProgrammaticScroll); 218 ScrollOffset(0, kScrollOffset), kProgrammaticScroll);
218 219
219 return web_view; 220 return web_view;
220 } 221 }
221 222
222 IntRect WindowClipRect(const LocalFrameView& frame_view) { 223 IntRect WindowClipRect(const LocalFrameView& frame_view) {
223 LayoutRect clip_rect( 224 LayoutRect clip_rect(
224 LayoutPoint(), 225 LayoutPoint(),
225 LayoutSize(frame_view.VisibleContentSize(kExcludeScrollbars))); 226 LayoutSize(frame_view.VisibleContentSize(kExcludeScrollbars)));
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 419
419 TEST_F(TouchActionTest, ShadowDOM) { 420 TEST_F(TouchActionTest, ShadowDOM) {
420 RunShadowDOMTest("touch-action-shadow-dom.html"); 421 RunShadowDOMTest("touch-action-shadow-dom.html");
421 } 422 }
422 423
423 TEST_F(TouchActionTest, Pan) { 424 TEST_F(TouchActionTest, Pan) {
424 RunTouchActionTest("touch-action-pan.html"); 425 RunTouchActionTest("touch-action-pan.html");
425 } 426 }
426 427
427 } // namespace blink 428 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698