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

Side by Side Diff: content/renderer/render_view_browsertest.cc

Issue 2173783002: Adds visual viewport size override to DevTools Emulation protocol. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <tuple> 7 #include <tuple>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 ResizeParams params; 494 ResizeParams params;
495 params.screen_info.deviceScaleFactor = dsf; 495 params.screen_info.deviceScaleFactor = dsf;
496 params.new_size = gfx::Size(100, 100); 496 params.new_size = gfx::Size(100, 100);
497 params.physical_backing_size = gfx::Size(200, 200); 497 params.physical_backing_size = gfx::Size(200, 200);
498 params.visible_viewport_size = params.new_size; 498 params.visible_viewport_size = params.new_size;
499 params.needs_resize_ack = false; 499 params.needs_resize_ack = false;
500 view()->OnResize(params); 500 view()->OnResize(params);
501 ASSERT_EQ(dsf, view()->device_scale_factor_); 501 ASSERT_EQ(dsf, view()->device_scale_factor_);
502 } 502 }
503 503
504 void TestEmulatedSizeDprDsf(int width, int height, float dpr, 504 void TestEmulatedSizeDprDsf(int width,
505 int height,
506 int visual_viewport_width,
507 int visual_viewport_height,
508 float dpr,
505 float compositor_dsf) { 509 float compositor_dsf) {
506 static base::string16 get_width = 510 static base::string16 get_width = base::ASCIIToUTF16(
511 "Number(document.getElementById('layoutViewportDiv').clientWidth)");
512 static base::string16 get_height = base::ASCIIToUTF16(
513 "Number(document.getElementById('layoutViewportDiv').clientHeight)");
514 static base::string16 get_visual_width =
507 base::ASCIIToUTF16("Number(window.innerWidth)"); 515 base::ASCIIToUTF16("Number(window.innerWidth)");
508 static base::string16 get_height = 516 static base::string16 get_visual_height =
509 base::ASCIIToUTF16("Number(window.innerHeight)"); 517 base::ASCIIToUTF16("Number(window.innerHeight)");
510 static base::string16 get_dpr = 518 static base::string16 get_dpr =
511 base::ASCIIToUTF16("Number(window.devicePixelRatio * 10)"); 519 base::ASCIIToUTF16("Number(window.devicePixelRatio * 10)");
512 520
513 int emulated_width, emulated_height; 521 int emulated_width, emulated_height;
522 int emulated_visual_width, emulated_visual_height;
514 int emulated_dpr; 523 int emulated_dpr;
515 blink::WebDeviceEmulationParams params; 524 blink::WebDeviceEmulationParams params;
516 params.viewSize.width = width; 525 params.viewSize.width = width;
517 params.viewSize.height = height; 526 params.viewSize.height = height;
527 params.visualViewportSize.width = visual_viewport_width;
528 params.visualViewportSize.height = visual_viewport_height;
518 params.deviceScaleFactor = dpr; 529 params.deviceScaleFactor = dpr;
519 view()->OnEnableDeviceEmulation(params); 530 view()->OnEnableDeviceEmulation(params);
531 ProcessPendingMessages();
520 EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_width, &emulated_width)); 532 EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_width, &emulated_width));
521 EXPECT_EQ(width, emulated_width); 533 EXPECT_EQ(width, emulated_width);
522 EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_height, 534 EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_height,
523 &emulated_height)); 535 &emulated_height));
524 EXPECT_EQ(height, emulated_height); 536 EXPECT_EQ(height, emulated_height);
537 EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_visual_width,
538 &emulated_visual_width));
539 EXPECT_EQ(visual_viewport_width > 0 ? visual_viewport_width : width,
540 emulated_visual_width);
541 EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_visual_height,
542 &emulated_visual_height));
543 EXPECT_EQ(visual_viewport_height > 0 ? visual_viewport_height : height,
544 emulated_visual_height);
525 EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_dpr, &emulated_dpr)); 545 EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_dpr, &emulated_dpr));
526 EXPECT_EQ(static_cast<int>(dpr * 10), emulated_dpr); 546 EXPECT_EQ(static_cast<int>(dpr * 10), emulated_dpr);
527 EXPECT_EQ(compositor_dsf, 547 EXPECT_EQ(compositor_dsf,
528 view()->compositor()->layer_tree_host()->device_scale_factor()); 548 view()->compositor()->layer_tree_host()->device_scale_factor());
529 } 549 }
530 }; 550 };
531 551
532 // Ensure that the main RenderFrame is deleted and cleared from the RenderView 552 // Ensure that the main RenderFrame is deleted and cleared from the RenderView
533 // after closing it. 553 // after closing it.
534 TEST_F(RenderViewImplTest, RenderFrameClearedAfterClose) { 554 TEST_F(RenderViewImplTest, RenderFrameClearedAfterClose) {
(...skipping 1687 matching lines...) Expand 10 before | Expand all | Expand 10 after
2222 EXPECT_EQ(20, rect.x); 2242 EXPECT_EQ(20, rect.x);
2223 EXPECT_EQ(10, rect.y); 2243 EXPECT_EQ(10, rect.y);
2224 EXPECT_EQ(200, rect.width); 2244 EXPECT_EQ(200, rect.width);
2225 EXPECT_EQ(100, rect.height); 2245 EXPECT_EQ(100, rect.height);
2226 } 2246 }
2227 2247
2228 TEST_F(RenderViewImplScaleFactorTest, ScreenMetricsEmulationWithOriginalDSF1) { 2248 TEST_F(RenderViewImplScaleFactorTest, ScreenMetricsEmulationWithOriginalDSF1) {
2229 DoSetUp(); 2249 DoSetUp();
2230 SetDeviceScaleFactor(1.f); 2250 SetDeviceScaleFactor(1.f);
2231 2251
2232 LoadHTML("<body style='min-height:1000px;'></body>"); 2252 LoadHTML(
2253 "<body style='min-height:1000px; overflow:hidden; margin:0px;'>"
2254 "<div id='layoutViewportDiv' style='width:100%; height:100%;'></div>"
2255 "</body>");
2233 { 2256 {
2234 SCOPED_TRACE("327x415 1dpr"); 2257 SCOPED_TRACE("327x415 1dpr");
2235 TestEmulatedSizeDprDsf(327, 415, 1.f, 1.f); 2258 TestEmulatedSizeDprDsf(327, 415, 0, 0, 1.f, 1.f);
2236 } 2259 }
2237 { 2260 {
2238 SCOPED_TRACE("327x415 1.5dpr"); 2261 SCOPED_TRACE("327x415 1.5dpr");
2239 TestEmulatedSizeDprDsf(327, 415, 1.5f, 1.f); 2262 TestEmulatedSizeDprDsf(327, 415, 0, 0, 1.5f, 1.f);
2240 } 2263 }
2241 { 2264 {
2242 SCOPED_TRACE("1005x1102 2dpr"); 2265 SCOPED_TRACE("1005x1102 2dpr");
2243 TestEmulatedSizeDprDsf(1005, 1102, 2.f, 1.f); 2266 TestEmulatedSizeDprDsf(1005, 1102, 0, 0, 2.f, 1.f);
2244 } 2267 }
2245 { 2268 {
2246 SCOPED_TRACE("1005x1102 3dpr"); 2269 SCOPED_TRACE("1005x1102 3dpr");
2247 TestEmulatedSizeDprDsf(1005, 1102, 3.f, 1.f); 2270 TestEmulatedSizeDprDsf(1005, 1102, 0, 0, 3.f, 1.f);
2271 }
2272 {
2273 SCOPED_TRACE("654x830 visual 327x415 1dpr");
2274 TestEmulatedSizeDprDsf(654, 830, 327, 415, 1.f, 1.f);
2275 }
2276 {
2277 SCOPED_TRACE("654x830 visual 327x415 2dpr");
2278 TestEmulatedSizeDprDsf(654, 830, 327, 415, 2.f, 1.f);
2248 } 2279 }
2249 2280
2250 view()->OnDisableDeviceEmulation(); 2281 view()->OnDisableDeviceEmulation();
2251 2282
2252 blink::WebDeviceEmulationParams params; 2283 blink::WebDeviceEmulationParams params;
2253 view()->OnEnableDeviceEmulation(params); 2284 view()->OnEnableDeviceEmulation(params);
2254 // Don't disable here to test that emulation is being shutdown properly. 2285 // Don't disable here to test that emulation is being shutdown properly.
2255 } 2286 }
2256 2287
2257 TEST_F(RenderViewImplScaleFactorTest, ScreenMetricsEmulationWithOriginalDSF2) { 2288 TEST_F(RenderViewImplScaleFactorTest, ScreenMetricsEmulationWithOriginalDSF2) {
2258 DoSetUp(); 2289 DoSetUp();
2259 SetDeviceScaleFactor(2.f); 2290 SetDeviceScaleFactor(2.f);
2260 float compositor_dsf = 2291 float compositor_dsf =
2261 IsUseZoomForDSFEnabled() ? 1.f : 2.f; 2292 IsUseZoomForDSFEnabled() ? 1.f : 2.f;
2262 2293
2263 LoadHTML("<body style='min-height:1000px;'></body>"); 2294 LoadHTML(
2295 "<body style='min-height:1000px; overflow:hidden; margin:0px;'>"
2296 "<div id='layoutViewportDiv' style='width:100%; height:100%;'></div>"
2297 "</body>");
2264 { 2298 {
2265 SCOPED_TRACE("327x415 1dpr"); 2299 SCOPED_TRACE("327x415 1dpr");
2266 TestEmulatedSizeDprDsf(327, 415, 1.f, compositor_dsf); 2300 TestEmulatedSizeDprDsf(327, 415, 0, 0, 1.f, compositor_dsf);
2267 } 2301 }
2268 { 2302 {
2269 SCOPED_TRACE("327x415 1.5dpr"); 2303 SCOPED_TRACE("327x415 1.5dpr");
2270 TestEmulatedSizeDprDsf(327, 415, 1.5f, compositor_dsf); 2304 TestEmulatedSizeDprDsf(327, 415, 0, 0, 1.5f, compositor_dsf);
2271 } 2305 }
2272 { 2306 {
2273 SCOPED_TRACE("1005x1102 2dpr"); 2307 SCOPED_TRACE("1005x1102 2dpr");
2274 TestEmulatedSizeDprDsf(1005, 1102, 2.f, compositor_dsf); 2308 TestEmulatedSizeDprDsf(1005, 1102, 0, 0, 2.f, compositor_dsf);
2275 } 2309 }
2276 { 2310 {
2277 SCOPED_TRACE("1005x1102 3dpr"); 2311 SCOPED_TRACE("1005x1102 3dpr");
2278 TestEmulatedSizeDprDsf(1005, 1102, 3.f, compositor_dsf); 2312 TestEmulatedSizeDprDsf(1005, 1102, 0, 0, 3.f, compositor_dsf);
2313 }
2314 {
2315 SCOPED_TRACE("654x830 visual 327x415 1dpr");
2316 TestEmulatedSizeDprDsf(654, 830, 327, 415, 1.f, compositor_dsf);
2317 }
2318 {
2319 SCOPED_TRACE("654x830 visual 327x415 2dpr");
2320 TestEmulatedSizeDprDsf(654, 830, 327, 415, 2.f, compositor_dsf);
2279 } 2321 }
2280 2322
2281 view()->OnDisableDeviceEmulation(); 2323 view()->OnDisableDeviceEmulation();
2282 2324
2283 blink::WebDeviceEmulationParams params; 2325 blink::WebDeviceEmulationParams params;
2284 view()->OnEnableDeviceEmulation(params); 2326 view()->OnEnableDeviceEmulation(params);
2285 // Don't disable here to test that emulation is being shutdown properly. 2327 // Don't disable here to test that emulation is being shutdown properly.
2286 } 2328 }
2287 2329
2288 TEST_F(RenderViewImplScaleFactorTest, ConverViewportToWindowWithZoomForDSF) { 2330 TEST_F(RenderViewImplScaleFactorTest, ConverViewportToWindowWithZoomForDSF) {
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
2496 ExpectPauseAndResume(3); 2538 ExpectPauseAndResume(3);
2497 blink::WebScriptSource source2( 2539 blink::WebScriptSource source2(
2498 WebString::fromUTF8("function func2() { func1(); }; func2();")); 2540 WebString::fromUTF8("function func2() { func1(); }; func2();"));
2499 frame()->GetWebFrame()->executeScriptInIsolatedWorld(17, &source2, 1, 1); 2541 frame()->GetWebFrame()->executeScriptInIsolatedWorld(17, &source2, 1, 1);
2500 2542
2501 EXPECT_FALSE(IsPaused()); 2543 EXPECT_FALSE(IsPaused());
2502 Detach(); 2544 Detach();
2503 } 2545 }
2504 2546
2505 } // namespace content 2547 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698