summaryrefslogtreecommitdiffstats
path: root/b2g/components/ProcessGlobal.js
diff options
context:
space:
mode:
Diffstat (limited to 'b2g/components/ProcessGlobal.js')
-rw-r--r--b2g/components/ProcessGlobal.js202
1 files changed, 0 insertions, 202 deletions
diff --git a/b2g/components/ProcessGlobal.js b/b2g/components/ProcessGlobal.js
deleted file mode 100644
index 94326ad50..000000000
--- a/b2g/components/ProcessGlobal.js
+++ /dev/null
@@ -1,202 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- /
-/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
-/* 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';
-
-/**
- * This code exists to be a "grab bag" of global code that needs to be
- * loaded per B2G process, but doesn't need to directly interact with
- * web content.
- *
- * (It's written as an XPCOM service because it needs to watch
- * app-startup.)
- */
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-Cu.import('resource://gre/modules/Services.jsm');
-Cu.import('resource://gre/modules/XPCOMUtils.jsm');
-
-XPCOMUtils.defineLazyServiceGetter(this, "settings",
- "@mozilla.org/settingsService;1",
- "nsISettingsService");
-
-function debug(msg) {
- log(msg);
-}
-function log(msg) {
- // This file implements console.log(), so use dump().
- //dump('ProcessGlobal: ' + msg + '\n');
-}
-
-function formatStackFrame(aFrame) {
- let functionName = aFrame.functionName || '<anonymous>';
- return ' at ' + functionName +
- ' (' + aFrame.filename + ':' + aFrame.lineNumber +
- ':' + aFrame.columnNumber + ')';
-}
-
-function ConsoleMessage(aMsg, aLevel) {
- this.timeStamp = Date.now();
- this.msg = aMsg;
-
- switch (aLevel) {
- case 'error':
- case 'assert':
- this.logLevel = Ci.nsIConsoleMessage.error;
- break;
- case 'warn':
- this.logLevel = Ci.nsIConsoleMessage.warn;
- break;
- case 'log':
- case 'info':
- this.logLevel = Ci.nsIConsoleMessage.info;
- break;
- default:
- this.logLevel = Ci.nsIConsoleMessage.debug;
- break;
- }
-}
-
-function toggleUnrestrictedDevtools(unrestricted) {
- Services.prefs.setBoolPref("devtools.debugger.forbid-certified-apps",
- !unrestricted);
- Services.prefs.setBoolPref("dom.apps.developer_mode", unrestricted);
- // TODO: Remove once bug 1125916 is fixed.
- Services.prefs.setBoolPref("network.disable.ipc.security", unrestricted);
- Services.prefs.setBoolPref("dom.webcomponents.enabled", unrestricted);
- let lock = settings.createLock();
- lock.set("developer.menu.enabled", unrestricted, null);
- lock.set("devtools.unrestricted", unrestricted, null);
-}
-
-ConsoleMessage.prototype = {
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIConsoleMessage]),
- toString: function() { return this.msg; }
-};
-
-const gFactoryResetFile = "__post_reset_cmd__";
-
-function ProcessGlobal() {}
-ProcessGlobal.prototype = {
- classID: Components.ID('{1a94c87a-5ece-4d11-91e1-d29c29f21b28}'),
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver,
- Ci.nsISupportsWeakReference]),
-
- wipeDir: function(path) {
- log("wipeDir " + path);
- let dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
- dir.initWithPath(path);
- if (!dir.exists() || !dir.isDirectory()) {
- return;
- }
- let entries = dir.directoryEntries;
- while (entries.hasMoreElements()) {
- let file = entries.getNext().QueryInterface(Ci.nsIFile);
- log("Deleting " + file.path);
- try {
- file.remove(true);
- } catch(e) {}
- }
- },
-
- processCommandsFile: function(text) {
- log("processCommandsFile " + text);
- let lines = text.split("\n");
- lines.forEach((line) => {
- log(line);
- let params = line.split(" ");
- switch (params[0]) {
- case "root":
- log("unrestrict devtools");
- toggleUnrestrictedDevtools(true);
- break;
- case "wipe":
- this.wipeDir(params[1]);
- case "normal":
- log("restrict devtools");
- toggleUnrestrictedDevtools(false);
- break;
- }
- });
- },
-
- cleanupAfterFactoryReset: function() {
- log("cleanupAfterWipe start");
-
- Cu.import("resource://gre/modules/osfile.jsm");
- let dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
- dir.initWithPath("/persist");
- var postResetFile = dir.exists() ?
- OS.Path.join("/persist", gFactoryResetFile):
- OS.Path.join("/cache", gFactoryResetFile);
- let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
- file.initWithPath(postResetFile);
- if (!file.exists()) {
- debug("No additional command.")
- return;
- }
-
- let promise = OS.File.read(postResetFile);
- promise.then(
- (array) => {
- file.remove(false);
- let decoder = new TextDecoder();
- this.processCommandsFile(decoder.decode(array));
- },
- function onError(error) {
- debug("Error: " + error);
- }
- );
-
- log("cleanupAfterWipe end.");
- },
-
- observe: function pg_observe(subject, topic, data) {
- switch (topic) {
- case 'app-startup': {
- Services.obs.addObserver(this, 'console-api-log-event', false);
- let inParent = Cc["@mozilla.org/xre/app-info;1"]
- .getService(Ci.nsIXULRuntime)
- .processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT;
- if (inParent) {
- Services.ppmm.addMessageListener("getProfD", function(message) {
- return Services.dirsvc.get("ProfD", Ci.nsIFile).path;
- });
-
- this.cleanupAfterFactoryReset();
- }
- break;
- }
- case 'console-api-log-event': {
- // Pipe `console` log messages to the nsIConsoleService which
- // writes them to logcat on Gonk.
- let message = subject.wrappedJSObject;
- let args = message.arguments;
- let stackTrace = '';
-
- if (message.stacktrace &&
- (message.level == 'assert' || message.level == 'error' || message.level == 'trace')) {
- stackTrace = Array.map(message.stacktrace, formatStackFrame).join('\n');
- } else {
- stackTrace = formatStackFrame(message);
- }
-
- if (stackTrace) {
- args.push('\n' + stackTrace);
- }
-
- let msg = 'Content JS ' + message.level.toUpperCase() + ': ' + Array.join(args, ' ');
- Services.console.logMessage(new ConsoleMessage(msg, message.level));
- break;
- }
- }
- },
-};
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([ProcessGlobal]);