Commit a483b6f5 authored by Istiaque Ahmed's avatar Istiaque Ahmed Committed by Commit Bot

[Extensions] Use fetch in PermissionsApiTest.OptionalPermissions* tests.

This CL changes PermissionsApiTest.OptionalPermissions and
PermissionsApiTest.OptionalPermissionsAutoConfirm tests to use fetch API
instead of XHR.

This CL also defers removeOrigin() sub-test's permission removal to
after the first request/fetch's completion:
  - This makes the test "theoretically" correct, as the permission
    should not be removed before the first request/fetch is issued.
  - This ensures that the test is correct after it uses fetch API.
    This is probably because fetch is async (compared to XHR).

This CL will let SW based version of these tests easy to implement.

Bug: None
Test: None
Change-Id: I139888953f30f0430d558ccce3cd9331af624fb4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2516391Reviewed-by: default avatarDavid Bertoni <dbertoni@chromium.org>
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#823743}
parent b0854562
......@@ -53,29 +53,32 @@ function checkPermSetsEq(set1, set2) {
checkEqualSets(set1.origins, set2.origins);
}
function checkResponse(response) {
if (response.ok) {
assertEq(200, response.status);
return response;
}
var error = new Error(response.statusText);
error.response = response;
throw error;
}
chrome.test.getConfig(function(config) {
function doReq(domain, callback) {
var req = new XMLHttpRequest();
var url = domain + ":PORT/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);
fetch(url, {mode: 'no-cors'}).then(checkResponse)
.then(function(response) {
return response.text();
}).then(function(responseText) {
assertEq("Hello!", responseText);
callback(true);
}).catch(function(error) {
callback(false);
});
}
chrome.test.runTests([
......@@ -231,25 +234,27 @@ chrome.test.getConfig(function(config) {
},
function removeOrigin() {
doReq('http://c.com', pass(function(result) { assertTrue(result); }));
listenOnce(chrome.permissions.onRemoved,
function(permissions) {
assertTrue(permissions.permissions.length == 0);
assertTrue(permissions.origins.length == 1);
assertTrue(permissions.origins[0] == 'http://*.c.com/*');
});
chrome.permissions.remove(
{origins: ['http://*.c.com/*']},
pass(function(removed) {
assertTrue(removed);
chrome.permissions.getAll(pass(function(permissions) {
assertTrue(checkPermSetsEq(initialPermissions, permissions));
doReq('http://c.com', pass(function(result) {
assertTrue(result);
listenOnce(chrome.permissions.onRemoved,
function(permissions) {
assertTrue(permissions.permissions.length == 0);
assertTrue(permissions.origins.length == 1);
assertTrue(permissions.origins[0] == 'http://*.c.com/*');
});
chrome.permissions.remove(
{origins: ['http://*.c.com/*']},
pass(function(removed) {
assertTrue(removed);
chrome.permissions.getAll(pass(function(permissions) {
assertTrue(checkPermSetsEq(initialPermissions, permissions));
}));
chrome.permissions.contains(
{origins:['http://*.c.com/*']},
pass(function(result) { assertFalse(result); }));
doReq('http://c.com',
pass(function(result) { assertFalse(result); }));
}));
chrome.permissions.contains(
{origins:['http://*.c.com/*']},
pass(function(result) { assertFalse(result); }));
doReq('http://c.com', pass(function(result) { assertFalse(result); }));
}));
},
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment