diff --git a/lib/travis/api/app/endpoint/authorization.rb b/lib/travis/api/app/endpoint/authorization.rb index 205418af..d5347ee3 100644 --- a/lib/travis/api/app/endpoint/authorization.rb +++ b/lib/travis/api/app/endpoint/authorization.rb @@ -104,7 +104,7 @@ class Travis::Api::App # Example usage: # # window.addEventListener("message", function(event) { - # alert("received token: " + event.data.token); + # console.log("received token: " + event.data.token); # }); # # var iframe = $('').hide(); @@ -256,7 +256,7 @@ __END__ @@ invalid_target @@ container @@ -264,9 +264,11 @@ alert('refusing to send a token to <%= target_origin.inspect %>, not whitelisted
@@ -298,6 +323,13 @@ function uberParent(win) { return win.parent === win ? win : uberParent(win.parent); } +function tellEveryone(msg, win) { + if(win == undefined) win = window; + win.postMessage(msg, '*'); + if(win.parent != win) tellEveryone(msg, win.parent); + if(win.opener) tellEveryone(msg, win.opener); +} + function sendPayload(win) { var payload = <%= user.to_json %>; payload.token = <%= token.inspect %>; @@ -309,6 +341,7 @@ if(window.parent == window) { sendPayload(window.opener); window.close(); } else { + tellEveryone('done'); sendPayload(window.parent); }