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); |
+}); |