Index: third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html |
diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/clients-matchall-include-uncontrolled.html b/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html |
similarity index 74% |
copy from third_party/WebKit/LayoutTests/http/tests/serviceworker/clients-matchall-include-uncontrolled.html |
copy to third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html |
index 1398a878ff0ca24558a819e8a21aaec76587c519..9285aef970fc2399a52ccb645f1dab3ce8d2a7c6 100644 |
--- a/third_party/WebKit/LayoutTests/http/tests/serviceworker/clients-matchall-include-uncontrolled.html |
+++ b/third_party/WebKit/LayoutTests/imported/wpt/service-workers/service-worker/clients-matchall-include-uncontrolled.https.html |
@@ -1,23 +1,29 @@ |
<!DOCTYPE html> |
<title>Service Worker: Clients.matchAll with includeUncontrolled</title> |
-<script src="../resources/testharness.js"></script> |
-<script src="../resources/testharnessreport.js"></script> |
-<script src="resources/test-helpers.js"></script> |
+<script src="/resources/testharness.js"></script> |
+<script src="/resources/testharnessreport.js"></script> |
+<script src="resources/test-helpers.sub.js"></script> |
<script> |
var base_url = 'resources/blank.html'; // This is out-of-scope. |
var scope = base_url + '?clients-matchAll-includeUncontrolled'; |
+var frames = []; |
// Creates 3 iframes, 2 for in-scope and 1 for out-of-scope. |
// The frame opened for scope + '#2' is returned via a promise. |
-// FIXME: remove iframes when the test finishes. |
function create_iframes(scope) { |
return with_iframe(base_url) |
.then(function(frame0) { |
+ frames.push(frame0); |
return with_iframe(scope + '#1'); |
}) |
.then(function(frame1) { |
+ frames.push(frame1); |
return with_iframe(scope + '#2'); |
- }); |
+ }) |
+ .then(function(frame2) { |
+ frames.push(frame2); |
+ return frame2; |
+ }) |
} |
var expected_without_include_uncontrolled = [ |
@@ -28,10 +34,10 @@ var expected_without_include_uncontrolled = [ |
var expected_with_include_uncontrolled = [ |
/* visibilityState, focused, url, frameType */ |
+ ['visible', true, location.href, 'top-level'], |
['visible', false, new URL(scope + '#1', location).toString(), 'nested'], |
['visible', true, new URL(scope + '#2', location).toString(), 'nested'], |
- ['visible', false, new URL(base_url, location).toString(), 'nested'], |
- ['visible', true, location.href, 'top-level'] |
+ ['visible', false, new URL(base_url, location).toString(), 'nested'] |
]; |
function test_matchall(frame, expected, query_options) { |
@@ -42,10 +48,16 @@ function test_matchall(frame, expected, query_options) { |
return new Promise(function(resolve, reject) { |
var channel = new MessageChannel(); |
channel.port1.onmessage = function(e) { |
- e.data.sort(function(a, b) { return a[2] > b[2] ? 1 : -1; }); |
- assert_equals(e.data.length, expected.length); |
- for (var i = 0; i < e.data.length; i++) |
- assert_array_equals(e.data[i], expected[i]); |
+ // Ignore hidden clients which may be coming from background tabs, or |
+ // clients unrelated to this test. |
+ var data = e.data.filter(function(info) { |
+ return info[0] == 'visible' && |
+ info[2].indexOf('service-worker') > -1; |
+ }); |
+ data.sort(function(a, b) { return a[2] > b[2] ? 1 : -1; }); |
+ assert_equals(data.length, expected.length); |
+ for (var i = 0; i < data.length; i++) |
+ assert_array_equals(data[i], expected[i]); |
resolve(frame); |
}; |
frame.contentWindow.navigator.serviceWorker.controller.postMessage( |
@@ -72,6 +84,7 @@ async_test(function(t) { |
{includeUncontrolled:true}); |
}) |
.then(function() { |
+ frames.forEach(function(f) { f.remove() }); |
service_worker_unregister_and_done(t, scope); |
}) |
.catch(unreached_rejection(t)); |