diff -rNpu6 repository/chrome/content/firebug/browserOverlay.xul breakpoints/chrome/content/firebug/browserOverlay.xul
--- repository/chrome/content/firebug/browserOverlay.xul 2006-08-16 19:48:26.000000000 +0200
+++ breakpoints/chrome/content/firebug/browserOverlay.xul 2006-08-14 00:55:12.000000000 +0200
@@ -157,13 +157,13 @@
tooltiptext="&firebug.CloseFireBug;" command="cmd_togglePanel"/>
-
-
+
+
>> " + expr, "command", FireBug_logTextRow);
+ FireBug.console.log(this.prefix + " " + expr, "command", FireBug_logTextRow);
var result = this.evaluate(expr);
if (result != undefined)
FireBug.console.log(result, "result");
}
-FireBugCommandLine.evaluate = function(expr)
+FireBugCommandLine.prefix = ">>>";
+FireBugCommandLine.updatePrefix = function()
+{
+ if (!FireBug.currentContext.evalObject)
+ {
+ this.prefix = ">>>";
+ document.getElementById("fbCommandArow").value = ">>>";
+ return;
+ }
+ var winTitle = FireBug.currentContext.evalObject.document.title;
+ if (winTitle.length > 20)
+ winTitle = winTitle.substring(0, 18) + "\u2026";
+ this.prefix = "[ " + winTitle + " ] >>>";
+ document.getElementById("fbCommandArow").value = this.prefix;
+}
+
+FireBugCommandLine.evaluate = function(expr, forceDefaultScope)
{
var win = FireBug.currentContext.window;
+ if (FireBug.currentContext.evalObject && !forceDefaultScope)
+ win = FireBug.currentContext.evalObject;
- var result = null;
- win.FireBugEval = function(value) { result = value; }
+ var result = null;
+ win.FireBugEval = function(value) { result = value; }
win.FireBugEval.api = FireBugCommandLineAPI;
win.FireBugEval.expr = expr;
- if (FireBug.debuggr.debugging && FireBug.currentContext.currentFrame)
+ if ((!FireBug.currentContext.evalObject || forceDefaultScope) &&
+ FireBug.debuggr.debugging && FireBug.currentContext.currentFrame)
+ {
FireBug.currentContext.currentFrame.eval(this.evalScript, "", 1, {});
+ }
else
this.injectScript(this.evalScript, win);
delete win.FireBugEval.api;
delete win.FireBugEval.expr;
delete win.FireBugEval;
-
+
return result;
}
FireBugCommandLine.evalScript =
"with (FireBugEval.api) { with (window) { FireBugEval(eval(FireBugEval.expr)) }}";
diff -rNpu6 repository/chrome/content/firebug/firebug.css breakpoints/chrome/content/firebug/firebug.css
--- repository/chrome/content/firebug/firebug.css 2006-08-16 19:48:26.000000000 +0200
+++ breakpoints/chrome/content/firebug/firebug.css 2006-08-10 18:32:42.000000000 +0200
@@ -30,6 +30,10 @@
visibility: visible;
}
#fbDebugToolbar[debugging="true"] #fbStackList {
visibility: visible;
}
+
+#fbWindowMenu menuitem, #fbWindowMenu menu {
+ max-width: 20em;
+}
diff -rNpu6 repository/chrome/content/firebug/firebug.js breakpoints/chrome/content/firebug/firebug.js
--- repository/chrome/content/firebug/firebug.js 2006-08-16 19:48:26.000000000 +0200
+++ breakpoints/chrome/content/firebug/firebug.js 2006-08-14 00:55:20.000000000 +0200
@@ -340,12 +340,13 @@ FireBug.attachToWindow = function(win)
this.selectView(context.browser.priorView.viewName);
}
else
this.selectView("console");
}
+ FireBugCommandLine.updatePrefix();
}
else
this.showErrorCount(0);
this.inspectCommand.setAttribute("disabled", !context || !context.loaded);
}
@@ -458,12 +459,13 @@ FireBug.createContext = function(win)
var browser = this.getBrowserByWindow(win);
var context = {
window: win,
browser: browser,
contextNodes: {},
+ evalObject: null,
selectedObject: null,
errorCount: 0,
spies: [],
history: [],
historyIndex: -1,
messageQueue: [],
@@ -1745,12 +1747,53 @@ FireBug.onInspectingClick = function(eve
FireBug.detachClickInspectListeners(FireBug.inspectingWindow);
event.stopPropagation();
event.preventDefault();
}
+FireBug.onMenuBreakpointClick = function(event)
+{
+ var href = event.target.getAttribute("href");
+ var lineNo = event.target.getAttribute("line");
+ var scriptFile = FireBug.currentContext.scriptFiles[href];
+
+ FireBug.debuggr.showScript(scriptFile, lineNo, true);
+}
+
+// Cheat a bit:
+FireBug.onMenuClearBreakpoint = FireBug.onMenuSetBreakpoint = function(event)
+{
+ var target = document.popupNode;
+ while (target)
+ {
+ if ((target.className.indexOf("sourceRow") > -1) && (target.nodeName == "DIV"))
+ break;
+ target = target.parentNode;
+ }
+ if (!target) // huh?
+ return;
+
+ var lineNo = parseInt(target.firstChild.textContent);
+ var scriptFile = target.parentNode.scriptFile;
+ if (target.hasAttribute("breakpoint"))
+ {
+ target.removeAttribute("breakpoint");
+ FireBug.debuggr.clearBreakpoint(scriptFile.href, lineNo);
+ }
+ else
+ {
+ target.setAttribute("breakpoint", "true");
+ FireBug.debuggr.setBreakpoint(scriptFile.href, lineNo);
+ }
+}
+
+FireBug.onMenuResetEvalWindow = function()
+{
+ FireBug.console.setEvalObject(FireBug.currentContext.window);
+}
+
FireBug.onSelectKeyPress = function(event)
{
if (event.keyCode == 13)
FireBug.stopInspecting();
else if (event.keyCode == 27)
@@ -1799,12 +1842,25 @@ FireBug.onOptionsPopup = function(popup)
child.setAttribute("checked", checked);
}
}
}
+FireBug.onContextPopup = function(event, popup)
+{
+ var target = document.popupNode;
+ FireBugUtils.showItemsByView(popup, FireBug.currentContext.view.viewName);
+ FireBug.currentContext.view.onContextPopup(event, popup, target);
+}
+
+FireBug.onContextHiding = function(event, popup)
+{
+ var target = document.popupNode;
+ FireBug.currentContext.view.onContextHiding(event, popup, target);
+}
+
FireBug.onSwitchView = function(button)
{
var viewName = button.getAttribute("view");
this.selectView(viewName);
}
@@ -1912,12 +1968,17 @@ FireBug.getBoolPref = function(prefName)
FireBug.setBoolPref = function(prefName, value)
{
this[prefName] = value;
this.prefs.setBoolPref("extensions.firebug." + prefName, value);
}
+FireBug.getIntPref = function(prefName)
+{
+ return this.prefs.getIntPref("extensions.firebug." + prefName);
+}
+
FireBug.iterateWindows = function(context, win, handler)
{
if (!win || !win.document)
return;
handler(context, win);
diff -rNpu6 repository/chrome/content/firebug/utils.js breakpoints/chrome/content/firebug/utils.js
--- repository/chrome/content/firebug/utils.js 2006-08-16 19:48:26.000000000 +0200
+++ breakpoints/chrome/content/firebug/utils.js 2006-08-12 23:12:30.000000000 +0200
@@ -833,12 +833,26 @@ FireBugUtils.hasChildElements = function
return true;
}
return false;
}
+FireBugUtils.showItemsByView = function(popup, viewName)
+{
+ for (var i = 0; i < popup.childNodes.length; i++)
+ {
+ if (FireBugUtils.hasClass(popup.childNodes[i], "alwaysVisible") ||
+ FireBugUtils.hasClass(popup.childNodes[i], viewName))
+ {
+ popup.childNodes[i].hidden = false;
+ }
+ else
+ popup.childNodes[i].hidden = true;
+ }
+}
+
var contextDocument = document;
FireBugUtils.createElement = function(name, attrs, content)
{
var node = contextDocument.createElement(name);
diff -rNpu6 repository/chrome/content/firebug/views/console.js breakpoints/chrome/content/firebug/views/console.js
--- repository/chrome/content/firebug/views/console.js 2006-08-16 19:48:26.000000000 +0200
+++ breakpoints/chrome/content/firebug/views/console.js 2006-08-14 00:34:18.000000000 +0200
@@ -271,6 +271,220 @@ FireBugConsoleView.prototype.flushThrott
context.messageTimeout = setTimeout(function() { self.flushThrottleQueue(context); },
this.throttleFlushDelay);
}
else
context.messageTimeout = 0;
}
+
+FireBugConsoleView.prototype.setEvalObject = function(obj)
+{
+ if (obj == FireBug.currentContext.window)
+ FireBug.currentContext.evalObject = null;
+ else
+ FireBug.currentContext.evalObject = obj;
+ FireBugCommandLine.updatePrefix();
+}
+
+FireBugConsoleView.prototype.onContextPopup = function(event, popup, target)
+{
+ function clickContextItem(e)
+ {
+ var i = e.target.getAttribute("windowIndex");
+ self.setEvalObject(windows[i]);
+ windows = [];
+ self = null;
+ };
+
+ function focusContextItem(e)
+ {
+ if (!e.target.hasAttribute("windowIndex"))
+ return;
+ var i = e.target.getAttribute("windowIndex");
+ self.previewWindow(windows[i]);
+ };
+
+ var self = this;
+ var doc = popup.ownerDocument;
+
+ // Generating the submenus once is quite enough:
+ if (event.target != doc.getElementById("fbMainContextMenu"))
+ return;
+
+ this.onFocusContextItem = focusContextItem;
+ popup.addEventListener("DOMMenuItemActive", this.onFocusContextItem, true);
+
+ const MEDIATOR_CONTRACTID = "@mozilla.org/appshell/window-mediator;1";
+ const nsIWindowMediator = Components.interfaces.nsIWindowMediator;
+ var windowManager = Components.classes[MEDIATOR_CONTRACTID].getService(nsIWindowMediator);
+ var windowEnum = windowManager.getEnumerator(null);
+
+ var windows = [];
+ var menu = doc.getElementById("fbWindowMenu");
+ var submenu, subpopup, menuitem;
+ while (windowEnum.hasMoreElements())
+ {
+ var w = windowEnum.getNext();
+ windows.push(w);
+ var label = w.document.title;
+ if (w.document.documentElement.getAttribute("windowtype") == "navigator:browser")
+ {
+ submenu = doc.createElement("menu");
+ submenu.setAttribute("label", label);
+
+ subpopup = doc.createElement("menupopup");
+ menuitem = doc.createElement("menuitem");
+ menuitem.setAttribute("label", FireBug.strings.getString("BrowserWindow"));
+ menuitem.setAttribute("windowIndex", windows.length - 1);
+ menuitem.addEventListener("command", clickContextItem, true);
+ subpopup.appendChild(menuitem);
+ subpopup.appendChild(doc.createElement("menuseparator"));
+
+ var tabs = w.document.defaultView.gBrowser.mTabs;
+ for (var i = 0; i < tabs.length; ++i)
+ {
+ windows.push(tabs[i].linkedBrowser.contentWindow);
+ menuitem = doc.createElement("menuitem");
+ menuitem.setAttribute("label", tabs[i].label);
+ menuitem.setAttribute("windowIndex", windows.length - 1);
+ menuitem.addEventListener("command", clickContextItem, true);
+ subpopup.appendChild(menuitem);
+ }
+ submenu.appendChild(subpopup);
+ menu.appendChild(submenu)
+ }
+ else
+ {
+ menuitem = doc.createElement("menuitem");
+ menuitem.setAttribute("label", label);
+ menuitem.setAttribute("windowIndex", windows.length - 1);
+ menuitem.addEventListener("command", clickContextItem, true);
+ menu.appendChild(menuitem);
+ }
+ }
+}
+
+FireBugConsoleView.prototype.onContextHiding = function(event, popup, target)
+{
+ var doc = popup.ownerDocument;
+ var context = FireBug.currentContext;
+
+ //XXXgijs: prevent crashing 'cause Gecko likes to call this on every submenupopup
+ // and after the first time that submenupopup is gone. It doesn't like that.
+ if (event.target != doc.getElementById("fbMainContextMenu"))
+ return;
+
+ // cleanup:
+ FireBugUtils.clearNode(doc.getElementById("fbWindowMenu"));
+ popup.removeEventListener("DOMMenuItemActive", this.onFocusContextItem, true);
+ delete this.onFocusContextItem;
+
+ var cxNode = context.contextNodes["windowPreview"];
+ if (!cxNode)
+ return;
+ cxNode.parentNode.removeChild(cxNode);
+ delete context.contextNodes["windowPreview"];
+}
+
+FireBugConsoleView.prototype.previewWindow = function(win)
+{
+ var context = FireBug.currentContext;
+ var doc = FireBug.browser.contentDocument;
+ var headerStr = FireBug.strings.getFormattedString("SetEvalWin", [win.document.title]);
+ var drawingCtx;
+ if (!context.contextNodes["windowPreview"])
+ {
+ context.contextNodes["windowPreview"] = FireBug.createContextNode("windowPreview");
+ var header = doc.createElement("h1");
+ var canvas = doc.createElement("canvas");
+ context.contextNodes["windowPreview"].appendChild(header);
+ context.contextNodes["windowPreview"].appendChild(canvas);
+ }
+ else
+ {
+ header = context.contextNodes["windowPreview"].firstChild;
+ canvas = context.contextNodes["windowPreview"].lastChild;
+ }
+ header.innerHTML = FireBugUtils.escapeHTML(headerStr);
+
+ // Size everything correctly
+ var maxSize = FireBug.getIntPref("windowPreview.size");
+ var aspect = win.innerHeight / win.innerWidth;
+ var w, h, scale;
+ if (aspect > 1)
+ {
+ h = maxSize;
+ w = Math.round(maxSize / aspect);
+ scale = maxSize / win.innerHeight;
+ }
+ else
+ {
+ w = maxSize;
+ h = Math.round(maxSize * aspect);
+ scale = maxSize / win.innerWidth;
+ }
+ context.contextNodes["windowPreview"].style.left = Math.round((doc.width - w) / 2) + "px";
+ context.contextNodes["windowPreview"].style.width = (w + 100) + "px !important";
+ context.contextNodes["windowPreview"].style.maxWidth = (w + 10) + "px !important";
+ canvas.width = w;
+ canvas.height = h;
+ canvas.style.width = canvas.style.minWidth = canvas.style.maxWidth = w + "px";
+ canvas.style.height = canvas.style.minHeight = canvas.style.maxHeight = h + "px";
+
+ // Actually draw the window:
+ drawingCtx = canvas.getContext("2d");
+ drawingCtx.scale(scale, scale);
+ drawElaborateWindow(win, drawingCtx);
+}
+
+
+// Most of the following courtesy of Mossop's Nightly Tester Tools extension.
+// For windows with embedded and 's, the contents of those
+// do not get drawn. Hence the following hacks to get those to be painted as well:
+function drawElaborateWindow(shotWindow, ctx)
+{
+ const Ci = Components.interfaces;
+ var winbo = shotWindow.document.getBoxObjectFor(shotWindow.document.documentElement);
+ var winx = winbo.screenX;
+ var winy = winbo.screenY;
+
+ try
+ {
+ ctx.drawWindow(shotWindow, shotWindow.scrollX, shotWindow.scrollY,
+ shotWindow.innerWidth, shotWindow.innerHeight, "rgba(255, 255, 255, 255)");
+ }
+ catch (e) { }
+
+ var docshell = shotWindow.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIWebNavigation)
+ .QueryInterface(Ci.nsIDocShell);
+ var shells = docshell.getDocShellEnumerator(Ci.nsIDocShellTreeItem.typeAll,
+ Ci.nsIDocShell.ENUMERATE_FORWARDS);
+ while (shells.hasMoreElements())
+ {
+ var shell = shells.getNext().QueryInterface(Ci.nsIDocShell);
+ try
+ {
+ if (shell == docshell)
+ continue;
+
+ shell.QueryInterface(Ci.nsIBaseWindow);
+ if (!shell.visibility)
+ continue;
+
+ var shellwin = shell.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIDOMWindow);
+ var shellbo = shellwin.document.getBoxObjectFor(shellwin.document.documentElement);
+
+ ctx.save();
+ try
+ {
+ ctx.translate(shellbo.screenX - winx + shellwin.scrollX,
+ shellbo.screenY - winy + shellwin.scrollY);
+ ctx.drawWindow(shellwin, shellwin.scrollX, shellwin.scrollY, shellwin.innerWidth,
+ shellwin.innerHeight, "rgba(255, 255, 255, 255)");
+ }
+ catch (e) { }
+ ctx.restore();
+ }
+ catch (e) { }
+ }
+}
diff -rNpu6 repository/chrome/content/firebug/views/js.js breakpoints/chrome/content/firebug/views/js.js
--- repository/chrome/content/firebug/views/js.js 2006-08-16 19:48:26.000000000 +0200
+++ breakpoints/chrome/content/firebug/views/js.js 2006-08-10 00:33:16.000000000 +0200
@@ -387,13 +387,29 @@ FireBugJSView.prototype.clearBreakpoint
{
this.firebugService.clearBreakpoint(href, lineNo);
}
FireBugJSView.prototype.clearAllBreakpoints = function(context)
{
- this.firebugService.clearAllBreakpoints();
+ var ary = [];
+ for (var k in context.scriptFiles)
+ {
+ ary.push(k);
+ var scriptNode = this.contextNode.scriptNodes[k];
+ if (!scriptNode)
+ continue;
+ // remove visual breakpoint markers:
+ this.firebugService.enumerateBreakpoints(k,
+ {
+ call: function(lineNo)
+ {
+ scriptNode.childNodes[lineNo-1].removeAttribute("breakpoint");
+ }
+ })
+ }
+ this.firebugService.clearAllBreakpoints(ary.length, ary);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
FireBugJSView.prototype.isScriptHref = function(href, context)
{
@@ -888,6 +904,67 @@ FireBugJSView.prototype.onBrowserLoad =
{
var postBrowserLoad = this.postBrowserLoad;
this.postBrowserLoad = null;
postBrowserLoad();
}
}
+
+FireBugJSView.prototype.onContextPopup = function(event, popup, target)
+{
+ var doc = popup.ownerDocument;
+
+ // Construct a submenu for the existing breakpoints.
+ var bpMenu = doc.getElementById("fbBreakPointMenu");
+ FireBugUtils.clearNode(bpMenu);
+
+ for (var key in FireBug.currentContext.scriptFiles)
+ {
+ var lines = [];
+ // Insert an item for each breakpoint in this file
+ function addLine(line) { lines.push(line); };
+ this.firebugService.enumerateBreakpoints(key, {call: addLine});
+ lines.sort();
+ if (lines.length > 0 && bpMenu.childNodes.length > 0)
+ bpMenu.appendChild(doc.createElement("menuseparator"));
+
+ for (var i = 0; i < lines.length; ++i)
+ {
+ var line = lines[i];
+ var label = FireBug.strings.getFormattedString("Line", [key, line]);
+ var menuitem = doc.createElement("menuitem");
+ menuitem.setAttribute("label", label);
+ menuitem.setAttribute("href", key);
+ menuitem.setAttribute("line", line);
+ menuitem.setAttribute("crop", "center");
+ menuitem.setAttribute("oncommand", "FireBug.onMenuBreakpointClick(event)");
+ bpMenu.appendChild(menuitem);
+ }
+ }
+
+ bpMenu.parentNode.setAttribute("disabled", "true");
+ doc.getElementById("fbMainCx_setBreakpoint").setAttribute("disabled", "true");
+ doc.getElementById("fbMainCx_clearBreakpoint").setAttribute("disabled", "true");
+ doc.getElementById("cmd_clearAllBreakpoints").setAttribute("disabled", "true");
+
+ // If there are breakpoints, enable the submenu and the clear all item.
+ if (bpMenu.childNodes.length > 0)
+ {
+ bpMenu.parentNode.removeAttribute("disabled");
+ doc.getElementById("cmd_clearAllBreakpoints").removeAttribute("disabled");
+ }
+
+ while (target)
+ {
+ if (FireBugUtils.hasClass(target, "sourceRow") && (target.nodeName == "DIV"))
+ break;
+ target = target.parentNode;
+ }
+
+ if (!target)
+ return;
+
+ // If we're on a source line, enable/disable the right menus:
+ if (target.getAttribute("breakpoint") == "true")
+ doc.getElementById("fbMainCx_clearBreakpoint").removeAttribute("disabled");
+ else
+ doc.getElementById("fbMainCx_setBreakpoint").removeAttribute("disabled");
+}
diff -rNpu6 repository/chrome/content/firebug/views/view.js breakpoints/chrome/content/firebug/views/view.js
--- repository/chrome/content/firebug/views/view.js 2006-08-16 19:48:26.000000000 +0200
+++ breakpoints/chrome/content/firebug/views/view.js 2006-08-10 17:59:02.000000000 +0200
@@ -107,6 +107,14 @@ FireBugView.prototype.clear = function()
{
}
FireBugView.prototype.setOption = function(name, value)
{
}
+
+FireBugView.prototype.onContextPopup = function(event, popup, target)
+{
+}
+
+FireBugView.prototype.onContextHiding = function(event, popup, target)
+{
+}
diff -rNpu6 repository/chrome/locale/en-US/firebug.dtd breakpoints/chrome/locale/en-US/firebug.dtd
--- repository/chrome/locale/en-US/firebug.dtd 2006-08-16 19:48:26.000000000 +0200
+++ breakpoints/chrome/locale/en-US/firebug.dtd 2006-08-14 00:45:54.000000000 +0200
@@ -1,8 +1,9 @@
+
@@ -42,12 +43,19 @@
+
+
+
+
+
+
+
diff -rNpu6 repository/chrome/locale/en-US/firebug.properties breakpoints/chrome/locale/en-US/firebug.properties
--- repository/chrome/locale/en-US/firebug.properties 2006-08-16 19:48:26.000000000 +0200
+++ breakpoints/chrome/locale/en-US/firebug.properties 2006-08-12 22:58:18.000000000 +0200
@@ -1,8 +1,10 @@
SyncWarning=Synchronous XMLHttpRequests don't work properly in FireBug due to a bug in Firefox. There may be problems with this page.
Loading=Loading...
Post=Post
Response=Response
Headers=Headers
Assertion=Assertion Failure
+BrowserWindow=Browser XUL Window
Line=%S (line %S)
StackItem=%S (%S line %S)
+SetEvalWin=Set eval Window to: %S
diff -rNpu6 repository/chrome/skin/classic/views/console.css breakpoints/chrome/skin/classic/views/console.css
--- repository/chrome/skin/classic/views/console.css 2006-08-16 19:48:26.000000000 +0200
+++ breakpoints/chrome/skin/classic/views/console.css 2006-08-12 01:44:14.000000000 +0200
@@ -373,12 +373,33 @@ body {
.disclosure.open {
display: block;
}
/*****************************************************************************************/
+.contextNode-windowPreview {
+ top: 0;
+ background-color: #CFDCFF;
+ border: 1px solid #5F8EFF;
+ display: block !important;
+ overflow: hidden !important;
+ height: auto !important;
+}
+
+.contextNode-windowPreview h1 {
+ margin: 3px;
+ font-size: 14px;
+ font-family: Lucida Grande, sans-serif;
+ font-weight: bold;
+}
+.contextNode-windowPreview canvas {
+ display: block;
+ margin: 3px auto;
+ overflow: hidden;
+}
+
.sourceRow {
font-family: Monaco, monospace;
font-size: 11px;
}
.sourceLine {
diff -rNpu6 repository/components/firebug-service.js breakpoints/components/firebug-service.js
--- repository/components/firebug-service.js 2006-08-16 21:12:54.000000000 +0200
+++ breakpoints/components/firebug-service.js 2006-08-16 22:15:46.000000000 +0200
@@ -169,22 +169,23 @@ FireBugService.prototype.clearBreakpoint
{
var pc = script.lineToPc(line, PCMAP_SOURCETEXT);
script.clearBreakpoint(pc);
}
}
-FireBugService.prototype.clearAllBreakpoints = function()
+FireBugService.prototype.clearAllBreakpoints = function(count, ary)
{
- for (var href in this.breakpoints)
+ for (var i = 0; i < ary.length; ++i)
{
- var breakpoints = this.breakpoints[href];
- for (var i = 0; i < breakpoints.length; ++i)
- this.clearBreakpoint(href, breakpoints[i]);
+ var breakpoints = this.breakpoints[ary[i]];
+ if (!breakpoints)
+ continue;
+ for (var j = 0; j < breakpoints.length; ++j)
+ this.clearBreakpoint(ary[i], breakpoints[j]);
+ delete this.breakpoints[ary[i]];
}
-
- this.breakpoints = {};
}
FireBugService.prototype.enumerateBreakpoints = function(href, cb)
{
href = this.normalizeHref(href);
var breakpoints = this.breakpoints[href];
diff -rNpu6 repository/components/nsIFireBug.idl breakpoints/components/nsIFireBug.idl
--- repository/components/nsIFireBug.idl 2006-08-16 21:12:54.000000000 +0200
+++ breakpoints/components/nsIFireBug.idl 2006-08-16 22:15:46.000000000 +0200
@@ -33,12 +33,12 @@ interface nsIFireBug : nsISupports
void registerDebugger(in nsIFireBugDebugger debugger);
void unregisterDebugger(in nsIFireBugDebugger debugger);
void setBreakpoint(in string href, in unsigned long line);
void clearBreakpoint(in string href, in unsigned long line);
- void clearAllBreakpoints();
+ void clearAllBreakpoints(in PRUint32 count, [array, size_is(count)] in string hrefArray);
void enumerateBreakpoints(in string href, in nsIFireBugBreakpointCallback cb);
readonly attribute nsIDOMWindow lastErrorWindow;
};
diff -rNpu6 repository/defaults/preferences/firebug.js breakpoints/defaults/preferences/firebug.js
--- repository/defaults/preferences/firebug.js 2006-08-16 21:12:54.000000000 +0200
+++ breakpoints/defaults/preferences/firebug.js 2006-08-16 22:15:46.000000000 +0200
@@ -19,6 +19,8 @@ pref("extensions.firebug.showAllStyles",
pref("extensions.firebug.showFunctions", true);
pref("extensions.firebug.showConstants", false);
pref("extensions.firebug.enableDebugger", true);
pref("extensions.firebug.breakOnErrors", false);
+
+pref("extensions.firebug.windowPreview.size", 320);
diff -rNpu6 repository/install.rdf breakpoints/install.rdf
--- repository/install.rdf 2006-08-16 21:12:54.000000000 +0200
+++ breakpoints/install.rdf 2006-08-16 22:15:46.000000000 +0200
@@ -2,13 +2,13 @@
firebug@software.joehewitt.com
- 0.4.0.0.1
+ 0.4.0.0.3
2
{ec8030f7-c20a-464f-9b0e-13a3a9e97384}