From a161d5e100e46d212eed9d5a16133bfed13d782f Mon Sep 17 00:00:00 2001 From: "caillon%returnzero.com" Date: Tue, 20 May 2003 21:30:42 +0000 Subject: [PATCH] Bug 199566 - Inspector needs a command line handler. The following should now work: ./mozilla -inspector ./mozilla -inspector "http://www.foo.com/" r=timeless sr=jst a=asa git-svn-id: svn://10.0.0.236/trunk@142665 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/extensions/inspector/base/Makefile.in | 2 +- .../extensions/inspector/base/js/Makefile.in | 48 +++++++ .../inspector/base/js/inspector-cmdline.js | 128 ++++++++++++++++++ .../inspector/resources/content/inspector.js | 29 +++- .../build/win/mozilla/XPI_JSTs/inspector.jst | 5 + mozilla/xpinstall/packager/mac/inspector.jst | 5 + mozilla/xpinstall/packager/os2/inspector.jst | 5 + mozilla/xpinstall/packager/packages-mac | 1 + mozilla/xpinstall/packager/packages-os2 | 1 + .../xpinstall/packager/packages-static-unix | 1 + .../xpinstall/packager/packages-static-win | 1 + mozilla/xpinstall/packager/packages-unix | 1 + mozilla/xpinstall/packager/packages-win | 1 + mozilla/xpinstall/packager/unix/inspector.jst | 5 + .../xpinstall/packager/windows/inspector.jst | 5 + 15 files changed, 234 insertions(+), 4 deletions(-) create mode 100644 mozilla/extensions/inspector/base/js/Makefile.in create mode 100644 mozilla/extensions/inspector/base/js/inspector-cmdline.js diff --git a/mozilla/extensions/inspector/base/Makefile.in b/mozilla/extensions/inspector/base/Makefile.in index defaa1e2a30..f0134ebba2e 100644 --- a/mozilla/extensions/inspector/base/Makefile.in +++ b/mozilla/extensions/inspector/base/Makefile.in @@ -27,7 +27,7 @@ VPATH=@srcdir@ include $(DEPTH)/config/autoconf.mk -DIRS=public src +DIRS=public src js include $(topsrcdir)/config/rules.mk diff --git a/mozilla/extensions/inspector/base/js/Makefile.in b/mozilla/extensions/inspector/base/js/Makefile.in new file mode 100644 index 00000000000..557d4b1148d --- /dev/null +++ b/mozilla/extensions/inspector/base/js/Makefile.in @@ -0,0 +1,48 @@ +# ***** BEGIN LICENSE BLOCK ***** +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is DOM Inspector. +# +# The Initial Developer of the Original Code is +# Christopher A. Aillon . +# Portions created by the Initial Developer are Copyright (C) 2003 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ***** END LICENSE BLOCK ***** + + +DEPTH=../../../.. +topsrcdir=@top_srcdir@ +srcdir=@srcdir@ +VPATH=@srcdir@ + +include $(DEPTH)/config/autoconf.mk + +EXTRA_COMPONENTS=inspector-cmdline.js + +include $(topsrcdir)/config/rules.mk + diff --git a/mozilla/extensions/inspector/base/js/inspector-cmdline.js b/mozilla/extensions/inspector/base/js/inspector-cmdline.js new file mode 100644 index 00000000000..98fadebc10a --- /dev/null +++ b/mozilla/extensions/inspector/base/js/inspector-cmdline.js @@ -0,0 +1,128 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is DOM Inspector. + * + * The Initial Developer of the Original Code is + * Christopher A. Aillon . + * Portions created by the Initial Developer are Copyright (C) 2003 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Christopher A. Aillon + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + + +const INSPECTOR_CMDLINE_CONTRACTID = "@mozilla.org/commandlinehandler/general-startup;1?type=inspector"; +const INSPECTOR_CMDLINE_CLSID = Components.ID('{38293526-6b13-4d4f-a075-71939435b408}'); +const CATMAN_CONTRACTID = "@mozilla.org/categorymanager;1"; +const nsICategoryManager = Components.interfaces.nsICategoryManager; +const nsICmdLineHandler = Components.interfaces.nsICmdLineHandler; +const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar; + + +function InspectorCmdLineHandler() {} +InspectorCmdLineHandler.prototype = +{ + commandLineArgument : "-inspector", + prefNameForStartup : "general.startup.inspector", + chromeUrlForTask : "chrome://inspector/content/inspector.xul", + helpText : "Start with the DOM Inspector.", + handlesArgs : true, + defaultArgs : "", + openWindowWithArgs : true +}; + + +var InspectorCmdLineFactory = +{ + createInstance : function(outer, iid) + { + if (outer != null) { + throw Components.results.NS_ERROR_NO_AGGREGATION; + } + + if (!iid.equals(nsICmdLineHandler) && !iid.equals(nsISupports)) { + throw Components.results.NS_ERROR_INVALID_ARG; + } + + return new InspectorCmdLineHandler(); + } +}; + + +var InspectorCmdLineModule = +{ + registerSelf : function(compMgr, fileSpec, location, type) + { + compMgr = compMgr.QueryInterface(nsIComponentRegistrar); + + compMgr.registerFactoryLocation(INSPECTOR_CMDLINE_CLSID, + "DOM Inspector CommandLine Service", + INSPECTOR_CMDLINE_CONTRACTID, + fileSpec, + location, + type); + + var catman = Components.classes[CATMAN_CONTRACTID].getService(nsICategoryManager); + catman.addCategoryEntry("command-line-argument-handlers", + "inspector command line handler", + INSPECTOR_CMDLINE_CONTRACTID, true, true); + }, + + unregisterSelf : function(compMgr, fileSpec, location) + { + compMgr = compMgr.QueryInterface(nsIComponentRegistrar); + + compMgr.unregisterFactoryLocation(INSPECTOR_CMDLINE_CLSID, fileSpec); + catman = Components.classes[CATMAN_CONTRACTID].getService(nsICategoryManager); + catman.deleteCategoryEntry("command-line-argument-handlers", + INSPECTOR_CMDLINE_CONTRACTID, true); + }, + + getClassObject : function(compMgr, cid, iid) + { + if (cid.equals(INSPECTOR_CMDLINE_CLSID)) { + return InspectorCmdLineFactory; + } + + if (!iid.equals(Components.interfaces.nsIFactory)) { + throw Components.results.NS_ERROR_NOT_IMPLEMENTED; + } + + throw Components.results.NS_ERROR_NO_INTERFACE; + }, + + canUnload : function(compMgr) + { + return true; + } +}; + + +function NSGetModule(compMgr, fileSpec) { + return InspectorCmdLineModule; +} diff --git a/mozilla/extensions/inspector/resources/content/inspector.js b/mozilla/extensions/inspector/resources/content/inspector.js index 6a5de91a7f6..28cbc34bf55 100644 --- a/mozilla/extensions/inspector/resources/content/inspector.js +++ b/mozilla/extensions/inspector/resources/content/inspector.js @@ -62,7 +62,20 @@ window.addEventListener("unload", InspectorApp_destroy, false); function InspectorApp_initialize() { inspector = new InspectorApp(); - inspector.initialize(window.arguments && window.arguments.length > 0 ? window.arguments[0] : null); + + // window.arguments may be either a string or a node. + // If passed via a command line handler, it will be a uri string. + // If passed via navigator hooks, it will be a dom node to inspect. + var initNode, initURI; + if (window.arguments.length) { + if (typeof window.arguments[0] == "string") { + initURI = window.arguments[0]; + } + else if (window.arguments[0] instanceof Components.interfaces.nsIDOMNode) { + initNode = window.arguments[0]; + } + } + inspector.initialize(initNode, initURI); } function InspectorApp_destroy() @@ -91,7 +104,7 @@ InspectorApp.prototype = get searchRegistry() { return this.mSearchService }, get panelset() { return this.mPanelSet; }, - initialize: function(aTarget) + initialize: function(aTarget, aURI) { this.mInitTarget = aTarget; @@ -109,6 +122,10 @@ InspectorApp.prototype = this.mPanelSet = document.getElementById("bxPanelSet"); this.mPanelSet.addObserver("panelsetready", this, false); this.mPanelSet.initialize(); + + if (aURI) { + this.gotoURL(aURI); + } }, destroy: function() @@ -326,7 +343,13 @@ InspectorApp.prototype = browseToURL: function(aURL) { - this.webNavigation.loadURI(aURL, nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null); + try { + this.webNavigation.loadURI(aURL, nsIWebNavigation.LOAD_FLAGS_NONE, null, null, null); + } + catch(ex) { + // nsIWebNavigation.loadURI will spit out an appropriate user prompt, so + // we don't need to do anything here. See nsDocShell::DisplayLoadError() + } }, goToWindow: function(aMenuitem) diff --git a/mozilla/xpinstall/packager/build/win/mozilla/XPI_JSTs/inspector.jst b/mozilla/xpinstall/packager/build/win/mozilla/XPI_JSTs/inspector.jst index a8802abeb14..605cd8956db 100644 --- a/mozilla/xpinstall/packager/build/win/mozilla/XPI_JSTs/inspector.jst +++ b/mozilla/xpinstall/packager/build/win/mozilla/XPI_JSTs/inspector.jst @@ -7,6 +7,11 @@ logComment("fProgram: " + fProgram); err = addDirectory("", "$Version$", "bin", fProgram, "", true); logComment("addDirectory: " + err); +addFile("Inspector Command Line Handler", + "bin/components/inspector-cmdline.js", + getFolder("Components"), + ""); + var jarFolder = getFolder("Chrome", "inspector.jar"); registerChrome(PACKAGE | DELAYED_CHROME, jarFolder, "content/inspector/"); registerChrome(SKIN | DELAYED_CHROME, jarFolder, "skin/modern/inspector/"); diff --git a/mozilla/xpinstall/packager/mac/inspector.jst b/mozilla/xpinstall/packager/mac/inspector.jst index 12149402d61..5a2dac229ab 100644 --- a/mozilla/xpinstall/packager/mac/inspector.jst +++ b/mozilla/xpinstall/packager/mac/inspector.jst @@ -8,6 +8,11 @@ if (verifyDiskSpace(fProgram, srDest)) { err = addDirectory("", "$Version$", "viewer", fProgram, "", true); logComment("addDirectory: " + err); + + addFile("Inspector Command Line Handler", + "viewer/components/inspector-cmdline.js", + getFolder("Components"), + ""); var jarFolder = getFolder("Chrome", "inspector.jar"); registerChrome(PACKAGE | DELAYED_CHROME, jarFolder, "content/inspector/"); diff --git a/mozilla/xpinstall/packager/os2/inspector.jst b/mozilla/xpinstall/packager/os2/inspector.jst index a8802abeb14..605cd8956db 100644 --- a/mozilla/xpinstall/packager/os2/inspector.jst +++ b/mozilla/xpinstall/packager/os2/inspector.jst @@ -7,6 +7,11 @@ logComment("fProgram: " + fProgram); err = addDirectory("", "$Version$", "bin", fProgram, "", true); logComment("addDirectory: " + err); +addFile("Inspector Command Line Handler", + "bin/components/inspector-cmdline.js", + getFolder("Components"), + ""); + var jarFolder = getFolder("Chrome", "inspector.jar"); registerChrome(PACKAGE | DELAYED_CHROME, jarFolder, "content/inspector/"); registerChrome(SKIN | DELAYED_CHROME, jarFolder, "skin/modern/inspector/"); diff --git a/mozilla/xpinstall/packager/packages-mac b/mozilla/xpinstall/packager/packages-mac index 9aeb1928dd7..f1242ebf88b 100644 --- a/mozilla/xpinstall/packager/packages-mac +++ b/mozilla/xpinstall/packager/packages-mac @@ -367,6 +367,7 @@ viewer:Components:QFA.xpt viewer:TalkBack:* [inspector] +viewer:Components:inspector-cmdline.js viewer:Components:inspector.shlb viewer:Components:inspector.xpt viewer:chrome:inspector.jar diff --git a/mozilla/xpinstall/packager/packages-os2 b/mozilla/xpinstall/packager/packages-os2 index f59765d6fb8..b70effbbd05 100644 --- a/mozilla/xpinstall/packager/packages-os2 +++ b/mozilla/xpinstall/packager/packages-os2 @@ -433,6 +433,7 @@ bin/chrome/pipnss.jar bin/chrome/pippki.jar [inspector] +bin/components/inspector-cmdline.js ;bin/components/inspector.dll bin/components/inspectr.dll bin/components/inspector.xpt diff --git a/mozilla/xpinstall/packager/packages-static-unix b/mozilla/xpinstall/packager/packages-static-unix index d2820158b85..051892f16da 100644 --- a/mozilla/xpinstall/packager/packages-static-unix +++ b/mozilla/xpinstall/packager/packages-static-unix @@ -308,6 +308,7 @@ bin/libfreebl_hybrid_3.chk bin/libfreebl_hybrid_3.so [inspector] +bin/components/inspector-cmdline.js bin/components/inspector.so bin/components/inspector.xpt bin/chrome/inspector.jar diff --git a/mozilla/xpinstall/packager/packages-static-win b/mozilla/xpinstall/packager/packages-static-win index f2499c1e426..0ed75f0d96d 100644 --- a/mozilla/xpinstall/packager/packages-static-win +++ b/mozilla/xpinstall/packager/packages-static-win @@ -328,6 +328,7 @@ bin\chrome\pipnss.jar bin\chrome\pippki.jar [inspector] +bin\components\inspector-cmdline.js bin\components\inspector.dll bin\components\inspector.xpt bin\chrome\inspector.jar diff --git a/mozilla/xpinstall/packager/packages-unix b/mozilla/xpinstall/packager/packages-unix index e3bbcde5d48..8504ccb0ca3 100644 --- a/mozilla/xpinstall/packager/packages-unix +++ b/mozilla/xpinstall/packager/packages-unix @@ -413,6 +413,7 @@ bin/libfreebl_hybrid_3.chk bin/libfreebl_hybrid_3.so [inspector] +bin/components/inspector-cmdline.js bin/components/libinspector.so bin/components/inspector.xpt bin/chrome/inspector.jar diff --git a/mozilla/xpinstall/packager/packages-win b/mozilla/xpinstall/packager/packages-win index 7bee75074f6..b9f8264791c 100644 --- a/mozilla/xpinstall/packager/packages-win +++ b/mozilla/xpinstall/packager/packages-win @@ -326,6 +326,7 @@ bin\chrome\venkman.jar bin\chrome\icons\default\venkman-window.ico [inspector] +bin\components\inspector-cmdline.js bin\components\inspector.dll bin\components\inspector.xpt bin\chrome\inspector.jar diff --git a/mozilla/xpinstall/packager/unix/inspector.jst b/mozilla/xpinstall/packager/unix/inspector.jst index c89edb967dd..e4264bd1c10 100644 --- a/mozilla/xpinstall/packager/unix/inspector.jst +++ b/mozilla/xpinstall/packager/unix/inspector.jst @@ -9,6 +9,11 @@ if (verifyDiskSpace(fProgram, srDest)) err = addDirectory("", "$Version$", "bin", fProgram, "", true); logComment("addDirectory: " + err); + addFile("Inspector Command Line Handler", + "bin/components/inspector-cmdline.js", + getFolder("Components"), + ""); + var jarFolder = getFolder("Chrome", "inspector.jar"); registerChrome(PACKAGE | DELAYED_CHROME, jarFolder, "content/inspector/"); registerChrome(SKIN | DELAYED_CHROME, jarFolder, "skin/modern/inspector/"); diff --git a/mozilla/xpinstall/packager/windows/inspector.jst b/mozilla/xpinstall/packager/windows/inspector.jst index a8802abeb14..605cd8956db 100644 --- a/mozilla/xpinstall/packager/windows/inspector.jst +++ b/mozilla/xpinstall/packager/windows/inspector.jst @@ -7,6 +7,11 @@ logComment("fProgram: " + fProgram); err = addDirectory("", "$Version$", "bin", fProgram, "", true); logComment("addDirectory: " + err); +addFile("Inspector Command Line Handler", + "bin/components/inspector-cmdline.js", + getFolder("Components"), + ""); + var jarFolder = getFolder("Chrome", "inspector.jar"); registerChrome(PACKAGE | DELAYED_CHROME, jarFolder, "content/inspector/"); registerChrome(SKIN | DELAYED_CHROME, jarFolder, "skin/modern/inspector/");