Bug 1430374 - Remove support for progressmeter tree cells. r=bz, dao draft
authorTim Nguyen <ntim.bugs@gmail.com>
Thu, 18 Jan 2018 10:36:05 +0000
changeset 722030 ab1c628199b813543d498b099201e2622a96f7aa
parent 720144 47aae85fb8cdb69121abe6b7a7ce24eaaa047b7f
child 746511 204054b277a7b1179509f1c9294aaced691994f2
push id96034
push userbmo:ntim.bugs@gmail.com
push dateThu, 18 Jan 2018 10:37:06 +0000
reviewersbz, dao
bugs1430374
milestone59.0a1
Bug 1430374 - Remove support for progressmeter tree cells. r=bz, dao MozReview-Commit-ID: 3hydkeoneC0
accessible/tests/mochitest/treeview.js
browser/base/content/pageinfo/pageInfo.js
browser/components/places/content/treeView.js
browser/components/preferences/blocklists.js
browser/components/preferences/cookies.js
browser/components/preferences/in-content/search.js
browser/components/preferences/permissions.js
browser/components/preferences/siteDataRemoveSelected.js
browser/components/preferences/translation.js
browser/components/sessionstore/content/aboutSessionRestore.js
dom/webidl/TreeView.webidl
layout/inspector/inDOMView.cpp
layout/style/nsCSSAnonBoxList.h
layout/xul/tree/crashtests/454186-1.xul
layout/xul/tree/crashtests/crashtests.list
layout/xul/tree/nsITreeColumns.idl
layout/xul/tree/nsITreeView.idl
layout/xul/tree/nsTreeBodyFrame.cpp
layout/xul/tree/nsTreeBodyFrame.h
layout/xul/tree/nsTreeColumns.cpp
layout/xul/tree/nsTreeContentView.cpp
layout/xul/tree/nsTreeContentView.h
security/manager/pki/nsASN1Tree.cpp
security/manager/ssl/nsCertTree.cpp
toolkit/components/autocomplete/nsAutoCompleteController.cpp
toolkit/components/passwordmgr/content/passwordManager.js
toolkit/content/tests/chrome/test_tree_view.xul
toolkit/content/tests/widgets/tree_shared.js
toolkit/themes/linux/global/tree.css
toolkit/themes/osx/global/tree.css
toolkit/themes/windows/global/tree.css
--- a/accessible/tests/mochitest/treeview.js
+++ b/accessible/tests/mochitest/treeview.js
@@ -102,17 +102,16 @@ nsTreeView.prototype =
     return info.parentIndex;
   },
   hasNextSibling: function hasNextSibling(aRowIndex, aAfterIndex) { },
   getLevel: function getLevel(aIndex) {
     var info = this.getInfoByIndex(aIndex);
     return info.level;
   },
   getImageSrc: function getImageSrc(aRow, aCol) {},
-  getProgressMode: function getProgressMode(aRow, aCol) {},
   isContainer: function isContainer(aIndex) {
     var data = this.getDataForIndex(aIndex);
     return data.open != undefined;
   },
   isContainerOpen: function isContainerOpen(aIndex) {
     var data = this.getDataForIndex(aIndex);
     return data.open;
   },
