Index: chrome/test/data/extensions/platform_apps/web_view/geolocation/cancel_request/embedder.js |
diff --git a/chrome/test/data/extensions/platform_apps/web_view/geolocation/embedder_has_no_permission/embedder.js b/chrome/test/data/extensions/platform_apps/web_view/geolocation/cancel_request/embedder.js |
similarity index 60% |
copy from chrome/test/data/extensions/platform_apps/web_view/geolocation/embedder_has_no_permission/embedder.js |
copy to chrome/test/data/extensions/platform_apps/web_view/geolocation/cancel_request/embedder.js |
index e9d56bf119fada9f590e93fd4aee4654da98117a..747270489bdb06f39847076c5c921585d654220b 100644 |
--- a/chrome/test/data/extensions/platform_apps/web_view/geolocation/embedder_has_no_permission/embedder.js |
+++ b/chrome/test/data/extensions/platform_apps/web_view/geolocation/cancel_request/embedder.js |
@@ -3,15 +3,19 @@ |
// found in the LICENSE file. |
var embedder = {}; |
-embedder.tests = {}; |
embedder.baseGuestURL = ''; |
embedder.guestURL = ''; |
+embedder.iframeURL = ''; |
-embedder.setUp = function(config) { |
+/** @private */ |
+embedder.setUp_ = function(config) { |
embedder.baseGuestURL = 'http://localhost:' + config.testServer.port; |
embedder.guestURL = embedder.baseGuestURL + |
'/files/extensions/platform_apps/web_view/geolocation' + |
- '/geolocation_access_guest.html'; |
+ '/cancel_request/pages/guest.html'; |
+ embedder.iframeURL = embedder.baseGuestURL + |
+ '/files/extensions/platform_apps/web_view/geolocation' + |
+ '/cancel_request/pages/iframe.html'; |
chrome.test.log('Guest url is: ' + embedder.guestURL); |
}; |
@@ -23,21 +27,29 @@ embedder.setUpGuest_ = function() { |
'></webview>'; |
var webview = document.querySelector('webview'); |
if (!webview) { |
- chrome.test.fail('No <webview> element created'); |
+ chrome.test.fail(); |
} |
return webview; |
}; |
/** @private */ |
-embedder.setUpLoadStop_ = function(webview, testName) { |
- var onWebViewLoadStop = function(e) { |
+embedder.setUpLoadCommit_ = function(webview, testName, opt_iframeURL) { |
+ var onWebViewLoadCommit = function(e) { |
+ if (!e.isTopLevel) { |
+ return; |
+ } |
// Send post message to <webview> when it's ready to receive them. |
- webview.contentWindow.postMessage( |
- JSON.stringify(['check-geolocation-permission', '' + testName]), '*'); |
+ var msgArray = [ |
+ 'test-cancel-geolocation', |
+ '' + testName, |
+ embedder.iframeURL |
+ ]; |
+ webview.contentWindow.postMessage(JSON.stringify(msgArray), '*'); |
}; |
- webview.addEventListener('loadstop', onWebViewLoadStop); |
+ webview.addEventListener('loadcommit', onWebViewLoadCommit); |
}; |
+ |
/** @private */ |
embedder.registerAndWaitForPostMessage_ = function( |
webview, expectedData) { |
@@ -63,49 +75,33 @@ embedder.assertCorrectEvent_ = function(e) { |
chrome.test.assertFalse('userGesture' in e); |
}; |
-// Tests begin. |
- |
-// Embedder does not have geolocation permission, so geolocation access is |
-// always denied for these tests. |
- |
-// Calling deny() results in deny. |
-embedder.tests.testDenyDenies = function testDenyDenies() { |
- var webview = embedder.setUpGuest_(); |
- |
- var onPermissionRequest = function(e) { |
- chrome.test.log('Embedder notified on permissionRequest'); |
- embedder.assertCorrectEvent_(e); |
- e.request.deny(); |
- }; |
- webview.addEventListener('permissionrequest', onPermissionRequest); |
+var g_requestObject; |
- embedder.setUpLoadStop_(webview, 'test1'); |
- embedder.registerAndWaitForPostMessage_( |
- webview, ['test1', 'access-denied']); |
-}; |
+// Tests begin. |
-// Calling allow() results in deny too. |
-embedder.tests.testAllowDenies = function testAllowDenies() { |
+// Tests CancelGeolocationPermission code path. |
+function testCancelGeolocationInIFrame() { |
var webview = embedder.setUpGuest_(); |
var onPermissionRequest = function(e) { |
chrome.test.log('Embedder notified on permissionRequest'); |
embedder.assertCorrectEvent_(e); |
- e.request.allow(); |
+ e.preventDefault(); |
+ // keep a reference to request object so the permission keeps hanging. |
+ g_requestObject = e.request; |
}; |
webview.addEventListener('permissionrequest', onPermissionRequest); |
- embedder.setUpLoadStop_(webview, 'test2'); |
+ embedder.setUpLoadCommit_(webview, 'test1'); |
embedder.registerAndWaitForPostMessage_( |
- webview, ['test2', 'access-denied']); |
-}; |
+ webview, ['test1', 'PASSED']); |
+} |
onload = function() { |
chrome.test.getConfig(function(config) { |
- embedder.setUp(config); |
+ embedder.setUp_(config); |
chrome.test.runTests([ |
- embedder.tests.testDenyDenies, |
- embedder.tests.testAllowDenies |
+ testCancelGeolocationInIFrame, |
]); |
}); |
}; |