<!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf8"> <title>Test for file activity tracking</title> <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> <script type="text/javascript;version=1.8" src="common.js"></script> <!-- Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ --> </head> <body> <p>Test for file activity tracking</p> <script class="testbody" type="text/javascript;version=1.8"> SimpleTest.waitForExplicitFinish(); Cu.import("resource://gre/modules/NetUtil.jsm"); Cu.import("resource://gre/modules/FileUtils.jsm"); let gState; let gTmpFile; function doFileActivity() { info("doFileActivity"); let fileContent = "<p>hello world from bug 798764"; gTmpFile = FileUtils.getFile("TmpD", ["bug798764.html"]); gTmpFile.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); let fout = FileUtils.openSafeFileOutputStream(gTmpFile, FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_TRUNCATE); let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]. createInstance(Ci.nsIScriptableUnicodeConverter); converter.charset = "UTF-8"; let fileContentStream = converter.convertToInputStream(fileContent); NetUtil.asyncCopy(fileContentStream, fout, addIframe); } function addIframe(aStatus) { ok(Components.isSuccessCode(aStatus), "the temporary file was saved successfully"); let iframe = document.createElement("iframe"); iframe.src = NetUtil.newURI(gTmpFile).spec; document.body.appendChild(iframe); } function startTest() { removeEventListener("load", startTest); attachConsole(["FileActivity"], onAttach); } function onAttach(aState, aResponse) { gState = aState; gState.dbgClient.addListener("fileActivity", onFileActivity); doFileActivity(); } function onFileActivity(aType, aPacket) { is(aPacket.from, gState.actor, "fileActivity actor"); gState.dbgClient.removeListener("fileActivity", onFileActivity); info("aPacket.uri: " + aPacket.uri); ok(/\bbug798764\b.*\.html$/.test(aPacket.uri), "file URI match"); testEnd(); } function testEnd() { if (gTmpFile) { SimpleTest.executeSoon(function() { try { gTmpFile.remove(false); } catch (ex if (ex.name == "NS_ERROR_FILE_IS_LOCKED")) { // Sometimes remove() throws because the file is not unlocked soon // enough. } gTmpFile = null; }); } if (gState) { closeDebugger(gState, function() { gState = null; SimpleTest.finish(); }); } else { SimpleTest.finish(); } } addEventListener("load", startTest); </script> </body> </html>