--- a/browser/base/content/pageinfo/pageInfo.js
+++ b/browser/base/content/pageinfo/pageInfo.js
@@ -123,17 +123,16 @@ pageInfoTreeView.prototype = {
   isSeparator(index) { return false; },
   isSorted() { return this.sortcol > -1; },
   canDrop(index, orientation) { return false; },
   drop(row, orientation) { return false; },
   getParentIndex(index) { return 0; },
   hasNextSibling(index, after) { return false; },
   getLevel(index) { return 0; },
   getImageSrc(row, column) { },
-  getProgressMode(row, column) { },
   getCellValue(row, column) { },
   toggleOpenState(index) { },
   cycleHeader(col) { },
   selectionChanged() { },
   cycleCell(row, column) { },
   isEditable(row, column) { return false; },
   isSelectable(row, column) { return false; },
   performAction(action) { },
--- a/browser/components/places/content/treeView.js
+++ b/browser/components/places/content/treeView.js
@@ -1504,17 +1504,16 @@ PlacesTreeView.prototype = {
     // Only the title column has an image.
     if (this._getColumnType(aColumn) != this.COLUMN_TYPE_TITLE)
       return "";
 
     let node = this._getNodeForRow(aRow);
     return node.icon;
   },
 
-  getProgressMode(aRow, aColumn) { },
   getCellValue(aRow, aColumn) { },
 
   getCellText: function PTV_getCellText(aRow, aColumn) {
     let node = this._getNodeForRow(aRow);
     switch (this._getColumnType(aColumn)) {
       case this.COLUMN_TYPE_TITLE:
         // normally, this is just the title, but we don't want empty items in
         // the tree view so return a special string if the title is empty.
--- a/browser/components/preferences/blocklists.js
+++ b/browser/components/preferences/blocklists.js
@@ -32,17 +32,16 @@ var gBlocklistManager = {
       return "";
     },
 
     isSeparator(index) { return false; },
     isSorted() { return false; },
     isContainer(index) { return false; },
     setTree(tree) {},
     getImageSrc(row, column) {},
-    getProgressMode(row, column) {},
     getCellValue(row, column) {
       if (column.id == "selectionCol")
         return gBlocklistManager._blockLists[row].selected;
       return undefined;
     },
     cycleHeader(column) {},
     getRowProperties(row) { return ""; },
     getColumnProperties(column) { return ""; },
--- a/browser/components/preferences/cookies.js
+++ b/browser/components/preferences/cookies.js
@@ -396,17 +396,16 @@ var gCookiesWindow = {
       if (!this._filtered) {
         var item = this._getItemAtIndex(aIndex);
         if (!item) return 0;
         return item.level;
       }
       return 0;
     },
     getImageSrc(aIndex, aColumn) {},
-    getProgressMode(aIndex, aColumn) {},
     getCellValue(aIndex, aColumn) {},
     setTree(aTree) {},
     toggleOpenState(aIndex) {
       if (!this._filtered) {
         var item = this._getItemAtIndex(aIndex);
         if (!item) return;
         this._invalidateCache(aIndex);
         var multiplier = item.open ? -1 : 1;
--- a/browser/components/preferences/in-content/search.js
+++ b/browser/components/preferences/in-content/search.js
@@ -625,17 +625,16 @@ EngineView.prototype = {
   isContainer(index) { return false; },
   isContainerOpen(index) { return false; },
   isContainerEmpty(index) { return false; },
   isSeparator(index) { return false; },
   isSorted(index) { return false; },
   getParentIndex(index) { return -1; },
   hasNextSibling(parentIndex, index) { return false; },
   getLevel(index) { return 0; },
-  getProgressMode(index, column) { },
   getCellValue(index, column) {
     if (column.id == "engineShown")
       return this._engineStore.engines[index].shown;
     return undefined;
   },
   toggleOpenState(index) { },
   cycleHeader(column) { },
   selectionChanged() { },
--- a/browser/components/preferences/permissions.js
+++ b/browser/components/preferences/permissions.js
@@ -42,17 +42,16 @@ var gPermissionManager = {
       return "";
     },
 
     isSeparator(aIndex) { return false; },
     isSorted() { return false; },
     isContainer(aIndex) { return false; },
     setTree(aTree) {},
     getImageSrc(aRow, aColumn) {},
-    getProgressMode(aRow, aColumn) {},
     getCellValue(aRow, aColumn) {},
     cycleHeader(column) {},
     getRowProperties(row) { return ""; },
     getColumnProperties(column) { return ""; },
     getCellProperties(row, column) {
       if (column.element.getAttribute("id") == "siteCol")
         return "ltr";
 
--- a/browser/components/preferences/siteDataRemoveSelected.js
+++ b/browser/components/preferences/siteDataRemoveSelected.js
@@ -181,17 +181,16 @@ let gSiteDataRemoveSelected = {
       return false;
     },
     drop() {},
     getRowProperties() {},
     getCellProperties() {},
     getColumnProperties() {},
     hasPreviousSibling(index) {},
     getImageSrc() {},
-    getProgressMode() {},
     getCellValue() {},
     cycleHeader() {},
     selectionChanged() {},
     cycleCell() {},
     isEditable() {},
     isSelectable() {},
     setCellValue() {},
     setCellText() {},
--- a/browser/components/preferences/translation.js
+++ b/browser/components/preferences/translation.js
@@ -59,17 +59,16 @@ Tree.prototype = {
   isSorted() {
     return false;
   },
   isContainer(aIndex) {
     return false;
   },
   setTree(aTree) {},
   getImageSrc(aRow, aColumn) {},
-  getProgressMode(aRow, aColumn) {},
   getCellValue(aRow, aColumn) {},
   cycleHeader(column) {},
   getRowProperties(row) {
     return "";
   },
   getColumnProperties(column) {
     return "";
   },
--- a/browser/components/sessionstore/content/aboutSessionRestore.js
+++ b/browser/components/sessionstore/content/aboutSessionRestore.js
@@ -357,16 +357,15 @@ var treeView = {
   },
 
   getImageSrc(idx, column) {
     if (column.id == "title")
       return gTreeData[idx].src || null;
     return null;
   },
 
-  getProgressMode(idx, column) { },
   cycleHeader(column) { },
   cycleCell(idx, column) { },
   selectionChanged() { },
   performAction(action) { },
   performActionOnCell(action, index, column) { },
   getColumnProperties(column) { return ""; }
 };
--- a/dom/webidl/TreeView.webidl
+++ b/dom/webidl/TreeView.webidl
@@ -118,26 +118,16 @@ interface TreeView
    * The image path for a given cell. For defining an icon for a cell.
    * If the empty string is returned, the :moz-tree-image pseudoelement
    * will be used.
    */
   [Throws]
   DOMString getImageSrc(long row, TreeColumn column);
 
   /**
-   * The progress mode for a given cell. This method is only called for
-   * columns of type |progressmeter|.
-   */
-  const short PROGRESS_NORMAL = 1;
-  const short PROGRESS_UNDETERMINED = 2;
-  const short PROGRESS_NONE = 3;
-  [Throws]
-  long getProgressMode(long row, TreeColumn column);
-
-  /**
    * The value for a given cell. This method is only called for columns
    * of type other than |text|.
    */
   [Throws]
   DOMString getCellValue(long row, TreeColumn column);
 
   /**
    * The text for a given cell.  If a column consists only of an image, then
--- a/layout/inspector/inDOMView.cpp
+++ b/layout/inspector/inDOMView.cpp
@@ -349,22 +349,16 @@ inDOMView::GetColumnProperties(nsITreeCo
 
 NS_IMETHODIMP
 inDOMView::GetImageSrc(int32_t row, nsITreeColumn* col, nsAString& _retval)
 {
   return NS_OK;
 }
 
 NS_IMETHODIMP
-inDOMView::GetProgressMode(int32_t row, nsITreeColumn* col, int32_t* _retval)
-{
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 inDOMView::GetCellValue(int32_t row, nsITreeColumn* col, nsAString& _retval)
 {
   return NS_OK;
 }
 
 NS_IMETHODIMP
 inDOMView::GetCellText(int32_t row, nsITreeColumn* col, nsAString& _retval)
 {
--- a/layout/style/nsCSSAnonBoxList.h
+++ b/layout/style/nsCSSAnonBoxList.h
@@ -120,17 +120,16 @@ CSS_ANON_BOX(mozTreeRow, ":-moz-tree-row
 CSS_ANON_BOX(mozTreeSeparator, ":-moz-tree-separator")
 CSS_ANON_BOX(mozTreeCell, ":-moz-tree-cell")
 CSS_ANON_BOX(mozTreeIndentation, ":-moz-tree-indentation")
 CSS_ANON_BOX(mozTreeLine, ":-moz-tree-line")
 CSS_ANON_BOX(mozTreeTwisty, ":-moz-tree-twisty")
 CSS_ANON_BOX(mozTreeImage, ":-moz-tree-image")
 CSS_ANON_BOX(mozTreeCellText, ":-moz-tree-cell-text")
 CSS_ANON_BOX(mozTreeCheckbox, ":-moz-tree-checkbox")
-CSS_ANON_BOX(mozTreeProgressmeter, ":-moz-tree-progressmeter")
 CSS_ANON_BOX(mozTreeDropFeedback, ":-moz-tree-drop-feedback")
 #endif
 
 CSS_ANON_BOX(mozSVGMarkerAnonChild, ":-moz-svg-marker-anon-child")
 CSS_ANON_BOX(mozSVGOuterSVGAnonChild, ":-moz-svg-outer-svg-anon-child")
 CSS_ANON_BOX(mozSVGForeignContent, ":-moz-svg-foreign-content")
 CSS_ANON_BOX(mozSVGText, ":-moz-svg-text")
 
deleted file mode 100644
--- a/layout/xul/tree/crashtests/454186-1.xul
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-<tree flex="1">
-  <treecols>
-    <treecol label="test" flex="1" type="progressmeter" />
-  </treecols>
-  <treechildren>
-    <treeitem>
-      <treerow>
-        <treecell value="50" mode="normal" />
-      </treerow>
-    </treeitem>
-    <treeitem>
-      <treerow>
-        <treecell mode="undetermined" />
-      </treerow>
-    </treeitem>
-  </treechildren>
-</tree>
-
-</window>
--- a/layout/xul/tree/crashtests/crashtests.list
+++ b/layout/xul/tree/crashtests/crashtests.list
@@ -9,16 +9,15 @@ load 391178-2.xul
 load 393665-1.xul
 load 399227-1.xul
 load 399227-2.xul
 load 399692-1.xhtml
 load 399715-1.xhtml
 load 409807-1.xul
 load 414170-1.xul
 load 430394-1.xul
-load 454186-1.xul
 load 479931-1.xhtml
 load 509602-1.xul
 load 585815.html
 load 601427.html
 load 730441-1.xul
 load 730441-2.xul
 load 730441-3.xul
--- a/layout/xul/tree/nsITreeColumns.idl
+++ b/layout/xul/tree/nsITreeColumns.idl
@@ -24,18 +24,17 @@ interface nsITreeColumn : nsISupports
 
   readonly attribute boolean primary;
   readonly attribute boolean cycler;
   readonly attribute boolean editable;
   readonly attribute boolean selectable;
 
   const short TYPE_TEXT                = 1;
   const short TYPE_CHECKBOX            = 2;
-  const short TYPE_PROGRESSMETER       = 3;
-  const short TYPE_PASSWORD            = 4;
+  const short TYPE_PASSWORD            = 3;
   readonly attribute short type;
 
   nsITreeColumn getNext();
   nsITreeColumn getPrevious();
 
   void invalidate();
 };
 
--- a/layout/xul/tree/nsITreeView.idl
+++ b/layout/xul/tree/nsITreeView.idl
@@ -110,25 +110,16 @@ interface nsITreeView : nsISupports
   /**
    * The image path for a given cell. For defining an icon for a cell.
    * If the empty string is returned, the :moz-tree-image pseudoelement
    * will be used.
    */
   AString getImageSrc(in long row, in nsITreeColumn col);
 
   /**
-   * The progress mode for a given cell. This method is only called for
-   * columns of type |progressmeter|.
-   */
-  const short PROGRESS_NORMAL = 1;
-  const short PROGRESS_UNDETERMINED = 2;
-  const short PROGRESS_NONE = 3;
-  long getProgressMode(in long row, in nsITreeColumn col);
-
-  /**
    * The value for a given cell. This method is only called for columns
    * of type other than |text|.
    */
   AString getCellValue(in long row, in nsITreeColumn col);
 
   /**
    * The text for a given cell.  If a column consists only of an image, then
    * the empty string is returned.  
--- a/layout/xul/tree/nsTreeBodyFrame.cpp
+++ b/layout/xul/tree/nsTreeBodyFrame.cpp
@@ -2025,28 +2025,16 @@ nsTreeBodyFrame::PrefillPropertyArray(in
 
       if (aRowIndex != -1) {
         nsAutoString value;
         mView->GetCellValue(aRowIndex, aCol, value);
         if (value.EqualsLiteral("true"))
           mScratchArray.AppendElement(nsGkAtoms::checked);
       }
     }
-    else if (aCol->GetType() == nsITreeColumn::TYPE_PROGRESSMETER) {
-      mScratchArray.AppendElement(nsGkAtoms::progressmeter);
-
-      if (aRowIndex != -1) {
-        int32_t state;
-        mView->GetProgressMode(aRowIndex, aCol, &state);
-        if (state == nsITreeView::PROGRESS_NORMAL)
-          mScratchArray.AppendElement(nsGkAtoms::progressNormal);
-        else if (state == nsITreeView::PROGRESS_UNDETERMINED)
-          mScratchArray.AppendElement(nsGkAtoms::progressUndetermined);
-      }
-    }
 
     // Read special properties from attributes on the column content node
     if (aCol->mContent->IsElement() &&
         aCol->mContent->AsElement()->AttrValueIs(kNameSpaceID_None,
                                                  nsGkAtoms::insertbefore,
                                                  nsGkAtoms::_true,
                                                  eCaseMatters))
       mScratchArray.AppendElement(nsGkAtoms::insertbefore);
@@ -3410,33 +3398,16 @@ nsTreeBodyFrame::PaintCell(int32_t      
         case nsITreeColumn::TYPE_PASSWORD:
           result &= PaintText(aRowIndex, aColumn, elementRect, aPresContext,
                               aRenderingContext, aDirtyRect, currX);
           break;
         case nsITreeColumn::TYPE_CHECKBOX:
           result &= PaintCheckbox(aRowIndex, aColumn, elementRect, aPresContext,
                                   aRenderingContext, aDirtyRect);
           break;
-        case nsITreeColumn::TYPE_PROGRESSMETER:
-          int32_t state;
-          mView->GetProgressMode(aRowIndex, aColumn, &state);
-          switch (state) {
-            case nsITreeView::PROGRESS_NORMAL:
-            case nsITreeView::PROGRESS_UNDETERMINED:
-              result &= PaintProgressMeter(aRowIndex, aColumn, elementRect,
-                                           aPresContext, aRenderingContext,
-                                           aDirtyRect, aBuilder);
-              break;
-            case nsITreeView::PROGRESS_NONE:
-            default:
-              result &= PaintText(aRowIndex, aColumn, elementRect, aPresContext,
-                                  aRenderingContext, aDirtyRect, currX);
-              break;
-          }
-          break;
       }
     }
   }
 
   aCurrX = currX;
 
   return result;
 }
@@ -3926,120 +3897,16 @@ nsTreeBodyFrame::PaintCheckbox(int32_t  
         image, SamplingFilter::POINT, pt, &aDirtyRect,
         imgIContainer::FLAG_NONE, &imageSize);
   }
 
   return result;
 }
 
 ImgDrawResult
-nsTreeBodyFrame::PaintProgressMeter(int32_t               aRowIndex,
-                                    nsTreeColumn*         aColumn,
-                                    const nsRect&         aProgressMeterRect,
-                                    nsPresContext*        aPresContext,
-                                    gfxContext&           aRenderingContext,
-                                    const nsRect&         aDirtyRect,
-                                    nsDisplayListBuilder* aBuilder)
-{
-  NS_PRECONDITION(aColumn && aColumn->GetFrame(), "invalid column passed");
-
-  // Resolve style for the progress meter.  It contains all the info we need
-  // to lay ourselves out and to paint.
-  nsStyleContext* meterContext = GetPseudoStyleContext(nsCSSAnonBoxes::mozTreeProgressmeter);
-
-  // Obtain the margins for the progress meter and then deflate our rect by that
-  // amount. The progress meter is assumed to be contained within the deflated
-  // rect.
-  nsRect meterRect(aProgressMeterRect);
-  nsMargin meterMargin;
-  meterContext->StyleMargin()->GetMargin(meterMargin);
-  meterRect.Deflate(meterMargin);
-
-  // Paint our borders and background for our progress meter rect.
-  ImgDrawResult result = PaintBackgroundLayer(meterContext, aPresContext,
-                                           aRenderingContext, meterRect,
-                                           aDirtyRect);
-
-  // Time to paint our progress.
-  int32_t state;
-  mView->GetProgressMode(aRowIndex, aColumn, &state);
-  if (state == nsITreeView::PROGRESS_NORMAL) {
-    // Adjust the rect for its border and padding.
-    AdjustForBorderPadding(meterContext, meterRect);
-
-    // Now obtain the value for our cell.
-    nsAutoString value;
-    mView->GetCellValue(aRowIndex, aColumn, value);
-
-    nsresult rv;
-    int32_t intValue = value.ToInteger(&rv);
-    if (intValue < 0)
-      intValue = 0;
-    else if (intValue > 100)
-      intValue = 100;
-
-    nscoord meterWidth = NSToCoordRound((float)intValue / 100 * meterRect.width);
-    if (StyleVisibility()->mDirection == NS_STYLE_DIRECTION_RTL)
-      meterRect.x += meterRect.width - meterWidth; // right align
-    meterRect.width = meterWidth;
-    bool useImageRegion = true;
-    nsCOMPtr<imgIContainer> image;
-    GetImage(aRowIndex, aColumn, true, meterContext, useImageRegion, getter_AddRefs(image));
-    if (image) {
-      int32_t width, height;
-      image->GetWidth(&width);
-      image->GetHeight(&height);
-      nsSize size(width*nsDeviceContext::AppUnitsPerCSSPixel(),
-                  height*nsDeviceContext::AppUnitsPerCSSPixel());
-      uint32_t drawFlags = aBuilder && aBuilder->IsPaintingToWindow() ?
-        imgIContainer::FLAG_HIGH_QUALITY_SCALING : imgIContainer::FLAG_NONE;
-      result &=
-        nsLayoutUtils::DrawImage(aRenderingContext, meterContext,
-          aPresContext, image,
-          nsLayoutUtils::GetSamplingFilterForFrame(this),
-          nsRect(meterRect.TopLeft(), size), meterRect, meterRect.TopLeft(),
-          aDirtyRect, drawFlags);
-    } else {
-      DrawTarget* drawTarget = aRenderingContext.GetDrawTarget();
-      int32_t appUnitsPerDevPixel = PresContext()->AppUnitsPerDevPixel();
-      Rect rect =
-        NSRectToSnappedRect(meterRect, appUnitsPerDevPixel, *drawTarget);
-      ColorPattern color(ToDeviceColor(meterContext->StyleColor()->mColor));
-      drawTarget->FillRect(rect, color);
-    }
-  }
-  else if (state == nsITreeView::PROGRESS_UNDETERMINED) {
-    // Adjust the rect for its border and padding.
-    AdjustForBorderPadding(meterContext, meterRect);
-
-    bool useImageRegion = true;
-    nsCOMPtr<imgIContainer> image;
-    GetImage(aRowIndex, aColumn, true, meterContext, useImageRegion, getter_AddRefs(image));
-    if (image) {
-      int32_t width, height;
-      image->GetWidth(&width);
-      image->GetHeight(&height);
-      nsSize size(width*nsDeviceContext::AppUnitsPerCSSPixel(),
-                  height*nsDeviceContext::AppUnitsPerCSSPixel());
-      uint32_t drawFlags = aBuilder && aBuilder->IsPaintingToWindow() ?
-        imgIContainer::FLAG_HIGH_QUALITY_SCALING : imgIContainer::FLAG_NONE;
-      result &=
-        nsLayoutUtils::DrawImage(aRenderingContext, meterContext,
-          aPresContext, image,
-          nsLayoutUtils::GetSamplingFilterForFrame(this),
-          nsRect(meterRect.TopLeft(), size), meterRect, meterRect.TopLeft(),
-          aDirtyRect, drawFlags);
-    }
-  }
-
-  return result;
-}
-
-
-ImgDrawResult
 nsTreeBodyFrame::PaintDropFeedback(const nsRect&        aDropFeedbackRect,
                                    nsPresContext*      aPresContext,
                                    gfxContext&          aRenderingContext,
                                    const nsRect&        aDirtyRect,
                                    nsPoint              aPt)
 {
   // Paint the drop feedback in between rows.
 
--- a/layout/xul/tree/nsTreeBodyFrame.h
+++ b/layout/xul/tree/nsTreeBodyFrame.h
@@ -272,25 +272,16 @@ protected:
   // This method paints the checkbox inside a particular cell of the tree.
   ImgDrawResult PaintCheckbox(int32_t              aRowIndex,
                            nsTreeColumn*        aColumn,
                            const nsRect&        aCheckboxRect,
                            nsPresContext*       aPresContext,
                            gfxContext&          aRenderingContext,
                            const nsRect&        aDirtyRect);
 
-  // This method paints the progress meter inside a particular cell of the tree.
-  ImgDrawResult PaintProgressMeter(int32_t               aRowIndex,
-                                nsTreeColumn*         aColumn,
-                                const nsRect&         aProgressMeterRect,
-                                nsPresContext*        aPresContext,
-                                gfxContext&           aRenderingContext,
-                                const nsRect&         aDirtyRect,
-                                nsDisplayListBuilder* aBuilder);
-
   // This method paints a drop feedback of the tree.
   ImgDrawResult PaintDropFeedback(const nsRect&        aDropFeedbackRect,
                                nsPresContext*       aPresContext,
                                gfxContext&          aRenderingContext,
                                const nsRect&        aDirtyRect,
                                nsPoint              aPt);
 
   // This method is called with a specific style context and rect to
--- a/layout/xul/tree/nsTreeColumns.cpp
+++ b/layout/xul/tree/nsTreeColumns.cpp
@@ -315,25 +315,24 @@ nsTreeColumn::Invalidate()
 
   mOverflow =
     mContent->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::overflow,
                                        nsGkAtoms::_true, eCaseMatters);
 
   // Figure out our column type. Default type is text.
   mType = nsITreeColumn::TYPE_TEXT;
   static Element::AttrValuesArray typestrings[] =
-    {&nsGkAtoms::checkbox, &nsGkAtoms::progressmeter, &nsGkAtoms::password,
+    {&nsGkAtoms::checkbox, &nsGkAtoms::password,
      nullptr};
   switch (mContent->AsElement()->FindAttrValueIn(kNameSpaceID_None,
                                                  nsGkAtoms::type,
                                                  typestrings,
                                                  eCaseMatters)) {
     case 0: mType = nsITreeColumn::TYPE_CHECKBOX; break;
-    case 1: mType = nsITreeColumn::TYPE_PROGRESSMETER; break;
-    case 2: mType = nsITreeColumn::TYPE_PASSWORD; break;
+    case 1: mType = nsITreeColumn::TYPE_PASSWORD; break;
   }
 
   // Fetch the crop style.
   mCropStyle = 0;
   static Element::AttrValuesArray cropstrings[] =
     {&nsGkAtoms::center, &nsGkAtoms::left, &nsGkAtoms::start, nullptr};
   switch (mContent->AsElement()->FindAttrValueIn(kNameSpaceID_None,
                                                  nsGkAtoms::crop, cropstrings,
--- a/layout/xul/tree/nsTreeContentView.cpp
+++ b/layout/xul/tree/nsTreeContentView.cpp
@@ -488,62 +488,16 @@ nsTreeContentView::GetImageSrc(int32_t a
   RefPtr<nsTreeColumn> col = nsTreeColumn::From(aCol);
   NS_ENSURE_ARG(col);
 
   ErrorResult rv;
   GetImageSrc(aRow, *col, _retval, rv);
   return rv.StealNSResult();
 }
 
-int32_t
-nsTreeContentView::GetProgressMode(int32_t aRow, nsTreeColumn& aColumn,
-                                   ErrorResult& aError)
-{
-  if (!IsValidRowIndex(aRow)) {
-    aError.Throw(NS_ERROR_INVALID_ARG);
-    return 0;
-  }
-
-  Row* row = mRows[aRow].get();
-
-  nsIContent* realRow =
-    nsTreeUtils::GetImmediateChild(row->mContent, nsGkAtoms::treerow);
-  if (realRow) {
-    Element* cell = GetCell(realRow, aColumn);
-    if (cell) {
-      static Element::AttrValuesArray strings[] =
-        {&nsGkAtoms::normal, &nsGkAtoms::undetermined, nullptr};
-      switch (cell->FindAttrValueIn(kNameSpaceID_None, nsGkAtoms::mode,
-                                    strings, eCaseMatters)) {
-        case 0:
-        {
-          return nsITreeView::PROGRESS_NORMAL;
-        }
-        case 1:
-        {
-          return nsITreeView::PROGRESS_UNDETERMINED;
-        }
-      }
-    }
-  }
-
-  return nsITreeView::PROGRESS_NONE;
-}
-
-NS_IMETHODIMP
-nsTreeContentView::GetProgressMode(int32_t aRow, nsITreeColumn* aCol, int32_t* _retval)
-{
-  RefPtr<nsTreeColumn> col = nsTreeColumn::From(aCol);
-  NS_ENSURE_ARG(col);
-
-  ErrorResult rv;
-  *_retval = GetProgressMode(aRow, *col, rv);
-  return rv.StealNSResult();
-}
-
 void
 nsTreeContentView::GetCellValue(int32_t aRow, nsTreeColumn& aColumn,
                                 nsAString& aValue, ErrorResult& aError)
 {
   if (!IsValidRowIndex(aRow)) {
     aError.Throw(NS_ERROR_INVALID_ARG);
     return;
   }
--- a/layout/xul/tree/nsTreeContentView.h
+++ b/layout/xul/tree/nsTreeContentView.h
@@ -77,18 +77,16 @@ class nsTreeContentView final : public n
               mozilla::dom::DataTransfer* aDataTransfer,
               mozilla::ErrorResult& aError);
     int32_t GetParentIndex(int32_t aRow, mozilla::ErrorResult& aError);
     bool HasNextSibling(int32_t aRow, int32_t aAfterIndex,
                         mozilla::ErrorResult& aError);
     int32_t GetLevel(int32_t aRow, mozilla::ErrorResult& aError);
     void GetImageSrc(int32_t aRow, nsTreeColumn& aColumn, nsAString& aSrc,
                      mozilla::ErrorResult& aError);
-    int32_t GetProgressMode(int32_t aRow, nsTreeColumn& aColumn,
-                            mozilla::ErrorResult& aError);
     void GetCellValue(int32_t aRow, nsTreeColumn& aColumn, nsAString& aValue,
                       mozilla::ErrorResult& aError);
     void GetCellText(int32_t aRow, nsTreeColumn& aColumn, nsAString& aText,
                      mozilla::ErrorResult& aError);
     void SetTree(mozilla::dom::TreeBoxObject* aTree,
                  mozilla::ErrorResult& aError);
     void ToggleOpenState(int32_t aRow, mozilla::ErrorResult& aError);
     void CycleHeader(nsTreeColumn& aColumn, mozilla::ErrorResult& aError);
--- a/security/manager/pki/nsASN1Tree.cpp
+++ b/security/manager/pki/nsASN1Tree.cpp
@@ -263,22 +263,16 @@ nsNSSASN1Tree::GetLevel(int32_t index, i
 
 NS_IMETHODIMP
 nsNSSASN1Tree::GetImageSrc(int32_t, nsITreeColumn*, nsAString&)
 {
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsNSSASN1Tree::GetProgressMode(int32_t, nsITreeColumn*, int32_t*)
-{
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 nsNSSASN1Tree::GetCellValue(int32_t, nsITreeColumn*, nsAString&)
 {
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsNSSASN1Tree::GetCellText(int32_t row, nsITreeColumn*, nsAString& _retval)
 {
--- a/security/manager/ssl/nsCertTree.cpp
+++ b/security/manager/ssl/nsCertTree.cpp
@@ -1013,22 +1013,16 @@ NS_IMETHODIMP
 nsCertTree::GetImageSrc(int32_t row, nsITreeColumn* col,
                         nsAString& _retval)
 {
   _retval.Truncate();
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsCertTree::GetProgressMode(int32_t row, nsITreeColumn* col, int32_t* _retval)
-{
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 nsCertTree::GetCellValue(int32_t row, nsITreeColumn* col,
                          nsAString& _retval)
 {
   _retval.Truncate();
   return NS_OK;
 }
 
 NS_IMETHODIMP
--- a/toolkit/components/autocomplete/nsAutoCompleteController.cpp
+++ b/toolkit/components/autocomplete/nsAutoCompleteController.cpp
@@ -980,23 +980,16 @@ nsAutoCompleteController::GetImageSrc(in
 
   if (NS_LITERAL_STRING("treecolAutoCompleteValue").Equals(colID))
     return GetImageAt(row, _retval);
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
-nsAutoCompleteController::GetProgressMode(int32_t row, nsITreeColumn* col, int32_t* _retval)
-{
-  NS_NOTREACHED("tree has no progress cells");
-  return NS_OK;
-}
-
-NS_IMETHODIMP
 nsAutoCompleteController::GetCellValue(int32_t row, nsITreeColumn* col, nsAString& _retval)
 {
   NS_NOTREACHED("all of our cells are text");
   return NS_OK;
 }
 
 NS_IMETHODIMP
 nsAutoCompleteController::GetCellText(int32_t row, nsITreeColumn* col, nsAString& _retval)
--- a/toolkit/components/passwordmgr/content/passwordManager.js
+++ b/toolkit/components/passwordmgr/content/passwordManager.js
@@ -152,17 +152,16 @@ let signonsTreeView = {
     PlacesUtils.promiseFaviconLinkUrl(signon.hostname)
       .then(faviconURI => {
         this._faviconMap.set(signon.hostname, faviconURI.spec);
         this._invalidateTask.arm();
       }).catch(Cu.reportError);
 
     return "";
   },
-  getProgressMode(row, column) {},
   getCellValue(row, column) {},
   getCellText(row, column) {
     let time;
     let signon = GetVisibleLogins()[row];
     switch (column.id) {
       case "siteCol":
         return signon.httpRealm ?
                (signon.hostname + " (" + signon.httpRealm + ")") :
--- a/toolkit/content/tests/chrome/test_tree_view.xul
+++ b/toolkit/content/tests/chrome/test_tree_view.xul
@@ -30,17 +30,16 @@ var view =
   setTree: function(tree) { this.tree = tree; },
   isContainer: function(row) { return false; },
   isContainerOpen: function(row) { return false; },
   isContainerEmpty: function(row) { return false; },
   isSeparator: function(row) { return false; },
   isSorted: function(row) { return false; },
   isSelectable: function(row, column) { return true; },
   isEditable: function(row, column) { return row != 2 || column.index != 1; },
-  getProgressMode: function(row, column) { return Components.interfaces.nsITreeView.PROGRESS_NORMAL; },
   getParentIndex: function(row, column) { return -1; },
   getLevel: function(row) { return 0; },
   hasNextSibling: function(row, column) { return row != this.rowCount - 1; },
   getImageSrc: function(row, column) { return ""; },
   cycleHeader: function(column) { },
   getRowProperties: function(row) { return ""; },
   getCellProperties: function(row, column) { return ""; },
   getColumnProperties: function(column)
@@ -60,18 +59,17 @@ function getCustomTreeViewCellInfo()
   for (var row = 0; row < view.rowCount; row++) {
     var cellInfo = [ ];
     for (var column = 0; column < 1; column++) {
       cellInfo.push({ label: "" + view.treeData[row % 4][column],
                       value: "",
                       properties: "",
                       editable: row != 2 || column.index != 1,
                       selectable: true,
-                      image: "",
-                      mode: Components.interfaces.nsITreeView.PROGRESS_NORMAL });
+                      image: "" });
     }
 
     obj.rows.push({ cells: cellInfo,
                     properties: "",
                     container: false,
                     separator: false,
                     children: null,
                     level: 0,
--- a/toolkit/content/tests/widgets/tree_shared.js
+++ b/toolkit/content/tests/widgets/tree_shared.js
@@ -14,17 +14,17 @@ var columns_hiertree =
 [
   { name: "name", label: "Name", primary: true, key: true, properties: "one two" },
   { name: "address", label: "Address" },
   { name: "planet", label: "Planet" },
   { name: "gender", label: "Gender", cycler: true }
 ];
 
 // XXXndeakin still to add some tests for:
-//   cycler columns, checkbox cells, progressmeter cells
+//   cycler columns, checkbox cells
 
 // this test function expects a tree to have 8 rows in it when it isn't
 // expanded. The tree should only display four rows at a time. If editable,
 // the cell at row 1 and column 0 must be editable, and the cell at row 2 and
 // column 1 must not be editable.
 function testtag_tree(treeid, treerowinfoid, seltype, columnstype, testid) {
   // Stop keystrokes that aren't handled by the tree from leaking out and
   // scrolling the main Mochitests window!
@@ -908,17 +908,16 @@ function testtag_tree_TreeView_rows(tree
   var checkCellMethods =
   {
     getCellText(row, cell) { return cell.label; },
     getCellValue(row, cell) { return cell.value; },
     getCellProperties(row, cell) { return cell.properties; },
     isEditable(row, cell) { return cell.editable; },
     isSelectable(row, cell) { return cell.selectable; },
     getImageSrc(row, cell) { return cell.image; },
-    getProgressMode(row, cell) { return cell.mode; }
   };
 
   var failedMethods = { };
   var checkMethod, actual, expected;
   var toggleOpenStateOK = true;
 
   for (r = startRow; r < length; r++) {
     var row = rowInfo.rows[r];
--- a/toolkit/themes/linux/global/tree.css
+++ b/toolkit/themes/linux/global/tree.css
@@ -169,31 +169,16 @@ treechildren::-moz-tree-cell-text(primar
 
 treechildren::-moz-tree-drop-feedback {
   background-color: Highlight;
   width: 50px;
   height: 2px;
   margin-inline-start: 5px;
 }
 
-/* ::::: tree progress meter ::::: */
-
-treechildren::-moz-tree-progressmeter {
-  margin: 2px 4px;
-  padding: 1px;
-  border: 1px solid;
-  border-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow;
-  background-color: -moz-Dialog;
-  color: ThreeDShadow;
-}
-
-treechildren::-moz-tree-cell-text(progressmeter) {
-  margin: 2px 4px;
-}
-
 /* ::::: tree columns ::::: */
 
 treecol,
 treecolpicker {
   -moz-appearance: treeheadercell;
   -moz-box-align: center;
   -moz-box-pack: center;
   color: -moz-DialogText;
--- a/toolkit/themes/osx/global/tree.css
+++ b/toolkit/themes/osx/global/tree.css
@@ -139,29 +139,16 @@ treechildren::-moz-tree-cell-text(primar
 
 treechildren::-moz-tree-drop-feedback {
   background-color: #A1A1A1;
   width: 50px;
   height: 2px;
   margin-inline-start: 5px;
 }
 
-/* ::::: tree progress meter ::::: */
-
-treechildren::-moz-tree-progressmeter {
-  margin: 2px 4px;
-  border: 1px solid;
-  border-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow;
-}
-
-treechildren::-moz-tree-cell-text(progressmeter) {
-  margin: 2px 4px;
-  -moz-appearance: progressbar;
-}
-
 /* ::::: tree columns ::::: */
 
 treecol,
 treecolpicker {
   -moz-appearance: treeheadercell;
   -moz-box-align: center;
   -moz-box-pack: center;
   color: -moz-DialogText;
--- a/toolkit/themes/windows/global/tree.css
+++ b/toolkit/themes/windows/global/tree.css
@@ -168,31 +168,16 @@ treechildren::-moz-tree-cell-text(primar
 
 treechildren::-moz-tree-drop-feedback {
   background-color: Highlight;
   width: 50px;
   height: 2px;
   margin-inline-start: 5px;
 }
 
-/* ::::: tree progress meter ::::: */
-
-treechildren::-moz-tree-progressmeter {
-  margin: 2px 4px;
-  padding: 1px;
-  border: 1px solid;
-  border-color: ThreeDShadow ThreeDHighlight ThreeDHighlight ThreeDShadow;
-  background-color: -moz-Dialog;
-  color: ThreeDShadow;
-}
-
-treechildren::-moz-tree-cell-text(progressmeter) {
-  margin: 2px 4px;
-}
-
 /* ::::: tree columns ::::: */
 
 treecol,
 treecolpicker {
   -moz-appearance: treeheadercell;
   -moz-box-align: center;
   -moz-box-pack: center;
   color: -moz-DialogText;