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

Unified Diff: chrome/test/data/extensions/api_test/automation/tests/location_scaled/location_scaled.js

Issue 2911553002: Fix automation API bounding boxes on high-dpi devices (Closed)
Patch Set: Add comment about mutating cache Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/extensions/api_test/automation/tests/location_scaled/location_scaled.js
diff --git a/chrome/test/data/extensions/api_test/automation/tests/location_scaled/location_scaled.js b/chrome/test/data/extensions/api_test/automation/tests/location_scaled/location_scaled.js
new file mode 100644
index 0000000000000000000000000000000000000000..864ee3182a82e3d9871526e43c5caf3fd46b4e95
--- /dev/null
+++ b/chrome/test/data/extensions/api_test/automation/tests/location_scaled/location_scaled.js
@@ -0,0 +1,57 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+var assertTrue = chrome.test.assertTrue;
+
+var EventType = chrome.automation.EventType;
+
+// These tests are run with a device scale factor of 2.0, but all of the
+// coordinates we get from the automation API should be with no device
+// scale factor applied.
+//
+// Note that internally, the device scale factor is applied to web trees,
+// but not to the desktop tree, so we want to make sure that that's properly
+// taken into account when converting from relative coordinates to global
+// device-independent coordinates.
+var allTests = [
+ function testLocationInWebView() {
+ rootNode.addEventListener(EventType.LOAD_COMPLETE, function() {
+ var firstButton = rootNode.find({ attributes: { name: 'First' } });
+ var secondButton = rootNode.find({ attributes: { name: 'Second' } });
+ if (firstButton && secondButton) {
+ var firstRect = firstButton.location;
+ var secondRect = secondButton.location;
+
+ // The first button should be at (50, 150) with a size of (200, 100).
+ // Allow one pixel off for rounding errors.
+ assertTrue(Math.abs(firstRect.left - 50) <= 1);
+ assertTrue(Math.abs(firstRect.top - 150) <= 1);
+ assertTrue(Math.abs(firstRect.width - 200) <= 1);
+ assertTrue(Math.abs(firstRect.height - 100) <= 1);
+
+ // The second button should be exactly 225 x 25 pixels offset from
+ // the first button.
+ assertTrue(Math.abs(secondRect.left - firstRect.left - 225) <= 1);
+ assertTrue(Math.abs(secondRect.top - firstRect.top - 25) <= 1);
+ assertTrue(Math.abs(secondRect.width - 200) <= 1);
+ assertTrue(Math.abs(secondRect.height - 100) <= 1);
+ chrome.test.succeed();
+ }
+ }, false);
+
+ chrome.app.window.create('buttons.html', {
+ 'innerBounds': {
+ 'left': 50,
+ 'top': 150,
+ 'width': 400,
+ 'height': 400
+ }
+ });
+ }
+];
+
+chrome.automation.getDesktop(function(rootNodeArg) {
+ window.rootNode = rootNodeArg;
+ chrome.test.runTests(allTests);
+});

Powered by Google App Engine
This is Rietveld 408576698