self.onmessage = function(e) { var port = e.data.port; var options = e.data.options; self.clients.matchAll(options).then(function(clients) { var message = []; clients.forEach(function(client) { var frame_type = client.frameType; if (client.url.indexOf('clients-matchall-include-uncontrolled.https.html') > -1 && client.frameType == 'auxiliary') { // The test tab might be opened using window.open() by the test framework. // In that case, just pretend it's top-level! frame_type = 'top-level'; } message.push([client.visibilityState, client.focused, client.url, frame_type]); }); // Sort by url message.sort(function(a, b) { return a[2] > b[2] ? 1 : -1; }); port.postMessage(message); }); };