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

Side by Side Diff: content/test/layouttest_support.cc

Issue 2036873002: Making EventSender talk to the right WebWidget (for OOPIF support). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed CR feedback from oshima@. Created 4 years, 2 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 // 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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698