Chromium Code Reviews| 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 |