landing venkman 0.9.60

add x-jsd:debugger url handler to launch venkman.  Useful to start venkman from feonix.
convert some of the 81 column files to 80 column.
Show disabled scripts (and files that contian them) in red italics in the Loaded Scripts view.
Fix some issues with step over.  Requres the latest js engine fixes from bug 202177 to be completely effective.
add default window flags value for the /open-dialog command.
fix xml charset detection.
Use Math.floor instead of parseInt.
remove the "paint-hack" hack.
remove ":" from the list of illegal url characters.
unmark the stop line before setting a new one, to avoid the case where you see two yellow indicators in a single file.
add complete, selectable url below the source window in the source2 view.
e
clean up after bug 127589.
This commit is contained in:
rginda%netscape.com 2003-04-21 23:55:12 +00:00
parent 823fff54a0
commit 85b23a0761
13 changed files with 496 additions and 251 deletions

View File

@ -42,17 +42,25 @@ const JSDPROT_HANDLER_CTRID =
"@mozilla.org/network/protocol;1?name=x-jsd";
const JSDPROT_HANDLER_CID =
Components.ID("{12ec790d-304e-4525-89a9-3e723d489d14}");
const JSDCNT_HANDLER_CTRID =
"@mozilla.org/uriloader/content-handler;1?type=x-application-jsd";
const JSDCNT_HANDLER_CID =
Components.ID("{306670f0-47bb-466b-b53b-613235623bbd}");
/* components used by this file */
const CATMAN_CTRID = "@mozilla.org/categorymanager;1";
const STRING_STREAM_CTRID = "@mozilla.org/io/string-input-stream;1";
const MEDIATOR_CTRID =
"@mozilla.org/appshell/window-mediator;1";
const ASS_CONTRACTID =
"@mozilla.org/appshell/appShellService;1";
const SIMPLEURI_CTRID = "@mozilla.org/network/simple-uri;1";
const nsIWindowMediator = Components.interfaces.nsIWindowMediator;
const nsIAppShellService = Components.interfaces.nsIAppShellService;
const nsICmdLineHandler = Components.interfaces.nsICmdLineHandler;
const nsICategoryManager = Components.interfaces.nsICategoryManager;
const nsIContentHandler = Components.interfaces.nsIContentHandler;
const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
const nsIURI = Components.interfaces.nsIURI;
const nsIURL = Components.interfaces.nsIURL;
@ -284,13 +292,22 @@ function jsdch_aopen (streamListener, context)
{
this.streamListener = streamListener;
this.context = context;
if (this.loadGroup)
this.loadGroup.addRequest (this, null);
if (!window && this.URI.spec == "x-jsd:debugger")
{
this.contentType = "x-application-jsd";
this.contentLength = 0;
streamListener.onStartRequest(this, context);
return;
}
var window = findDebuggerWindow();
var ary = this.URI.spec.match (/x-jsd:([^:]+)/);
var exception;
if (this.loadGroup)
this.loadGroup.addRequest (this, null);
if (window && "console" in window && ary)
{
try
@ -303,7 +320,7 @@ function jsdch_aopen (streamListener, context)
exception = ex;
}
}
var str =
"<html><head><title>Error</title></head><body>Could not load &lt;<b>" +
safeHTML(this.URI.spec) + "</b>&gt;<br>";
@ -384,6 +401,73 @@ function jsdch_notimpl ()
/*****************************************************************************/
/* x-application-jsd content handler */
function JSDContentHandler ()
{}
JSDContentHandler.prototype.QueryInterface =
function jsdh_qi(iid)
{
if (!iid.equals(nsIContentHandler) && !iid.equals(nsISupports))
throw Components.results.NS_ERROR_NO_INTERFACE;
return this;
}
JSDContentHandler.prototype.handleContent =
function jsdh_handle(contentType, command, windowTarget, request)
{
var e;
var channel = request.QueryInterface(nsIChannel);
// prevent someone from invoking the debugger remotely by serving
// up any old file with the x-application-jsd content type.
if (channel.URI.spec != "x-jsd:debugger")
{
debug ("Not handling content from unknown location ``" +
channel.URI.spec + "''");
return;
}
var window = findDebuggerWindow()
if (window)
{
window.focus();
}
else
{
var ass =
Components.classes[ASS_CONTRACTID].getService(nsIAppShellService);
window = ass.hiddenDOMWindow;
var args = new Object();
args.url = channel.URI.spec;
window.openDialog("chrome://venkman/content/venkman.xul", "_blank",
"chrome,menubar,toolbar,resizable,dialog=no", args);
}
}
/*****************************************************************************/
/* content handler factory object (IRCContentHandler) */
var JSDContentHandlerFactory = new Object();
JSDContentHandlerFactory.createInstance =
function jsdhf_create(outer, iid)
{
if (outer != null)
throw Components.results.NS_ERROR_NO_AGGREGATION;
if (!iid.equals(nsIContentHandler) && !iid.equals(nsISupports))
throw Components.results.NS_ERROR_INVALID_ARG;
return new JSDContentHandler();
}
/*****************************************************************************/
var Module = new Object();
Module.registerSelf =
@ -413,6 +497,14 @@ function (compMgr, fileSpec, location, type)
fileSpec,
location,
type);
debug("*** Registering x-application-jsd content handler.\n");
compMgr.registerFactoryLocation(JSDCNT_HANDLER_CID,
"x-application-jsd content handler",
JSDCNT_HANDLER_CTRID,
fileSpec,
location,
type);
try
{
const JSD_CTRID = "@mozilla.org/js/jsd/debugger-service;1";
@ -445,6 +537,9 @@ function (compMgr, cid, iid) {
if (cid.equals(JSDPROT_HANDLER_CID))
return JSDProtocolHandlerFactory;
if (cid.equals(JSDCNT_HANDLER_CID))
return JSDContentHandlerFactory;
if (!iid.equals(Components.interfaces.nsIFactory))
throw Components.results.NS_ERROR_NOT_IMPLEMENTED;

View File

@ -185,10 +185,12 @@ var guessThis =
function ()
{
var x = 1;
switchTest();
observer.onFoo();
}
var observer = {
onFoo: function (){}
onFoo: function (){ returnSomething(); }
}
function switchTest ()

View File

@ -1342,8 +1342,13 @@ function xtv_isseparator (index)
XULTreeView.prototype.getParentIndex =
function xtv_getpi (index)
{
if (index < 0)
return -1;
var row = this.childData.locateChildByVisualRow (index);
//ASSERT(row, "bogus row " + index);
//if (!ASSERT(row, "bogus row " + index))
// return -1;
var rv = row.parentRecord.calculateVisualRow();
//dd ("getParentIndex: row " + index + " returning " + rv);
return (rv != null) ? rv : -1;

View File

@ -44,134 +44,134 @@ function initCommands()
var cmdary =
[/* "real" commands */
["about-mozilla", cmdAboutMozilla, 0],
["break", cmdBreak, CMD_CONSOLE],
["break-props", cmdBreakProps, CMD_CONSOLE],
["change-value", cmdChangeValue, 0],
["chrome-filter", cmdChromeFilter, CMD_CONSOLE],
["clear", cmdClear, CMD_CONSOLE],
["clear-all", cmdClearAll, CMD_CONSOLE],
["clear-break", cmdClearBreak, 0],
["clear-fbreak", cmdClearFBreak, 0],
["clear-profile", cmdClearProfile, CMD_CONSOLE],
["clear-script", cmdClearScript, 0],
["clear-instance", cmdClearInstance, 0],
["close", cmdClose, CMD_CONSOLE],
["commands", cmdCommands, CMD_CONSOLE],
["cont", cmdCont, CMD_CONSOLE | CMD_NEED_STACK],
["debug-script", cmdSetScriptFlag, 0],
["debug-instance-on", cmdToggleSomething, 0],
["debug-instance-off", cmdToggleSomething, 0],
["debug-instance", cmdSetScriptFlag, 0],
["debug-transient", cmdSetTransientFlag, 0],
["emode", cmdEMode, CMD_CONSOLE],
["eval", cmdEval, CMD_CONSOLE],
["evald", cmdEvald, CMD_CONSOLE],
["fbreak", cmdFBreak, CMD_CONSOLE],
["set-eval-obj", cmdSetEvalObj, 0],
["set-fbreak", cmdFBreak, 0],
["fclear", cmdFClear, CMD_CONSOLE],
["fclear-all", cmdFClearAll, CMD_CONSOLE],
["find-bp", cmdFindBp, 0],
["find-creator", cmdFindCreatorOrCtor, 0],
["find-ctor", cmdFindCreatorOrCtor, 0],
["find-file", cmdFindFile, CMD_CONSOLE],
["find-frame", cmdFindFrame, CMD_NEED_STACK],
["find-sourcetext", cmdFindSourceText, 0],
["find-sourcetext-soft", cmdFindSourceText, 0],
["find-script", cmdFindScript, 0],
["find-scriptinstance", cmdFindScriptInstance, 0],
["find-url", cmdFindURL, CMD_CONSOLE],
["find-url-soft", cmdFindURL, 0],
["finish", cmdFinish, CMD_CONSOLE | CMD_NEED_STACK],
["focus-input", cmdHook, 0],
["frame", cmdFrame, CMD_CONSOLE | CMD_NEED_STACK],
["gc", cmdGC, CMD_CONSOLE],
["help", cmdHelp, CMD_CONSOLE],
["loadd", cmdLoadd, CMD_CONSOLE],
["move-view", cmdMoveView, CMD_CONSOLE],
["about-mozilla", cmdAboutMozilla, 0],
["break", cmdBreak, CMD_CONSOLE],
["break-props", cmdBreakProps, CMD_CONSOLE],
["change-value", cmdChangeValue, 0],
["chrome-filter", cmdChromeFilter, CMD_CONSOLE],
["clear", cmdClear, CMD_CONSOLE],
["clear-all", cmdClearAll, CMD_CONSOLE],
["clear-break", cmdClearBreak, 0],
["clear-fbreak", cmdClearFBreak, 0],
["clear-profile", cmdClearProfile, CMD_CONSOLE],
["clear-script", cmdClearScript, 0],
["clear-instance", cmdClearInstance, 0],
["close", cmdClose, CMD_CONSOLE],
["commands", cmdCommands, CMD_CONSOLE],
["cont", cmdCont, CMD_CONSOLE | CMD_NEED_STACK],
["debug-script", cmdSetScriptFlag, 0],
["debug-instance-on", cmdToggleSomething, 0],
["debug-instance-off", cmdToggleSomething, 0],
["debug-instance", cmdSetScriptFlag, 0],
["debug-transient", cmdSetTransientFlag, 0],
["emode", cmdEMode, CMD_CONSOLE],
["eval", cmdEval, CMD_CONSOLE],
["evald", cmdEvald, CMD_CONSOLE],
["fbreak", cmdFBreak, CMD_CONSOLE],
["set-eval-obj", cmdSetEvalObj, 0],
["set-fbreak", cmdFBreak, 0],
["fclear", cmdFClear, CMD_CONSOLE],
["fclear-all", cmdFClearAll, CMD_CONSOLE],
["find-bp", cmdFindBp, 0],
["find-creator", cmdFindCreatorOrCtor, 0],
["find-ctor", cmdFindCreatorOrCtor, 0],
["find-file", cmdFindFile, CMD_CONSOLE],
["find-frame", cmdFindFrame, CMD_NEED_STACK],
["find-sourcetext", cmdFindSourceText, 0],
["find-sourcetext-soft", cmdFindSourceText, 0],
["find-script", cmdFindScript, 0],
["find-scriptinstance", cmdFindScriptInstance, 0],
["find-url", cmdFindURL, CMD_CONSOLE],
["find-url-soft", cmdFindURL, 0],
["finish", cmdFinish, CMD_CONSOLE | CMD_NEED_STACK],
["focus-input", cmdHook, 0],
["frame", cmdFrame, CMD_CONSOLE | CMD_NEED_STACK],
["gc", cmdGC, CMD_CONSOLE],
["help", cmdHelp, CMD_CONSOLE],
["loadd", cmdLoadd, CMD_CONSOLE],
["move-view", cmdMoveView, CMD_CONSOLE],
["mozilla-help", cmdMozillaHelp, 0],
["next", cmdNext, CMD_CONSOLE | CMD_NEED_STACK],
["open-dialog", cmdOpenDialog, CMD_CONSOLE],
["open-url", cmdOpenURL, 0],
["pprint", cmdPPrint, CMD_CONSOLE],
["pref", cmdPref, CMD_CONSOLE],
["profile", cmdProfile, CMD_CONSOLE],
["profile-script", cmdSetScriptFlag, 0],
["profile-instance", cmdSetScriptFlag, 0],
["profile-instance-on", cmdSetScriptFlag, 0],
["profile-instance-off", cmdSetScriptFlag, 0],
["props", cmdProps, CMD_CONSOLE],
["propsd", cmdProps, CMD_CONSOLE],
["quit", cmdQuit, CMD_CONSOLE],
["restore-layout", cmdRestoreLayout, CMD_CONSOLE],
["restore-settings", cmdRestoreSettings, CMD_CONSOLE],
["release-notes", cmdReleaseNotes, 0],
["run-to", cmdRunTo, CMD_NEED_STACK],
["save-breakpoints", cmdSaveBreakpoints, CMD_CONSOLE],
["save-layout", cmdSaveLayout, CMD_CONSOLE],
["save-profile", cmdSaveProfile, CMD_CONSOLE],
["save-settings", cmdSaveSettings, CMD_CONSOLE],
["scan-source", cmdScanSource, 0],
["scope", cmdScope, CMD_CONSOLE | CMD_NEED_STACK],
["this-expr", cmdThisExpr, CMD_CONSOLE],
["toggle-float", cmdToggleFloat, CMD_CONSOLE],
["toggle-view", cmdToggleView, CMD_CONSOLE],
["toggle-pref", cmdTogglePref, CMD_CONSOLE],
["startup-init", cmdStartupInit, CMD_CONSOLE],
["step", cmdStep, CMD_CONSOLE | CMD_NEED_STACK],
["stop", cmdStop, CMD_CONSOLE | CMD_NO_STACK],
["tmode", cmdTMode, CMD_CONSOLE],
["version", cmdVersion, CMD_CONSOLE],
["where", cmdWhere, CMD_CONSOLE | CMD_NEED_STACK],
["next", cmdNext, CMD_CONSOLE | CMD_NEED_STACK],
["open-dialog", cmdOpenDialog, CMD_CONSOLE],
["open-url", cmdOpenURL, 0],
["pprint", cmdPPrint, CMD_CONSOLE],
["pref", cmdPref, CMD_CONSOLE],
["profile", cmdProfile, CMD_CONSOLE],
["profile-script", cmdSetScriptFlag, 0],
["profile-instance", cmdSetScriptFlag, 0],
["profile-instance-on", cmdSetScriptFlag, 0],
["profile-instance-off", cmdSetScriptFlag, 0],
["props", cmdProps, CMD_CONSOLE],
["propsd", cmdProps, CMD_CONSOLE],
["quit", cmdQuit, CMD_CONSOLE],
["restore-layout", cmdRestoreLayout, CMD_CONSOLE],
["restore-settings", cmdRestoreSettings, CMD_CONSOLE],
["release-notes", cmdReleaseNotes, 0],
["run-to", cmdRunTo, CMD_NEED_STACK],
["save-breakpoints", cmdSaveBreakpoints, CMD_CONSOLE],
["save-layout", cmdSaveLayout, CMD_CONSOLE],
["save-profile", cmdSaveProfile, CMD_CONSOLE],
["save-settings", cmdSaveSettings, CMD_CONSOLE],
["scan-source", cmdScanSource, 0],
["scope", cmdScope, CMD_CONSOLE | CMD_NEED_STACK],
["this-expr", cmdThisExpr, CMD_CONSOLE],
["toggle-float", cmdToggleFloat, CMD_CONSOLE],
["toggle-view", cmdToggleView, CMD_CONSOLE],
["toggle-pref", cmdTogglePref, CMD_CONSOLE],
["startup-init", cmdStartupInit, CMD_CONSOLE],
["step", cmdStep, CMD_CONSOLE | CMD_NEED_STACK],
["stop", cmdStop, CMD_CONSOLE | CMD_NO_STACK],
["tmode", cmdTMode, CMD_CONSOLE],
["version", cmdVersion, CMD_CONSOLE],
["where", cmdWhere, CMD_CONSOLE | CMD_NEED_STACK],
/* aliases */
["exit", "quit", 0],
["save-default-layout", "save-layout default", 0],
["profile-tb", "profile toggle", 0],
["this", "props this", CMD_CONSOLE],
["toggle-chrome", "chrome-filter toggle", 0],
["toggle-ias", "startup-init toggle", 0],
["toggle-pprint", "pprint toggle", 0],
["toggle-profile", "profile toggle", 0],
["toggle-save-layout", "toggle-pref saveLayoutOnExit", 0],
["toggle-save-settings", "toggle-pref saveSettingsOnExit", 0],
["em-cycle", "emode cycle", 0],
["em-ignore", "emode ignore", 0],
["em-trace", "emode trace", 0],
["em-break", "emode break", 0],
["tm-cycle", "tmode cycle", 0],
["tm-ignore", "tmode ignore", 0],
["tm-trace", "tmode trace", 0],
["tm-break", "tmode break", 0],
["exit", "quit", 0],
["save-default-layout", "save-layout default", 0],
["profile-tb", "profile toggle", 0],
["this", "props this", CMD_CONSOLE],
["toggle-chrome", "chrome-filter toggle", 0],
["toggle-ias", "startup-init toggle", 0],
["toggle-pprint", "pprint toggle", 0],
["toggle-profile", "profile toggle", 0],
["toggle-save-layout", "toggle-pref saveLayoutOnExit", 0],
["toggle-save-settings", "toggle-pref saveSettingsOnExit", 0],
["em-cycle", "emode cycle", 0],
["em-ignore", "emode ignore", 0],
["em-trace", "emode trace", 0],
["em-break", "emode break", 0],
["tm-cycle", "tmode cycle", 0],
["tm-ignore", "tmode ignore", 0],
["tm-trace", "tmode trace", 0],
["tm-break", "tmode break", 0],
/* hooks */
["hook-break-set", cmdHook, 0],
["hook-break-clear", cmdHook, 0],
["hook-debug-stop", cmdHook, 0],
["hook-debug-continue", cmdHook, 0],
["hook-display-sourcetext", cmdHook, 0],
["hook-display-sourcetext-soft", cmdHook, 0],
["hook-eval-done", cmdHook, 0],
["hook-fbreak-clear", cmdHook, 0],
["hook-fbreak-set", cmdHook, 0],
["hook-guess-complete", cmdHook, 0],
["hook-transient-script", cmdHook, 0],
["hook-script-manager-created", cmdHook, 0],
["hook-script-manager-destroyed", cmdHook, 0],
["hook-script-instance-created", cmdHook, 0],
["hook-script-instance-sealed", cmdHook, 0],
["hook-script-instance-destroyed", cmdHook, 0],
["hook-session-display", cmdHook, 0],
["hook-source-load-complete", cmdHook, 0],
["hook-window-closed", cmdHook, 0],
["hook-window-loaded", cmdHook, 0],
["hook-window-opened", cmdHook, 0],
["hook-window-resized", cmdHook, 0],
["hook-window-unloaded", cmdHook, 0],
["hook-venkman-exit", cmdHook, 0],
["hook-venkman-query-exit", cmdHook, 0],
["hook-venkman-started", cmdHook, 0]
["hook-break-set", cmdHook, 0],
["hook-break-clear", cmdHook, 0],
["hook-debug-stop", cmdHook, 0],
["hook-debug-continue", cmdHook, 0],
["hook-display-sourcetext", cmdHook, 0],
["hook-display-sourcetext-soft", cmdHook, 0],
["hook-eval-done", cmdHook, 0],
["hook-fbreak-clear", cmdHook, 0],
["hook-fbreak-set", cmdHook, 0],
["hook-guess-complete", cmdHook, 0],
["hook-transient-script", cmdHook, 0],
["hook-script-manager-created", cmdHook, 0],
["hook-script-manager-destroyed", cmdHook, 0],
["hook-script-instance-created", cmdHook, 0],
["hook-script-instance-sealed", cmdHook, 0],
["hook-script-instance-destroyed", cmdHook, 0],
["hook-session-display", cmdHook, 0],
["hook-source-load-complete", cmdHook, 0],
["hook-window-closed", cmdHook, 0],
["hook-window-loaded", cmdHook, 0],
["hook-window-opened", cmdHook, 0],
["hook-window-resized", cmdHook, 0],
["hook-window-unloaded", cmdHook, 0],
["hook-venkman-exit", cmdHook, 0],
["hook-venkman-query-exit", cmdHook, 0],
["hook-venkman-started", cmdHook, 0]
];
cmdary.stringBundle = console.defaultBundle;
@ -179,7 +179,8 @@ function initCommands()
console.commandManager.argTypes.__aliasTypes__ (["index", "breakpointIndex",
"lineNumber"], "int");
console.commandManager.argTypes.__aliasTypes__ (["windowFlags", "expression",
console.commandManager.argTypes.__aliasTypes__ (["windowFlags",
"expression",
"prefValue"],
"rest");
@ -212,9 +213,9 @@ function getToggle (toggle, currentState)
return toggle;
}
/********************************************************************************
/*******************************************************************************
* Command implementations from here on down...
*******************************************************************************/
******************************************************************************/
function cmdAboutMozilla ()
{
@ -272,7 +273,8 @@ function cmdBreak (e)
lineNumber: e.lineNumber,
props: props});
fbreak = getFutureBreakpoint(url, e.lineNumber);
props = null; // hard breakpoint properties will be inherited
// hard breakpoint properties will be inherited
props = null;
}
console.scriptManagers[url].setBreakpoint (e.lineNumber, fbreak,
@ -365,6 +367,8 @@ function cmdChromeFilter (e)
if (!scriptWrapper.jsdScript.isValid)
return;
var lastDebugState = scriptWrapper.jsdScript.flags & SCRIPT_NODEBUG;
if (e.toggle)
{
scriptWrapper.lastFlags = scriptWrapper.jsdScript.flags;
@ -386,6 +390,20 @@ function cmdChromeFilter (e)
scriptWrapper.jsdScript.flags &= ~(FLAGS);
}
}
if (lastDebugState != scriptWrapper.jsdScript.flags & SCRIPT_NODEBUG)
{
if (lastDebugState)
{
// went from on to off
--scriptWrapper.scriptInstance.disabledScripts;
}
else
{
// went from off to on
++scriptWrapper.scriptInstance.disabledScripts;
}
}
};
var currentState = console.prefs["enableChromeFilter"];
@ -813,7 +831,7 @@ function cmdFinish (e)
if (console.frames.length == 1)
return cmdCont();
console._stepOverLevel = 1;
console._stepOverDepth = console.frames.length - 1;
setStopState(false);
console.jsds.functionHook = console.callHook;
disableDebugCommands()
@ -1075,7 +1093,8 @@ function cmdFrame (e)
{
if (e.frameIndex < 0 || e.frameIndex >= console.frames.length)
{
display (getMsg(MSN_ERR_INVALID_PARAM, ["frameIndex", e.frameIndex]),
display (getMsg(MSN_ERR_INVALID_PARAM,
["frameIndex", e.frameIndex]),
MT_ERROR);
return false;
}
@ -1188,12 +1207,14 @@ function cmdMoveView (e)
function cmdMozillaHelp ()
{
toOpenWindowByType('mozilla:help', 'chrome://help/content/help.xul');
openHelp();
}
function cmdNext ()
{
console._stepOverLevel = 0;
// we don't setStopState(false) here because if the line we're at
// doesn't call out to a function, /next is the same as /step.
console._stepOverDepth = console.frames.length;
dispatch ("step");
console.jsds.functionHook = console.callHook;
return;
@ -1201,6 +1222,9 @@ function cmdNext ()
function cmdOpenDialog (e)
{
if (!e.windowFlags)
e.windowFlags = "chrome,menubar,toolbar,resizable,dialog=no";
return openDialog (e.url, e.windowName, e.windowFlags);
}
@ -1732,35 +1756,45 @@ function cmdSetEvalObj (e)
function cmdSetScriptFlag (e)
{
function setFlag (jsdScript)
function setFlag (scriptWrapper)
{
var jsdScript = scriptWrapper.jsdScript;
if (!jsdScript.isValid)
return;
if (e.toggle == "toggle")
{
if (jsdScript.flags & flag)
jsdScript.flags &= ~flag;
else
jsdScript.flags |= flag;
jsdScript.flags ^= flag;
if (flag == SCRIPT_NODEBUG)
{
if (jsdScript.flags & flag)
++scriptWrapper.scriptInstance.disabledScripts;
else
--scriptWrapper.scriptInstance.disabledScripts;
}
}
else if (e.toggle)
{
jsdScript.flags |= flag;
if (flag == SCRIPT_NODEBUG)
++scriptWrapper.scriptInstance.disabledScripts;
}
else
{
jsdScript.flags &= ~flag;
}
if (flag == SCRIPT_NODEBUG)
--scriptWrapper.scriptInstance.disabledScripts;
}
};
function setFlagInstance (scriptInstance)
{
if (scriptInstance.topLevel)
setFlag (scriptInstance.topLevel.jsdScript);
setFlag (scriptInstance.topLevel);
for (var f in scriptInstance.functions)
setFlag (scriptInstance.functions[f].jsdScript);
setFlag (scriptInstance.functions[f]);
};
var flag;
@ -1776,11 +1810,11 @@ function cmdSetScriptFlag (e)
if ("scriptWrapperList" in e)
{
for (i = 0; i < e.scriptWrapperList.length; ++i)
setFlag(e.scriptWrapperList[i].jsdScript);
setFlag(e.scriptWrapperList[i]);
}
else
{
setFlag(e.scriptWrapper.jsdScript);
setFlag(e.scriptWrapper);
}
}
else
@ -1841,7 +1875,8 @@ function cmdStep()
{
setStopState(true);
var topFrame = console.frames[0];
console._stepPast = topFrame.script.fileName;
console._stepPast = console.frames.length + topFrame.script.fileName;
if (console.prefs["prettyprint"])
{
console._stepPast +=
@ -1927,7 +1962,8 @@ function cmdTMode (e)
function cmdToggleFloat (e)
{
if (!e.viewId in console.views || typeof console.views[e.viewId] != "object")
if (!e.viewId in console.views ||
typeof console.views[e.viewId] != "object")
{
display (getMsg(MSN_ERR_NO_SUCH_VIEW, e.viewId), MT_ERROR);
return;

View File

@ -221,13 +221,16 @@ function jsdScriptDestroyed (jsdScript)
function jsdExecutionHook (frame, type, rv)
{
//dd ("execution hook: " + formatFrame(frame));
var hookReturn = jsdIExecutionHook.RETURN_CONTINUE;
if (!console.initialized)
return hookReturn;
if (!ASSERT(!("frames" in console), "Execution hook called while stopped") ||
if (!ASSERT(!("frames" in console),
"Execution hook called while stopped") ||
frame.isNative ||
!ASSERT(frame.script, "Execution hook called with no script") ||
frame.script.fileName == MSG_VAL_CONSOLE ||
@ -240,6 +243,16 @@ function jsdExecutionHook (frame, type, rv)
return hookReturn;
}
var frames = new Array();
var prevFrame = frame;
var hasDisabledFrame = false;
while (prevFrame)
{
frames.push(prevFrame);
prevFrame = prevFrame.callingFrame;
}
var targetWindow = null;
var wasModal = false;
var cx;
@ -276,7 +289,7 @@ function jsdExecutionHook (frame, type, rv)
try
{
//dd ("debug trap " + formatFrame(frame));
hookReturn = debugTrap(frame, type, rv);
hookReturn = debugTrap(frames, type, rv);
//dd ("debug trap returned " + hookReturn);
}
catch (ex)
@ -310,18 +323,34 @@ function jsdCallHook (frame, type)
if (type == jsdICallHook.TYPE_FUNCTION_CALL)
{
setStopState(false);
++console._stepOverLevel;
//dd ("Calling: " + frame.functionName);
}
else if (type == jsdICallHook.TYPE_FUNCTION_RETURN)
{
if (--console._stepOverLevel <= 0)
// we're called *before* the returning frame is popped from the
// stack, so we want our depth calculation to be off by one.
var depth = -1;
var prevFrame = frame;
while (prevFrame)
{
depth++;
prevFrame = prevFrame.callingFrame;
}
//dd ("Returning: " + frame.functionName +
// ", target depth: " + console._stepOverDepth +
// ", current depth: " + depth);
if (depth <= console._stepOverDepth)
{
//dd ("step over at target depth of " + depth);
setStopState(true);
console.jsds.functionHook = null;
delete console._stepOverDepth;
}
}
//dd ("Call Hook: " + frame.functionName + ", type " +
// type + " callCount: " + console._stepOverLevel);
}
function jsdErrorHook (message, fileName, line, pos, flags, exception)
@ -565,6 +594,7 @@ function ScriptInstance (manager)
this.isSealed = false;
this.scriptCount = 0;
this.breakpointCount = 0;
this.disabledScripts = 0;
this._lineMap = new Array();
this._lineMapInited = false;
}
@ -626,6 +656,7 @@ function si_seal ()
if (isURLFiltered(this.url))
{
this.disabledScripts = 1;
var nada = SCRIPT_NODEBUG | SCRIPT_NOPROFILE;
if (this.topLevel && this.topLevel.isValid)
this.topLevel.jsdScript.flags |= nada;
@ -634,6 +665,7 @@ function si_seal ()
{
if (this.functions[f].jsdScript.isValid)
this.functions[f].jsdScript.flags |= nada;
++this.disabledScripts;
}
}
@ -1454,11 +1486,15 @@ const TMODE_IGNORE = 0;
const TMODE_TRACE = 1;
const TMODE_BREAK = 2;
function debugTrap (frame, type, rv)
function debugTrap (frames, type, rv)
{
var tn = "";
var retcode = jsdIExecutionHook.RETURN_CONTINUE;
//dd ("debugTrap");
var frame = frames[0];
$ = new Array();
switch (type)
@ -1493,21 +1529,27 @@ function debugTrap (frame, type, rv)
tn = MSG_VAL_THROW;
break;
case jsdIExecutionHook.TYPE_INTERRUPTED:
if (!frame.script.functionName &&
isURLFiltered(frame.script.fileName))
{
dd ("filtered url: " + frame.script.fileName);
//dd ("filtered url: " + frame.script.fileName);
frame.script.flags |= SCRIPT_NOPROFILE | SCRIPT_NODEBUG;
return retcode;
}
var line;
if (console.prefs["prettyprint"])
line = frame.script.pcToLine (frame.pc, PCMAP_PRETTYPRINT);
else
line = frame.line;
if (console._stepPast == frame.script.fileName + line)
if (console._stepPast ==
frames.length + frame.script.fileName + line)
{
//dd("stepPast: " + console._stepPast);
return retcode;
}
delete console._stepPast;
setStopState(false);
break;
@ -1524,10 +1566,7 @@ function debugTrap (frame, type, rv)
display (getMsg(MSN_STOP, tn), MT_STOP);
/* build an array of frames */
console.frames = new Array(frame);
while ((frame = frame.callingFrame))
console.frames.push(frame);
console.frames = frames;
console.trapType = type;

View File

@ -135,8 +135,10 @@
<toolbar id="maintoolbar-outer" collapsed="true">
<hbox id="maintoolbar">
</hbox>
<!--
<textbox id="paint-hack"
style="border: none; background: none; height: 0px; width: 0px"/>
-->
</toolbar>
</toolbox>

View File

@ -37,12 +37,12 @@ function initRecords()
{
var cmdary =
[/* "real" commands */
["show-functions", cmdShowFunctions, CMD_CONSOLE],
["show-ecmas", cmdShowECMAs, CMD_CONSOLE],
["show-functions", cmdShowFunctions, CMD_CONSOLE],
["show-ecmas", cmdShowECMAs, CMD_CONSOLE],
/* aliases */
["toggle-functions", "show-functions toggle", 0],
["toggle-ecmas", "show-ecma toggle", 0]
["toggle-functions", "show-functions toggle", 0],
["toggle-ecmas", "show-ecma toggle", 0]
];
console.commandManager.defineCommands (cmdary);
@ -58,6 +58,18 @@ function initRecords()
FrameRecord.prototype.property = atomsvc.getAtom("item-frame");
FrameRecord.prototype.atomCurrent = atomsvc.getAtom("current-frame-flag");
ScriptInstanceRecord.prototype.atomUnknown = atomsvc.getAtom("item-unk");
ScriptInstanceRecord.prototype.atomHTML = atomsvc.getAtom("item-html");
ScriptInstanceRecord.prototype.atomJS = atomsvc.getAtom("item-js");
ScriptInstanceRecord.prototype.atomXUL = atomsvc.getAtom("item-xul");
ScriptInstanceRecord.prototype.atomXML = atomsvc.getAtom("item-xml");
ScriptInstanceRecord.prototype.atomDisabled =
atomsvc.getAtom("script-disabled");
ScriptRecord.prototype.atomFunction = atomsvc.getAtom("file-function");
ScriptRecord.prototype.atomBreakpoint = atomsvc.getAtom("item-has-bp");
ScriptRecord.prototype.atomDisabled = atomsvc.getAtom("script-disabled");
var prefs =
[
["valueRecord.showFunctions", false],
@ -310,7 +322,7 @@ function ScriptInstanceRecord(scriptInstance)
this.reserveChildren(true);
this.url = scriptInstance.url;
var sv = console.views.scripts;
this.fileType = sv.atomUnknown;
this.fileType = this.atomUnknown;
this.shortName = this.url;
this.group = 4;
this.scriptInstance = scriptInstance;
@ -324,23 +336,23 @@ function ScriptInstanceRecord(scriptInstance)
switch (ary[1].toLowerCase())
{
case "js":
this.fileType = sv.atomJS;
this.fileType = this.atomJS;
this.group = 0;
break;
case "html":
this.group = 1;
this.fileType = sv.atomHTML;
this.fileType = this.atomHTML;
break;
case "xul":
this.group = 2;
this.fileType = sv.atomXUL;
this.fileType = this.atomXUL;
break;
case "xml":
this.group = 3;
this.fileType = sv.atomXML;
this.fileType = this.atomXML;
break;
}
}
@ -366,6 +378,15 @@ function scr_dragstart (e, transferData, dragAction)
return true;
}
ScriptInstanceRecord.prototype.getProperties =
function scr_getprops (properties)
{
properties.AppendElement(this.fileType);
if (this.scriptInstance.disabledScripts > 0)
properties.AppendElement (this.atomDisabled);
}
ScriptInstanceRecord.prototype.super_resort = XTRootRecord.prototype.resort;
ScriptInstanceRecord.prototype.resort =
@ -477,6 +498,21 @@ function sr_dragstart (e, transferData, dragAction)
return true;
}
ScriptRecord.prototype.getProperties =
function sr_getprops (properties)
{
properties.AppendElement (this.atomFunction);
if (this.scriptWrapper.breakpointCount)
properties.AppendElement (this.atomBreakpoint);
if (this.scriptWrapper.jsdScript.isValid &&
this.scriptWrapper.jsdScript.flags & SCRIPT_NODEBUG)
{
properties.AppendElement (this.atomDisabled);
}
}
/*******************************************************************************
* Value Record.
* Use this to show a jsdIValue in any tree.

View File

@ -33,7 +33,7 @@
*
*/
const __vnk_version = "0.9.57";
const __vnk_version = "0.9.60";
const __vnk_requiredLocale = "0.9.51+";
var __vnk_versionSuffix = "";
@ -724,7 +724,7 @@ function hookDebugStop (e)
enableDebugCommands();
//XXX
paintHack();
//paintHack();
}
console.hooks["hook-venkman-query-exit"] =
@ -1058,8 +1058,22 @@ function st_oncomplete (data, url, status)
if (!ASSERT(data, "loadSource succeeded but got no data"))
data = "";
var matchResult;
// Check before split because xml declarlation may contain newline.
if (data.substring(0, 5) == "<?xml" && !("charset" in this))
{
var s = data.substring(6, data.indexOf("?>"));
matchResult = s.match(/encoding\s*=\s*([\"\'])([^\"\'\s]+)\1/i);
if (matchResult)
this.charset = matchResult[2];
}
var ary = data.split(/\r\n|\n|\r/m);
var charsetRE =
/meta\s+http-equiv\s+content-type\s+charset=([^\;\"\'\s]+)/i;
for (var i = 0; i < ary.length; ++i)
{
/*
@ -1070,8 +1084,7 @@ function st_oncomplete (data, url, status)
ary[i] = ary[i].replace(/[\x00-\x08]|[\x0A-\x1F]/g, "?");
if (!("charset" in this))
{
var matchResult =
ary[i].match(/meta.*http-equiv.*content-type.*charset=([^\;\"]+)/i);
matchResult = ary[i].match(charsetRE);
if (matchResult)
this.charset = matchResult[1];
}

View File

@ -766,12 +766,12 @@ function stringTrim (s)
function formatDateOffset (seconds, format)
{
seconds = parseInt(seconds);
var minutes = parseInt(seconds / 60);
seconds = Math.floor(seconds);
var minutes = Math.floor(seconds / 60);
seconds = seconds % 60;
var hours = parseInt(minutes / 60);
var hours = Math.floor(minutes / 60);
minutes = minutes % 60;
var days = parseInt(hours / 24);
var days = Math.floor(hours / 24);
hours = hours % 24;
if (!format)
@ -889,7 +889,7 @@ function arrayRemoveAt (ary, i)
function getRandomElement (ary)
{
var i = parseInt (Math.random() * ary.length)
var i = Math.floor (Math.random() * ary.length)
if (i == ary.length) i = 0;
return ary[i];
@ -930,7 +930,7 @@ function randomRange (min, max)
if (typeof max == "undefined")
max = 1;
var rv = (parseInt(Math.round((Math.random() * (max - min)) + min )));
var rv = (Math.floor(Math.round((Math.random() * (max - min)) + min )));
return rv;

View File

@ -574,7 +574,8 @@ function lv_renit (jsdFrame)
if (jsdFrame.thisValue)
{
this.thisRecord = new ValueRecord (jsdFrame.thisValue, MSG_VAL_THIS, "");
this.thisRecord = new ValueRecord (jsdFrame.thisValue, MSG_VAL_THIS,
"");
this.thisRecord.onPreRefresh = null;
this.childData.appendChild(this.thisRecord);
if (!state && jsdFrame.thisValue.propertyCount <
@ -820,11 +821,11 @@ function scv_init ()
this.cmdary =
[
["show-most-recent", cmdShowMostRecent, CMD_CONSOLE],
["search-scripts", cmdSearchScripts, CMD_CONSOLE],
["toggle-scripts-search-box", cmdToggleScriptsSearchBox, CMD_CONSOLE],
["show-most-recent", cmdShowMostRecent, CMD_CONSOLE],
["search-scripts", cmdSearchScripts, CMD_CONSOLE],
["toggle-scripts-search-box", cmdToggleScriptsSearchBox, CMD_CONSOLE],
["toggle-show-most-recent", "show-most-recent toggle", 0]
["toggle-show-most-recent", "show-most-recent toggle", 0]
];
console.menuSpecs["context:scripts"] = {
@ -882,16 +883,6 @@ function scv_init ()
this.childData.setSortColumn("baseLineNumber");
this.groupFiles = console.prefs["scriptsView.groupFiles"];
var atomsvc = console.atomService;
this.atomUnknown = atomsvc.getAtom("item-unk");
this.atomHTML = atomsvc.getAtom("item-html");
this.atomJS = atomsvc.getAtom("item-js");
this.atomXUL = atomsvc.getAtom("item-xul");
this.atomXML = atomsvc.getAtom("item-xml");
this.atomGuessed = atomsvc.getAtom("item-guessed");
this.atomBreakpoint = atomsvc.getAtom("item-has-bp");
this.atomFunction = atomsvc.getAtom("file-function");
}
function cmdSearchScripts (e)
@ -924,14 +915,16 @@ function cmdSearchScripts (e)
if (scriptsView.currentContent)
{
var textbox = getChildById(scriptsView.currentContent, "scripts-search");
var textbox = getChildById(scriptsView.currentContent,
"scripts-search");
textbox.value = e.pattern;
}
}
function cmdShowMostRecent (e)
{
e.toggle = getToggle (e.toggle, console.prefs["scriptsView.showMostRecent"]);
e.toggle = getToggle (e.toggle,
console.prefs["scriptsView.showMostRecent"]);
console.prefs["scriptsView.showMostRecent"] = e.toggle;
@ -978,7 +971,8 @@ function cmdToggleScriptsSearchBox(e)
if (scriptsView.currentContent)
{
var box = getChildById(scriptsView.currentContent, "scripts-search-box");
var box = getChildById(scriptsView.currentContent,
"scripts-search-box");
if (box.hasAttribute("hidden"))
box.removeAttribute("hidden");
else
@ -1136,16 +1130,12 @@ function scv_hookScriptInstanceDestroyed (e)
}
}
console.views.scripts.hooks["hook-window-opened"] =
function scv_hookWindowOpen (e)
console.views.scripts.hooks["debug-script"] =
console.views.scripts.hooks["debug-instance"] =
function scv_hookDebugFlagChanged (e)
{
//console.views.scripts.freeze();
}
console.views.scripts.hooks["hook-window-loaded"] =
function scv_hookWindowOpen (e)
{
//console.views.scripts.thaw();
if (console.views.scripts.tree)
console.views.scripts.tree.invalidate();
}
console.views.scripts.onSearchInput =
@ -1259,29 +1249,22 @@ function scv_setmode (flag)
}
console.views.scripts.getCellProperties =
function scv_getcprops (index, colID, properties)
function scv_cellprops (index, colID, properties)
{
var row = this.childData.locateChildByVisualRow (index)
if (colID != "scripts:col-0")
return null;
var row = this.childData.locateChildByVisualRow(index);
if (row)
{
if (colID == "scripts:col-0")
{
if (row instanceof ScriptInstanceRecord)
{
properties.AppendElement (row.fileType);
if ("getProperties" in row)
return row.getProperties (properties);
if (row.scriptInstance.breakpointCount)
properties.AppendElement (this.atomBreakpoint);
}
else if (row instanceof ScriptRecord)
{
properties.AppendElement (this.atomFunction);
if (row.scriptWrapper.breakpointCount)
properties.AppendElement (this.atomBreakpoint);
}
}
if (row.property)
return properties.AppendElement (row.property);
}
return null;
}
console.views.scripts.getContext =
@ -1441,7 +1424,7 @@ function ss_init ()
this.munger.enabled = true;
this.munger.addRule ("quote", /(``|'')/, insertQuote);
this.munger.addRule
("link", /((\w+):\/\/[^<>()\'\"\s:]+|www(\.[^.<>()\'\"\s:]+){2,}|x-jsd:help[\w&\?%]*)/,
("link", /((\w+):\/\/[^<>()\'\"\s]+|www(\.[^.<>()\'\"\s]+){2,}|x-jsd:help[\w&\?%]*)/,
insertLink);
this.munger.addRule ("word-hyphenator",
new RegExp ("(\\S{" + MAX_WORD_LEN + ",})"),
@ -2199,6 +2182,7 @@ function ss_init ()
this.deck = null;
this.tabs = null;
this.heading = null;
this.sourceTabList = new Array();
this.highlightTab = null;
this.highlightNodes = new Array();
@ -2222,8 +2206,6 @@ function cmdCloseTab (e)
source2View.removeSourceTabAtIndex (e.index);
}
var gFindInstData;
function cmdFindString (e)
{
var source2View = console.views.source2;
@ -2235,16 +2217,28 @@ function cmdFindString (e)
return;
var browser = source2View.sourceTabList[index].iframe;
if (!gFindInstData)
gFindInstData = new nsFindInstData();
gFindInstData.browser = browser;
gFindInstData.rootSearchWindow = browser.contentWindow;
gFindInstData.currentSearchWindow = browser.contentWindow;
findInPage(gFindInstData);
if (typeof nsFindData != "undefined")
{
if (!("findData" in console))
console.findData = new nsFindInstData();
console.findData.browser = browser;
console.findData.rootSearchWindow = browser.contentWindow;
console.findData.currentSearchWindow = browser.contentWindow;
findInPage(console.findData);
}
else
{
findInPage(browser, browser.contentWindow, browser.contentWindow);
}
}
function cmdReloadTab (e)
{
if (console.views.source2.sourceTabList.length == 0)
return
var source2View = console.views.source2;
function cb(status)
@ -2584,6 +2578,9 @@ function s2v_initmargin (sourceTab)
console.views.source2.markStopLine =
function s2v_marktab (sourceTab, currentFrame)
{
if ("stopNode" in sourceTab)
this.unmarkStopLine(sourceTab);
if (!currentFrame)
return;
@ -2600,15 +2597,19 @@ function s2v_marktab (sourceTab, currentFrame)
var sourceText = sourceTab.sourceText;
var line = -1;
if ("scriptInstance" in sourceText &&
sourceText.scriptInstance.containsScriptTag (tag))
if ("scriptInstance" in sourceText)
{
line = currentFrame.line;
if (sourceText.scriptInstance.containsScriptTag (tag) ||
tag in sourceText.scriptInstance.scriptManager.transients)
{
line = currentFrame.line;
}
}
else if ("scriptWrapper" in sourceText &&
sourceText.scriptWrapper.tag == tag)
{
line = currentFrame.script.pcToLine (currentFrame.pc, PCMAP_PRETTYPRINT);
line = currentFrame.script.pcToLine (currentFrame.pc,
PCMAP_PRETTYPRINT);
}
if (line > 0)
@ -3154,6 +3155,7 @@ function s2v_showtab (index)
return;
}
this.deck.selectedIndex = index;
this.heading.value = this.sourceTabList[index].sourceText.url;
}
else
this.lastSelectedTab = index;
@ -3355,6 +3357,7 @@ function s2v_show ()
{
this.tabs = getChildById (this.currentContent, "source2-tabs");
this.deck = getChildById (this.currentContent, "source2-deck");
this.heading = getChildById(this.currentContent, "source2-heading");
//this.bloke = getChildById (this.currentContent, "source2-bloke");
//version = getChildById (this.currentContent, "source2-version-label");
//help = getChildById (this.currentContent, "source2-help-label");
@ -3385,6 +3388,7 @@ function s2v_hide ()
this.clearOutputDeck();
this.deck = null;
this.tabs = null;
this.heading = null;
}
/*******************************************************************************

View File

@ -76,8 +76,8 @@
context="context:locals">
<treecols>
<treecol id="locals:col-0" label="&LocalsCol0.header;" primary="true"
flex="1" persist="hidden width"/>
<treecol id="locals:col-0" label="&LocalsCol0.header;"
primary="true" flex="1" persist="hidden width"/>
<splitter class="tree-splitter"/>
<treecol id="locals:col-1" flex="1" label="&LocalsCol1.header;"
persist="hidden width" hidden="true"/>
@ -142,7 +142,7 @@
<!-- source2 view -->
<floatingview id="source2" title="&Source.label;" flex="1">
<stack flex="1">
<vbox flex="1">
<tabbox id="source2-tabbox" flex="1">
<tabs id="source2-tabs">
<!--
@ -153,7 +153,8 @@
</tabs>
<tabpanels id="source2-deck" flex="1"/>
</tabbox>
</stack>
<textbox class="plain" id="source2-heading" readonly="true"/>
</vbox>
</floatingview>
<!-- source view -->

View File

@ -282,11 +282,11 @@ msn.fmt.pc = [%1$S]
# 1: pref name 2: value
msn.fmt.prefvalue = Preference ``%1$S'' is ``%2$S''
# 1: index, 2: label, 3: value
msn.fmt.watch.item = %1$S: %2$S = %3$S
msn.fmt.watch.item = "%1$S: %2$S = %3$S"
# 1: on|off
msn.fmt.pprint = Pretty Print is %1$S.
# 1: frame number, 2: frame string
msn.fmt.frame.line = #%1$S: %2$S
msn.fmt.frame.line = "#%1$S: %2$S"
# 1: file name, 2: line number, 3: pc
msn.fmt.frame.location = %1$S, line %2$S, pc %3$S
# 1: function name, 2: start line, 3: end line, 4: call count, 5: recurse,
@ -426,7 +426,7 @@ cmd.hook-window-opened.params = <window>
cmd.hook-window-opened.help = Called when a new window object is opened. The source for this window will most likely *not* be loaded at this point. <window> is a reference to the DOM window object for the new window.
cmd.hook-window-resized.params = <window>
cmd.hook-window-resized.help = Called when the man Venkman window or a floating windoe is resized. <window> will be a reference to the window object.
cmd.hook-window-resized.help = Called when the main Venkman window or a floating window is resized. <window> will be a reference to the window object.
cmd.hook-window-unloaded.params = <event>
cmd.hook-window-unloaded.help = Called when a source file is unloaded from a window object. <event> is a reference to the DOM event passed to the onUnload handler of the window.
@ -719,15 +719,15 @@ cmd.save-profile.help = Saves the profile data collected for one or more source
cmd.save-breakpoints.label = &Save Breakpoint Settings...
cmd.save-breakpoints.params = [<settings-file>]
cmd.save-breakpoints.help = Save the current list of breakpoints to a JavaScript file, so that they can be restored later. If <settings-file> is not provided, or is the character '?', a file chooser widget will be displayed. <settings-file> can be a reference to a |LocalFile| object or a string represetation of a native path. See also: |save-settings|, |save-watches|, |restore-settings|.
cmd.save-breakpoints.help = Save the current list of breakpoints to a JavaScript file, so that they can be restored later. If <settings-file> is not provided, or is the character '?', a file chooser widget will be displayed. <settings-file> can be a reference to a |LocalFile| object or a string representation of a native path. See also: |save-settings|, |save-watches|, |restore-settings|.
cmd.save-settings.label = Sa&ve Break/Watch Settings...
cmd.save-settings.params = [<settings-file>]
cmd.save-settings.help = Save the current list of breakpoints and watches to a JavaScript file, so that they can be restored later. If <settings-file> is not provided, or is the character '?', a file chooser widget will be displayed. <settings-file> can be a reference to a |LocalFile| object or a string represetation of a native path. See also: |save-watches|, |save-breakpoints|, |restore-settings|.
cmd.save-settings.help = Save the current list of breakpoints and watches to a JavaScript file, so that they can be restored later. If <settings-file> is not provided, or is the character '?', a file chooser widget will be displayed. <settings-file> can be a reference to a |LocalFile| object or a string representation of a native path. See also: |save-watches|, |save-breakpoints|, |restore-settings|.
cmd.save-watches.label = &Save Watch Settings...
cmd.save-watches.params = [<settings-file>]
cmd.save-watches.help = Save the current list of watches to a JavaScript file, so that they can be restored later. If <settings-file> is not provided, or is the character '?', a file chooser widget will be displayed. <settings-file> can be a reference to a |LocalFile| object or a string represetation of a native path. See also: |save-settings|, |save-breakpoints|, |restore-settings|.
cmd.save-watches.help = Save the current list of watches to a JavaScript file, so that they can be restored later. If <settings-file> is not provided, or is the character '?', a file chooser widget will be displayed. <settings-file> can be a reference to a |LocalFile| object or a string representation of a native path. See also: |save-settings|, |save-breakpoints|, |restore-settings|.
cmd.search-scripts.params = [<pattern>]
cmd.search-scripts.help = Removes any scripts with URLs that do not match <pattern> from the Loaded Scripts view. If <pattern> is not provided, all scripts will be displayed.

View File

@ -64,6 +64,10 @@ treecol[hideheader="true"] {
height: 0px;
}
#source2-heading {
padding-top: 2px !important;
}
tree {
margin: 0px;
}
@ -472,6 +476,14 @@ treechildren:-moz-tree-cell-text(watches\:col-0, item-error) {
color: darkred;
}
treechildren:-moz-tree-cell-text(scripts\:col-0, script-disabled) {
font-style: italic;
color: darkred;
}
treechildren:-moz-tree-cell-text(scripts\:col-0, script-disabled, selected, focus) {
color: white;
}
treechildren:-moz-tree-cell-text(item-exception) {
font-weight: bold;