1*6777b538SAndroid Build Coastguard Worker<!doctype html> 2*6777b538SAndroid Build Coastguard Worker<title>Observe the connection from a closed tab "Going Away"</title> 3*6777b538SAndroid Build Coastguard Worker<script> 4*6777b538SAndroid Build Coastguard Worker'use strict'; 5*6777b538SAndroid Build Coastguard Worker 6*6777b538SAndroid Build Coastguard Workerlet protocol = location.protocol.replace('http', 'ws'); 7*6777b538SAndroid Build Coastguard Workerlet url = protocol + '//' + location.host + '/close-observer?role=observer'; 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker// Do connection test. 10*6777b538SAndroid Build Coastguard Workerlet ws = new WebSocket(url); 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Workerconst id = setTimeout(() => { 13*6777b538SAndroid Build Coastguard Worker console.log('close_observer.html had timeout'); 14*6777b538SAndroid Build Coastguard Worker document.title = 'FAIL'; 15*6777b538SAndroid Build Coastguard Worker}, 3000); 16*6777b538SAndroid Build Coastguard Worker 17*6777b538SAndroid Build Coastguard Workerws.onmessage = e => { 18*6777b538SAndroid Build Coastguard Worker clearTimeout(id); 19*6777b538SAndroid Build Coastguard Worker console.log('close_observer.html got message: ' + e.data); 20*6777b538SAndroid Build Coastguard Worker document.title = (e.data === 'OK' ? 'PASS' : 'FAIL'); 21*6777b538SAndroid Build Coastguard Worker ws.onclose = null; 22*6777b538SAndroid Build Coastguard Worker} 23*6777b538SAndroid Build Coastguard Worker 24*6777b538SAndroid Build Coastguard Workerws.onclose = () => { 25*6777b538SAndroid Build Coastguard Worker clearTimeout(id); 26*6777b538SAndroid Build Coastguard Worker console.log('close_observer.html saw close with no message'); 27*6777b538SAndroid Build Coastguard Worker document.title = 'FAIL'; 28*6777b538SAndroid Build Coastguard Worker} 29*6777b538SAndroid Build Coastguard Worker 30*6777b538SAndroid Build Coastguard Worker</script> 31