Commit 5a89b9ce authored by Istiaque Ahmed's avatar Istiaque Ahmed Committed by Commit Bot

[Extensions SW] Fix ServiceWorkerTest.WebAccessibleResourcesFetch

For the page that performs fetch, ensure it is controlled by the
service worker before initiating fetch. This is ensured by waiting
for oncontrollerchange event if navigator.serviceWorker.controller
is null. Note that the worker claiming itself and messaging the
page isn't enough, and causes flakiness.

Bug: 1006129
Change-Id: I313bbc79e04bd162c8dbd302b61c9ced446be39f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2207861Reviewed-by: default avatarMakoto Shimazu <shimazu@chromium.org>
Reviewed-by: default avatarDavid Bertoni <dbertoni@chromium.org>
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#770773}
parent 784a8321
......@@ -1223,9 +1223,7 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerTest, NotificationAPI) {
"page.html"));
}
// Flaky (crbug.com/1006129).
IN_PROC_BROWSER_TEST_F(ServiceWorkerTest,
DISABLED_WebAccessibleResourcesFetch) {
IN_PROC_BROWSER_TEST_F(ServiceWorkerTest, WebAccessibleResourcesFetch) {
EXPECT_TRUE(RunExtensionSubtest(
"service_worker/web_accessible_resources/fetch/", "page.html"));
}
......
......@@ -29,6 +29,21 @@ var workerRegisterAndClaimPromise = function() {
};
var workerControlsPagePromise = function() {
return new Promise((resolve) => {
if (navigator.serviceWorker.controller) {
resolve();
return;
}
navigator.serviceWorker.oncontrollerchange = function(e) {
if (navigator.serviceWorker.controller) {
resolve();
return;
}
};
});
};
var fetchWithControlledPagePromise = function() {
return new Promise(function(resolve, reject) {
fetch(getTestURL()).then(function(response) {
return response.text();
......@@ -57,6 +72,8 @@ var test = function() {
}).then(function(registration) {
serviceWorkerRegistration = registration;
return workerControlsPagePromise();
}).then(function() {
return fetchWithControlledPagePromise();
}).then(function() {
return serviceWorkerRegistration.unregister();
}).then(function() {
......
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