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

Unified Diff: third_party/WebKit/LayoutTests/fast/dom/Geolocation/script-tests/cached-position-called-once.js

Issue 1948033003: Convert most geolocation layout tests to use a JS mock implementation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permission-disconnect
Patch Set: Created 4 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: third_party/WebKit/LayoutTests/fast/dom/Geolocation/script-tests/cached-position-called-once.js
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Geolocation/script-tests/cached-position-called-once.js b/third_party/WebKit/LayoutTests/fast/dom/Geolocation/script-tests/cached-position-called-once.js
index 41b7d0a6d164d9a2fe2e5bd6b46c72b8ced64a91..8f9862b9af19fecd1829d2be87d561b2d252510e 100644
--- a/third_party/WebKit/LayoutTests/fast/dom/Geolocation/script-tests/cached-position-called-once.js
+++ b/third_party/WebKit/LayoutTests/fast/dom/Geolocation/script-tests/cached-position-called-once.js
@@ -1,14 +1,12 @@
description('Tests that when a cached position is available the callback for getCurrentPosition is called only once. This is a regression test for http://crbug.com/311876 .');
-if (!window.testRunner || !window.internals)
- debug('This test can not run without testRunner or internals');
-
-internals.setGeolocationClientMock(document);
-internals.setGeolocationPosition(document, 31.478, -0.166, 100);
-internals.setGeolocationPermission(document, true);
+if (!window.testRunner || !window.mojo)
+ debug('This test can not run without testRunner or mojo');
// Only one success callback should be reported per call to getCurrentPosition.
var reportCount = 0;
+var isSuccess;
+
function reportCallback(success, id) {
isSuccess = success;
shouldBeTrue('isSuccess');
@@ -34,11 +32,22 @@ function getPosition(milliseconds) {
setTimeout(fn, milliseconds);
}
-// The test terminates at the 3rd reported callback. If the bug still exists
-// this happens after the 2nd call to getCurrentPosition, one of them is a
-// repeat of the first.
-getPosition(0);
-getPosition(100);
-getPosition(200);
+geolocationServiceMock.then(mock => {
+ mock.setGeolocationPosition(31.478, -0.166, 100);
+ mock.setGeolocationPermission(true);
+
+ // Make a geolocation request to populate the cached value so requests with a
+ // timeout of 0 can succeed.
+ navigator.geolocation.getCurrentPosition(function(position) {
+ // The test terminates at the 3rd reported callback. If the bug still exists
+ // this happens after the 2nd call to getCurrentPosition, one of them is a
+ // repeat of the first.
+ getPosition(0);
+ getPosition(100);
+ getPosition(200);
+ }, function(error) {
+ testFailed('Error callback invoked unexpectedly');
+ });
+});
window.jsTestIsAsync = true;

Powered by Google App Engine
This is Rietveld 408576698