summaryrefslogtreecommitdiffstats
path: root/devtools/shared/webconsole/test/chrome/test_file_uri.html
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/shared/webconsole/test/chrome/test_file_uri.html')
-rw-r--r--devtools/shared/webconsole/test/chrome/test_file_uri.html114
1 files changed, 114 insertions, 0 deletions
diff --git a/devtools/shared/webconsole/test/chrome/test_file_uri.html b/devtools/shared/webconsole/test/chrome/test_file_uri.html
new file mode 100644
index 0000000000..8582a23091
--- /dev/null
+++ b/devtools/shared/webconsole/test/chrome/test_file_uri.html
@@ -0,0 +1,114 @@
+<!DOCTYPE HTML>
+<html lang="en">
+<head>
+ <meta charset="utf8">
+ <title>Test for file activity tracking</title>
+ <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" 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">
+"use strict";
+
+SimpleTest.waitForExplicitFinish();
+
+const {NetUtil} = ChromeUtils.importESModule(
+ "resource://gre/modules/NetUtil.sys.mjs"
+);
+const {FileUtils} = ChromeUtils.importESModule(
+ "resource://gre/modules/FileUtils.sys.mjs"
+);
+
+let gState;
+let gTmpFile;
+
+function doFileActivity()
+{
+ info("doFileActivity");
+ const fileContent = "<p>hello world from bug 798764";
+
+ gTmpFile = new FileUtils.File(PathUtils.join(PathUtils.tempDir, "bug798764.html"));
+ gTmpFile.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE);
+
+ const fout = FileUtils.openSafeFileOutputStream(gTmpFile,
+ FileUtils.MODE_WRONLY | FileUtils.MODE_CREATE | FileUtils.MODE_TRUNCATE);
+
+ const stream = Cc[
+ "@mozilla.org/io/arraybuffer-input-stream;1"
+ ].createInstance(Ci.nsIArrayBufferInputStream);
+ const buffer = new TextEncoder().encode(fileContent).buffer;
+ stream.setData(buffer, 0, buffer.byteLength);
+ NetUtil.asyncCopy(stream, fout, addIframe);
+}
+
+function addIframe(aStatus)
+{
+ ok(Components.isSuccessCode(aStatus),
+ "the temporary file was saved successfully");
+
+ const iframe = document.createElement("iframe");
+ iframe.src = NetUtil.newURI(gTmpFile).spec;
+ document.body.appendChild(iframe);
+}
+
+async function startTest()
+{
+ removeEventListener("load", startTest);
+
+ const {state} = await attachConsole(["FileActivity"]);
+ onAttach(state);
+}
+
+function onAttach(aState)
+{
+ gState = aState;
+ gState.webConsoleFront.on("fileActivity", onFileActivity);
+ doFileActivity();
+}
+
+function onFileActivity(aPacket)
+{
+ gState.webConsoleFront.off("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") {
+ throw ex;
+ }
+ // 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>