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 |