Index: chrome/test/data/extensions/api_test/permissions/optional_deny/background.js |
=================================================================== |
--- chrome/test/data/extensions/api_test/permissions/optional_deny/background.js (revision 0) |
+++ chrome/test/data/extensions/api_test/permissions/optional_deny/background.js (revision 0) |
@@ -0,0 +1,65 @@ |
+// Copyright (c) 2011 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 assertFalse = chrome.test.assertFalse; |
+var assertTrue = chrome.test.assertTrue; |
+var pass = chrome.test.callbackPass; |
+ |
+var NO_TABS_PERMISSION = |
+ "You do not have permission to use 'windows.getAll'."; |
+ |
+chrome.test.getConfig(function(config) { |
+ |
+ function doReq(domain, callback) { |
+ var req = new XMLHttpRequest(); |
+ var url = domain + ":PORT/files/extensions/test_file.txt"; |
+ url = url.replace(/PORT/, config.testServer.port); |
+ |
+ chrome.test.log("Requesting url: " + url); |
+ req.open("GET", url, true); |
+ |
+ req.onload = function() { |
+ assertEq(200, req.status); |
+ assertEq("Hello!", req.responseText); |
+ callback(true); |
+ }; |
+ |
+ req.onerror = function() { |
+ chrome.test.log("status: " + req.status); |
+ chrome.test.log("text: " + req.responseText); |
+ callback(false); |
+ }; |
+ |
+ req.send(null); |
+ } |
+ |
+ chrome.test.runTests([ |
+ function denyRequest() { |
+ chrome.permissions.request( |
+ {permissions: ['tabs'], origins: ['http://*.c.com/*']}, |
+ pass(function(granted) { |
+ // They were not granted, and there should be no error. |
+ assertFalse(granted); |
+ assertTrue(chrome.extension.lastError === undefined); |
+ |
+ // Make sure they weren't granted... |
+ chrome.permissions.contains( |
+ {permissions: ['tabs'], origins:['http://*.c.com/*']}, |
+ pass(function(result) { assertFalse(result); })); |
+ |
+ try { |
+ chrome.windows.getAll({populate: true}, function() { |
+ chrome.test.fail("Should not have tabs API permission."); |
+ }); |
+ } catch (e) { |
+ assertTrue(e.message.indexOf(NO_TABS_PERMISSION) == 0); |
+ } |
+ |
+ doReq('http://b.c.com/', pass(function(result) { |
+ assertFalse(result); |
+ })); |
+ })); |
+ } |
+ ]); |
+}); |