browser/devtools/styleeditor/test/browser_styleeditor_filesave.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* vim: set ts=2 et sw=2 tw=80: */
     2 /* Any copyright is dedicated to the Public Domain.
     3    http://creativecommons.org/publicdomain/zero/1.0/ */
     5 const TESTCASE_URI_HTML = TEST_BASE + "simple.html";
     6 const TESTCASE_URI_CSS = TEST_BASE + "simple.css";
     8 const Cc = Components.classes;
     9 const Ci = Components.interfaces;
    11 let tempScope = {};
    12 Components.utils.import("resource://gre/modules/FileUtils.jsm", tempScope);
    13 Components.utils.import("resource://gre/modules/NetUtil.jsm", tempScope);
    14 let FileUtils = tempScope.FileUtils;
    15 let NetUtil = tempScope.NetUtil;
    17 function test()
    18 {
    19   waitForExplicitFinish();
    21   copy(TESTCASE_URI_HTML, "simple.html", function(htmlFile) {
    22     copy(TESTCASE_URI_CSS, "simple.css", function(cssFile) {
    23       addTabAndOpenStyleEditors(1, function(panel) {
    24         let UI = panel.UI;
    25         let editor = UI.editors[0];
    26         editor.getSourceEditor().then(runTests.bind(this, editor));
    27       });
    29       let uri = Services.io.newFileURI(htmlFile);
    30       let filePath = uri.resolve("");
    31       content.location = filePath;
    32     });
    33   });
    34 }
    36 function runTests(editor)
    37 {
    38   editor.sourceEditor.once("dirty-change", () => {
    39     is(editor.sourceEditor.isClean(), false, "Editor is dirty.");
    40     ok(editor.summary.classList.contains("unsaved"),
    41        "Star icon is present in the corresponding summary.");
    42   });
    43   let beginCursor = {line: 0, ch: 0};
    44   editor.sourceEditor.replaceText("DIRTY TEXT", beginCursor, beginCursor);
    46   editor.sourceEditor.once("dirty-change", () => {
    47     is(editor.sourceEditor.isClean(), true, "Editor is clean.");
    48     ok(!editor.summary.classList.contains("unsaved"),
    49        "Star icon is not present in the corresponding summary.");
    50     finish();
    51   });
    52   editor.saveToFile(null, function (file) {
    53     ok(file, "file should get saved directly when using a file:// URI");
    54   });
    55 }
    57 function copy(aSrcChromeURL, aDestFileName, aCallback)
    58 {
    59   let destFile = FileUtils.getFile("ProfD", [aDestFileName]);
    60   write(read(aSrcChromeURL), destFile, aCallback);
    61 }
    63 function read(aSrcChromeURL)
    64 {
    65   let scriptableStream = Cc["@mozilla.org/scriptableinputstream;1"]
    66     .getService(Ci.nsIScriptableInputStream);
    68   let channel = Services.io.newChannel(aSrcChromeURL, null, null);
    69   let input = channel.open();
    70   scriptableStream.init(input);
    72   let data = "";
    73   while (input.available()) {
    74     data = data.concat(scriptableStream.read(input.available()));
    75   }
    76   scriptableStream.close();
    77   input.close();
    79   return data;
    80 }
    82 function write(aData, aFile, aCallback)
    83 {
    84   let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
    85     .createInstance(Ci.nsIScriptableUnicodeConverter);
    87   converter.charset = "UTF-8";
    89   let istream = converter.convertToInputStream(aData);
    90   let ostream = FileUtils.openSafeFileOutputStream(aFile);
    92   NetUtil.asyncCopy(istream, ostream, function(status) {
    93     if (!Components.isSuccessCode(status)) {
    94       info("Coudln't write to " + aFile.path);
    95       return;
    96     }
    98     aCallback(aFile);
    99   });
   100 }

mercurial