aboutsummaryrefslogtreecommitdiff
path: root/tools/addon-sdk-1.12/python-lib/cuddlefish/mobile-utils/bootstrap.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/addon-sdk-1.12/python-lib/cuddlefish/mobile-utils/bootstrap.js')
-rw-r--r--tools/addon-sdk-1.12/python-lib/cuddlefish/mobile-utils/bootstrap.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/tools/addon-sdk-1.12/python-lib/cuddlefish/mobile-utils/bootstrap.js b/tools/addon-sdk-1.12/python-lib/cuddlefish/mobile-utils/bootstrap.js
new file mode 100644
index 0000000..752c962
--- /dev/null
+++ b/tools/addon-sdk-1.12/python-lib/cuddlefish/mobile-utils/bootstrap.js
@@ -0,0 +1,55 @@
+/* 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 Cc = Components.classes;
+const Ci = Components.interfaces;
+const Cu = Components.utils;
+const Cr = Components.results;
+
+Components.utils.import("resource://gre/modules/Services.jsm");
+
+const DEBUG = false;
+
+let log = DEBUG ? dump : function (){};
+
+
+function startup(data, reason) {
+ // This code allow to make all stdIO work
+ try {
+ Components.utils.import("resource://gre/modules/ctypes.jsm");
+ let libdvm = ctypes.open("libdvm.so");
+ let dvmStdioConverterStartup;
+ // Starting with Android ICS, dalvik uses C++.
+ // So that the symbol isn't a simple C one
+ try {
+ dvmStdioConverterStartup = libdvm.declare("_Z24dvmStdioConverterStartupv", ctypes.default_abi, ctypes.bool);
+ }
+ catch(e) {
+ // Otherwise, before ICS, it was a pure C library
+ dvmStdioConverterStartup = libdvm.declare("dvmStdioConverterStartup", ctypes.default_abi, ctypes.void_t);
+ }
+ dvmStdioConverterStartup();
+ log("MU: console redirected to adb logcat.\n");
+ } catch(e) {
+ Cu.reportError("MU: unable to execute jsctype hack: "+e);
+ }
+
+ try {
+ let QuitObserver = {
+ observe: function (aSubject, aTopic, aData) {
+ Services.obs.removeObserver(QuitObserver, "quit-application", false);
+ dump("MU: APPLICATION-QUIT\n");
+ }
+ };
+ Services.obs.addObserver(QuitObserver, "quit-application", false);
+ log("MU: ready to watch firefox exit.\n");
+ } catch(e) {
+ log("MU: unable to register quit-application observer: " + e + "\n");
+ }
+}
+
+function install() {}
+function shutdown() {}