Bug 1468992 - Remove the Library infopane More/Less toggle. r?mak draft
authorDão Gottwald <dao@mozilla.com>
Sat, 30 Jun 2018 01:12:13 +0200
changeset 812767 ee7502ccc00a8dccc40daa2b3014b4be4720b0c6
parent 812757 28ad9a9e95d518e1163e550ae19c972aabb44df5
push id114667
push userdgottwald@mozilla.com
push dateFri, 29 Jun 2018 23:12:59 +0000
reviewersmak
bugs1468992
milestone63.0a1
Bug 1468992 - Remove the Library infopane More/Less toggle. r?mak MozReview-Commit-ID: LRNXWTHaGYS
browser/components/places/content/editBookmarkPanel.inc.xul
browser/components/places/content/places.js
browser/components/places/content/places.xul
browser/components/places/tests/browser/browser.ini
browser/components/places/tests/browser/browser_editBookmark_keywords.js
browser/components/places/tests/browser/browser_library_infoBox.js
browser/locales/en-US/chrome/browser/places/places.dtd
browser/themes/osx/places/organizer.css
--- a/browser/components/places/content/editBookmarkPanel.inc.xul
+++ b/browser/components/places/content/editBookmarkPanel.inc.xul
@@ -109,21 +109,16 @@
     <vbox id="editBMPanel_tagsSelectorRow"
          collapsed="true">
       <listbox id="editBMPanel_tagsSelector"
                height="150"/>
     </vbox>
 
     <vbox id="editBMPanel_keywordRow"
           collapsed="true">
-      <observes element="additionalInfoBroadcaster" attribute="hidden"/>
       <label value="&editBookmarkOverlay.keyword.label;"
              accesskey="&editBookmarkOverlay.keyword.accesskey;"
              control="editBMPanel_keywordField"/>
       <textbox id="editBMPanel_keywordField"
                onchange="gEditItemOverlay.onKeywordFieldChange();"/>
     </vbox>
   </vbox>
-
-  <!-- If the ids are changing or additional fields are being added, be sure
-       to sync the values in places.js -->
-  <broadcaster id="additionalInfoBroadcaster"/>
 </vbox>
