123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- /* 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/. */
- "use strict";
- const Services = require("Services");
- const { listenOnce } = require("devtools/shared/async-utils");
- const l10n = require("gcli/l10n");
- exports.items = [
- {
- item: "command",
- runAt: "server",
- name: "inject",
- description: l10n.lookup("injectDesc"),
- manual: l10n.lookup("injectManual2"),
- params: [{
- name: "library",
- type: {
- name: "union",
- alternatives: [
- {
- name: "selection",
- lookup: [
- {
- name: "jQuery",
- value: {
- name: "jQuery",
- src: Services.prefs.getCharPref("devtools.gcli.jquerySrc")
- }
- },
- {
- name: "lodash",
- value: {
- name: "lodash",
- src: Services.prefs.getCharPref("devtools.gcli.lodashSrc")
- }
- },
- {
- name: "underscore",
- value: {
- name: "underscore",
- src: Services.prefs.getCharPref("devtools.gcli.underscoreSrc")
- }
- }
- ]
- },
- {
- name: "url"
- }
- ]
- },
- description: l10n.lookup("injectLibraryDesc")
- }],
- exec: function*(args, context) {
- let document = context.environment.document;
- let library = args.library;
- let name = (library.type === "selection") ?
- library.selection.name : library.url;
- let src = (library.type === "selection") ?
- library.selection.src : library.url;
- if (context.environment.window.location.protocol == "https:") {
- src = src.replace(/^http:/, "https:");
- }
- try {
- // Check if URI is valid
- Services.io.newURI(src, null, null);
- } catch(e) {
- return l10n.lookupFormat("injectFailed", [name]);
- }
- let newSource = document.createElement("script");
- newSource.setAttribute("src", src);
- let loadPromise = listenOnce(newSource, "load");
- document.head.appendChild(newSource);
- yield loadPromise;
- return l10n.lookupFormat("injectLoaded", [name]);
- }
- }
- ];
|