From 5f8de423f190bbb79a62f804151bc24824fa32d8 Mon Sep 17 00:00:00 2001 From: "Matt A. Tobin" Date: Fri, 2 Feb 2018 04:16:08 -0500 Subject: Add m-esr52 at 52.6.0 --- .../chrome/content/projecteditor-loader.js | 176 +++++ .../chrome/content/projecteditor-loader.xul | 26 + .../chrome/content/projecteditor-test.xul | 18 + .../projecteditor/chrome/content/projecteditor.xul | 87 +++ devtools/client/projecteditor/lib/editors.js | 303 ++++++++ devtools/client/projecteditor/lib/helpers/event.js | 86 +++ .../projecteditor/lib/helpers/file-picker.js | 116 +++ devtools/client/projecteditor/lib/helpers/l10n.js | 26 + .../client/projecteditor/lib/helpers/moz.build | 12 + .../client/projecteditor/lib/helpers/prompts.js | 33 + .../client/projecteditor/lib/helpers/readdir.js | 89 +++ devtools/client/projecteditor/lib/moz.build | 19 + .../lib/plugins/app-manager/app-project-editor.js | 56 ++ .../lib/plugins/app-manager/moz.build | 10 + .../lib/plugins/app-manager/plugin.js | 77 ++ devtools/client/projecteditor/lib/plugins/core.js | 83 +++ .../projecteditor/lib/plugins/delete/delete.js | 67 ++ .../projecteditor/lib/plugins/delete/moz.build | 9 + .../projecteditor/lib/plugins/dirty/dirty.js | 47 ++ .../projecteditor/lib/plugins/dirty/moz.build | 9 + .../lib/plugins/image-view/image-editor.js | 50 ++ .../projecteditor/lib/plugins/image-view/moz.build | 10 + .../projecteditor/lib/plugins/image-view/plugin.js | 28 + .../projecteditor/lib/plugins/logging/logging.js | 29 + .../projecteditor/lib/plugins/logging/moz.build | 9 + .../client/projecteditor/lib/plugins/moz.build | 21 + .../client/projecteditor/lib/plugins/new/moz.build | 9 + .../client/projecteditor/lib/plugins/new/new.js | 80 ++ .../projecteditor/lib/plugins/rename/moz.build | 9 + .../projecteditor/lib/plugins/rename/rename.js | 74 ++ .../projecteditor/lib/plugins/save/moz.build | 9 + .../client/projecteditor/lib/plugins/save/save.js | 93 +++ .../projecteditor/lib/plugins/status-bar/moz.build | 9 + .../projecteditor/lib/plugins/status-bar/plugin.js | 105 +++ devtools/client/projecteditor/lib/project.js | 246 +++++++ devtools/client/projecteditor/lib/projecteditor.js | 816 +++++++++++++++++++++ devtools/client/projecteditor/lib/shells.js | 243 ++++++ devtools/client/projecteditor/lib/stores/base.js | 58 ++ devtools/client/projecteditor/lib/stores/local.js | 215 ++++++ devtools/client/projecteditor/lib/stores/moz.build | 11 + .../client/projecteditor/lib/stores/resource.js | 398 ++++++++++ devtools/client/projecteditor/lib/tree.js | 593 +++++++++++++++ devtools/client/projecteditor/moz.build | 9 + devtools/client/projecteditor/test/.eslintrc.js | 6 + devtools/client/projecteditor/test/browser.ini | 31 + .../test/browser_projecteditor_app_options.js | 87 +++ .../test/browser_projecteditor_confirm_unsaved.js | 60 ++ .../test/browser_projecteditor_contextmenu_01.js | 27 + .../test/browser_projecteditor_contextmenu_02.js | 66 ++ .../test/browser_projecteditor_delete_file.js | 85 +++ .../test/browser_projecteditor_editing_01.js | 70 ++ .../test/browser_projecteditor_editors_image.js | 74 ++ .../test/browser_projecteditor_external_change.js | 84 +++ .../browser_projecteditor_immediate_destroy.js | 93 +++ .../test/browser_projecteditor_init.js | 18 + .../test/browser_projecteditor_menubar_01.js | 28 + .../test/browser_projecteditor_menubar_02.js | 123 ++++ .../test/browser_projecteditor_new_file.js | 13 + .../test/browser_projecteditor_rename_file_01.js | 19 + .../test/browser_projecteditor_rename_file_02.js | 26 + .../test/browser_projecteditor_saveall.js | 64 ++ .../test/browser_projecteditor_stores.js | 16 + .../browser_projecteditor_tree_selection_01.js | 98 +++ .../browser_projecteditor_tree_selection_02.js | 76 ++ devtools/client/projecteditor/test/head.js | 391 ++++++++++ devtools/client/projecteditor/test/helper_edits.js | 53 ++ .../client/projecteditor/test/helper_homepage.html | 1 + 67 files changed, 6082 insertions(+) create mode 100644 devtools/client/projecteditor/chrome/content/projecteditor-loader.js create mode 100644 devtools/client/projecteditor/chrome/content/projecteditor-loader.xul create mode 100644 devtools/client/projecteditor/chrome/content/projecteditor-test.xul create mode 100644 devtools/client/projecteditor/chrome/content/projecteditor.xul create mode 100644 devtools/client/projecteditor/lib/editors.js create mode 100644 devtools/client/projecteditor/lib/helpers/event.js create mode 100644 devtools/client/projecteditor/lib/helpers/file-picker.js create mode 100644 devtools/client/projecteditor/lib/helpers/l10n.js create mode 100644 devtools/client/projecteditor/lib/helpers/moz.build create mode 100644 devtools/client/projecteditor/lib/helpers/prompts.js create mode 100644 devtools/client/projecteditor/lib/helpers/readdir.js create mode 100644 devtools/client/projecteditor/lib/moz.build create mode 100644 devtools/client/projecteditor/lib/plugins/app-manager/app-project-editor.js create mode 100644 devtools/client/projecteditor/lib/plugins/app-manager/moz.build create mode 100644 devtools/client/projecteditor/lib/plugins/app-manager/plugin.js create mode 100644 devtools/client/projecteditor/lib/plugins/core.js create mode 100644 devtools/client/projecteditor/lib/plugins/delete/delete.js create mode 100644 devtools/client/projecteditor/lib/plugins/delete/moz.build create mode 100644 devtools/client/projecteditor/lib/plugins/dirty/dirty.js create mode 100644 devtools/client/projecteditor/lib/plugins/dirty/moz.build create mode 100644 devtools/client/projecteditor/lib/plugins/image-view/image-editor.js create mode 100644 devtools/client/projecteditor/lib/plugins/image-view/moz.build create mode 100644 devtools/client/projecteditor/lib/plugins/image-view/plugin.js create mode 100644 devtools/client/projecteditor/lib/plugins/logging/logging.js create mode 100644 devtools/client/projecteditor/lib/plugins/logging/moz.build create mode 100644 devtools/client/projecteditor/lib/plugins/moz.build create mode 100644 devtools/client/projecteditor/lib/plugins/new/moz.build create mode 100644 devtools/client/projecteditor/lib/plugins/new/new.js create mode 100644 devtools/client/projecteditor/lib/plugins/rename/moz.build create mode 100644 devtools/client/projecteditor/lib/plugins/rename/rename.js create mode 100644 devtools/client/projecteditor/lib/plugins/save/moz.build create mode 100644 devtools/client/projecteditor/lib/plugins/save/save.js create mode 100644 devtools/client/projecteditor/lib/plugins/status-bar/moz.build create mode 100644 devtools/client/projecteditor/lib/plugins/status-bar/plugin.js create mode 100644 devtools/client/projecteditor/lib/project.js create mode 100644 devtools/client/projecteditor/lib/projecteditor.js create mode 100644 devtools/client/projecteditor/lib/shells.js create mode 100644 devtools/client/projecteditor/lib/stores/base.js create mode 100644 devtools/client/projecteditor/lib/stores/local.js create mode 100644 devtools/client/projecteditor/lib/stores/moz.build create mode 100644 devtools/client/projecteditor/lib/stores/resource.js create mode 100644 devtools/client/projecteditor/lib/tree.js create mode 100644 devtools/client/projecteditor/moz.build create mode 100644 devtools/client/projecteditor/test/.eslintrc.js create mode 100644 devtools/client/projecteditor/test/browser.ini create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_app_options.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_confirm_unsaved.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_contextmenu_01.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_contextmenu_02.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_delete_file.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_editing_01.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_editors_image.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_external_change.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_immediate_destroy.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_init.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_menubar_01.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_menubar_02.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_new_file.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_rename_file_01.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_rename_file_02.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_saveall.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_stores.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_tree_selection_01.js create mode 100644 devtools/client/projecteditor/test/browser_projecteditor_tree_selection_02.js create mode 100644 devtools/client/projecteditor/test/head.js create mode 100644 devtools/client/projecteditor/test/helper_edits.js create mode 100644 devtools/client/projecteditor/test/helper_homepage.html (limited to 'devtools/client/projecteditor') diff --git a/devtools/client/projecteditor/chrome/content/projecteditor-loader.js b/devtools/client/projecteditor/chrome/content/projecteditor-loader.js new file mode 100644 index 000000000..adee8f143 --- /dev/null +++ b/devtools/client/projecteditor/chrome/content/projecteditor-loader.js @@ -0,0 +1,176 @@ +var Cu = Components.utils; +const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {}); +const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", {}); +const {NetUtil} = Cu.import("resource://gre/modules/NetUtil.jsm", {}); +const promise = require("promise"); +const ProjectEditor = require("devtools/client/projecteditor/lib/projecteditor"); + +const SAMPLE_PATH = buildTempDirectoryStructure(); +const SAMPLE_NAME = "DevTools Content Application Name"; +const SAMPLE_PROJECT_URL = "data:text/html;charset=utf-8,