--- a/browser/components/places/content/places.js
+++ b/browser/components/places/content/places.js
@@ -23,23 +23,16 @@ ChromeUtils.defineModuleGetter(this, "Do
                                "resource://gre/modules/DownloadUtils.jsm");
 
 const RESTORE_FILEPICKER_FILTER_EXT = "*.json;*.jsonlz4";
 const HISTORY_LIBRARY_SEARCH_TELEMETRY = "PLACES_HISTORY_LIBRARY_SEARCH_TIME_MS";
 
 var PlacesOrganizer = {
   _places: null,
 
-  // IDs of fields from editBookmark that should be hidden when infoBox
-  // is minimal. IDs should be kept in sync with the IDs of the elements
-  // observing additionalInfoBroadcaster.
-  _additionalInfoFields: [
-    "editBMPanel_keywordRow",
-  ],
-
   _initFolderTree() {
     this._places.place = `place:type=${Ci.nsINavHistoryQueryOptions.RESULTS_AS_LEFT_PANE_QUERY}&excludeItems=1&expandQueries=0`;
   },
 
   /**
    * Selects a left pane built-in item.
    *
    * @param {String} item The built-in item to select, may be one of (case sensitive):
@@ -579,51 +572,16 @@ var PlacesOrganizer = {
     fp.appendFilter(PlacesUIUtils.getString("bookmarksRestoreFilterName"),
                     RESTORE_FILEPICKER_FILTER_EXT);
     fp.defaultString = PlacesBackups.getFilenameForDate();
     fp.defaultExtension = "json";
     fp.displayDirectory = backupsDir;
     fp.open(fpCallback);
   },
 
-  _detectAndSetDetailsPaneMinimalState:
-  function PO__detectAndSetDetailsPaneMinimalState(aNode) {
-    /**
-     * The details of simple folder-items (as opposed to livemarks) or the
-     * of livemark-children are not likely to fill the infoBox anyway,
-     * thus we remove the "More/Less" button and show all details.
-     *
-     * the wasminimal attribute here is used to persist the "more/less"
-     * state in a bookmark->folder->bookmark scenario.
-     */
-    var infoBox = document.getElementById("infoBox");
-    var infoBoxExpanderWrapper = document.getElementById("infoBoxExpanderWrapper");
-    var additionalInfoBroadcaster = document.getElementById("additionalInfoBroadcaster");
-
-    if (!aNode) {
-      infoBoxExpanderWrapper.hidden = true;
-      return;
-    }
-    if (aNode.itemId != -1 &&
-        PlacesUtils.nodeIsFolder(aNode) && !aNode._feedURI) {
-      if (infoBox.getAttribute("minimal") == "true")
-        infoBox.setAttribute("wasminimal", "true");
-      infoBox.removeAttribute("minimal");
-      infoBoxExpanderWrapper.hidden = true;
-    } else {
-      if (infoBox.getAttribute("wasminimal") == "true")
-        infoBox.setAttribute("minimal", "true");
-      infoBox.removeAttribute("wasminimal");
-      infoBoxExpanderWrapper.hidden =
-        this._additionalInfoFields.every(id =>
-          document.getElementById(id).collapsed);
-    }
-    additionalInfoBroadcaster.hidden = infoBox.getAttribute("minimal") == "true";
-  },
-
   _fillDetailsPane: function PO__fillDetailsPane(aNodeList) {
     var infoBox = document.getElementById("infoBox");
     var detailsDeck = document.getElementById("detailsDeck");
 
     // Make sure the infoBox UI is visible if we need to use it, we hide it
     // below when we don't.
     infoBox.hidden = false;
     let selectedNode = aNodeList.length == 1 ? aNodeList[0] : null;
@@ -654,28 +612,25 @@ var PlacesOrganizer = {
     // Clean up the panel before initing it again.
     gEditItemOverlay.uninitPanel(false);
 
     if (selectedNode && !PlacesUtils.nodeIsSeparator(selectedNode)) {
       detailsDeck.selectedIndex = 1;
 
       gEditItemOverlay.initPanel({ node: selectedNode,
                                    hiddenRows: ["folderPicker"] });
-
-      this._detectAndSetDetailsPaneMinimalState(selectedNode);
     } else if (!selectedNode && aNodeList[0]) {
       if (aNodeList.every(PlacesUtils.nodeIsURI)) {
         let uris = aNodeList.map(node => Services.io.newURI(node.uri));
         detailsDeck.selectedIndex = 1;
         gEditItemOverlay.initPanel({ uris,
                                      hiddenRows: ["folderPicker",
                                                   "location",
                                                   "keyword",
                                                   "name"]});
-        this._detectAndSetDetailsPaneMinimalState(selectedNode);
       } else {
         detailsDeck.selectedIndex = 0;
         let selectItemDesc = document.getElementById("selectItemDescription");
         let itemsCountLabel = document.getElementById("itemsCountText");
         selectItemDesc.hidden = false;
         itemsCountLabel.value =
           PlacesUIUtils.getPluralString("detailsPane.itemsCountLabel",
                                         aNodeList.length, [aNodeList.length]);
@@ -698,37 +653,16 @@ var PlacesOrganizer = {
       } else {
         selectItemDesc.hidden = false;
         itemsCountLabel.value =
           PlacesUIUtils.getPluralString("detailsPane.itemsCountLabel",
                                         itemsCount, [itemsCount]);
       }
     }
   },
-
-  toggleAdditionalInfoFields: function PO_toggleAdditionalInfoFields() {
-    var infoBox = document.getElementById("infoBox");
-    var infoBoxExpander = document.getElementById("infoBoxExpander");
-    var infoBoxExpanderLabel = document.getElementById("infoBoxExpanderLabel");
-    var additionalInfoBroadcaster = document.getElementById("additionalInfoBroadcaster");
-
-    if (infoBox.getAttribute("minimal") == "true") {
-      infoBox.removeAttribute("minimal");
-      infoBoxExpanderLabel.value = infoBoxExpanderLabel.getAttribute("lesslabel");
-      infoBoxExpanderLabel.accessKey = infoBoxExpanderLabel.getAttribute("lessaccesskey");
-      infoBoxExpander.className = "expander-up";
-      additionalInfoBroadcaster.removeAttribute("hidden");
-    } else {
-      infoBox.setAttribute("minimal", "true");
-      infoBoxExpanderLabel.value = infoBoxExpanderLabel.getAttribute("morelabel");
-      infoBoxExpanderLabel.accessKey = infoBoxExpanderLabel.getAttribute("moreaccesskey");
-      infoBoxExpander.className = "expander-down";
-      additionalInfoBroadcaster.setAttribute("hidden", "true");
-    }
-  },
 };
 
 /**
  * A set of utilities relating to search within Bookmarks and History.
  */
 var PlacesSearchBox = {
 
   /**
--- a/browser/components/places/content/places.xul
+++ b/browser/components/places/content/places.xul
@@ -436,32 +436,15 @@
           <spacer flex="3"/>
           <label id="itemsCountText"/>
           <spacer flex="1"/>
           <description id="selectItemDescription">
               &detailsPane.selectAnItemText.description;
           </description>
           <spacer flex="3"/>
         </vbox>
-        <vbox id="infoBox" minimal="true">
+        <vbox id="infoBox">
 #include editBookmarkPanel.inc.xul
-          <hbox id="infoBoxExpanderWrapper" align="center">
-
-            <button type="image" id="infoBoxExpander"
-                    class="expander-down"
-                    oncommand="PlacesOrganizer.toggleAdditionalInfoFields();"
-                    observes="paneElementsBroadcaster"/>
-
-            <label id="infoBoxExpanderLabel"
-                    lesslabel="&detailsPane.less.label;"
-                    lessaccesskey="&detailsPane.less.accesskey;"
-                    morelabel="&detailsPane.more.label;"
-                    moreaccesskey="&detailsPane.more.accesskey;"
-                    value="&detailsPane.more.label;"
-                    accesskey="&detailsPane.more.accesskey;"
-                    control="infoBoxExpander"/>
-
-          </hbox>
         </vbox>
       </deck>
     </vbox>
   </hbox>
 </window>
--- a/browser/components/places/tests/browser/browser.ini
+++ b/browser/components/places/tests/browser/browser.ini
@@ -57,17 +57,16 @@ subsuite = clipboard
 skip-if = (verify && debug && (os == 'mac' || os == 'linux'))
 [browser_forgetthissite_single.js]
 [browser_history_sidebar_search.js]
 [browser_library_commands.js]
 [browser_library_delete_bookmarks_in_tags.js]
 [browser_library_delete_tags.js]
 [browser_library_delete.js]
 [browser_library_downloads.js]
-[browser_library_infoBox.js]
 [browser_library_left_pane_middleclick.js]
 [browser_library_left_pane_select_hierarchy.js]
 [browser_library_middleclick.js]
 [browser_library_new_bookmark.js]
 [browser_library_open_leak.js]
 [browser_library_openFlatContainer.js]
 [browser_library_open_bookmark.js]
 [browser_library_panel_leak.js]
--- a/browser/components/places/tests/browser/browser_editBookmark_keywords.js
+++ b/browser/components/places/tests/browser/browser_editBookmark_keywords.js
@@ -43,21 +43,16 @@ add_task(async function() {
     });
 
     let node = library.ContentTree.view.view.nodeForTreeIndex(i);
     is(node.bookmarkGuid, bm.guid, "Found the expected bookmark");
     // Select the bookmark.
     library.ContentTree.view.selectNode(node);
     synthesizeClickOnSelectedTreeCell(library.ContentTree.view);
 
-    // Expand the additional info for the first bookmark.
-    if (i === 0) {
-      library.document.getElementById("infoBoxExpander").click();
-    }
-
     is(library.document.getElementById("editBMPanel_keywordField").value, "",
       "The keyword field should be empty");
     info("Add a keyword to the bookmark");
     let promise = promiseOnItemChanged();
     keywordField.focus();
     keywordField.value = "kw";
     EventUtils.sendString(i.toString(), library);
     keywordField.blur();
deleted file mode 100644
--- a/browser/components/places/tests/browser/browser_library_infoBox.js
+++ /dev/null
@@ -1,160 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/**
- *  Test appropriate visibility of infoBoxExpanderWrapper and
- *  additionalInfoFields in infoBox section of library
- */
-
-let gLibrary;
-add_task(async function() {
-  // Open Library.
-  gLibrary = await promiseLibrary();
-  registerCleanupFunction(async () => {
-    gLibrary.close();
-    await PlacesUtils.history.clear();
-  });
-  gLibrary.PlacesOrganizer._places.focus();
-
-  info("Bug 430148 - Remove or hide the more/less button in details pane...");
-  let PO = gLibrary.PlacesOrganizer;
-  let ContentTree = gLibrary.ContentTree;
-  let infoBoxExpanderWrapper = getAndCheckElmtById("infoBoxExpanderWrapper");
-
-  await PlacesTestUtils.addVisits("http://www.mozilla.org/");
-
-  // open all bookmarks node
-  PO.selectLeftPaneBuiltIn("AllBookmarks");
-  isnot(PO._places.selectedNode, null,
-        "Correctly selected all bookmarks node.");
-  checkInfoBoxSelected();
-  ok(infoBoxExpanderWrapper.hidden,
-      "Expander button is hidden for all bookmarks node.");
-  checkAddInfoFieldsCollapsed(PO);
-
-  // open history node
-  PO.selectLeftPaneBuiltIn("History");
-  isnot(PO._places.selectedNode, null, "Correctly selected history node.");
-  checkInfoBoxSelected();
-  ok(infoBoxExpanderWrapper.hidden,
-      "Expander button is hidden for history node.");
-  checkAddInfoFieldsCollapsed(PO);
-
-  // open history child node
-  var historyNode = PO._places.selectedNode.
-                    QueryInterface(Ci.nsINavHistoryContainerResultNode);
-  historyNode.containerOpen = true;
-  var childNode = historyNode.getChild(0);
-  isnot(childNode, null, "History node first child is not null.");
-  PO._places.selectNode(childNode);
-  checkInfoBoxSelected();
-  ok(infoBoxExpanderWrapper.hidden,
-      "Expander button is hidden for history child node.");
-  checkAddInfoFieldsCollapsed(PO);
-
-  // open history item
-  var view = ContentTree.view.view;
-  ok(view.rowCount > 0, "History item exists.");
-  view.selection.select(0);
-  ok(infoBoxExpanderWrapper.hidden,
-      "Expander button is hidden for history item.");
-  checkAddInfoFieldsCollapsed(PO);
-
-  historyNode.containerOpen = false;
-
-  // open bookmarks menu node
-  PO.selectLeftPaneBuiltIn("BookmarksMenu");
-  isnot(PO._places.selectedNode, null,
-        "Correctly selected bookmarks menu node.");
-  checkInfoBoxSelected();
-  ok(infoBoxExpanderWrapper.hidden,
-      "Expander button is hidden for bookmarks menu node.");
-  checkAddInfoFieldsCollapsed(PO);
-
-  // open recently bookmarked node
-  await PlacesUtils.bookmarks.insert({
-    parentGuid: PlacesUtils.bookmarks.menuGuid,
-    url: "place:" + PlacesUtils.bookmarks.userContentRoots.map(guid => `parent=${guid}`).join("&") +
-         "&queryType=" + Ci.nsINavHistoryQueryOptions.QUERY_TYPE_BOOKMARKS +
-         "&sort=" + Ci.nsINavHistoryQueryOptions.SORT_BY_DATEADDED_DESCENDING +
-         "&maxResults=10" +
-         "&excludeQueries=1",
-    title: "Recent Bookmarks",
-    index: 0
-  });
-  await PlacesUtils.bookmarks.insert({
-    parentGuid: PlacesUtils.bookmarks.menuGuid,
-    url: "http://mozilla.org/",
-    title: "Mozilla",
-    index: 1
-  });
-  var menuNode = PO._places.selectedNode.
-                  QueryInterface(Ci.nsINavHistoryContainerResultNode);
-  menuNode.containerOpen = true;
-  childNode = menuNode.getChild(0);
-  isnot(childNode, null, "Bookmarks menu child node exists.");
-  is(childNode.title, "Recent Bookmarks",
-      "Correctly selected recently bookmarked node.");
-  PO._places.selectNode(childNode);
-  checkInfoBoxSelected();
-  ok(infoBoxExpanderWrapper.hidden,
-     "Expander button is hidden for recently bookmarked node.");
-  checkAddInfoFieldsCollapsed(PO);
-
-  // open first bookmark
-  view = ContentTree.view.view;
-  ContentTree.view.focus();
-  ok(view.rowCount > 0, "Bookmark item exists.");
-  view.selection.select(0);
-  checkInfoBoxSelected();
-  ok(!infoBoxExpanderWrapper.hidden,
-      "Expander button is not hidden for bookmark item.");
-  checkAddInfoFieldsNotCollapsed(PO);
-
-  ok(true, "Checking additional info fields visibiity for bookmark item");
-  var expanderButton = getAndCheckElmtById("infoBoxExpander");
-
-  // make sure additional fields are hidden by default
-  PO._additionalInfoFields.forEach(function(id) {
-    ok(getAndCheckElmtById(id).hidden,
-       "Additional info field correctly hidden by default: #" + id);
-  });
-
-  // toggle fields and make sure they are hidden/unhidden as expected
-  expanderButton.click();
-  PO._additionalInfoFields.forEach(function(id) {
-    ok(!getAndCheckElmtById(id).hidden,
-       "Additional info field correctly unhidden after toggle: #" + id);
-  });
-  expanderButton.click();
-  PO._additionalInfoFields.forEach(function(id) {
-    ok(getAndCheckElmtById(id).hidden,
-       "Additional info field correctly hidden after toggle: #" + id);
-  });
-
-  menuNode.containerOpen = false;
-});
-
-function checkInfoBoxSelected() {
-  is(getAndCheckElmtById("detailsDeck").selectedIndex, 1,
-     "Selected element in detailsDeck is infoBox.");
-}
-
-function checkAddInfoFieldsCollapsed(PO) {
-  PO._additionalInfoFields.forEach(id => {
-    ok(getAndCheckElmtById(id).collapsed,
-       `Additional info field should be collapsed: #${id}`);
-  });
-}
-
-function checkAddInfoFieldsNotCollapsed(PO) {
-  ok(PO._additionalInfoFields.some(id => !getAndCheckElmtById(id).collapsed),
-     `Some additional info field should not be collapsed.`);
-}
-
-function getAndCheckElmtById(id) {
-  var elmt = gLibrary.document.getElementById(id);
-  isnot(elmt, null, "Correctly got element: #" + id);
-  return elmt;
-}
--- a/browser/locales/en-US/chrome/browser/places/places.dtd
+++ b/browser/locales/en-US/chrome/browser/places/places.dtd
@@ -89,20 +89,16 @@
 <!ENTITY maintenance.label      "Import and Backup">
 <!ENTITY maintenance.accesskey  "I">
 <!ENTITY maintenance.tooltip    "Import and backup your bookmarks">
 
 <!ENTITY backButton.tooltip  "Go back">
 
 <!ENTITY forwardButton.tooltip  "Go forward">
 
-<!ENTITY detailsPane.more.label "More">
-<!ENTITY detailsPane.more.accesskey "e">
-<!ENTITY detailsPane.less.label "Less">
-<!ENTITY detailsPane.less.accesskey "e">
 <!ENTITY detailsPane.selectAnItemText.description "Select an item to view and edit its properties">
 
 <!ENTITY view.label               "View">
 <!ENTITY view.accesskey           "w">
 <!ENTITY byDate.label             "By Date">
 <!ENTITY byDate.accesskey         "D">
 <!ENTITY bySite.label             "By Site">
 <!ENTITY bySite.accesskey         "S">
--- a/browser/themes/osx/places/organizer.css
+++ b/browser/themes/osx/places/organizer.css
@@ -243,32 +243,16 @@
 #placeContent > treechildren::-moz-tree-column {
   border-right: 1px solid #d7dad7;
 }
 
 #placeContent > treechildren::-moz-tree-cell(separator) {
   border-color: transparent;
 }
 
-/**** expanders ****/
-
-.expander-up,
-.expander-down {
-  margin: 0 4px 1px 8px;
-  padding: 0;
-}
-
-.expander-up {
-  -moz-appearance: -moz-mac-disclosure-button-open;
-}
-
-.expander-down {
-  -moz-appearance: -moz-mac-disclosure-button-closed;
-}
-
 /**
  * info pane
  */
 
 #infoBoxExpander {
   margin: 2px;
 }