| 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 23 matching lines...) Expand all Loading... |
| 34 #include "content/renderer/layout_test_dependencies.h" | 34 #include "content/renderer/layout_test_dependencies.h" |
| 35 #include "content/renderer/render_frame_impl.h" | 35 #include "content/renderer/render_frame_impl.h" |
| 36 #include "content/renderer/render_thread_impl.h" | 36 #include "content/renderer/render_thread_impl.h" |
| 37 #include "content/renderer/render_view_impl.h" | 37 #include "content/renderer/render_view_impl.h" |
| 38 #include "content/renderer/render_widget.h" | 38 #include "content/renderer/render_widget.h" |
| 39 #include "content/renderer/renderer_blink_platform_impl.h" | 39 #include "content/renderer/renderer_blink_platform_impl.h" |
| 40 #include "content/shell/common/shell_switches.h" | 40 #include "content/shell/common/shell_switches.h" |
| 41 #include "gpu/ipc/service/image_transport_surface.h" | 41 #include "gpu/ipc/service/image_transport_surface.h" |
| 42 #include "third_party/WebKit/public/platform/WebFloatRect.h" | 42 #include "third_party/WebKit/public/platform/WebFloatRect.h" |
| 43 #include "third_party/WebKit/public/platform/WebGamepads.h" | 43 #include "third_party/WebKit/public/platform/WebGamepads.h" |
| 44 #include "third_party/WebKit/public/platform/WebInputEvent.h" |
| 45 #include "third_party/WebKit/public/platform/WebRect.h" |
| 44 #include "third_party/WebKit/public/platform/modules/device_orientation/WebDevic
eMotionData.h" | 46 #include "third_party/WebKit/public/platform/modules/device_orientation/WebDevic
eMotionData.h" |
| 45 #include "third_party/WebKit/public/platform/modules/device_orientation/WebDevic
eOrientationData.h" | 47 #include "third_party/WebKit/public/platform/modules/device_orientation/WebDevic
eOrientationData.h" |
| 46 #include "third_party/WebKit/public/platform/scheduler/test/renderer_scheduler_t
est_support.h" | 48 #include "third_party/WebKit/public/platform/scheduler/test/renderer_scheduler_t
est_support.h" |
| 47 #include "third_party/WebKit/public/web/WebHistoryItem.h" | 49 #include "third_party/WebKit/public/web/WebHistoryItem.h" |
| 48 #include "third_party/WebKit/public/web/WebView.h" | 50 #include "third_party/WebKit/public/web/WebView.h" |
| 51 #include "ui/events/blink/blink_event_util.h" |
| 49 #include "ui/gfx/icc_profile.h" | 52 #include "ui/gfx/icc_profile.h" |
| 50 | 53 |
| 51 #if defined(OS_MACOSX) | 54 #if defined(OS_MACOSX) |
| 52 #include "content/browser/frame_host/popup_menu_helper_mac.h" | 55 #include "content/browser/frame_host/popup_menu_helper_mac.h" |
| 53 #elif defined(OS_WIN) | 56 #elif defined(OS_WIN) |
| 54 #include "content/child/font_warmup_win.h" | 57 #include "content/child/font_warmup_win.h" |
| 55 #include "third_party/WebKit/public/web/win/WebFontRendering.h" | 58 #include "third_party/WebKit/public/web/win/WebFontRendering.h" |
| 56 #include "third_party/skia/include/ports/SkFontMgr.h" | 59 #include "third_party/skia/include/ports/SkFontMgr.h" |
| 57 #include "third_party/skia/include/ports/SkTypeface_win.h" | 60 #include "third_party/skia/include/ports/SkTypeface_win.h" |
| 58 #include "ui/gfx/win/direct_write.h" | 61 #include "ui/gfx/win/direct_write.h" |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 | 130 |
| 128 RenderFrameImpl* CreateWebFrameTestProxy( | 131 RenderFrameImpl* CreateWebFrameTestProxy( |
| 129 const RenderFrameImpl::CreateParams& params) { | 132 const RenderFrameImpl::CreateParams& params) { |
| 130 WebFrameTestProxyType* render_frame_proxy = new WebFrameTestProxyType(params); | 133 WebFrameTestProxyType* render_frame_proxy = new WebFrameTestProxyType(params); |
| 131 if (g_frame_test_proxy_callback == 0) | 134 if (g_frame_test_proxy_callback == 0) |
| 132 return render_frame_proxy; | 135 return render_frame_proxy; |
| 133 g_frame_test_proxy_callback.Get().Run(render_frame_proxy, render_frame_proxy); | 136 g_frame_test_proxy_callback.Get().Run(render_frame_proxy, render_frame_proxy); |
| 134 return render_frame_proxy; | 137 return render_frame_proxy; |
| 135 } | 138 } |
| 136 | 139 |
| 140 float GetWindowToViewportScale(RenderWidget* render_widget) { |
| 141 blink::WebFloatRect rect(0, 0, 1.0f, 0.0); |
| 142 render_widget->convertWindowToViewport(&rect); |
| 143 return rect.width; |
| 144 } |
| 145 |
| 137 #if defined(OS_WIN) | 146 #if defined(OS_WIN) |
| 138 // DirectWrite only has access to %WINDIR%\Fonts by default. For developer | 147 // DirectWrite only has access to %WINDIR%\Fonts by default. For developer |
| 139 // side-loading, support kRegisterFontFiles to allow access to additional fonts. | 148 // side-loading, support kRegisterFontFiles to allow access to additional fonts. |
| 140 void RegisterSideloadedTypefaces(SkFontMgr* fontmgr) { | 149 void RegisterSideloadedTypefaces(SkFontMgr* fontmgr) { |
| 141 std::vector<std::string> files = switches::GetSideloadFontFiles(); | 150 std::vector<std::string> files = switches::GetSideloadFontFiles(); |
| 142 for (std::vector<std::string>::const_iterator i(files.begin()); | 151 for (std::vector<std::string>::const_iterator i(files.begin()); |
| 143 i != files.end(); | 152 i != files.end(); |
| 144 ++i) { | 153 ++i) { |
| 145 SkTypeface* typeface = fontmgr->createFromFile(i->c_str()); | 154 SkTypeface* typeface = fontmgr->createFromFile(i->c_str()); |
| 146 blink::WebFontRendering::addSideloadedFontForTesting(typeface); | 155 blink::WebFontRendering::addSideloadedFontForTesting(typeface); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 157 return static_cast<test_runner::WebViewTestProxyBase*>(render_view_proxy); | 166 return static_cast<test_runner::WebViewTestProxyBase*>(render_view_proxy); |
| 158 } | 167 } |
| 159 | 168 |
| 160 test_runner::WebFrameTestProxyBase* GetWebFrameTestProxyBase( | 169 test_runner::WebFrameTestProxyBase* GetWebFrameTestProxyBase( |
| 161 RenderFrame* render_frame) { | 170 RenderFrame* render_frame) { |
| 162 WebFrameTestProxyType* render_frame_proxy = | 171 WebFrameTestProxyType* render_frame_proxy = |
| 163 static_cast<WebFrameTestProxyType*>(render_frame); | 172 static_cast<WebFrameTestProxyType*>(render_frame); |
| 164 return static_cast<test_runner::WebFrameTestProxyBase*>(render_frame_proxy); | 173 return static_cast<test_runner::WebFrameTestProxyBase*>(render_frame_proxy); |
| 165 } | 174 } |
| 166 | 175 |
| 176 test_runner::WebWidgetTestProxyBase* GetWebWidgetTestProxyBase( |
| 177 blink::WebLocalFrame* frame) { |
| 178 DCHECK(frame); |
| 179 RenderFrame* local_root = RenderFrame::FromWebFrame(frame->localRoot()); |
| 180 DCHECK(local_root); |
| 181 // TODO(lfg): Simplify once RenderView no longer inherits from RenderWidget. |
| 182 if (local_root->IsMainFrame()) { |
| 183 test_runner::WebViewTestProxyBase* web_view_test_proxy_base = |
| 184 GetWebViewTestProxyBase(local_root->GetRenderView()); |
| 185 auto* web_widget_test_proxy_base = |
| 186 static_cast<test_runner::WebWidgetTestProxyBase*>( |
| 187 web_view_test_proxy_base); |
| 188 DCHECK(web_widget_test_proxy_base->web_widget()->isWebView()); |
| 189 return web_widget_test_proxy_base; |
| 190 } else { |
| 191 RenderWidget* render_widget = |
| 192 static_cast<RenderFrameImpl*>(local_root)->GetRenderWidget(); |
| 193 DCHECK(render_widget); |
| 194 WebWidgetTestProxyType* render_widget_proxy = |
| 195 static_cast<WebWidgetTestProxyType*>(render_widget); |
| 196 auto* web_widget_test_proxy_base = |
| 197 static_cast<test_runner::WebWidgetTestProxyBase*>(render_widget_proxy); |
| 198 DCHECK(web_widget_test_proxy_base->web_widget()->isWebFrameWidget()); |
| 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 blink::WebWidget* widget = web_widget_test_proxy_base->web_widget(); |
| 208 // TODO(lfg): Simplify once RenderView no longer inherits from RenderWidget. |
| 209 if (widget->isWebView()) { |
| 210 WebViewTestProxyType* render_view_proxy = |
| 211 static_cast<WebViewTestProxyType*>(web_widget_test_proxy_base); |
| 212 RenderViewImpl* render_view_impl = |
| 213 static_cast<RenderViewImpl*>(render_view_proxy); |
| 214 return render_view_impl; |
| 215 } else if (widget->isWebFrameWidget()) { |
| 216 WebWidgetTestProxyType* render_widget_proxy = |
| 217 static_cast<WebWidgetTestProxyType*>(web_widget_test_proxy_base); |
| 218 return static_cast<RenderWidget*>(render_widget_proxy); |
| 219 } else { |
| 220 NOTREACHED(); |
| 221 return nullptr; |
| 222 } |
| 223 } |
| 224 |
| 167 void EnableWebTestProxyCreation( | 225 void EnableWebTestProxyCreation( |
| 168 const ViewProxyCreationCallback& view_proxy_creation_callback, | 226 const ViewProxyCreationCallback& view_proxy_creation_callback, |
| 169 const WidgetProxyCreationCallback& widget_proxy_creation_callback, | 227 const WidgetProxyCreationCallback& widget_proxy_creation_callback, |
| 170 const FrameProxyCreationCallback& frame_proxy_creation_callback) { | 228 const FrameProxyCreationCallback& frame_proxy_creation_callback) { |
| 171 g_view_test_proxy_callback.Get() = view_proxy_creation_callback; | 229 g_view_test_proxy_callback.Get() = view_proxy_creation_callback; |
| 172 g_widget_test_proxy_callback.Get() = widget_proxy_creation_callback; | 230 g_widget_test_proxy_callback.Get() = widget_proxy_creation_callback; |
| 173 g_frame_test_proxy_callback.Get() = frame_proxy_creation_callback; | 231 g_frame_test_proxy_callback.Get() = frame_proxy_creation_callback; |
| 174 RenderViewImpl::InstallCreateHook(CreateWebViewTestProxy); | 232 RenderViewImpl::InstallCreateHook(CreateWebViewTestProxy); |
| 175 RenderWidget::InstallCreateHook(CreateWebWidgetTestProxy, | 233 RenderWidget::InstallCreateHook(CreateWebWidgetTestProxy, |
| 176 RenderWidgetInitialized); | 234 RenderWidgetInitialized); |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 RenderViewImpl* render_view_impl = static_cast<RenderViewImpl*>(render_view); | 443 RenderViewImpl* render_view_impl = static_cast<RenderViewImpl*>(render_view); |
| 386 render_view_impl->ForceResizeForTesting(new_size); | 444 render_view_impl->ForceResizeForTesting(new_size); |
| 387 } | 445 } |
| 388 | 446 |
| 389 void SetDeviceScaleFactor(RenderView* render_view, float factor) { | 447 void SetDeviceScaleFactor(RenderView* render_view, float factor) { |
| 390 static_cast<RenderViewImpl*>(render_view)-> | 448 static_cast<RenderViewImpl*>(render_view)-> |
| 391 SetDeviceScaleFactorForTesting(factor); | 449 SetDeviceScaleFactorForTesting(factor); |
| 392 } | 450 } |
| 393 | 451 |
| 394 float GetWindowToViewportScale(RenderView* render_view) { | 452 float GetWindowToViewportScale(RenderView* render_view) { |
| 395 blink::WebFloatRect rect(0, 0, 1.0f, 0.0); | 453 return GetWindowToViewportScale( |
| 396 static_cast<RenderViewImpl*>(render_view)->convertWindowToViewport(&rect); | 454 static_cast<RenderViewImpl*>(render_view)->GetWidget()); |
| 397 return rect.width; | 455 } |
| 456 |
| 457 std::unique_ptr<blink::WebInputEvent> TransformScreenToWidgetCoordinates( |
| 458 test_runner::WebWidgetTestProxyBase* web_widget_test_proxy_base, |
| 459 const blink::WebInputEvent& event) { |
| 460 DCHECK(web_widget_test_proxy_base); |
| 461 RenderWidget* render_widget = GetRenderWidget(web_widget_test_proxy_base); |
| 462 |
| 463 blink::WebRect window_rect = render_widget->windowRect(); |
| 464 float scale = GetWindowToViewportScale(render_widget); |
| 465 return ui::TranslateAndScaleWebInputEvent(event, -window_rect.x, |
| 466 -window_rect.y, scale); |
| 398 } | 467 } |
| 399 | 468 |
| 400 gfx::ICCProfile GetTestingICCProfile(const std::string& name) { | 469 gfx::ICCProfile GetTestingICCProfile(const std::string& name) { |
| 401 const unsigned char rgb_profile_data[] = { | 470 const unsigned char rgb_profile_data[] = { |
| 402 0x00, 0x00, 0x07, 0xd8, 0x61, 0x70, 0x70, 0x6c, 0x02, 0x20, 0x00, 0x00, | 471 0x00, 0x00, 0x07, 0xd8, 0x61, 0x70, 0x70, 0x6c, 0x02, 0x20, 0x00, 0x00, |
| 403 0x6d, 0x6e, 0x74, 0x72, 0x52, 0x47, 0x42, 0x20, 0x58, 0x59, 0x5a, 0x20, | 472 0x6d, 0x6e, 0x74, 0x72, 0x52, 0x47, 0x42, 0x20, 0x58, 0x59, 0x5a, 0x20, |
| 404 0x07, 0xd9, 0x00, 0x02, 0x00, 0x19, 0x00, 0x0b, 0x00, 0x1a, 0x00, 0x0b, | 473 0x07, 0xd9, 0x00, 0x02, 0x00, 0x19, 0x00, 0x0b, 0x00, 0x1a, 0x00, 0x0b, |
| 405 0x61, 0x63, 0x73, 0x70, 0x41, 0x50, 0x50, 0x4c, 0x00, 0x00, 0x00, 0x00, | 474 0x61, 0x63, 0x73, 0x70, 0x41, 0x50, 0x50, 0x4c, 0x00, 0x00, 0x00, 0x00, |
| 406 0x61, 0x70, 0x70, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | 475 0x61, 0x70, 0x70, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
| 407 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xd6, | 476 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... |
| 1034 return result; | 1103 return result; |
| 1035 } | 1104 } |
| 1036 | 1105 |
| 1037 void SchedulerRunIdleTasks(const base::Closure& callback) { | 1106 void SchedulerRunIdleTasks(const base::Closure& callback) { |
| 1038 blink::scheduler::RendererScheduler* scheduler = | 1107 blink::scheduler::RendererScheduler* scheduler = |
| 1039 content::RenderThreadImpl::current()->GetRendererScheduler(); | 1108 content::RenderThreadImpl::current()->GetRendererScheduler(); |
| 1040 blink::scheduler::RunIdleTasksForTesting(scheduler, callback); | 1109 blink::scheduler::RunIdleTasksForTesting(scheduler, callback); |
| 1041 } | 1110 } |
| 1042 | 1111 |
| 1043 } // namespace content | 1112 } // namespace content |
| OLD | NEW |