Project Overview

"; +const SAMPLE_ICON = "chrome://devtools/skin/images/tool-debugger.svg"; + +/** + * Create a workspace for working on projecteditor, available at + * chrome://devtools/content/projecteditor/chrome/content/projecteditor-loader.xul. + * This emulates the integration points that the app manager uses. + */ +var appManagerEditor; + +// Log a message to the project overview URL to make development easier +function log(msg) { + if (!appManagerEditor) { + return; + } + + let doc = appManagerEditor.iframe.contentDocument; + let el = doc.createElement("p"); + el.textContent = msg; + doc.body.appendChild(el); +} + +document.addEventListener("DOMContentLoaded", function onDOMReady(e) { + document.removeEventListener("DOMContentLoaded", onDOMReady, false); + let iframe = document.getElementById("projecteditor-iframe"); + window.projecteditor = ProjectEditor.ProjectEditor(iframe); + + projecteditor.on("onEditorCreated", (editor, a) => { + log("editor created: " + editor); + if (editor.label === "app-manager") { + appManagerEditor = editor; + appManagerEditor.on("load", function foo() { + appManagerEditor.off("load", foo); + log("Working on: " + SAMPLE_PATH); + }); + } + }); + projecteditor.on("onEditorDestroyed", (editor) => { + log("editor destroyed: " + editor); + }); + projecteditor.on("onEditorSave", (editor, resource) => { + log("editor saved: " + editor, resource.path); + }); + projecteditor.on("onTreeSelected", (resource) => { + log("tree selected: " + resource.path); + }); + projecteditor.on("onEditorLoad", (editor) => { + log("editor loaded: " + editor); + }); + projecteditor.on("onEditorActivated", (editor) => { + log("editor focused: " + editor); + }); + projecteditor.on("onEditorDeactivated", (editor) => { + log("editor blur: " + editor); + }); + projecteditor.on("onEditorChange", (editor) => { + log("editor changed: " + editor); + }); + projecteditor.on("onCommand", (cmd) => { + log("Command: " + cmd); + }); + + projecteditor.loaded.then(() => { + projecteditor.setProjectToAppPath(SAMPLE_PATH, { + name: SAMPLE_NAME, + iconUrl: SAMPLE_ICON, + projectOverviewURL: SAMPLE_PROJECT_URL, + validationStatus: "valid" + }).then(() => { + let allResources = projecteditor.project.allResources(); + console.log("All resources have been loaded", allResources, allResources.map(r=>r.basename).join("|")); + }); + + }); + +}, false); + +/** + * Build a temporary directory as a workspace for this loader + * https://developer.mozilla.org/en-US/Add-ons/Code_snippets/File_I_O + */ +function buildTempDirectoryStructure() { + + // First create (and remove) the temp dir to discard any changes + let TEMP_DIR = FileUtils.getDir("TmpD", ["ProjectEditor"], true); + TEMP_DIR.remove(true); + + // Now rebuild our fake project. + TEMP_DIR = FileUtils.getDir("TmpD", ["ProjectEditor"], true); + + FileUtils.getDir("TmpD", ["ProjectEditor", "css"], true); + FileUtils.getDir("TmpD", ["ProjectEditor", "data"], true); + FileUtils.getDir("TmpD", ["ProjectEditor", "img", "icons"], true); + FileUtils.getDir("TmpD", ["ProjectEditor", "js"], true); + + let htmlFile = FileUtils.getFile("TmpD", ["ProjectEditor", "index.html"]); + htmlFile.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); + writeToFile(htmlFile, [ + "", + '', + " ", + ' ', + " ProjectEditor Temp File", + ' ', + " ", + ' ', + "

