browser_bug1104623.js (1694B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 function whenBrowserLoaded(aBrowser, aCallback) { 6 aBrowser.addEventListener( 7 "load", 8 function onLoad(event) { 9 if (event.target == aBrowser.contentDocument) { 10 aBrowser.removeEventListener("load", onLoad, true); 11 executeSoon(aCallback); 12 } 13 }, 14 true 15 ); 16 } 17 18 function test() { 19 waitForExplicitFinish(); 20 21 let testURL = 22 "chrome://mochitests/content/chrome/dom/base/test/file_empty.html"; 23 24 let tab = BrowserTestUtils.addTab(gBrowser, testURL); 25 gBrowser.selectedTab = tab; 26 27 whenBrowserLoaded(tab.linkedBrowser, function () { 28 let doc = tab.linkedBrowser.contentDocument; 29 let contentWin = tab.linkedBrowser.contentWindow; 30 31 let blob = new contentWin.Blob([ 32 "onmessage = function() { postMessage(true); }", 33 ]); 34 ok(blob, "Blob has been created"); 35 36 let blobURL = contentWin.URL.createObjectURL(blob); 37 ok(blobURL, "Blob URL has been created"); 38 39 let worker = new contentWin.Worker(blobURL); 40 ok(worker, "Worker has been created"); 41 42 worker.onerror = function (error) { 43 ok(false, "Worker.onerror:" + error.message); 44 worker.terminate(); 45 contentWin.URL.revokeObjectURL(blob); 46 gBrowser.removeTab(tab); 47 executeSoon(finish); 48 }; 49 50 worker.onmessage = function () { 51 ok(true, "Worker.onmessage"); 52 worker.terminate(); 53 contentWin.URL.revokeObjectURL(blob); 54 gBrowser.removeTab(tab); 55 executeSoon(finish); 56 }; 57 58 worker.postMessage(true); 59 }); 60 }