Backed out changeset 960aa3700c37
authorNick Fitzgerald <fitzgen@gmail.com>
Thu, 18 Jul 2013 00:52:54 -0700
changeset 151584 a58e072e2ae710045c6017b8e399b8dc513e04fd
parent 151583 960aa3700c37f3cf92eea104d0bf44fcff628f04
child 151585 9c0275e6303e4e57c5a963fd5dc7f807fd367159
push id2859
push userakeybl@mozilla.com
push dateMon, 16 Sep 2013 19:14:59 +0000
treeherdermozilla-beta@87d3c51cd2bf [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone25.0a1
backs out960aa3700c37f3cf92eea104d0bf44fcff628f04
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out changeset 960aa3700c37
browser/devtools/debugger/debugger-controller.js
browser/devtools/debugger/debugger-panes.js
browser/devtools/debugger/debugger-toolbar.js
browser/devtools/debugger/test/Makefile.in
browser/devtools/debugger/test/browser_dbg_blackboxing-01.js
browser/devtools/debugger/test/browser_dbg_blackboxing-02.js
browser/devtools/debugger/test/browser_dbg_blackboxing-03.js
browser/devtools/debugger/test/browser_dbg_blackboxing-04.js
browser/devtools/debugger/test/browser_dbg_blackboxing.html
browser/devtools/debugger/test/browser_dbg_blackboxing_blackboxme.js
browser/devtools/debugger/test/browser_dbg_blackboxing_one.js
browser/devtools/debugger/test/browser_dbg_blackboxing_three.js
browser/devtools/debugger/test/browser_dbg_blackboxing_two.js
browser/devtools/shared/widgets/SideMenuWidget.jsm
browser/devtools/shared/widgets/ViewHelpers.jsm
browser/locales/en-US/chrome/browser/devtools/debugger.properties
browser/themes/linux/devtools/debugger.css
browser/themes/osx/devtools/debugger.css
browser/themes/windows/devtools/debugger.css
--- a/browser/devtools/debugger/debugger-controller.js
+++ b/browser/devtools/debugger/debugger-controller.js
@@ -418,17 +418,16 @@ ThreadState.prototype = {
  * Keeps the stack frame list up-to-date, using the thread client's
  * stack frame cache.
  */
 function StackFrames() {
   this._onPaused = this._onPaused.bind(this);
   this._onResumed = this._onResumed.bind(this);
   this._onFrames = this._onFrames.bind(this);
   this._onFramesCleared = this._onFramesCleared.bind(this);
-  this._onBlackBoxChange = this._onBlackBoxChange.bind(this);
   this._afterFramesCleared = this._afterFramesCleared.bind(this);
   this.evaluate = this.evaluate.bind(this);
 }
 
 StackFrames.prototype = {
   get activeThread() DebuggerController.activeThread,
   autoScopeExpand: false,
   currentFrame: null,
@@ -443,33 +442,31 @@ StackFrames.prototype = {
    * Connect to the current thread client.
    */
   connect: function() {
     dumpn("StackFrames is connecting...");
     this.activeThread.addListener("paused", this._onPaused);
     this.activeThread.addListener("resumed", this._onResumed);
     this.activeThread.addListener("framesadded", this._onFrames);
     this.activeThread.addListener("framescleared", this._onFramesCleared);
-    window.addEventListener("Debugger:BlackBoxChange", this._onBlackBoxChange, false);
     this._handleTabNavigation();
   },
 
   /**
    * Disconnect from the client.
    */
   disconnect: function() {
     if (!this.activeThread) {
       return;
     }
     dumpn("StackFrames is disconnecting...");
     this.activeThread.removeListener("paused", this._onPaused);
     this.activeThread.removeListener("resumed", this._onResumed);
     this.activeThread.removeListener("framesadded", this._onFrames);
     this.activeThread.removeListener("framescleared", this._onFramesCleared);
-    window.removeEventListener("Debugger:BlackBoxChange", this._onBlackBoxChange, false);
   },
 
   /**
    * Handles any initialization on a tab navigation event issued by the client.
    */
   _handleTabNavigation: function() {
     dumpn("Handling tab navigation in the StackFrames");
     // Nothing to do here yet.
@@ -592,32 +589,22 @@ StackFrames.prototype = {
 
 
     // Make sure the debugger view panes are visible.
     DebuggerView.showInstrumentsPane();
 
     // Make sure all the previous stackframes are removed before re-adding them.
     DebuggerView.StackFrames.empty();
 
-    let previousBlackBoxed = null;
     for (let frame of this.activeThread.cachedFrames) {
-      let { depth, where: { url, line }, isBlackBoxed } = frame;
+      let { depth, where: { url, line } } = frame;
       let frameLocation = NetworkHelper.convertToUnicode(unescape(url));
       let frameTitle = StackFrameUtils.getFrameTitle(frame);
 
-      if (isBlackBoxed) {
-        if (previousBlackBoxed == url) {
-          continue;
-        }
-        previousBlackBoxed = url;
-      } else {
-        previousBlackBoxed = null;
-      }
-
-      DebuggerView.StackFrames.addFrame(frameTitle, frameLocation, line, depth, isBlackBoxed);
+      DebuggerView.StackFrames.addFrame(frameTitle, frameLocation, line, depth);
     }
     if (this.currentFrame == null) {
       DebuggerView.StackFrames.selectedDepth = 0;
     }
     if (this.activeThread.moreFrames) {
       DebuggerView.StackFrames.dirty = true;
     }
   },
@@ -635,28 +622,16 @@ StackFrames.prototype = {
     // After each frame step (in, over, out), framescleared is fired, which
     // forces the UI to be emptied and rebuilt on framesadded. Most of the times
     // this is not necessary, and will result in a brief redraw flicker.
     // To avoid it, invalidate the UI only after a short time if necessary.
     window.setTimeout(this._afterFramesCleared, FRAME_STEP_CLEAR_DELAY);
   },
 
   /**
-   * Handler for the debugger's BlackBoxChange notification.
-   */
-  _onBlackBoxChange: function() {
-    if (this.activeThread.state == "paused") {
-      // We have to clear out the existing frames and refetch them to get their
-      // updated black boxed status.
-      this.activeThread._clearFrames();
-      this.activeThread.fillFrames(CALL_STACK_PAGE_SIZE);
-    }
-  },
-
-  /**
    * Called soon after the thread client's framescleared notification.
    */
   _afterFramesCleared: function() {
     // Ignore useless notifications.
     if (this.activeThread.cachedFrames.length) {
       return;
     }
     DebuggerView.StackFrames.empty();
@@ -1021,37 +996,16 @@ SourceScripts.prototype = {
     DebuggerController.Breakpoints.updateEditorBreakpoints();
     DebuggerController.Breakpoints.updatePaneBreakpoints();
 
     // Signal that scripts have been added.
     window.dispatchEvent(document, "Debugger:AfterSourcesAdded");
   },
 
   /**
-   * Set the black boxed status of the given source.
-   *
-   * @param Object aSource
-   *        The source form.
-   * @param bool aBlackBoxFlag
-   *        True to black box the source, false to un-black box it.
-   */
-  blackBox: function(aSource, aBlackBoxFlag) {
-    const sourceClient = this.activeThread.source(aSource);
-    sourceClient[aBlackBoxFlag ? "blackBox" : "unblackBox"](function({ error, message }) {
-      if (error) {
-        let msg = "Could not toggle black boxing for "
-          + aSource.url + ": " + message;
-        dumpn(msg);
-        return void Cu.reportError(msg);
-      }
-      window.dispatchEvent(document, "Debugger:BlackBoxChange", sourceClient);
-    });
-  },
-
-  /**
    * Gets a specified source's text.
    *
    * @param object aSource
    *        The source object coming from the active thread.
    * @param function aOnTimeout [optional]
    *        Function called when the source text takes a long time to fetch,
    *        but not necessarily failing. Long fetch times don't cause the
    *        rejection of the returned promise.
--- a/browser/devtools/debugger/debugger-panes.js
+++ b/browser/devtools/debugger/debugger-panes.js
@@ -13,51 +13,46 @@ function SourcesView() {
 
   this._onEditorLoad = this._onEditorLoad.bind(this);
   this._onEditorUnload = this._onEditorUnload.bind(this);
   this._onEditorSelection = this._onEditorSelection.bind(this);
   this._onEditorContextMenu = this._onEditorContextMenu.bind(this);
   this._onSourceSelect = this._onSourceSelect.bind(this);
   this._onSourceClick = this._onSourceClick.bind(this);
   this._onBreakpointRemoved = this._onBreakpointRemoved.bind(this);
-  this._onSourceCheck = this._onSourceCheck.bind(this);
   this._onBreakpointClick = this._onBreakpointClick.bind(this);
   this._onBreakpointCheckboxClick = this._onBreakpointCheckboxClick.bind(this);
   this._onConditionalPopupShowing = this._onConditionalPopupShowing.bind(this);
   this._onConditionalPopupShown = this._onConditionalPopupShown.bind(this);
   this._onConditionalPopupHiding = this._onConditionalPopupHiding.bind(this);
   this._onConditionalTextboxInput = this._onConditionalTextboxInput.bind(this);
   this._onConditionalTextboxKeyPress = this._onConditionalTextboxKeyPress.bind(this);
 }
 
 SourcesView.prototype = Heritage.extend(WidgetMethods, {
   /**
    * Initialization function, called when the debugger is started.
    */
   initialize: function() {
     dumpn("Initializing the SourcesView");
 
-    this.widget = new SideMenuWidget(document.getElementById("sources"), {
-      showCheckboxes: true
-    });
+    this.widget = new SideMenuWidget(document.getElementById("sources"));
     this.emptyText = L10N.getStr("noSourcesText");
     this.unavailableText = L10N.getStr("noMatchingSourcesText");
-    this._blackBoxCheckboxTooltip = L10N.getStr("blackBoxCheckboxTooltip");
 
     this._commandset = document.getElementById("debuggerCommands");
     this._popupset = document.getElementById("debuggerPopupset");
     this._cmPopup = document.getElementById("sourceEditorContextMenu");
     this._cbPanel = document.getElementById("conditional-breakpoint-panel");
     this._cbTextbox = document.getElementById("conditional-breakpoint-panel-textbox");
 
     window.addEventListener("Debugger:EditorLoaded", this._onEditorLoad, false);
     window.addEventListener("Debugger:EditorUnloaded", this._onEditorUnload, false);
     this.widget.addEventListener("select", this._onSourceSelect, false);
     this.widget.addEventListener("click", this._onSourceClick, false);
-    this.widget.addEventListener("check", this._onSourceCheck, false);
     this._cbPanel.addEventListener("popupshowing", this._onConditionalPopupShowing, false);
     this._cbPanel.addEventListener("popupshown", this._onConditionalPopupShown, false);
     this._cbPanel.addEventListener("popuphiding", this._onConditionalPopupHiding, false);
     this._cbTextbox.addEventListener("input", this._onConditionalTextboxInput, false);
     this._cbTextbox.addEventListener("keypress", this._onConditionalTextboxKeyPress, false);
 
     this.autoFocusOnSelection = false;
 
@@ -70,17 +65,16 @@ SourcesView.prototype = Heritage.extend(
    */
   destroy: function() {
     dumpn("Destroying the SourcesView");
 
     window.removeEventListener("Debugger:EditorLoaded", this._onEditorLoad, false);
     window.removeEventListener("Debugger:EditorUnloaded", this._onEditorUnload, false);
     this.widget.removeEventListener("select", this._onSourceSelect, false);
     this.widget.removeEventListener("click", this._onSourceClick, false);
-    this.widget.removeEventListener("check", this._onSourceCheck, false);
     this._cbPanel.removeEventListener("popupshowing", this._onConditionalPopupShowing, false);
     this._cbPanel.removeEventListener("popupshowing", this._onConditionalPopupShown, false);
     this._cbPanel.removeEventListener("popuphiding", this._onConditionalPopupHiding, false);
     this._cbTextbox.removeEventListener("input", this._onConditionalTextboxInput, false);
     this._cbTextbox.removeEventListener("keypress", this._onConditionalTextboxKeyPress, false);
   },
 
   /**
@@ -110,18 +104,16 @@ SourcesView.prototype = Heritage.extend(
     let url = aSource.url;
     let label = SourceUtils.getSourceLabel(url.split(" -> ").pop());
     let group = SourceUtils.getSourceGroup(url.split(" -> ").pop());
 
     // Append a source item to this container.
     this.push([label, url, group], {
       staged: aOptions.staged, /* stage the item to be appended later? */
       attachment: {
-        checkboxState: !aSource.isBlackBoxed,
-        checkboxTooltip: this._blackBoxCheckboxTooltip,
         source: aSource
       }
     });
   },
 
   /**
    * Adds a breakpoint to this sources container.
    *
@@ -643,24 +635,16 @@ SourcesView.prototype = Heritage.extend(
    * The click listener for the sources container.
    */
   _onSourceClick: function() {
     // Use this container as a filtering target.
     DebuggerView.Filtering.target = this;
   },
 
   /**
-   * The check listener for the sources container.
-   */
-  _onSourceCheck: function({ detail: { checked }, target }) {
-    let item = this.getItemForElement(target);
-    DebuggerController.SourceScripts.blackBox(item.attachment.source, !checked);
-  },
-
-  /**
    * The click listener for a breakpoint container.
    */
   _onBreakpointClick: function(e) {
     let sourceItem = this.getItemForElement(e.target);
     let breakpointItem = this.getItemForElement.call(sourceItem, e.target);
     let { sourceLocation: url, lineNumber: line } = breakpointItem.attachment;
 
     let breakpointClient = DebuggerController.Breakpoints.getBreakpoint(url, line);
--- a/browser/devtools/debugger/debugger-toolbar.js
+++ b/browser/devtools/debugger/debugger-toolbar.js
@@ -419,20 +419,18 @@ StackFramesView.prototype = Heritage.ext
    * @param string aFrameTitle
    *        The frame title to be displayed in the list.
    * @param string aSourceLocation
    *        The source location to be displayed in the list.
    * @param string aLineNumber
    *        The line number to be displayed in the list.
    * @param number aDepth
    *        The frame depth specified by the debugger.
-   * @param boolean aIsBlackBoxed
-   *        Whether or not the frame is black boxed.
    */
-  addFrame: function(aFrameTitle, aSourceLocation, aLineNumber, aDepth, aIsBlackBoxed) {
+  addFrame: function(aFrameTitle, aSourceLocation, aLineNumber, aDepth) {
     // Create the element node and menu entry for the stack frame item.
     let frameView = this._createFrameView.apply(this, arguments);
     let menuEntry = this._createMenuEntry.apply(this, arguments);
 
     // Append a stack frame item to this container.
     this.push([frameView], {
       index: 0, /* specifies on which position should the item be appended */
       attachment: {
@@ -468,67 +466,59 @@ StackFramesView.prototype = Heritage.ext
    * @param string aFrameTitle
    *        The frame title to be displayed in the list.
    * @param string aSourceLocation
    *        The source location to be displayed in the list.
    * @param string aLineNumber
    *        The line number to be displayed in the list.
    * @param number aDepth
    *        The frame depth specified by the debugger.
-   * @param boolean aIsBlackBoxed
-   *        Whether or not the frame is black boxed.
    * @return nsIDOMNode
    *         The stack frame view.
    */
-  _createFrameView: function(aFrameTitle, aSourceLocation, aLineNumber, aDepth, aIsBlackBoxed) {
+  _createFrameView: function(aFrameTitle, aSourceLocation, aLineNumber, aDepth) {
+    let frameDetails =
+      SourceUtils.trimUrlLength(
+        SourceUtils.getSourceLabel(aSourceLocation),
+        STACK_FRAMES_SOURCE_URL_MAX_LENGTH,
+        STACK_FRAMES_SOURCE_URL_TRIM_SECTION) + SEARCH_LINE_FLAG + aLineNumber;
+
+    let frameTitleNode = document.createElement("label");
+    frameTitleNode.className = "plain dbg-stackframe-title breadcrumbs-widget-item-tag";
+    frameTitleNode.setAttribute("value", aFrameTitle);
+
+    let frameDetailsNode = document.createElement("label");
+    frameDetailsNode.className = "plain dbg-stackframe-details breadcrumbs-widget-item-id";
+    frameDetailsNode.setAttribute("value", frameDetails);
+
     let container = document.createElement("hbox");
     container.id = "stackframe-" + aDepth;
     container.className = "dbg-stackframe";
 
-    let frameDetails = SourceUtils.trimUrlLength(
-      SourceUtils.getSourceLabel(aSourceLocation),
-      STACK_FRAMES_SOURCE_URL_MAX_LENGTH,
-      STACK_FRAMES_SOURCE_URL_TRIM_SECTION);
-
-    if (aIsBlackBoxed) {
-      container.classList.add("dbg-stackframe-black-boxed");
-    } else {
-      let frameTitleNode = document.createElement("label");
-      frameTitleNode.className = "plain dbg-stackframe-title breadcrumbs-widget-item-tag";
-      frameTitleNode.setAttribute("value", aFrameTitle);
-      container.appendChild(frameTitleNode);
-
-      frameDetails += SEARCH_LINE_FLAG + aLineNumber;
-    }
-
-    let frameDetailsNode = document.createElement("label");
-    frameDetailsNode.className = "plain dbg-stackframe-details breadcrumbs-widget-item-id";
-    frameDetailsNode.setAttribute("value", frameDetails);
+    container.appendChild(frameTitleNode);
     container.appendChild(frameDetailsNode);
 
     return container;
   },
 
   /**
    * Customization function for populating an item's context menu.
    *
    * @param string aFrameTitle
    *        The frame title to be displayed in the list.
    * @param string aSourceLocation
    *        The source location to be displayed in the list.
    * @param string aLineNumber
    *        The line number to be displayed in the list.
    * @param number aDepth
    *        The frame depth specified by the debugger.
-   * @param boolean aIsBlackBoxed
-   *        Whether or not the frame is black boxed.
    * @return object
    *         An object containing the stack frame command and menu item.
    */
-  _createMenuEntry: function(aFrameTitle, aSourceLocation, aLineNumber, aDepth, aIsBlackBoxed) {
+  _createMenuEntry: function(aFrameTitle, aSourceLocation, aLineNumber, aDepth) {
     let frameDescription =
       SourceUtils.trimUrlLength(
         SourceUtils.getSourceLabel(aSourceLocation),
         STACK_FRAMES_POPUP_SOURCE_URL_MAX_LENGTH,
         STACK_FRAMES_POPUP_SOURCE_URL_TRIM_SECTION) + SEARCH_LINE_FLAG + aLineNumber;
 
     let prefix = "sf-cMenu-"; // "stackframes context menu"
     let commandId = prefix + aDepth + "-" + "-command";
--- a/browser/devtools/debugger/test/Makefile.in
+++ b/browser/devtools/debugger/test/Makefile.in
@@ -7,20 +7,16 @@ topsrcdir       = @top_srcdir@
 srcdir          = @srcdir@
 VPATH           = @srcdir@
 relativesrcdir  = @relativesrcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
 MOCHITEST_BROWSER_TESTS = \
 	browser_dbg_aaa_run_first_leaktest.js \
-	browser_dbg_blackboxing-01.js \
-	browser_dbg_blackboxing-02.js \
-	browser_dbg_blackboxing-03.js \
-	browser_dbg_blackboxing-04.js \
 	browser_dbg_clean-exit.js \
 	browser_dbg_cmd.js \
 	browser_dbg_cmd_break.js \
 	browser_dbg_debuggerstatement.js \
 	browser_dbg_listtabs-01.js \
 	browser_dbg_listtabs-02.js \
 	browser_dbg_tabactor-01.js \
 	browser_dbg_tabactor-02.js \
@@ -109,21 +105,16 @@ MOCHITEST_BROWSER_TESTS = \
 	browser_dbg_chrome-debugging.js \
 	browser_dbg_source_maps-01.js \
 	browser_dbg_source_maps-02.js \
 	browser_dbg_step-out.js \
 	head.js \
 	$(NULL)
 
 MOCHITEST_BROWSER_PAGES = \
-	browser_dbg_blackboxing.html \
-	browser_dbg_blackboxing_blackboxme.js \
-	browser_dbg_blackboxing_one.js \
-	browser_dbg_blackboxing_two.js \
-	browser_dbg_blackboxing_three.js \
 	browser_dbg_cmd_break.html \
 	browser_dbg_cmd.html \
 	testactors.js \
 	browser_dbg_tab1.html \
 	browser_dbg_tab2.html \
 	browser_dbg_debuggerstatement.html \
 	browser_dbg_stack.html \
 	browser_dbg_script-switching.html \
deleted file mode 100644
--- a/browser/devtools/debugger/test/browser_dbg_blackboxing-01.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
-   http://creativecommons.org/publicdomain/zero/1.0/ */
-
-/**
- * Test that if we black box a source and then refresh, it is still black boxed.
- */
-
-const TAB_URL = EXAMPLE_URL + "binary_search.html";
-
-var gPane = null;
-var gTab = null;
-var gDebuggee = null;
-var gDebugger = null;
-
-function test()
-{
-  let scriptShown = false;
-  let framesAdded = false;
-  let resumed = false;
-  let testStarted = false;
-
-  debug_tab_pane(TAB_URL, function(aTab, aDebuggee, aPane) {
-    resumed = true;
-    gTab = aTab;
-    gDebuggee = aDebuggee;
-    gPane = aPane;
-    gDebugger = gPane.panelWin;
-
-    testBlackBoxSource();
-  });
-}
-
-function testBlackBoxSource() {
-  once(gDebugger, "Debugger:SourceShown", function () {
-    const checkbox = gDebugger.document.querySelector(".side-menu-widget-item-checkbox");
-    ok(checkbox, "Should get the checkbox for black boxing the source");
-    ok(checkbox.checked, "Should not be black boxed by default");
-
-    once(gDebugger, "Debugger:BlackBoxChange", function (event) {
-      const sourceClient = event.detail;
-      ok(sourceClient.isBlackBoxed, "The source should be black boxed now");
-      ok(!checkbox.checked, "The checkbox should no longer be checked.");
-
-      testBlackBoxReload();
-    });
-
-    checkbox.click();
-  });
-}
-
-function testBlackBoxReload() {
-  once(gDebugger, "Debugger:SourceShown", function () {
-    const checkbox = gDebugger.document.querySelector(".side-menu-widget-item-checkbox");
-    ok(checkbox, "Should get the checkbox for black boxing the source");
-    ok(!checkbox.checked, "Should still be black boxed");
-
-    closeDebuggerAndFinish();
-  });
-
-  gDebuggee.location.reload();
-}
-
-function once(target, event, callback) {
-  target.addEventListener(event, function _listener(...args) {
-    target.removeEventListener(event, _listener, false);
-    callback.apply(null, args);
-  }, false);
-}
-
-registerCleanupFunction(function() {
-  removeTab(gTab);
-  gPane = null;
-  gTab = null;
-  gDebuggee = null;
-  gDebugger = null;
-});
deleted file mode 100644
--- a/browser/devtools/debugger/test/browser_dbg_blackboxing-02.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
-   http://creativecommons.org/publicdomain/zero/1.0/ */
-
-/**
- * Test that black boxed frames are compressed into a single frame on the stack
- * view.
- */
-
-const TAB_URL = EXAMPLE_URL + "browser_dbg_blackboxing.html";
-const BLACKBOXME_URL = EXAMPLE_URL + "browser_dbg_blackboxing_blackboxme.js"
-
-var gPane = null;
-var gTab = null;
-var gDebuggee = null;
-var gDebugger = null;
-
-function test()
-{
-  let scriptShown = false;
-  let framesAdded = false;
-  let resumed = false;
-  let testStarted = false;
-
-  debug_tab_pane(TAB_URL, function(aTab, aDebuggee, aPane) {
-    resumed = true;
-    gTab = aTab;
-    gDebuggee = aDebuggee;
-    gPane = aPane;
-    gDebugger = gPane.panelWin;
-
-    testBlackBoxSource();
-  });
-}
-
-function testBlackBoxSource() {
-  once(gDebugger, "Debugger:SourceShown", function () {
-    const checkbox = getBlackBoxCheckbox(BLACKBOXME_URL);
-    ok(checkbox, "Should get the checkbox for blackBoxing the source");
-
-    once(gDebugger, "Debugger:BlackBoxChange", function (event) {
-      const sourceClient = event.detail;
-      ok(sourceClient.isBlackBoxed, "The source should be black boxed now");
-
-      testBlackBoxStack();
-    });
-
-    checkbox.click();
-  });
-}
-
-function testBlackBoxStack() {
-  const { activeThread } = gDebugger.DebuggerController;
-  activeThread.addOneTimeListener("framesadded", function () {
-    const frames = gDebugger.DebuggerView.StackFrames.widget._list;
-
-    is(frames.querySelectorAll(".dbg-stackframe").length, 3,
-       "Should only get 3 frames");
-
-    is(frames.querySelectorAll(".dbg-stackframe-black-boxed").length, 1,
-       "And one of them should be the combined black boxed frames");
-
-    closeDebuggerAndFinish();
-  });
-
-  gDebuggee.runTest();
-}
-
-function getBlackBoxCheckbox(url) {
-  return gDebugger.document.querySelector(
-    ".side-menu-widget-item[tooltiptext=\""
-      + url + "\"] .side-menu-widget-item-checkbox");
-}
-
-function once(target, event, callback) {
-  target.addEventListener(event, function _listener(...args) {
-    target.removeEventListener(event, _listener, false);
-    callback.apply(null, args);
-  }, false);
-}
-
-registerCleanupFunction(function() {
-  removeTab(gTab);
-  gPane = null;
-  gTab = null;
-  gDebuggee = null;
-  gDebugger = null;
-});
deleted file mode 100644
--- a/browser/devtools/debugger/test/browser_dbg_blackboxing-03.js
+++ /dev/null
@@ -1,96 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
-   http://creativecommons.org/publicdomain/zero/1.0/ */
-
-/**
- * Test that black boxed frames are compressed into a single frame on the stack
- * view when we are already paused.
- */
-
-const TAB_URL = EXAMPLE_URL + "browser_dbg_blackboxing.html";
-const BLACKBOXME_URL = EXAMPLE_URL + "browser_dbg_blackboxing_blackboxme.js"
-
-var gPane = null;
-var gTab = null;
-var gDebuggee = null;
-var gDebugger = null;
-
-function test()
-{
-  let scriptShown = false;
-  let framesAdded = false;
-  let resumed = false;
-  let testStarted = false;
-
-  debug_tab_pane(TAB_URL, function(aTab, aDebuggee, aPane) {
-    resumed = true;
-    gTab = aTab;
-    gDebuggee = aDebuggee;
-    gPane = aPane;
-    gDebugger = gPane.panelWin;
-
-    once(gDebugger, "Debugger:SourceShown", function () {
-      testBlackBoxStack();
-    });
-  });
-}
-
-function testBlackBoxStack() {
-  const { activeThread } = gDebugger.DebuggerController;
-  activeThread.addOneTimeListener("framesadded", function () {
-    const frames = gDebugger.DebuggerView.StackFrames.widget._list;
-
-    is(frames.querySelectorAll(".dbg-stackframe").length, 6,
-       "Should get 6 frames");
-
-    is(frames.querySelectorAll(".dbg-stackframe-black-boxed").length, 0,
-       "And none of them are black boxed");
-
-    testBlackBoxSource();
-  });
-
-  gDebuggee.runTest();
-}
-
-function testBlackBoxSource() {
-  const checkbox = getBlackBoxCheckbox(BLACKBOXME_URL);
-  ok(checkbox, "Should get the checkbox for black boxing the source");
-
-  once(gDebugger, "Debugger:BlackBoxChange", function (event) {
-    const { activeThread } = gDebugger.DebuggerController;
-    activeThread.addOneTimeListener("framesadded", function () {
-      const sourceClient = event.detail;
-      ok(sourceClient.isBlackBoxed, "The source should be black boxed now");
-
-      const frames = gDebugger.DebuggerView.StackFrames.widget._list;
-      is(frames.querySelectorAll(".dbg-stackframe").length, 3,
-         "Should only get 3 frames");
-      is(frames.querySelectorAll(".dbg-stackframe-black-boxed").length, 1,
-         "And one of them is the combined black boxed frames");
-
-      closeDebuggerAndFinish();
-    });
-  });
-
-  checkbox.click();
-}
-
-function getBlackBoxCheckbox(url) {
-  return gDebugger.document.querySelector(
-    ".side-menu-widget-item[tooltiptext=\""
-      + url + "\"] .side-menu-widget-item-checkbox");
-}
-
-function once(target, event, callback) {
-  target.addEventListener(event, function _listener(...args) {
-    target.removeEventListener(event, _listener, false);
-    callback.apply(null, args);
-  }, false);
-}
-
-registerCleanupFunction(function() {
-  removeTab(gTab);
-  gPane = null;
-  gTab = null;
-  gDebuggee = null;
-  gDebugger = null;
-});
deleted file mode 100644
--- a/browser/devtools/debugger/test/browser_dbg_blackboxing-04.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
-   http://creativecommons.org/publicdomain/zero/1.0/ */
-
-/**
- * Test that we get a stack frame for each black boxed source, not a single one
- * for all of them.
- */
-
-const TAB_URL = EXAMPLE_URL + "browser_dbg_blackboxing.html";
-
-var gPane = null;
-var gTab = null;
-var gDebuggee = null;
-var gDebugger = null;
-
-function test()
-{
-  let scriptShown = false;
-  let framesAdded = false;
-  let resumed = false;
-  let testStarted = false;
-
-  debug_tab_pane(TAB_URL, function(aTab, aDebuggee, aPane) {
-    resumed = true;
-    gTab = aTab;
-    gDebuggee = aDebuggee;
-    gPane = aPane;
-    gDebugger = gPane.panelWin;
-
-    once(gDebugger, "Debugger:SourceShown", function () {
-      blackBoxSources();
-    });
-  });
-}
-
-function blackBoxSources() {
-  let timesFired = 0;
-  gDebugger.addEventListener("Debugger:BlackBoxChange", function _onBlackboxChange() {
-    if (++timesFired !== 3) {
-      return;
-    }
-    gDebugger.removeEventListener("Debugger:BlackBoxChange", _onBlackboxChange, false);
-
-    const { activeThread } = gDebugger.DebuggerController;
-    activeThread.addOneTimeListener("framesadded", testStackFrames);
-
-    gDebuggee.one();
-  }, false);
-
-  getBlackBoxCheckbox(EXAMPLE_URL + "browser_dbg_blackboxing_one.js").click();
-  getBlackBoxCheckbox(EXAMPLE_URL + "browser_dbg_blackboxing_two.js").click();
-  getBlackBoxCheckbox(EXAMPLE_URL + "browser_dbg_blackboxing_three.js").click();
-}
-
-function testStackFrames() {
-  const frames = gDebugger.DebuggerView.StackFrames.widget._list;
-  is(frames.querySelectorAll(".dbg-stackframe").length, 4,
-     "Should get 4 frames (one -> two -> three -> doDebuggerStatement)");
-  is(frames.querySelectorAll(".dbg-stackframe-black-boxed").length, 3,
-     "And one, two, and three should each have their own black boxed frame.");
-
-  closeDebuggerAndFinish();
-}
-
-function getBlackBoxCheckbox(url) {
-  return gDebugger.document.querySelector(
-    ".side-menu-widget-item[tooltiptext=\""
-      + url + "\"] .side-menu-widget-item-checkbox");
-}
-
-function once(target, event, callback) {
-  target.addEventListener(event, function _listener(...args) {
-    target.removeEventListener(event, _listener, false);
-    callback.apply(null, args);
-  }, false);
-}
-
-registerCleanupFunction(function() {
-  removeTab(gTab);
-  gPane = null;
-  gTab = null;
-  gDebuggee = null;
-  gDebugger = null;
-});
deleted file mode 100644
--- a/browser/devtools/debugger/test/browser_dbg_blackboxing.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-  <head>
-    <meta charset='utf-8'/>
-    <title>Browser Debugger Blackbox Test</title>
-    <!-- Any copyright is dedicated to the Public Domain.
-         http://creativecommons.org/publicdomain/zero/1.0/ -->
-    <script type="text/javascript" src="browser_dbg_blackboxing_blackboxme.js"></script>
-    <script type="text/javascript" src="browser_dbg_blackboxing_one.js"></script>
-    <script type="text/javascript" src="browser_dbg_blackboxing_two.js"></script>
-    <script type="text/javascript" src="browser_dbg_blackboxing_three.js"></script>
-    <script>
-      function runTest() {
-        blackboxme(doDebuggerStatement);
-      }
-      function doDebuggerStatement() {
-        debugger;
-      }
-    </script>
-  </head>
-  <body>
-  </body>
-</html>
deleted file mode 100644
--- a/browser/devtools/debugger/test/browser_dbg_blackboxing_blackboxme.js
+++ /dev/null
@@ -1,9 +0,0 @@
-function blackboxme(fn) {
-  (function one() {
-    (function two() {
-      (function three() {
-        fn();
-      }());
-    }());
-  }());
-}
deleted file mode 100644
--- a/browser/devtools/debugger/test/browser_dbg_blackboxing_one.js
+++ /dev/null
@@ -1,1 +0,0 @@
-function one() { two(); }
deleted file mode 100644
--- a/browser/devtools/debugger/test/browser_dbg_blackboxing_three.js
+++ /dev/null
@@ -1,1 +0,0 @@
-function three() { doDebuggerStatement(); }
deleted file mode 100644
--- a/browser/devtools/debugger/test/browser_dbg_blackboxing_two.js
+++ /dev/null
@@ -1,1 +0,0 @@
-function two() { three(); }
--- a/browser/devtools/shared/widgets/SideMenuWidget.jsm
+++ b/browser/devtools/shared/widgets/SideMenuWidget.jsm
@@ -20,38 +20,31 @@ XPCOMUtils.defineLazyModuleGetter(this, 
 this.EXPORTED_SYMBOLS = ["SideMenuWidget"];
 
 /**
  * A simple side menu, with the ability of grouping menu items.
  * This widget should be used in tandem with the WidgetMethods in ViewHelpers.jsm
  *
  * @param nsIDOMNode aNode
  *        The element associated with the widget.
- * @param Object aOptions
- *        - showArrows: Specifies if items in this container should display
- *          horizontal arrows.
- *        - showCheckboxes: Specifies if items in this container should display
- *          checkboxes.
+ * @param boolean aShowArrows
+ *        Specifies if items in this container should display horizontal arrows.
  */
-this.SideMenuWidget = function SideMenuWidget(aNode, aOptions={}) {
+this.SideMenuWidget = function SideMenuWidget(aNode, aShowArrows = true) {
   this.document = aNode.ownerDocument;
   this.window = this.document.defaultView;
   this._parent = aNode;
-
-  let { showArrows, showCheckboxes } = aOptions;
-  this._showArrows = showArrows || false;
-  this._showCheckboxes = showCheckboxes || false;
+  this._showArrows = aShowArrows;
 
   // Create an internal scrollbox container.
   this._list = this.document.createElement("scrollbox");
   this._list.className = "side-menu-widget-container";
   this._list.setAttribute("flex", "1");
   this._list.setAttribute("orient", "vertical");
-  this._list.setAttribute("with-arrow", showArrows);
-  this._list.setAttribute("with-checkboxes", showCheckboxes);
+  this._list.setAttribute("with-arrow", aShowArrows);
   this._list.setAttribute("tabindex", "0");
   this._list.addEventListener("keypress", e => this.emit("keyPress", e), false);
   this._list.addEventListener("mousedown", e => this.emit("mousePress", e), false);
   this._parent.appendChild(this._list);
   this._boxObject = this._list.boxObject.QueryInterface(Ci.nsIScrollBoxObject);
 
   // Menu items can optionally be grouped.
   this._groupsByName = new Map(); // Can't use a WeakMap because keys are strings.
@@ -93,22 +86,20 @@ SideMenuWidget.prototype = {
    * @param number aIndex
    *        The position in the container intended for this item.
    * @param string | nsIDOMNode aContents
    *        The string or node displayed in the container.
    * @param string aTooltip [optional]
    *        A tooltip attribute for the displayed item.
    * @param string aGroup [optional]
    *        The group to place the displayed item into.
-   * @param Object aAttachment [optional]
-   *        Extra data for the user.
    * @return nsIDOMNode
    *         The element associated with the displayed item.
    */
-  insertItemAt: function(aIndex, aContents, aTooltip = "", aGroup = "", aAttachment={}) {
+  insertItemAt: function(aIndex, aContents, aTooltip = "", aGroup = "") {
     aTooltip = NetworkHelper.convertToUnicode(unescape(aTooltip));
     aGroup = NetworkHelper.convertToUnicode(unescape(aGroup));
 
     // Invalidate any notices set on this widget.
     this.removeAttribute("notice");
 
     // Maintaining scroll position at the bottom when a new item is inserted
     // depends on several factors (the order of testing is important to avoid
@@ -119,17 +110,17 @@ SideMenuWidget.prototype = {
       // 2. There shouldn't currently be any selected item in the list.
       !this._selectedItem &&
       // 3. The new item should be appended at the end of the list.
       (aIndex < 0 || aIndex >= this._orderedMenuElementsArray.length) &&
       // 4. The list should already be scrolled at the bottom.
       (this._list.scrollTop + this._list.clientHeight >= this._list.scrollHeight);
 
     let group = this._getMenuGroupForName(aGroup);
-    let item = this._getMenuItemForGroup(group, aContents, aTooltip, aAttachment);
+    let item = this._getMenuItemForGroup(group, aContents, aTooltip);
     let element = item.insertSelfAt(aIndex);
 
     if (this.maintainSelectionVisible) {
       this.ensureSelectionIsVisible({ withGroup: true, delayed: true });
     }
     if (maintainScrollAtBottom) {
       this._list.scrollTop = this._list.scrollHeight;
     }
@@ -401,27 +392,24 @@ SideMenuWidget.prototype = {
    * @see SideMenuWidget.prototype._getMenuGroupForName
    *
    * @param SideMenuGroup aGroup
    *        The group to contain the menu item.
    * @param string | nsIDOMNode aContents
    *        The string or node displayed in the container.
    * @param string aTooltip [optional]
    *        A tooltip attribute for the displayed item.
-   * @param object aAttachment [optional]
-   *        The attachement object.
    */
-  _getMenuItemForGroup: function(aGroup, aContents, aTooltip, aAttachment) {
-    return new SideMenuItem(aGroup, aContents, aTooltip, this._showArrows, this._showCheckboxes, aAttachment);
+  _getMenuItemForGroup: function(aGroup, aContents, aTooltip) {
+    return new SideMenuItem(aGroup, aContents, aTooltip, this._showArrows);
   },
 
   window: null,
   document: null,
   _showArrows: false,
-  _showCheckboxes: false,
   _parent: null,
   _list: null,
   _boxObject: null,
   _selectedItem: null,
   _groupsByName: null,
   _orderedGroupElementsArray: null,
   _orderedMenuElementsArray: null,
   _ensureVisibleTimeout: null,
@@ -534,63 +522,38 @@ SideMenuGroup.prototype = {
  * @param SideMenuGroup aGroup
  *        The group to contain this menu item.
  * @param string aTooltip [optional]
  *        A tooltip attribute for the displayed item.
  * @param string | nsIDOMNode aContents
  *        The string or node displayed in the container.
  * @param boolean aArrowFlag
  *        True if a horizontal arrow should be shown.
- * @param boolean aCheckboxFlag
- *        True if a checkbox should be shown.
- * @param object aAttachment [optional]
- *        The attachment object.
  */
-function SideMenuItem(aGroup, aContents, aTooltip, aArrowFlag, aCheckboxFlag, aAttachment={}) {
+function SideMenuItem(aGroup, aContents, aTooltip, aArrowFlag) {
   this.document = aGroup.document;
   this.window = aGroup.window;
   this.ownerView = aGroup;
 
-  let makeCheckbox = () => {
-    let checkbox = this.document.createElement("checkbox");
-    checkbox.className = "side-menu-widget-item-checkbox";
-    checkbox.setAttribute("checked", aAttachment.checkboxState);
-    checkbox.setAttribute("tooltiptext", aAttachment.checkboxTooltip);
-    checkbox.addEventListener("command", function () {
-      ViewHelpers.dispatchEvent(checkbox, "check", {
-        checked: checkbox.checked,
-      });
-    }, false);
-    return checkbox;
-  };
-
-  if (aArrowFlag || aCheckboxFlag) {
+  // Show a horizontal arrow towards the content.
+  if (aArrowFlag) {
     let container = this._container = this.document.createElement("hbox");
     container.className = "side-menu-widget-item";
     container.setAttribute("tooltiptext", aTooltip);
 
     let target = this._target = this.document.createElement("vbox");
     target.className = "side-menu-widget-item-contents";
 
-    // Show a checkbox before the content.
-    if (aCheckboxFlag) {
-      let checkbox = this._checkbox = makeCheckbox();
-      container.appendChild(checkbox);
-    }
+    let arrow = this._arrow = this.document.createElement("hbox");
+    arrow.className = "side-menu-widget-item-arrow";
 
     container.appendChild(target);
-
-    // Show a horizontal arrow towards the content.
-    if (aArrowFlag) {
-      let arrow = this._arrow = this.document.createElement("hbox");
-      arrow.className = "side-menu-widget-item-arrow";
-      container.appendChild(arrow);
-    }
+    container.appendChild(arrow);
   }
-  // Skip a few redundant nodes when no horizontal arrow or checkbox is shown.
+  // Skip a few redundant nodes when no horizontal arrow is shown.
   else {
     let target = this._target = this._container = this.document.createElement("hbox");
     target.className = "side-menu-widget-item side-menu-widget-item-contents";
   }
 
   this._target.setAttribute("flex", "1");
   this.contents = aContents;
 }
--- a/browser/devtools/shared/widgets/ViewHelpers.jsm
+++ b/browser/devtools/shared/widgets/ViewHelpers.jsm
@@ -6,17 +6,16 @@
 "use strict";
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 const Cu = Components.utils;
 
 const PANE_APPEARANCE_DELAY = 50;
 const PAGE_SIZE_ITEM_COUNT_RATIO = 5;
-const WIDGET_FOCUSABLE_NODES = new Set(["vbox", "hbox"]);
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 
 this.EXPORTED_SYMBOLS = ["Heritage", "ViewHelpers", "WidgetMethods"];
 
 /**
  * Inheritance helpers from the addon SDK's core/heritage.
@@ -605,17 +604,17 @@ this.WidgetMethods = {
    *          - description: an optional description of the item
    * @param object aOptions [optional]
    *        Additional options or flags supported by this operation:
    *          - staged: true to stage the item to be appended later
    *          - index: specifies on which position should the item be appended
    *          - relaxed: true if this container should allow dupes & degenerates
    *          - attachment: some attached primitive/object for the item
    *          - attributes: a batch of attributes set to the displayed element
-   *          - finalize: function invokde when the item is removed
+   *          - finalize: function invoked when the item is removed
    * @return Item
    *         The item associated with the displayed element if an unstaged push,
    *         undefined if the item was staged for a later commit.
    */
   push: function(aContents, aOptions = {}) {
     let item = new Item(this, aOptions.attachment, aContents);
 
     // Batch the item to be added later.
@@ -1113,31 +1112,26 @@ this.WidgetMethods = {
    *        Either "advanceFocus" or "rewindFocus".
    * @return boolean
    *         False if the focus went out of bounds and the first or last item
    *         in this container was focused instead.
    */
   _focusChange: function(aDirection) {
     let commandDispatcher = this._commandDispatcher;
     let prevFocusedElement = commandDispatcher.focusedElement;
-    let currFocusedElement;
 
-    do {
-      commandDispatcher.suppressFocusScroll = true;
-      commandDispatcher[aDirection]();
-      currFocusedElement = commandDispatcher.focusedElement;
+    commandDispatcher.suppressFocusScroll = true;
+    commandDispatcher[aDirection]();
 
-      // Make sure the newly focused item is a part of this container. If the
-      // focus goes out of bounds, revert the previously focused item.
-      if (!this.getItemForElement(currFocusedElement)) {
-        prevFocusedElement.focus();
-        return false;
-      }
-    } while (!WIDGET_FOCUSABLE_NODES.has(currFocusedElement.tagName));
-
+    // Make sure the newly focused item is a part of this container.
+    // If the focus goes out of bounds, revert the previously focused item.
+    if (!this.getItemForElement(commandDispatcher.focusedElement)) {
+      prevFocusedElement.focus();
+      return false;
+    }
     // Focus remained within bounds.
     return true;
   },
 
   /**
    * Gets the command dispatcher instance associated with this container's DOM.
    * If there are no items displayed in this container, null is returned.
    * @return nsIDOMXULCommandDispatcher | null
@@ -1209,20 +1203,17 @@ this.WidgetMethods = {
    *
    * @param nsIDOMNode aElement
    *        The element used to identify the item.
    * @return Item
    *         The matched item, or null if nothing is found.
    */
   getItemForElement: function(aElement) {
     while (aElement) {
-      let item =
-        this._itemsByElement.get(aElement) ||
-        this._itemsByElement.get(aElement.nextElementSibling) ||
-        this._itemsByElement.get(aElement.previousElementSibling);
+      let item = this._itemsByElement.get(aElement);
       if (item) {
         return item;
       }
       aElement = aElement.parentNode;
     }
     return null;
   },
 
--- a/browser/locales/en-US/chrome/browser/devtools/debugger.properties
+++ b/browser/locales/en-US/chrome/browser/devtools/debugger.properties
@@ -68,21 +68,16 @@ noSourcesText=This page has no sources.
 # LOCALIZATION NOTE (noMatchingSourcesText): The text to display in the
 # sources menu when there are no matching scripts after filtering.
 noMatchingSourcesText=No matching sources.
 
 # LOCALIZATION NOTE (noMatchingStringsText): The text to display in the
 # global search results when there are no matching strings after filtering.
 noMatchingStringsText=No matches found
 
-# LOCALIZATION NOTE (blackBoxCheckboxTooltip) = The tooltip text to display when
-# the user hovers over the checkbox used to toggle black boxing its associated
-# source.
-blackBoxCheckboxTooltip=Toggle black boxing
-
 # LOCALIZATION NOTE (emptyFilterText): This is the text that appears in the
 # filter text box when it is empty and the scripts container is selected.
 emptyFilterText=Filter scripts (%S)
 
 # LOCALIZATION NOTE (emptyChromeGlobalsFilterText): This is the text that
 # appears in the filter text box when it is empty and the chrome globals
 # container is selected.
 emptyChromeGlobalsFilterText=Filter chrome globals (%S)
--- a/browser/themes/linux/devtools/debugger.css
+++ b/browser/themes/linux/devtools/debugger.css
@@ -12,37 +12,16 @@
 #sources-pane {
   min-width: 50px;
 }
 
 #sources-pane + .devtools-side-splitter {
   -moz-border-start-color: transparent;
 }
 
-.side-menu-widget-item-checkbox {
- -moz-appearance: none;
-  padding: 0;
-  margin: 0 -4px 0 4px;
-}
-
-.side-menu-widget-item-checkbox > .checkbox-check {
-  -moz-appearance: none;
-  background: none;
-  background-image: url(itemToggle.png);
-  background-repeat: no-repeat;
-  background-clip: content-box;
-  background-position: -24px 0;
-  width: 24px;
-  height: 24px;
-}
-
-.side-menu-widget-item-checkbox[checked] > .checkbox-check {
-  background-position: 0 0;
-}
-
 /* ListWidget items */
 
 .list-widget-item {
   padding: 2px;
 }
 
 .list-widget-item:not(.selected):not(.empty):hover {
   background: linear-gradient(rgba(255,255,255,0.9), rgba(255,255,255,0.85)), Highlight;
--- a/browser/themes/osx/devtools/debugger.css
+++ b/browser/themes/osx/devtools/debugger.css
@@ -14,37 +14,16 @@
 #sources-pane {
   min-width: 50px;
 }
 
 #sources-pane + .devtools-side-splitter {
   -moz-border-start-color: transparent;
 }
 
-.side-menu-widget-item-checkbox {
- -moz-appearance: none;
-  padding: 0;
-  margin: 0 -4px 0 4px;
-}
-
-.side-menu-widget-item-checkbox > .checkbox-check {
-  -moz-appearance: none;
-  background: none;
-  background-image: url(itemToggle.png);
-  background-repeat: no-repeat;
-  background-clip: content-box;
-  background-position: -24px 0;
-  width: 24px;
-  height: 24px;
-}
-
-.side-menu-widget-item-checkbox[checked] > .checkbox-check {
-  background-position: 0 0;
-}
-
 /* ListWidget items */
 
 .list-widget-item {
   padding: 2px;
 }
 
 .list-widget-item:not(.selected):not(.empty):hover {
   background: linear-gradient(rgba(255,255,255,0.9), rgba(255,255,255,0.85)), Highlight;
--- a/browser/themes/windows/devtools/debugger.css
+++ b/browser/themes/windows/devtools/debugger.css
@@ -12,37 +12,16 @@
 #sources-pane {
   min-width: 50px;
 }
 
 #sources-pane + .devtools-side-splitter {
   -moz-border-start-color: transparent;
 }
 
-.side-menu-widget-item-checkbox {
- -moz-appearance: none;
-  padding: 0;
-  margin: 0 -4px 0 4px;
-}
-
-.side-menu-widget-item-checkbox > .checkbox-check {
-  -moz-appearance: none;
-  background: none;
-  background-image: url(itemToggle.png);
-  background-repeat: no-repeat;
-  background-clip: content-box;
-  background-position: -24px 0;
-  width: 24px;
-  height: 24px;
-}
-
-.side-menu-widget-item-checkbox[checked] > .checkbox-check {
-  background-position: 0 0;
-}
-
 /* ListWidget items */
 
 .list-widget-item {
   padding: 2px;
 }
 
 .list-widget-item:not(.selected):not(.empty):hover {
   background: linear-gradient(rgba(255,255,255,0.9), rgba(255,255,255,0.85)), Highlight;