ProjectEditor Temp File

", + " ", + ""].join("\n") + ); + + let readmeFile = FileUtils.getFile("TmpD", ["ProjectEditor", "README.md"]); + readmeFile.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); + writeToFile(readmeFile, [ + "## Readme" + ].join("\n") + ); + + let licenseFile = FileUtils.getFile("TmpD", ["ProjectEditor", "LICENSE"]); + licenseFile.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); + writeToFile(licenseFile, [ + "/* This Source Code Form is subject to the terms of the Mozilla Public", + " * License, v. 2.0. If a copy of the MPL was not distributed with this", + " * file, You can obtain one at http://mozilla.org/MPL/2.0/. */" + ].join("\n") + ); + + let cssFile = FileUtils.getFile("TmpD", ["ProjectEditor", "css", "styles.css"]); + cssFile.createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); + writeToFile(cssFile, [ + "body {", + " background: red;", + "}" + ].join("\n") + ); + + FileUtils.getFile("TmpD", ["ProjectEditor", "js", "script.js"]).createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); + + FileUtils.getFile("TmpD", ["ProjectEditor", "img", "fake.png"]).createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); + FileUtils.getFile("TmpD", ["ProjectEditor", "img", "icons", "16x16.png"]).createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); + FileUtils.getFile("TmpD", ["ProjectEditor", "img", "icons", "32x32.png"]).createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); + FileUtils.getFile("TmpD", ["ProjectEditor", "img", "icons", "128x128.png"]).createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); + FileUtils.getFile("TmpD", ["ProjectEditor", "img", "icons", "vector.svg"]).createUnique(Components.interfaces.nsIFile.NORMAL_FILE_TYPE, FileUtils.PERMS_FILE); + + return TEMP_DIR.path; +} + + +// https://developer.mozilla.org/en-US/Add-ons/Code_snippets/File_I_O#Writing_to_a_file +function writeToFile(file, data) { + + let defer = promise.defer(); + var ostream = FileUtils.openSafeFileOutputStream(file); + + var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]. + createInstance(Components.interfaces.nsIScriptableUnicodeConverter); + converter.charset = "UTF-8"; + var istream = converter.convertToInputStream(data); + + // The last argument (the callback) is optional. + NetUtil.asyncCopy(istream, ostream, function (status) { + if (!Components.isSuccessCode(status)) { + // Handle error! + console.log("ERROR WRITING TEMP FILE", status); + } + }); +} diff --git a/devtools/client/projecteditor/chrome/content/projecteditor-loader.xul b/devtools/client/projecteditor/chrome/content/projecteditor-loader.xul new file mode 100644 index 000000000..84db8ea48 --- /dev/null +++ b/devtools/client/projecteditor/chrome/content/projecteditor-loader.xul @@ -0,0 +1,26 @@ + + + + %toolboxDTD; +]> + + + + + + + + + + + + + + + diff --git a/devtools/client/projecteditor/chrome/content/projecteditor-test.xul b/devtools/client/projecteditor/chrome/content/projecteditor-test.xul new file mode 100644 index 000000000..ee2be12f0 --- /dev/null +++ b/devtools/client/projecteditor/chrome/content/projecteditor-test.xul @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/devtools/client/projecteditor/chrome/content/projecteditor.xul b/devtools/client/projecteditor/chrome/content/projecteditor.xul new file mode 100644 index 000000000..795fe9fab --- /dev/null +++ b/devtools/client/projecteditor/chrome/content/projecteditor.xul @@ -0,0 +1,87 @@ + + + + + + + + + + + + %scratchpadDTD; + +%editMenuStrings; + +%sourceEditorStrings; +]> + + + +