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
This commit is contained in:
caillon%returnzero.com 2003-05-20 21:30:42 +00:00
parent 2c5817a3a2
commit 3987f2a037
15 changed files with 234 additions and 4 deletions

View File

@ -27,7 +27,7 @@ VPATH=@srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS=public src
DIRS=public src js
include $(topsrcdir)/config/rules.mk

View File

@ -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 <christopher@aillon.com>.
# 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

View File

@ -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 <christopher@aillon.com>.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Christopher A. Aillon <christopher@aillon.com>
*
* 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;
}

View File

@ -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)

View File

@ -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/");

View File

@ -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/");

View File

@ -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/");

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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/");

View File

@ -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/");