OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/public/test/layouttest_support.h" | 5 #include "content/public/test/layouttest_support.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
(...skipping 22 matching lines...) Expand all Loading... | |
33 #include "content/renderer/layout_test_dependencies.h" | 33 #include "content/renderer/layout_test_dependencies.h" |
34 #include "content/renderer/render_frame_impl.h" | 34 #include "content/renderer/render_frame_impl.h" |
35 #include "content/renderer/render_thread_impl.h" | 35 #include "content/renderer/render_thread_impl.h" |
36 #include "content/renderer/render_view_impl.h" | 36 #include "content/renderer/render_view_impl.h" |
37 #include "content/renderer/render_widget.h" | 37 #include "content/renderer/render_widget.h" |
38 #include "content/renderer/renderer_blink_platform_impl.h" | 38 #include "content/renderer/renderer_blink_platform_impl.h" |
39 #include "content/shell/common/shell_switches.h" | 39 #include "content/shell/common/shell_switches.h" |
40 #include "gpu/ipc/service/image_transport_surface.h" | 40 #include "gpu/ipc/service/image_transport_surface.h" |
41 #include "third_party/WebKit/public/platform/WebFloatRect.h" | 41 #include "third_party/WebKit/public/platform/WebFloatRect.h" |
42 #include "third_party/WebKit/public/platform/WebGamepads.h" | 42 #include "third_party/WebKit/public/platform/WebGamepads.h" |
43 #include "third_party/WebKit/public/platform/WebInputEvent.h" | |
44 #include "third_party/WebKit/public/platform/WebRect.h" | |
43 #include "third_party/WebKit/public/platform/modules/device_orientation/WebDevic eMotionData.h" | 45 #include "third_party/WebKit/public/platform/modules/device_orientation/WebDevic eMotionData.h" |
44 #include "third_party/WebKit/public/platform/modules/device_orientation/WebDevic eOrientationData.h" | 46 #include "third_party/WebKit/public/platform/modules/device_orientation/WebDevic eOrientationData.h" |
45 #include "third_party/WebKit/public/platform/scheduler/test/renderer_scheduler_t est_support.h" | 47 #include "third_party/WebKit/public/platform/scheduler/test/renderer_scheduler_t est_support.h" |
46 #include "third_party/WebKit/public/web/WebHistoryItem.h" | 48 #include "third_party/WebKit/public/web/WebHistoryItem.h" |
47 #include "third_party/WebKit/public/web/WebView.h" | 49 #include "third_party/WebKit/public/web/WebView.h" |
50 #include "ui/events/blink/blink_event_util.h" | |
48 #include "ui/gfx/icc_profile.h" | 51 #include "ui/gfx/icc_profile.h" |
49 | 52 |
50 #if defined(OS_MACOSX) | 53 #if defined(OS_MACOSX) |
51 #include "content/browser/frame_host/popup_menu_helper_mac.h" | 54 #include "content/browser/frame_host/popup_menu_helper_mac.h" |
52 #elif defined(OS_WIN) | 55 #elif defined(OS_WIN) |
53 #include "content/child/font_warmup_win.h" | 56 #include "content/child/font_warmup_win.h" |
54 #include "third_party/WebKit/public/web/win/WebFontRendering.h" | 57 #include "third_party/WebKit/public/web/win/WebFontRendering.h" |
55 #include "third_party/skia/include/ports/SkFontMgr.h" | 58 #include "third_party/skia/include/ports/SkFontMgr.h" |
56 #include "third_party/skia/include/ports/SkTypeface_win.h" | 59 #include "third_party/skia/include/ports/SkTypeface_win.h" |
57 #include "ui/gfx/win/direct_write.h" | 60 #include "ui/gfx/win/direct_write.h" |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
126 | 129 |
127 RenderFrameImpl* CreateWebFrameTestProxy( | 130 RenderFrameImpl* CreateWebFrameTestProxy( |
128 const RenderFrameImpl::CreateParams& params) { | 131 const RenderFrameImpl::CreateParams& params) { |
129 WebFrameTestProxyType* render_frame_proxy = new WebFrameTestProxyType(params); | 132 WebFrameTestProxyType* render_frame_proxy = new WebFrameTestProxyType(params); |
130 if (g_frame_test_proxy_callback == 0) | 133 if (g_frame_test_proxy_callback == 0) |
131 return render_frame_proxy; | 134 return render_frame_proxy; |
132 g_frame_test_proxy_callback.Get().Run(render_frame_proxy, render_frame_proxy); | 135 g_frame_test_proxy_callback.Get().Run(render_frame_proxy, render_frame_proxy); |
133 return render_frame_proxy; | 136 return render_frame_proxy; |
134 } | 137 } |
135 | 138 |
139 float GetWindowToViewportScale(RenderWidget* render_widget) { | |
140 blink::WebFloatRect rect(0, 0, 1.0f, 0.0); | |
141 render_widget->convertWindowToViewport(&rect); | |
142 return rect.width; | |
143 } | |
144 | |
136 #if defined(OS_WIN) | 145 #if defined(OS_WIN) |
137 // DirectWrite only has access to %WINDIR%\Fonts by default. For developer | 146 // DirectWrite only has access to %WINDIR%\Fonts by default. For developer |
138 // side-loading, support kRegisterFontFiles to allow access to additional fonts. | 147 // side-loading, support kRegisterFontFiles to allow access to additional fonts. |
139 void RegisterSideloadedTypefaces(SkFontMgr* fontmgr) { | 148 void RegisterSideloadedTypefaces(SkFontMgr* fontmgr) { |
140 std::vector<std::string> files = switches::GetSideloadFontFiles(); | 149 std::vector<std::string> files = switches::GetSideloadFontFiles(); |
141 for (std::vector<std::string>::const_iterator i(files.begin()); | 150 for (std::vector<std::string>::const_iterator i(files.begin()); |
142 i != files.end(); | 151 i != files.end(); |
143 ++i) { | 152 ++i) { |
144 SkTypeface* typeface = fontmgr->createFromFile(i->c_str()); | 153 SkTypeface* typeface = fontmgr->createFromFile(i->c_str()); |
145 blink::WebFontRendering::addSideloadedFontForTesting(typeface); | 154 blink::WebFontRendering::addSideloadedFontForTesting(typeface); |
(...skipping 10 matching lines...) Expand all Loading... | |
156 return static_cast<test_runner::WebViewTestProxyBase*>(render_view_proxy); | 165 return static_cast<test_runner::WebViewTestProxyBase*>(render_view_proxy); |
157 } | 166 } |
158 | 167 |
159 test_runner::WebFrameTestProxyBase* GetWebFrameTestProxyBase( | 168 test_runner::WebFrameTestProxyBase* GetWebFrameTestProxyBase( |
160 RenderFrame* render_frame) { | 169 RenderFrame* render_frame) { |
161 WebFrameTestProxyType* render_frame_proxy = | 170 WebFrameTestProxyType* render_frame_proxy = |
162 static_cast<WebFrameTestProxyType*>(render_frame); | 171 static_cast<WebFrameTestProxyType*>(render_frame); |
163 return static_cast<test_runner::WebFrameTestProxyBase*>(render_frame_proxy); | 172 return static_cast<test_runner::WebFrameTestProxyBase*>(render_frame_proxy); |
164 } | 173 } |
165 | 174 |
175 test_runner::WebWidgetTestProxyBase* GetWebWidgetTestProxyBase( | |
176 blink::WebLocalFrame* frame) { | |
177 DCHECK(frame); | |
178 RenderFrame* local_root = RenderFrame::FromWebFrame(frame->localRoot()); | |
179 DCHECK(local_root); | |
180 if (local_root->IsMainFrame()) { | |
181 test_runner::WebViewTestProxyBase* web_view_test_proxy_base = | |
182 GetWebViewTestProxyBase(local_root->GetRenderView()); | |
183 auto* web_widget_test_proxy_base = | |
184 static_cast<test_runner::WebWidgetTestProxyBase*>( | |
185 web_view_test_proxy_base); | |
186 DCHECK_EQ(test_runner::WebWidgetTestProxyBase::Subtype::WebViewTestProxy, | |
187 web_widget_test_proxy_base->subtype()); | |
188 return web_widget_test_proxy_base; | |
189 } else { | |
190 RenderWidget* render_widget = | |
191 static_cast<RenderFrameImpl*>(local_root)->GetRenderWidget(); | |
192 DCHECK(render_widget); | |
193 WebWidgetTestProxyType* render_widget_proxy = | |
194 static_cast<WebWidgetTestProxyType*>(render_widget); | |
195 auto* web_widget_test_proxy_base = | |
196 static_cast<test_runner::WebWidgetTestProxyBase*>(render_widget_proxy); | |
197 DCHECK_EQ(test_runner::WebWidgetTestProxyBase::Subtype::WebWidgetTestProxy, | |
198 web_widget_test_proxy_base->subtype()); | |
199 return web_widget_test_proxy_base; | |
200 } | |
201 } | |
202 | |
203 RenderWidget* GetRenderWidget( | |
204 test_runner::WebWidgetTestProxyBase* web_widget_test_proxy_base) { | |
205 DCHECK(web_widget_test_proxy_base); | |
206 | |
207 switch (web_widget_test_proxy_base->subtype()) { | |
lfg
2016/09/29 22:12:52
I'm not totally sure, but I think you could get ri
Łukasz Anforowicz
2016/09/29 23:42:36
Thank you for the suggestion - things look much be
| |
208 case test_runner::WebWidgetTestProxyBase::Subtype::WebViewTestProxy: { | |
209 WebViewTestProxyType* render_view_proxy = | |
210 static_cast<WebViewTestProxyType*>(web_widget_test_proxy_base); | |
211 RenderViewImpl* render_view_impl = | |
212 static_cast<RenderViewImpl*>(render_view_proxy); | |
213 return render_view_impl; | |
214 } | |
215 case test_runner::WebWidgetTestProxyBase::Subtype::WebWidgetTestProxy: { | |
216 WebWidgetTestProxyType* render_widget_proxy = | |
217 static_cast<WebWidgetTestProxyType*>(web_widget_test_proxy_base); | |
218 return static_cast<RenderWidget*>(render_widget_proxy); | |
219 } | |
220 default: | |
221 NOTREACHED(); | |
222 return nullptr; | |
223 } | |
224 } | |
225 | |
166 void EnableWebTestProxyCreation( | 226 void EnableWebTestProxyCreation( |
167 const ViewProxyCreationCallback& view_proxy_creation_callback, | 227 const ViewProxyCreationCallback& view_proxy_creation_callback, |
168 const WidgetProxyCreationCallback& widget_proxy_creation_callback, | 228 const WidgetProxyCreationCallback& widget_proxy_creation_callback, |
169 const FrameProxyCreationCallback& frame_proxy_creation_callback) { | 229 const FrameProxyCreationCallback& frame_proxy_creation_callback) { |
170 g_view_test_proxy_callback.Get() = view_proxy_creation_callback; | 230 g_view_test_proxy_callback.Get() = view_proxy_creation_callback; |
171 g_widget_test_proxy_callback.Get() = widget_proxy_creation_callback; | 231 g_widget_test_proxy_callback.Get() = widget_proxy_creation_callback; |
172 g_frame_test_proxy_callback.Get() = frame_proxy_creation_callback; | 232 g_frame_test_proxy_callback.Get() = frame_proxy_creation_callback; |
173 RenderViewImpl::InstallCreateHook(CreateWebViewTestProxy); | 233 RenderViewImpl::InstallCreateHook(CreateWebViewTestProxy); |
174 RenderWidget::InstallCreateHook(CreateWebWidgetTestProxy, | 234 RenderWidget::InstallCreateHook(CreateWebWidgetTestProxy, |
175 RenderWidgetInitialized); | 235 RenderWidgetInitialized); |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
384 RenderViewImpl* render_view_impl = static_cast<RenderViewImpl*>(render_view); | 444 RenderViewImpl* render_view_impl = static_cast<RenderViewImpl*>(render_view); |
385 render_view_impl->ForceResizeForTesting(new_size); | 445 render_view_impl->ForceResizeForTesting(new_size); |
386 } | 446 } |
387 | 447 |
388 void SetDeviceScaleFactor(RenderView* render_view, float factor) { | 448 void SetDeviceScaleFactor(RenderView* render_view, float factor) { |
389 static_cast<RenderViewImpl*>(render_view)-> | 449 static_cast<RenderViewImpl*>(render_view)-> |
390 SetDeviceScaleFactorForTesting(factor); | 450 SetDeviceScaleFactorForTesting(factor); |
391 } | 451 } |
392 | 452 |
393 float GetWindowToViewportScale(RenderView* render_view) { | 453 float GetWindowToViewportScale(RenderView* render_view) { |
394 blink::WebFloatRect rect(0, 0, 1.0f, 0.0); | 454 return GetWindowToViewportScale( |
395 static_cast<RenderViewImpl*>(render_view)->convertWindowToViewport(&rect); | 455 static_cast<RenderViewImpl*>(render_view)->GetWidget()); |
396 return rect.width; | 456 } |
457 | |
458 std::unique_ptr<blink::WebInputEvent> TransformScreenToWidgetCoordinates( | |
459 test_runner::WebWidgetTestProxyBase* web_widget_test_proxy_base, | |
460 const blink::WebInputEvent& event) { | |
461 DCHECK(web_widget_test_proxy_base); | |
462 RenderWidget* render_widget = GetRenderWidget(web_widget_test_proxy_base); | |
463 std::unique_ptr<blink::WebInputEvent> result = | |
464 ui::MakeDeepCopyOfWebInputEvent(event); | |
465 | |
466 // Translate (i.e. "shift") the coordinates, so that (0,0) is not the screen's | |
467 // top-left corner anymore, but instead is the widget's top-left corner. | |
468 blink::WebRect window_rect = render_widget->windowRect(); | |
469 ui::ShiftWebInputEvent(-window_rect.x, -window_rect.y, result.get()); | |
470 | |
471 // Scale the coordinates to widget's scale. | |
472 ui::ScaleWebInputEvent(GetWindowToViewportScale(render_widget), result.get()); | |
473 | |
474 return result; | |
397 } | 475 } |
398 | 476 |
399 gfx::ICCProfile GetTestingICCProfile(const std::string& name) { | 477 gfx::ICCProfile GetTestingICCProfile(const std::string& name) { |
400 const unsigned char rgb_profile_data[] = { | 478 const unsigned char rgb_profile_data[] = { |
401 0x00, 0x00, 0x07, 0xd8, 0x61, 0x70, 0x70, 0x6c, 0x02, 0x20, 0x00, 0x00, | 479 0x00, 0x00, 0x07, 0xd8, 0x61, 0x70, 0x70, 0x6c, 0x02, 0x20, 0x00, 0x00, |
402 0x6d, 0x6e, 0x74, 0x72, 0x52, 0x47, 0x42, 0x20, 0x58, 0x59, 0x5a, 0x20, | 480 0x6d, 0x6e, 0x74, 0x72, 0x52, 0x47, 0x42, 0x20, 0x58, 0x59, 0x5a, 0x20, |
403 0x07, 0xd9, 0x00, 0x02, 0x00, 0x19, 0x00, 0x0b, 0x00, 0x1a, 0x00, 0x0b, | 481 0x07, 0xd9, 0x00, 0x02, 0x00, 0x19, 0x00, 0x0b, 0x00, 0x1a, 0x00, 0x0b, |
404 0x61, 0x63, 0x73, 0x70, 0x41, 0x50, 0x50, 0x4c, 0x00, 0x00, 0x00, 0x00, | 482 0x61, 0x63, 0x73, 0x70, 0x41, 0x50, 0x50, 0x4c, 0x00, 0x00, 0x00, 0x00, |
405 0x61, 0x70, 0x70, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 483 0x61, 0x70, 0x70, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
406 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xd6, | 484 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xd6, |
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1033 return result; | 1111 return result; |
1034 } | 1112 } |
1035 | 1113 |
1036 void SchedulerRunIdleTasks(const base::Closure& callback) { | 1114 void SchedulerRunIdleTasks(const base::Closure& callback) { |
1037 blink::scheduler::RendererScheduler* scheduler = | 1115 blink::scheduler::RendererScheduler* scheduler = |
1038 content::RenderThreadImpl::current()->GetRendererScheduler(); | 1116 content::RenderThreadImpl::current()->GetRendererScheduler(); |
1039 blink::scheduler::RunIdleTasksForTesting(scheduler, callback); | 1117 blink::scheduler::RunIdleTasksForTesting(scheduler, callback); |
1040 } | 1118 } |
1041 | 1119 |
1042 } // namespace content | 1120 } // namespace content |
OLD | NEW |