Bug 524091 - Remove microsummaries support. (Places changes)
authorMarco Bonardo <mbonardo@mozilla.com>
Tue, 26 Apr 2011 14:25:07 +0200
changeset 68758 512f90d0dce157f6867e3c90971062b787840cd3
parent 68757 5e98268edaf1c72870c854bb54b91ce7ca5edcea
child 68759 a6ef6163855d753c780718a0f049bcc981fd7c61
push idunknown
push userunknown
push dateunknown
bugs524091
milestone6.0a1
Bug 524091 - Remove microsummaries support. (Places changes)
browser/components/places/content/controller.js
browser/components/places/content/editBookmarkOverlay.js
browser/components/places/content/editBookmarkOverlay.xul
browser/components/places/content/placesOverlay.xul
browser/components/places/src/PlacesUIUtils.jsm
browser/components/places/tests/browser/browser_bookmarksProperties.js
browser/components/places/tests/unit/bookmarks.preplaces.html
browser/components/places/tests/unit/test_384370.js
browser/components/places/tests/unit/test_bookmarks_html.js
browser/components/places/tests/unit/test_placesTxn.js
browser/locales/en-US/chrome/browser/places/editBookmarkOverlay.dtd
browser/locales/en-US/chrome/browser/places/places.dtd
browser/themes/gnomestripe/browser/browser.css
browser/themes/gnomestripe/browser/places/editBookmarkOverlay.css
browser/themes/gnomestripe/browser/places/places.css
browser/themes/pinstripe/browser/browser.css
browser/themes/pinstripe/browser/places/editBookmarkOverlay.css
browser/themes/winstripe/browser/places/editBookmarkOverlay.css
toolkit/components/places/Makefile.in
toolkit/components/places/PlacesUtils.jsm
toolkit/components/places/nsPlacesImportExportService.cpp
toolkit/components/places/nsPlacesImportExportService.h
toolkit/components/places/toolkitplaces.manifest
--- a/browser/components/places/content/controller.js
+++ b/browser/components/places/content/controller.js
@@ -198,20 +198,16 @@ PlacesController.prototype = {
                  Ci.nsINavHistoryQueryOptions.SORT_BY_NONE;
     case "placesCmd_show:info":
       var selectedNode = this._view.selectedNode;
       if (selectedNode &&
           PlacesUtils.getConcreteItemId(selectedNode) != -1  &&
           !PlacesUtils.nodeIsLivemarkItem(selectedNode))
         return true;
       return false;
-    case "placesCmd_reloadMicrosummary":
-      var selectedNode = this._view.selectedNode;
-      return selectedNode && PlacesUtils.nodeIsBookmark(selectedNode) &&
-             PlacesUtils.microsummaries.hasMicrosummary(selectedNode.itemId);
     case "placesCmd_reload":
       // Livemark containers
       var selectedNode = this._view.selectedNode;
       return selectedNode && PlacesUtils.nodeIsLivemarkContainer(selectedNode);
     case "placesCmd_sortBy:name":
       var selectedNode = this._view.selectedNode;
       return selectedNode &&
              PlacesUtils.nodeIsFolder(selectedNode) &&
@@ -288,19 +284,16 @@ PlacesController.prototype = {
       this.showBookmarkPropertiesForSelection();
       break;
     case "placesCmd_moveBookmarks":
       this.moveSelectedBookmarks();
       break;
     case "placesCmd_reload":
       this.reloadSelectedLivemark();
       break;
-    case "placesCmd_reloadMicrosummary":
-      this.reloadSelectedMicrosummary();
-      break;
     case "placesCmd_sortBy:name":
       this.sortFolderByName();
       break;
     case "placesCmd_createBookmark":
       let node = this._view.selectedNode;
       PlacesUIUtils.showBookmarkDialog({ action: "add"
                                        , type: "bookmark"
                                        , hiddenRows: [ "description"
@@ -500,19 +493,16 @@ PlacesController.prototype = {
         case Ci.nsINavHistoryResultNode.RESULT_TYPE_URI:
         case Ci.nsINavHistoryResultNode.RESULT_TYPE_VISIT:
         case Ci.nsINavHistoryResultNode.RESULT_TYPE_FULL_VISIT:
           nodeData["link"] = true;
           uri = PlacesUtils._uri(node.uri);
           if (PlacesUtils.nodeIsBookmark(node)) {
             nodeData["bookmark"] = true;
             PlacesUtils.nodeIsTagQuery(node.parent)
-            var mss = PlacesUtils.microsummaries;
-            if (mss.hasMicrosummary(node.itemId))
-              nodeData["microsummary"] = true;
 
             var parentNode = node.parent;
             if (parentNode) {
               if (PlacesUtils.nodeIsTagQuery(parentNode))
                 nodeData["tagChild"] = true;
               else if (PlacesUtils.nodeIsLivemarkContainer(parentNode))
                 nodeData["livemarkChild"] = true;
             }
@@ -737,26 +727,16 @@ PlacesController.prototype = {
    */
   reloadSelectedLivemark: function PC_reloadSelectedLivemark() {
     var selectedNode = this._view.selectedNode;
     if (selectedNode && PlacesUtils.nodeIsLivemarkContainer(selectedNode))
       PlacesUtils.livemarks.reloadLivemarkFolder(selectedNode.itemId);
   },
 
   /**
-   * Reload the microsummary associated with the selection
-   */
-  reloadSelectedMicrosummary: function PC_reloadSelectedMicrosummary() {
-    var selectedNode = this._view.selectedNode;
-    var mss = PlacesUtils.microsummaries;
-    if (mss.hasMicrosummary(selectedNode.itemId))
-      mss.refreshMicrosummary(selectedNode.itemId);
-  },
-
-  /**
    * Opens the links in the selected folder, or the selected links in new tabs.
    */
   openSelectionInTabs: function PC_openLinksInTabs(aEvent) {
     var node = this._view.selectedNode;
     if (node && PlacesUtils.nodeIsContainer(node))
       PlacesUIUtils.openContainerNodeInTabs(this._view.selectedNode, aEvent, this._view);
     else
       PlacesUIUtils.openURINodesInTabs(this._view.selectedNodes, aEvent, this._view);
@@ -1569,17 +1549,16 @@ function goUpdatePlacesCommands() {
   updatePlacesCommand("placesCmd_open:tab");
   updatePlacesCommand("placesCmd_new:folder");
   updatePlacesCommand("placesCmd_new:bookmark");
   updatePlacesCommand("placesCmd_new:livemark");
   updatePlacesCommand("placesCmd_new:separator");
   updatePlacesCommand("placesCmd_show:info");
   updatePlacesCommand("placesCmd_moveBookmarks");
   updatePlacesCommand("placesCmd_reload");
-  updatePlacesCommand("placesCmd_reloadMicrosummary");
   updatePlacesCommand("placesCmd_sortBy:name");
   updatePlacesCommand("placesCmd_cut");
   updatePlacesCommand("placesCmd_copy");
   updatePlacesCommand("placesCmd_paste");
   updatePlacesCommand("placesCmd_delete");
 }
 
 function doGetPlacesControllerForCommand(aCommand)
--- a/browser/components/places/content/editBookmarkOverlay.js
+++ b/browser/components/places/content/editBookmarkOverlay.js
@@ -31,30 +31,28 @@
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 const LAST_USED_ANNO = "bookmarkPropertiesDialog/folderLastUsed";
-const STATIC_TITLE_ANNO = "bookmarks/staticTitle";
 const MAX_FOLDER_ITEM_IN_MENU_LIST = 5;
 
 var gEditItemOverlay = {
   _uri: null,
   _itemId: -1,
   _itemIds: [],
   _uris: [],
   _tags: [],
   _allTags: [],
   _multiEdit: false,
   _itemType: -1,
   _readOnly: false,
-  _microsummaries: null,
   _hiddenRows: [],
   _observersAdded: false,
   _staticFoldersListBuilt: false,
   _initialized: false,
 
   // the first field which was edited after this panel was initialized for
   // a certain item
   _firstEditedField: "",
@@ -362,173 +360,46 @@ var gEditItemOverlay = {
                                       this._folderMenuList.selectedIndex);
 
     // Hide the folders-separator if no folder is annotated as recently-used
     this._element("foldersSeparator").hidden = (menupopup.childNodes.length <= 6);
     this._folderMenuList.disabled = this._readOnly;
   },
 
   QueryInterface: function EIO_QueryInterface(aIID) {
-    if (aIID.equals(Ci.nsIMicrosummaryObserver) ||
-        aIID.equals(Ci.nsIDOMEventListener) ||
+    if (aIID.equals(Ci.nsIDOMEventListener) ||
         aIID.equals(Ci.nsINavBookmarkObserver) ||
         aIID.equals(Ci.nsISupports))
       return this;
 
     throw Cr.NS_ERROR_NO_INTERFACE;
   },
 
   _element: function EIO__element(aID) {
     return document.getElementById("editBMPanel_" + aID);
   },
 
-  _createMicrosummaryMenuItem:
-  function EIO__createMicrosummaryMenuItem(aMicrosummary) {
-    var menuItem = document.createElement("menuitem");
-
-    // Store a reference to the microsummary in the menu item, so we know
-    // which microsummary this menu item represents when it's time to
-    // save changes or load its content.
-    menuItem.microsummary = aMicrosummary;
-
-    // Content may have to be generated asynchronously; we don't necessarily
-    // have it now.  If we do, great; otherwise, fall back to the generator
-    // name, then the URI, and we trigger a microsummary content update. Once
-    // the update completes, the microsummary will notify our observer to
-    // update the corresponding menu-item.
-    // XXX Instead of just showing the generator name or (heaven forbid)
-    // its URI when we don't have content, we should tell the user that
-    // we're loading the microsummary, perhaps with some throbbing to let
-    // her know it is in progress.
-    if (aMicrosummary.content)
-      menuItem.setAttribute("label", aMicrosummary.content);
-    else {
-      menuItem.setAttribute("label", aMicrosummary.generator.name ||
-                                     aMicrosummary.generator.uri.spec);
-      aMicrosummary.update();
-    }
-
-    return menuItem;
-  },
-
   _getItemStaticTitle: function EIO__getItemStaticTitle() {
     if (this._itemId == -1)
       return PlacesUtils.history.getPageTitle(this._uri);
 
-    const annos = PlacesUtils.annotations;
-    if (annos.itemHasAnnotation(this._itemId, STATIC_TITLE_ANNO))
-      return annos.getItemAnnotation(this._itemId, STATIC_TITLE_ANNO);
-
     return PlacesUtils.bookmarks.getItemTitle(this._itemId);
   },
 
   _initNamePicker: function EIO_initNamePicker() {
-    var userEnteredNameField = this._element("userEnteredName");
     var namePicker = this._element("namePicker");
-    var droppable = false;
-
-    userEnteredNameField.label = this._getItemStaticTitle();
-
-    // clean up old entries
-    var menupopup = namePicker.menupopup;
-    while (menupopup.childNodes.length > 2)
-      menupopup.removeChild(menupopup.lastChild);
-
-    if (this._microsummaries) {
-      this._microsummaries.removeObserver(this);
-      this._microsummaries = null;
-    }
-
-    var itemToSelect = userEnteredNameField;
-    try {
-      if (this._itemId != -1 &&
-          this._itemType == Ci.nsINavBookmarksService.TYPE_BOOKMARK &&
-          !this._readOnly)
-        this._microsummaries = PlacesUtils.microsummaries
-                                          .getMicrosummaries(this._uri, -1);
-    }
-    catch(ex) {
-      // getMicrosummaries will throw an exception in at least two cases:
-      // 1. the bookmarked URI contains a scheme that the service won't
-      //    download for security reasons (currently it only handles http,
-      //    https, and file);
-      // 2. the page to which the URI refers isn't HTML or XML (the only two
-      //    content types the service knows how to summarize).
-      this._microsummaries = null;
-    }
-
-    if (this._microsummaries) {
-      var enumerator = this._microsummaries.Enumerate();
-
-      if (enumerator.hasMoreElements()) {
-        // Show the drop marker if there are microsummaries
-        droppable = true;
-        while (enumerator.hasMoreElements()) {
-          var microsummary = enumerator.getNext()
-                                       .QueryInterface(Ci.nsIMicrosummary);
-          var menuItem = this._createMicrosummaryMenuItem(microsummary);
-          if (PlacesUtils.microsummaries
-                         .isMicrosummary(this._itemId, microsummary))
-            itemToSelect = menuItem;
-
-          menupopup.appendChild(menuItem);
-        }
-      }
-
-      this._microsummaries.addObserver(this);
-    }
-
-    if (namePicker.selectedItem == itemToSelect)
-      namePicker.value = itemToSelect.label;
-    else
-      namePicker.selectedItem = itemToSelect;
-
-    namePicker.setAttribute("droppable", droppable);
+    namePicker.value = this._getItemStaticTitle();
     namePicker.readOnly = this._readOnly;
 
     // clear the undo stack
     var editor = namePicker.editor;
     if (editor)
       editor.transactionManager.clear();
   },
 
-  // nsIMicrosummaryObserver
-  onContentLoaded: function EIO_onContentLoaded(aMicrosummary) {
-    var namePicker = this._element("namePicker");
-    var childNodes = namePicker.menupopup.childNodes;
-
-    // 0: user-entered item; 1: separator
-    for (var i = 2; i < childNodes.length; i++) {
-      if (childNodes[i].microsummary == aMicrosummary) {
-        var newLabel = aMicrosummary.content;
-        // XXXmano: non-editable menulist would do this for us, see bug 360220
-        // We should fix editable-menulists to set the DOMAttrModified handler
-        // as well.
-        //
-        // Also note the order importance: if the label of the menu-item is
-        // set to something different than the menulist's current value,
-        // the menulist no longer has selectedItem set
-        if (namePicker.selectedItem == childNodes[i])
-          namePicker.value = newLabel;
-
-        childNodes[i].label = newLabel;
-        return;
-      }
-    }
-  },
-
-  onElementAppended: function EIO_onElementAppended(aMicrosummary) {
-    var namePicker = this._element("namePicker");
-    namePicker.menupopup
-              .appendChild(this._createMicrosummaryMenuItem(aMicrosummary));
-
-    // Make sure the drop-marker is shown
-    namePicker.setAttribute("droppable", "true");
-  },
-
   uninitPanel: function EIO_uninitPanel(aHideCollapsibleElements) {
     if (aHideCollapsibleElements) {
       // hide the folder tree if it was previously visible
       var folderTreeRow = this._element("folderTreeRow");
       if (!folderTreeRow.collapsed)
         this.toggleFolderTreeVisibility();
 
       // hide the tag selector if it was previously visible
@@ -538,20 +409,17 @@ var gEditItemOverlay = {
     }
 
     if (this._observersAdded) {
       if (this._itemId != -1 || this._uri || this._multiEdit)
         PlacesUtils.bookmarks.removeObserver(this);
 
       this._observersAdded = false;
     }
-    if (this._microsummaries) {
-      this._microsummaries.removeObserver(this);
-      this._microsummaries = null;
-    }
+
     this._itemId = -1;
     this._uri = null;
     this._uris = [];
     this._tags = [];
     this._allTags = [];
     this._itemIds = [];
     this._multiEdit = false;
     this._firstEditedField = "";
@@ -668,64 +536,34 @@ var gEditItemOverlay = {
         // Ensure the tagsField is in sync, clean it up from empty tags
         this._initTextField("tagsField", tags, false);
         return true;
       }
     }
     return false;
   },
 
-  onNamePickerInput: function EIO_onNamePickerInput() {
-    var title = this._element("namePicker").value;
-    this._element("userEnteredName").label = title;
-  },
-
   onNamePickerChange: function EIO_onNamePickerChange() {
     if (this._itemId == -1)
       return;
 
     var namePicker = this._element("namePicker")
     var txns = [];
     const ptm = PlacesUIUtils.ptm;
 
     // Here we update either the item title or its cached static title
-    var newTitle = this._element("userEnteredName").label;
+    var newTitle = namePicker.value;
     if (!newTitle &&
         PlacesUtils.bookmarks.getFolderIdForItem(this._itemId) == PlacesUtils.tagsFolderId) {
       // We don't allow setting an empty title for a tag, restore the old one.
       this._initNamePicker();
     }
     else if (this._getItemStaticTitle() != newTitle) {
       this._mayUpdateFirstEditField("namePicker");
-      if (PlacesUtils.microsummaries.hasMicrosummary(this._itemId)) {
-        // Note: this implicitly also takes care of the microsummary->static
-        // title case, the removeMicorosummary method in the service will set
-        // the item-title to the value of this annotation.
-        //
-        // XXXmano: use a transaction
-        PlacesUtils.setAnnotationsForItem(this._itemId,
-                                          [{name: STATIC_TITLE_ANNO,
-                                            value: newTitle}]);
-      }
-      else
-        txns.push(ptm.editItemTitle(this._itemId, newTitle));
-    }
-
-    var newMicrosummary = namePicker.selectedItem.microsummary;
-
-    // Only add a microsummary update to the transaction if the microsummary
-    // has actually changed, i.e. the user selected no microsummary, but the
-    // bookmark previously had one, or the user selected a microsummary which
-    // is not the one the bookmark previously had
-    if ((newMicrosummary == null &&
-         PlacesUtils.microsummaries.hasMicrosummary(this._itemId)) ||
-        (newMicrosummary != null &&
-         !PlacesUtils.microsummaries
-                     .isMicrosummary(this._itemId, newMicrosummary))) {
-      txns.push(ptm.editBookmarkMicrosummary(this._itemId, newMicrosummary));
+      txns.push(ptm.editItemTitle(this._itemId, newTitle));
     }
 
     var aggregate = ptm.aggregateTransactions("Edit Item Title", txns);
     ptm.doTransaction(aggregate);
   },
 
   onDescriptionFieldBlur: function EIO_onDescriptionFieldBlur() {
     var description = this._element("descriptionField").value;
@@ -1116,40 +954,31 @@ var gEditItemOverlay = {
         }
       }
 
       return;
     }
 
     switch (aProperty) {
     case "title":
-      if (PlacesUtils.annotations.itemHasAnnotation(this._itemId,
-                                                    STATIC_TITLE_ANNO))
-        return;  // onContentLoaded updates microsummary-items
-
-      var userEnteredNameField = this._element("userEnteredName");
-      if (userEnteredNameField.value != aValue) {
-        userEnteredNameField.value = aValue;
-        var namePicker = this._element("namePicker");
-        if (namePicker.selectedItem == userEnteredNameField) {
-          namePicker.label = aValue;
-
-          // clear undo stack
-          namePicker.editor.transactionManager.clear();
-        }
+      var namePicker = this._element("namePicker");
+      if (namePicker.value != aValue) {
+        namePicker.value = aValue;
+        // clear undo stack
+        namePicker.editor.transactionManager.clear();
       }
       break;
     case "uri":
       var locationField = this._element("locationField");
       if (locationField.value != aValue) {
         this._uri = Cc["@mozilla.org/network/io-service;1"].
                     getService(Ci.nsIIOService).
                     newURI(aValue, null, null);
         this._initTextField("locationField", this._uri.spec);
-        this._initNamePicker(); // for microsummaries
+        this._initNamePicker();
         this._initTextField("tagsField",
                              PlacesUtils.tagging
                                         .getTagsForURI(this._uri).join(", "),
                             false);
         this._rebuildTagsSelectorList();
       }
       break;
     case "keyword":
--- a/browser/components/places/content/editBookmarkOverlay.xul
+++ b/browser/components/places/content/editBookmarkOverlay.xul
@@ -60,32 +60,19 @@
       </columns>
       <rows id="editBMPanel_rows">
         <row align="center" id="editBMPanel_nameRow">
           <label value="&editBookmarkOverlay.name.label;"
                  class="editBMPanel_rowLabel"
                  accesskey="&editBookmarkOverlay.name.accesskey;"
                  control="editBMPanel_namePicker"
                  observes="paneElementsBroadcaster"/>
-          <menulist id="editBMPanel_namePicker"
-                    flex="1"
-                    editable="true"
-                    droppable="false"
-                    oninput="gEditItemOverlay.onNamePickerInput();"
-                    onblur="gEditItemOverlay.onNamePickerChange();"
-                    oncommand="gEditItemOverlay.onNamePickerChange();"
-                    observes="paneElementsBroadcaster">
-            <menupopup>
-              <menuitem id="editBMPanel_userEnteredName"/>
-              <menuitem disabled="true">
-                <menuseparator flex="1"/>
-                <label value="&editBookmarkOverlay.liveTitlesSeparator.label;"/>
-              </menuitem>
-            </menupopup>
-          </menulist>
+          <textbox id="editBMPanel_namePicker"
+                   onblur="gEditItemOverlay.onNamePickerChange();"
+                   observes="paneElementsBroadcaster"/>
         </row>
 
         <row align="center" id="editBMPanel_locationRow">
           <label value="&editBookmarkOverlay.location.label;"
                  class="editBMPanel_rowLabel"
                  accesskey="&editBookmarkOverlay.location.accesskey;"
                  control="editBMPanel_locationField"
                  observes="paneElementsBroadcaster"/>
--- a/browser/components/places/content/placesOverlay.xul
+++ b/browser/components/places/content/placesOverlay.xul
@@ -96,18 +96,16 @@
              oncommand="goDoPlacesCommand('placesCmd_new:separator');"/>
     <command id="placesCmd_show:info" 
              oncommand="goDoPlacesCommand('placesCmd_show:info');"/>
     <command id="placesCmd_rename"
              oncommand="goDoPlacesCommand('placesCmd_show:info');"
              observes="placesCmd_show:info"/>
     <command id="placesCmd_reload"
              oncommand="goDoPlacesCommand('placesCmd_reload');"/>
-    <command id="placesCmd_reloadMicrosummary"
-             oncommand="goDoPlacesCommand('placesCmd_reloadMicrosummary');"/>
     <command id="placesCmd_sortBy:name"
              oncommand="goDoPlacesCommand('placesCmd_sortBy:name');"/>
     <command id="placesCmd_moveBookmarks"
              oncommand="goDoPlacesCommand('placesCmd_moveBookmarks');"/>
     <command id="placesCmd_deleteDataHost"
              oncommand="goDoPlacesCommand('placesCmd_deleteDataHost');"/>
     <command id="placesCmd_createBookmark"
              oncommand="goDoPlacesCommand('placesCmd_createBookmark');"/>
@@ -234,22 +232,16 @@
               forcehideselection="bookmark"/>
     <menuseparator id="placesContext_deleteSeparator"/>
     <menuitem id="placesContext_reload"
               command="placesCmd_reload"
               label="&cmd.reloadLivebookmark.label;"
               accesskey="&cmd.reloadLivebookmark.accesskey;"
               closemenu="single"
               selection="livemark/feedURI"/>
-    <menuitem id="placesContext_reloadMicrosummary"
-              command="placesCmd_reloadMicrosummary"
-              label="&cmd.reloadMicrosummary.label;"
-              accesskey="&cmd.reloadMicrosummary.accesskey;"
-              closemenu="single"
-              selection="microsummary"/>
     <menuitem id="placesContext_sortBy:name"
               command="placesCmd_sortBy:name"
               label="&cmd.sortby_name.label;"
               accesskey="&cmd.context_sortby_name.accesskey;"
               closemenu="single"
               selection="folder"/>
     <menuseparator id="placesContext_sortSeparator"/>
     <menuitem id="placesContext_show:info"
--- a/browser/components/places/src/PlacesUIUtils.jsm
+++ b/browser/components/places/src/PlacesUIUtils.jsm
@@ -1319,19 +1319,16 @@ XPCOMUtils.defineLazyGetter(PlacesUIUtil
       new PlacesEditBookmarkPostDataTransaction(aItemId, aPostData),
 
     editLivemarkSiteURI: function(aLivemarkId, aSiteURI)
       new PlacesEditLivemarkSiteURITransaction(aLivemarkId, aSiteURI),
 
     editLivemarkFeedURI: function(aLivemarkId, aFeedURI)
       new PlacesEditLivemarkFeedURITransaction(aLivemarkId, aFeedURI),
 
-    editBookmarkMicrosummary: function(aItemId, aNewMicrosummary)
-      new PlacesEditBookmarkMicrosummaryTransaction(aItemId, aNewMicrosummary),
-
     editItemDateAdded: function(aItemId, aNewDateAdded)
       new PlacesEditItemDateAddedTransaction(aItemId, aNewDateAdded),
 
     editItemLastModified: function(aItemId, aNewLastModified)
       new PlacesEditItemLastModifiedTransaction(aItemId, aNewLastModified),
 
     sortFolderByName: function(aFolderId)
       new PlacesSortFolderByNameTransaction(aFolderId),
--- a/browser/components/places/tests/browser/browser_bookmarksProperties.js
+++ b/browser/components/places/tests/browser/browser_bookmarksProperties.js
@@ -308,28 +308,26 @@ gTests.push({
     tree.selectItems([itemId]);
     this.selectedNode = tree.selectedNode;
   },
 
   run: function() {
     this._itemId = this.window.gEditItemOverlay._itemId;
     // Change folder name
     var namePicker = this.window.document.getElementById("editBMPanel_namePicker");
-    var userEnteredName = this.window.document.getElementById("editBMPanel_userEnteredName");
     var self = this;
 
     this.window.addEventListener("unload", function(event) {
       self.window.removeEventListener("unload", arguments.callee, false);
       executeSoon(function () {
         self.finish();
       });
     }, false);
 
     namePicker.value = "n";
-    userEnteredName.label = "n";
     info("About to focus the namePicker field");
     namePicker.focus();
     EventUtils.synthesizeKey("VK_RETURN", {}, this.window);
   },
 
   finish: function() {
     // Window is already closed.
     toggleSidebar(this.sidebar, false);
--- a/browser/components/places/tests/unit/bookmarks.preplaces.html
+++ b/browser/components/places/tests/unit/bookmarks.preplaces.html
@@ -14,20 +14,16 @@
         <DT><A HREF="http://en-US.www.mozilla.com/en-US/firefox/community/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$42iCK1">Get Involved</A>
         <DT><A HREF="http://en-US.www.mozilla.com/en-US/about/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==" ID="rdf:#$52iCK1">About Us</A>
     </DL><p>
     <DT><H3 ADD_DATE="1177541020" LAST_MODIFIED="1177541050" ID="rdf:#$74Gpx2">test</H3>
 <DD>folder test comment
     <DL><p>
         <DT><A HREF="http://test/post" ADD_DATE="1177375336" LAST_MODIFIED="1177375423" SHORTCUTURL="test" WEB_PANEL="true" POST_DATA="hidden1%3Dbar&amp;text1%3D%25s" LAST_CHARSET="ISO-8859-1" ID="rdf:#$pYFe7">test post keyword</A>
 <DD>item description
-<!-- XXX Bug 380468
-        <DT><A HREF="http://test/micsum" ADD_DATE="1177375377" LAST_MODIFIED="1177541023" LAST_CHARSET="ISO-8859-1" MICSUM_GEN_URI="urn:source:http://dietrich.ganx4.com/mozilla/test-microsummary.xml" MICSUM_EXPIRATION="1177542823620" GENERATED_TITLE="id:462fd9a2e5b66" ID="rdf:#$qYFe7">test microsummary</A>
-<DD>test microsummary
--->
     </DL>
     <DT><H3 UNFILED_BOOKMARKS_FOLDER="true">Unsorted Bookmarks</H3>
     <DL><p>
         <DT><A HREF="http://example.tld">Example.tld</A>
     </DL><p>
     <DT><H3 LAST_MODIFIED="1177541040" PERSONAL_TOOLBAR_FOLDER="true" ID="rdf:#$FvPhC3">Bookmarks Toolbar Folder</H3>
 <DD>Add bookmarks to this folder to see them displayed on the Bookmarks Toolbar
     <DL><p>
--- a/browser/components/places/tests/unit/test_384370.js
+++ b/browser/components/places/tests/unit/test_384370.js
@@ -218,34 +218,16 @@ function testCanonicalBookmarks() {
 
   // description 
   do_check_true(PlacesUtils.annotations.itemHasAnnotation(testBookmark1.itemId,
                                                           DESCRIPTION_ANNO));
   do_check_eq("item description",
               PlacesUtils.annotations.getItemAnnotation(testBookmark1.itemId,
                                                         DESCRIPTION_ANNO));
 
-  /*
-  // XXX Bug 380468
-  // test bookmark 2
-  var testBookmark2 = testFolder.getChild(1);
-  // url
-  do_check_eq("http://test/micsum", testBookmark2.uri);
-  // title
-  do_check_eq("test microsummary", testBookmark2.title);
-  // check that it's a microsummary
-  var micsum = mssvc.getMicrosummary(testBookmark2.itemId);
-  if (!micsum)
-    do_throw("Could not import microsummary");
-  // check generator uri
-  var generator = micsum.generator;
-  do_check_eq("urn:source:http://dietrich.ganx4.com/mozilla/test-microsummary.xml", generator.uri.spec);
-  // expiration and generated title can change, so don't test them
-  */
-
   // clean up
   testFolder.containerOpen = false;
   rootNode.containerOpen = false;
 }
 
 function testToolbarFolder() {
   var query = PlacesUtils.history.getNewQuery();
   query.setFolders([PlacesUtils.bookmarks.toolbarFolder], 1);
--- a/browser/components/places/tests/unit/test_bookmarks_html.js
+++ b/browser/components/places/tests/unit/test_bookmarks_html.js
@@ -66,23 +66,16 @@ try {
 
 // Get favicon service
 try {
   var iconsvc = Cc["@mozilla.org/browser/favicon-service;1"].getService(Ci.nsIFaviconService);
 } catch(ex) {
   do_throw("Could not get favicon service\n");
 } 
 
-// Get microsummary service
-try {
-  var mssvc = Cc["@mozilla.org/microsummary/service;1"].getService(Ci.nsIMicrosummaryService);
-} catch(ex) {
-  do_throw("Could not get microsummary service\n");
-}
-
 // Get io service
 try {
   var iosvc = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
 } catch (ex) {
   do_throw("Could not get io service\n");
 }
 
 const DESCRIPTION_ANNO = "bookmarkProperties/description";
@@ -261,33 +254,16 @@ function testCanonicalBookmarks(aFolder)
 
   // description
   do_check_true(annosvc.itemHasAnnotation(testBookmark1.itemId,
                                           DESCRIPTION_ANNO));
   do_check_eq("item description",
               annosvc.getItemAnnotation(testBookmark1.itemId,
                                         DESCRIPTION_ANNO));
 
-  /*
-  // XXX Bug 380468
-  // test bookmark 2
-  var testBookmark2 = testFolder.getChild(1);
-  // url
-  do_check_eq("http://test/micsum", testBookmark2.uri);
-  // title
-  do_check_eq("test microsummary", testBookmark2.title);
-  // check that it's a microsummary
-  var micsum = mssvc.getMicrosummary(testBookmark2.itemId);
-  if (!micsum)
-    do_throw("Could not import microsummary");
-  // check generator uri
-  var generator = micsum.generator;
-  do_check_eq("urn:source:http://dietrich.ganx4.com/mozilla/test-microsummary.xml", generator.uri.spec);
-  // expiration and generated title can change, so don't test them
-  */
   // clean up
   testFolder.containerOpen = false;
   rootNode.containerOpen = false;
 
   query.setFolders([bmsvc.toolbarFolder], 1);
   result = histsvc.executeQuery(query, histsvc.getNewQueryOptions());
   // bookmarks toolbar
   var toolbar = result.root;
--- a/browser/components/places/tests/unit/test_placesTxn.js
+++ b/browser/components/places/tests/unit/test_placesTxn.js
@@ -35,17 +35,16 @@
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 var bmsvc = PlacesUtils.bookmarks;
 var lmsvc = PlacesUtils.livemarks;
-var mss = PlacesUtils.microsummaries;
 var ptSvc = PlacesUIUtils.ptm;
 var tagssvc = PlacesUtils.tagging;
 var annosvc = PlacesUtils.annotations;
 
 // create and add bookmarks observer
 var observer = {
   onBeginUpdateBatch: function() {
     this._beginUpdateBatch = true;
@@ -575,32 +574,16 @@ function run_test() {
   do_check_eq(2, bmsvc.getItemIndex(b1));
   do_check_eq(1, bmsvc.getItemIndex(b2));
   do_check_eq(0, bmsvc.getItemIndex(b3));
   txn17.undoTransaction();
   do_check_eq(0, bmsvc.getItemIndex(b1));
   do_check_eq(1, bmsvc.getItemIndex(b2));
   do_check_eq(2, bmsvc.getItemIndex(b3));
 
-  // editBookmarkMicrosummary
-  var tmpMs = mss.createMicrosummary(uri("http://testmicro.com"), 
-                                     uri("http://dietrich.ganx4.com/mozilla/test-microsummary.xml"));
-  ptSvc.doTransaction(
-  ptSvc.createItem(uri("http://dietrich.ganx4.com/mozilla/test-microsummary-content.php"),
-                   root, -1, "micro test", null, null, null));
-  var bId = (bmsvc.getBookmarkIdsForURI(uri("http://dietrich.ganx4.com/mozilla/test-microsummary-content.php")))[0];
-  do_check_true(!mss.hasMicrosummary(bId));
-  var txn18 = ptSvc.editBookmarkMicrosummary(bId, tmpMs);
-  txn18.doTransaction();
-  do_check_eq(observer._itemChangedId, bId);
-  do_check_true(mss.hasMicrosummary(bId));
-  txn18.undoTransaction();
-  do_check_eq(observer._itemChangedId, bId);
-  do_check_true(!mss.hasMicrosummary(bId));
-
   // Testing edit Post Data
   const POST_DATA_ANNO = "bookmarkProperties/POSTData";
   var postData = "foo";
   var postDataURI = uri("http://foo.com");
   ptSvc.doTransaction(
     ptSvc.createItem(postDataURI, root, -1, "postdata test", null, null, null));
   var postDataId = (bmsvc.getBookmarkIdsForURI(postDataURI))[0];
   var postDataTxn = ptSvc.editBookmarkPostData(postDataId, postData);
--- a/browser/locales/en-US/chrome/browser/places/editBookmarkOverlay.dtd
+++ b/browser/locales/en-US/chrome/browser/places/editBookmarkOverlay.dtd
@@ -1,17 +1,16 @@
 <!ENTITY editBookmarkOverlay.name.label                      "Name:">
 <!ENTITY editBookmarkOverlay.name.accesskey                  "N">
 <!ENTITY editBookmarkOverlay.location.label                  "Location:">
 <!ENTITY editBookmarkOverlay.location.accesskey              "L">
 <!ENTITY editBookmarkOverlay.feedLocation.label              "Feed Location:">
 <!ENTITY editBookmarkOverlay.feedLocation.accesskey          "F">
 <!ENTITY editBookmarkOverlay.siteLocation.label              "Site Location:">
 <!ENTITY editBookmarkOverlay.siteLocation.accesskey          "S">
-<!ENTITY editBookmarkOverlay.liveTitlesSeparator.label       "Live Titles">
 <!ENTITY editBookmarkOverlay.folder.label                    "Folder:">
 <!ENTITY editBookmarkOverlay.foldersExpanderDown.tooltip     "Show all the bookmarks folders">
 <!ENTITY editBookmarkOverlay.expanderUp.tooltip              "Hide">
 <!ENTITY editBookmarkOverlay.tags.label                      "Tags:">
 <!ENTITY editBookmarkOverlay.tags.accesskey                  "T">
 <!ENTITY editBookmarkOverlay.tagsEmptyDesc.label             "Separate tags with commas">
 <!ENTITY editBookmarkOverlay.description.label               "Description:">
 <!ENTITY editBookmarkOverlay.description.accesskey           "D">
--- a/browser/locales/en-US/chrome/browser/places/places.dtd
+++ b/browser/locales/en-US/chrome/browser/places/places.dtd
@@ -71,18 +71,16 @@
 <!ENTITY cmd.new_folder.label              "New Folder…">
 <!ENTITY cmd.new_folder.accesskey          "o">
 <!ENTITY cmd.context_new_folder.accesskey  "F">
 <!ENTITY cmd.new_separator.label           "New Separator">
 <!ENTITY cmd.new_separator.accesskey       "S">
 
 <!ENTITY cmd.reloadLivebookmark.label      "Reload Live Bookmark">
 <!ENTITY cmd.reloadLivebookmark.accesskey  "R">
-<!ENTITY cmd.reloadMicrosummary.label      "Reload Live Title">
-<!ENTITY cmd.reloadMicrosummary.accesskey  "R">
 
 <!ENTITY cmd.moveBookmarks.label                  "Move…">
 <!ENTITY cmd.moveBookmarks.accesskey              "M">
 
 <!ENTITY col.name.label          "Name">
 <!ENTITY col.tags.label          "Tags">
 <!ENTITY col.url.label           "Location">
 <!ENTITY col.lastvisit.label     "Visit Date">
--- a/browser/themes/gnomestripe/browser/browser.css
+++ b/browser/themes/gnomestripe/browser/browser.css
@@ -400,17 +400,16 @@ menuitem:not([type]):not(.menuitem-toolt
 
 #menu_stop[disabled],
 #context-stop[disabled] {
   list-style-image: url("moz-icon://stock/gtk-stop?size=menu&state=disabled");
 }
 
 #menu_reload,
 #placesContext_reload,
-#placesContext_reloadMicrosummary,
 #context-reload,
 #context-reloadframe {
   list-style-image: url("moz-icon://stock/gtk-refresh?size=menu");
 }
 
 #menu_reload[disabled],
 #context-reload[disabled] {
   list-style-image: url("moz-icon://stock/gtk-refresh?size=menu&state=disabled");
--- a/browser/themes/gnomestripe/browser/places/editBookmarkOverlay.css
+++ b/browser/themes/gnomestripe/browser/places/editBookmarkOverlay.css
@@ -72,46 +72,16 @@
   min-width: 23em;
 }
 
 #editBMPanel_folderTree {
   margin-top: 2px;
   margin-bottom: 2px;
 }
 
-/**** name picker ****/
-
-/* Make the microsummary picker look like a regular textbox instead of 
- * an editable menulist when no microsummaries are available.
- */
-#editBMPanel_namePicker[droppable="false"] {
-  /* These rules come from the textbox element in textbox.css. */
-  -moz-appearance: textfield; /* Normal editable menulists set this to "none". */
-  cursor: text;
-  border: 2px solid;
-  -moz-border-top-colors: ThreeDShadow ThreeDDarkShadow;
-  -moz-border-right-colors: ThreeDHighlight ThreeDLightShadow;
-  -moz-border-bottom-colors: ThreeDHighlight ThreeDLightShadow;
-  -moz-border-left-colors: ThreeDShadow ThreeDDarkShadow;
-  padding: 2px 2px 3px;
-  -moz-padding-start: 4px;
-  background-color: -moz-Field;
-  color: -moz-FieldText;
-}
-
-#editBMPanel_namePicker[droppable="false"] > .menulist-editable-box {
-  -moz-appearance: none; /* Normal editable menulists set this to "menulist-textfield". */
-  padding: 0;
-}
-
-#editBMPanel_namePicker[droppable="false"] > .menulist-dropmarker,
-#editBMPanel_namePicker[droppable="false"] > menupopup {
-  display: none;
-}
-
 /* Hide the value column of the tag autocomplete popup
  * leaving only the comment column visible. This is
  * so that only the tag being edited is shown in the
  * popup.
  */
 #editBMPanel_tagsField #treecolAutoCompleteValue {
   visibility: collapse;
 }
--- a/browser/themes/gnomestripe/browser/places/places.css
+++ b/browser/themes/gnomestripe/browser/places/places.css
@@ -193,12 +193,11 @@ menuitem[command="placesCmd_open:tab"] {
   -moz-image-region: rect(0px 64px 16px 48px);
 }
 
 #placesContext_show\:info,
 menuitem[command="placesCmd_show:info"] {
   list-style-image: url("moz-icon://stock/gtk-properties?size=menu");
 }
 
-#placesContext_reload,
-#placesContext_reloadMicrosummary {
+#placesContext_reload {
   list-style-image: url("moz-icon://stock/gtk-refresh?size=menu");
 }
--- a/browser/themes/pinstripe/browser/browser.css
+++ b/browser/themes/pinstripe/browser/browser.css
@@ -1362,51 +1362,39 @@ richlistitem[type~="action"][actiontype=
 #editBookmarkPanel .expander-up {
   list-style-image: url("chrome://browser/skin/hud-style-expander-open.png");
 }
 
 #editBookmarkPanel .expander-down {
   list-style-image: url("chrome://browser/skin/hud-style-expander-closed.png");
 }
 
-/**** name picker ****/
-
-#editBMPanel_tagsField,
-#editBMPanel_namePicker[droppable="false"] > .menulist-editable-box {
+#editBMPanel_tagsField {
   -moz-appearance: none !important;
   -moz-padding-start: 3px !important;
   margin: 2px !important;
   border: 1px solid rgba(0,0,0,.5) !important;
   box-shadow: inset 0 1px 0 rgba(0,0,0,.3);
   background-color: #666 !important;
   background-clip: padding-box;
   background-origin: padding-box;
   color: #fff !important;
   min-height: 20px;
 }
 
-#editBMPanel_namePicker[droppable="false"] > .menulist-editable-box > html|*.menulist-editable-input {
-  color: inherit;
-}
-
 #editBMPanel_tagsField > .autocomplete-textbox-container > .textbox-input-box > html|*.textbox-input:-moz-placeholder {
   color: #bbb;
 }
 
-#editBMPanel_tagsField[focused="true"],
-#editBMPanel_namePicker[droppable="false"][focused="true"] > .menulist-editable-box {
+#editBMPanel_tagsField[focused="true"] {
   @hudButtonFocused@
   background-color: #eee !important;
   color: #000 !important;
 }
 
-#editBMPanel_namePicker[droppable="false"][disabled="true"] > .menulist-editable-box {
-  color: #fff !important;
-}
-
 .editBMPanel_rowLabel {
   text-align: end;
 }
 
 /* ----- SIDEBAR ELEMENTS ----- */
 
 #sidebar,
 sidebarheader {
--- a/browser/themes/pinstripe/browser/places/editBookmarkOverlay.css
+++ b/browser/themes/pinstripe/browser/places/editBookmarkOverlay.css
@@ -87,80 +87,16 @@
 #editBookmarkPanelContent {
   min-width: 23em;
 }
 
 #editBMPanel_folderTree {
   margin: 6px 4px 0 4px;
 }
 
-/**** name picker ****/
-
-/* Make the microsummary picker look like a regular textbox instead of 
- * an editable menulist when no microsummaries are available.
- */
-#editBMPanel_namePicker[droppable="false"] {
-  -moz-appearance: none;
-  margin: 0px;
-  border: none;
-  padding: 0px;
-  height: auto !important;
-}
-
-#editBMPanel_namePicker[droppable="false"] > .menulist-dropmarker {
-  display: none;
-}
-
-#editBMPanel_namePicker[droppable="false"] > .menulist-editable-box {
-  /* These rules are duplicates of the rules for the textbox element
-   * in textbox.css and should track changes in that file.
-   */
-  -moz-appearance: textfield;
-  cursor: text;
-  margin: 4px 4px;
-  border: 3px solid;
-  -moz-border-top-colors: transparent #888888 #000000;
-  -moz-border-right-colors: transparent #FFFFFF #000000;
-  -moz-border-bottom-colors: transparent #FFFFFF #000000;
-  -moz-border-left-colors: transparent #888888 #000000;
-  border-top-right-radius: 2px;
-  border-bottom-left-radius: 2px;
-  padding: 0;
-  background-color: -moz-Field;
-  color: -moz-FieldText;
-}
-
-#editBMPanel_namePicker[droppable="false"][disabled="true"] > .menulist-editable-box {
-  cursor: default;
-  -moz-border-top-colors: transparent ThreeDShadow -moz-Dialog;
-  -moz-border-right-colors: transparent ThreeDShadow -moz-Dialog;
-  -moz-border-bottom-colors: transparent ThreeDShadow -moz-Dialog;
-  -moz-border-left-colors: transparent ThreeDShadow -moz-Dialog;
-  color: GrayText;
-}
-
-#editBMPanel_namePicker[droppable="false"] > .menulist-editable-box > html|*.textbox-input {
-  margin: 0px !important;
-  border: none !important;
-  padding: 0px !important;
-  background-color: inherit;
-  color: inherit;
-  font: inherit;
-}
-
-/* Hide the drop marker and the popup. */
-
-#editBMPanel_namePicker[droppable="false"] > .menulist-dropmarker {
-  display: none;
-}
-
-#editBMPanel_namePicker[droppable="false"] > menupopup {
-  display: none;
-}
-
 /* Hide the value column of the tag autocomplete popup
  * leaving only the comment column visible. This is
  * so that only the tag being edited is shown in the
  * popup.
  */
 #editBMPanel_tagsField #treecolAutoCompleteValue {
   visibility: collapse;
 }
--- a/browser/themes/winstripe/browser/places/editBookmarkOverlay.css
+++ b/browser/themes/winstripe/browser/places/editBookmarkOverlay.css
@@ -77,45 +77,16 @@
   min-width: 23em;
 }
 
 #editBMPanel_folderTree {
   margin-top: 2px;
   margin-bottom: 2px;
 }
 
-/**** name picker ****/
-
-/* Make the microsummary picker look like a regular textbox instead of 
- * an editable menulist when no microsummaries are available.
- */
-#editBMPanel_namePicker[droppable="false"] {
-  /* These rules come from the textbox element in textbox.css. */
-  -moz-appearance: textfield; /* Normal editable menulists set this to "menulist". */
-  cursor: text;
-  border: 2px solid;
-  -moz-border-top-colors: ThreeDShadow ThreeDDarkShadow;
-  -moz-border-right-colors: ThreeDHighlight ThreeDLightShadow;
-  -moz-border-bottom-colors: ThreeDHighlight ThreeDLightShadow;
-  -moz-border-left-colors: ThreeDShadow ThreeDDarkShadow;
-  padding: 2px 2px 3px;
-  -moz-padding-start: 4px;
-  background-color: -moz-Field;
-  color: -moz-FieldText;
-}
-
-#editBMPanel_namePicker[droppable="false"] > .menulist-editable-box {
-  padding: 0;
-}
-
-#editBMPanel_namePicker[droppable="false"] > .menulist-dropmarker,
-#editBMPanel_namePicker[droppable="false"] > menupopup {
-  display: none;
-}
-
 /* Hide the value column of the tag autocomplete popup
  * leaving only the comment column visible. This is
  * so that only the tag being edited is shown in the
  * popup.
  */
 #editBMPanel_tagsField #treecolAutoCompleteValue {
   visibility: collapse;
 }
--- a/toolkit/components/places/Makefile.in
+++ b/toolkit/components/places/Makefile.in
@@ -59,17 +59,16 @@ IS_COMPONENT = 1
 XPIDLSRCS += \
   mozIAsyncHistory.idl \
   mozIPlacesAutoComplete.idl \
   nsIAnnotationService.idl \
   nsIBrowserHistory.idl \
   nsIDynamicContainer.idl \
   nsIFaviconService.idl \
   nsILivemarkService.idl \
-  nsIMicrosummaryService.idl \
   nsINavBookmarksService.idl \
   nsIPlacesImportExportService.idl \
   nsITaggingService.idl  \
   nsPIPlacesDatabase.idl \
   nsPIPlacesHistoryListenersNotifier.idl \
   $(NULL)
 
 EXPORTS_NAMESPACES = mozilla/places
@@ -115,17 +114,16 @@ LOCAL_INCLUDES += -I$(srcdir)/../build
 # This is the default value.  Must be in sync with the one defined in SQLite.
 DEFINES += -DSQLITE_DEFAULT_PAGE_SIZE=32768
 
 EXTRA_COMPONENTS = \
   toolkitplaces.manifest \
   nsLivemarkService.js \
   nsTaggingService.js \
   nsPlacesExpiration.js \
-  nsMicrosummaryService.js \
   PlacesCategoriesStarter.js \
   $(NULL)
 
 ifdef MOZ_XUL
 EXTRA_COMPONENTS += nsPlacesAutoComplete.js nsPlacesAutoComplete.manifest
 endif
 
 EXTRA_JS_MODULES = \
--- a/toolkit/components/places/PlacesUtils.jsm
+++ b/toolkit/components/places/PlacesUtils.jsm
@@ -52,17 +52,16 @@ const EXPORTED_SYMBOLS = [
 , "PlacesEditItemTitleTransaction"
 , "PlacesEditBookmarkURITransaction"
 , "PlacesSetItemAnnotationTransaction"
 , "PlacesSetPageAnnotationTransaction"
 , "PlacesEditBookmarkKeywordTransaction"
 , "PlacesEditBookmarkPostDataTransaction"
 , "PlacesEditLivemarkSiteURITransaction"
 , "PlacesEditLivemarkFeedURITransaction"
-, "PlacesEditBookmarkMicrosummaryTransaction"
 , "PlacesEditItemDateAddedTransaction"
 , "PlacesEditItemLastModifiedTransaction"
 , "PlacesSortFolderByNameTransaction"
 , "PlacesTagURITransaction"
 , "PlacesUntagURITransaction"
 ];
 
 const Ci = Components.interfaces;
@@ -2169,20 +2168,16 @@ XPCOMUtils.defineLazyServiceGetter(Place
 XPCOMUtils.defineLazyServiceGetter(PlacesUtils, "tagging",
                                    "@mozilla.org/browser/tagging-service;1",
                                    "nsITaggingService");
 
 XPCOMUtils.defineLazyServiceGetter(PlacesUtils, "livemarks",
                                    "@mozilla.org/browser/livemark-service;2",
                                    "nsILivemarkService");
 
-XPCOMUtils.defineLazyServiceGetter(PlacesUtils, "microsummaries",
-                                   "@mozilla.org/microsummary/service;1",
-                                   "nsIMicrosummaryService");
-
 XPCOMUtils.defineLazyGetter(PlacesUtils, "transactionManager", function() {
   let tm = Cc["@mozilla.org/transactionmanager;1"].
            getService(Ci.nsITransactionManager);
   tm.AddListener(PlacesUtils);
   this.registerShutdownFunction(function () {
     // Clear all references to local transactions in the transaction manager,
     // this prevents from leaking it.
     this.transactionManager.RemoveListener(this);
@@ -3118,57 +3113,16 @@ PlacesEditLivemarkFeedURITransaction.pro
   {
     PlacesUtils.livemarks.setFeedURI(this._folderId, this._oldURI);
     PlacesUtils.livemarks.reloadLivemarkFolder(this._folderId);
   }
 };
 
 
 /**
- * Transaction for editing a bookmark's microsummary.
- *
- * @param aBookmarkId
- *        id of the bookmark to edit
- * @param aNewMicrosummary
- *        new microsummary for the bookmark
- * @returns nsITransaction object
- */
-
-function PlacesEditBookmarkMicrosummaryTransaction(aItemId, newMicrosummary)
-{
-  this.id = aItemId;
-  this._mss = Cc["@mozilla.org/microsummary/service;1"].
-              getService(Ci.nsIMicrosummaryService);
-  this._newMicrosummary = newMicrosummary;
-  this._oldMicrosummary = null;
-}
-
-PlacesEditBookmarkMicrosummaryTransaction.prototype = {
-  __proto__: BaseTransaction.prototype,
-
-  doTransaction: function EBMTXN_doTransaction()
-  {
-    this._oldMicrosummary = this._mss.getMicrosummary(this.id);
-    if (this._newMicrosummary)
-      this._mss.setMicrosummary(this.id, this._newMicrosummary);
-    else
-      this._mss.removeMicrosummary(this.id);
-  },
-
-  undoTransaction: function EBMTXN_undoTransaction()
-  {
-    if (this._oldMicrosummary)
-      this._mss.setMicrosummary(this.id, this._oldMicrosummary);
-    else
-      this._mss.removeMicrosummary(this.id);
-  }
-};
-
-
-/**
  * Transaction for editing an item's date added property.
  *
  * @param aItemId
  *        id of the item to edit
  * @param aNewDateAdded
  *        new date added for the item 
  * @returns nsITransaction object
  */
--- a/toolkit/components/places/nsPlacesImportExportService.cpp
+++ b/toolkit/components/places/nsPlacesImportExportService.cpp
@@ -125,17 +125,16 @@ static NS_DEFINE_CID(kParserCID, NS_PARS
 #define KEY_MICSUM_GEN_URI_LOWER "micsum_gen_uri"
 #define KEY_DATE_ADDED_LOWER "add_date"
 #define KEY_LAST_MODIFIED_LOWER "last_modified"
 #define KEY_GENERATED_TITLE_LOWER "generated_title"
 
 #define LOAD_IN_SIDEBAR_ANNO NS_LITERAL_CSTRING("bookmarkProperties/loadInSidebar")
 #define DESCRIPTION_ANNO NS_LITERAL_CSTRING("bookmarkProperties/description")
 #define POST_DATA_ANNO NS_LITERAL_CSTRING("bookmarkProperties/POSTData")
-#define STATIC_TITLE_ANNO NS_LITERAL_CSTRING("bookmarks/staticTitle")
 
 #define BOOKMARKS_MENU_ICON_URI "chrome://browser/skin/places/bookmarksMenu.png"
 
 // The RESTORE_*_NSIOBSERVER_TOPIC #defines should match the constants of the
 // same names in toolkit/components/places/src/utils.js
 #define RESTORE_BEGIN_NSIOBSERVER_TOPIC "bookmarks-restore-begin"
 #define RESTORE_SUCCESS_NSIOBSERVER_TOPIC "bookmarks-restore-success"
 #define RESTORE_FAILED_NSIOBSERVER_TOPIC "bookmarks-restore-failed"
@@ -220,23 +219,16 @@ public:
   // This is cleared whenever we hit a <h3>, so that we know NOT to save this
   // with a bookmark, but to keep it until 
   nsCOMPtr<nsIURI> mPreviousLink;
 
   // contains the URL of the previous livemark, so that when the link ends,
   // and the livemark title is known, we can create it.
   nsCOMPtr<nsIURI> mPreviousFeed;
 
-  // contains the text content of the previous microsummary, so that when the
-  // link ends, we can replace the bookmark's title with it and store the user's
-  // title in the staticTitle annotation.
-  nsString mPreviousMicrosummaryText;
-
-  nsCOMPtr<nsIMicrosummary> mPreviousMicrosummary;
-
   void ConsumeHeading(nsAString* aHeading, ContainerType* aContainerType)
   {
     *aHeading = mPreviousText;
     *aContainerType = mLastContainerType;
     mPreviousText.Truncate();
   }
 
   // Contains the id of an imported, or newly created bookmark.
@@ -338,18 +330,16 @@ nsPlacesImportExportService::Init()
   mFaviconService = do_GetService(NS_FAVICONSERVICE_CONTRACTID);
   NS_ENSURE_TRUE(mFaviconService, NS_ERROR_OUT_OF_MEMORY);
   mAnnotationService = do_GetService(NS_ANNOTATIONSERVICE_CONTRACTID);
   NS_ENSURE_TRUE(mAnnotationService, NS_ERROR_OUT_OF_MEMORY);
   mBookmarksService = do_GetService(NS_NAVBOOKMARKSSERVICE_CONTRACTID);
   NS_ENSURE_TRUE(mBookmarksService, NS_ERROR_OUT_OF_MEMORY);
   mLivemarkService = do_GetService(NS_LIVEMARKSERVICE_CONTRACTID);
   NS_ENSURE_TRUE(mLivemarkService, NS_ERROR_OUT_OF_MEMORY);
-  mMicrosummaryService = do_GetService("@mozilla.org/microsummary/service;1");
-  NS_ENSURE_TRUE(mMicrosummaryService, NS_ERROR_OUT_OF_MEMORY);
   return NS_OK;
 }
 
 /**
  * The content sink stuff is based loosely on nsIHTMLContentSink.
  */
 class BookmarkContentSink : public nsIHTMLContentSink
 {
@@ -389,17 +379,16 @@ public:
   NS_IMETHOD NotifyTagObservers(nsIParserNode* aNode) { return NS_OK; }
   NS_IMETHOD_(PRBool) IsFormOnStack() { return PR_FALSE; }
 
 protected:
   nsCOMPtr<nsINavBookmarksService> mBookmarksService;
   nsCOMPtr<nsINavHistoryService> mHistoryService;
   nsCOMPtr<nsIAnnotationService> mAnnotationService;
   nsCOMPtr<nsILivemarkService> mLivemarkService;
-  nsCOMPtr<nsIMicrosummaryService> mMicrosummaryService;
 
   // If set, we will move root items to from their existing position
   // in the hierarchy, to where we find them in the bookmarks file
   // being imported. This should be set when we are loading 
   // the default places html file, and should be unset when doing
   // normal imports so that root folders will not get moved when
   // importing bookmarks.html files.
   PRBool mAllowRootChanges;
@@ -472,18 +461,16 @@ BookmarkContentSink::Init(PRBool aAllowR
   mBookmarksService = do_GetService(NS_NAVBOOKMARKSSERVICE_CONTRACTID);
   NS_ENSURE_TRUE(mBookmarksService, NS_ERROR_OUT_OF_MEMORY);
   mHistoryService = do_GetService(NS_NAVHISTORYSERVICE_CONTRACTID);
   NS_ENSURE_TRUE(mHistoryService, NS_ERROR_OUT_OF_MEMORY);
   mAnnotationService = do_GetService(NS_ANNOTATIONSERVICE_CONTRACTID);
   NS_ENSURE_TRUE(mAnnotationService, NS_ERROR_OUT_OF_MEMORY);
   mLivemarkService = do_GetService(NS_LIVEMARKSERVICE_CONTRACTID);
   NS_ENSURE_TRUE(mLivemarkService, NS_ERROR_OUT_OF_MEMORY);
-  mMicrosummaryService = do_GetService("@mozilla.org/microsummary/service;1");
-  NS_ENSURE_TRUE(mMicrosummaryService, NS_ERROR_OUT_OF_MEMORY);
 
   mAllowRootChanges = aAllowRootChanges;
   mIsImportDefaults = aIsImportDefaults;
 
   // initialize the root frame with the menu root
   PRInt64 menuRoot;
   nsresult rv;
   if (aFolder == 0) {
@@ -822,19 +809,16 @@ BookmarkContentSink::HandleLinkBegin(con
   BookmarkImportFrame& frame = CurFrame();
 
   // Make sure that the feed URIs from previous frames are emptied.
   frame.mPreviousFeed = nsnull;
   // Make sure that the bookmark id from previous frames are emptied.
   frame.mPreviousId = 0;
   // mPreviousText will hold link text, clear it.
   frame.mPreviousText.Truncate();
-  // Empty microsummary items from previous frames.
-  frame.mPreviousMicrosummary = nsnull;
-  frame.mPreviousMicrosummaryText.Truncate();
 
   // Get the attributes we care about.
   nsAutoString href;
   nsAutoString feedUrl;
   nsAutoString icon;
   nsAutoString iconUri;
   nsAutoString lastCharset;
   nsAutoString keyword;
@@ -974,29 +958,16 @@ BookmarkContentSink::HandleLinkBegin(con
 
     rv = mAnnotationService->SetItemAnnotationInt32(frame.mPreviousId,
                                                     LOAD_IN_SIDEBAR_ANNO,
                                                     1, 0,
                                                     nsIAnnotationService::EXPIRE_NEVER);
     NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "SetItemAnnotationInt32 failed");
   }
 
-  // Import microsummary.
-  if (!micsumGenURI.IsEmpty()) {
-    nsCOMPtr<nsIURI> micsumGenURIObject;
-    rv = NS_NewURI(getter_AddRefs(micsumGenURIObject), micsumGenURI);
-    if (NS_SUCCEEDED(rv)) {
-      rv = mMicrosummaryService->CreateMicrosummary(frame.mPreviousLink,
-                                                    micsumGenURIObject,
-                                                    getter_AddRefs(frame.mPreviousMicrosummary));
-      NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "CreateMicrosummary failed");
-      frame.mPreviousMicrosummaryText = generatedTitle;
-    }
-  }
-
   // Import last charset.
   if (!lastCharset.IsEmpty()) {
     rv = mHistoryService->SetCharsetForURI(frame.mPreviousLink,lastCharset);
     NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "setCharsetForURI failed");
   }
 }
 
 
@@ -1044,35 +1015,19 @@ BookmarkContentSink::HandleLinkEnd()
   }
   else if (frame.mPreviousLink) {
     // This is a common bookmark.
 #ifdef DEBUG_IMPORT
     PrintNesting();
     printf("Created bookmark '%s' %lld\n",
            NS_ConvertUTF16toUTF8(frame.mPreviousText).get(), frame.mPreviousId);
 #endif
-    if (frame.mPreviousMicrosummary) {
-      // This bookmark has a microsummary.
-      rv = mAnnotationService->SetItemAnnotationString(frame.mPreviousId,
-                                                       STATIC_TITLE_ANNO,
-                                                       frame.mPreviousText, 0,
-                                                       nsIAnnotationService::EXPIRE_NEVER);
-      NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "Could not store user's static bookmark title!");
-      rv = mBookmarksService->SetItemTitle(frame.mPreviousId,
-                                           NS_ConvertUTF16toUTF8(frame.mPreviousMicrosummaryText));
-      NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "SetItemTitle failed");
-      rv = mMicrosummaryService->SetMicrosummary(frame.mPreviousId,
-                                                frame.mPreviousMicrosummary);
-      NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "SetMicrosummary failed");
-    }
-    else {
-      rv = mBookmarksService->SetItemTitle(frame.mPreviousId,
-                                           NS_ConvertUTF16toUTF8(frame.mPreviousText));
-      NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "SetItemTitle failed");
-    }
+    rv = mBookmarksService->SetItemTitle(frame.mPreviousId,
+                                         NS_ConvertUTF16toUTF8(frame.mPreviousText));
+    NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "SetItemTitle failed");
   }
 
   // Set last modified date as the last change.
   if (frame.mPreviousId > 0 && frame.mPreviousLastModifiedDate > 0) {
     rv = mBookmarksService->SetItemLastModified(frame.mPreviousId,
                                                 frame.mPreviousLastModifiedDate);
     NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "SetItemLastModified failed");
     // Note: don't clear mPreviousLastModifiedDate, because if this item has a
@@ -1829,40 +1784,16 @@ nsPlacesImportExportService::WriteItem(n
   // item
   PRBool loadInSidebar = PR_FALSE;
   rv = mAnnotationService->ItemHasAnnotation(itemId, LOAD_IN_SIDEBAR_ANNO,
                                              &loadInSidebar);
   NS_ENSURE_SUCCESS(rv, rv);
   if (loadInSidebar)
     aOutput->Write(kWebPanelAttribute, sizeof(kWebPanelAttribute)-1, &dummy);
 
-  // microsummary
-  nsCOMPtr<nsIMicrosummary> microsummary;
-  rv = mMicrosummaryService->GetMicrosummary(itemId, getter_AddRefs(microsummary));
-  NS_ENSURE_SUCCESS(rv, rv);
-  if (microsummary) {
-    nsCOMPtr<nsIMicrosummaryGenerator> generator;
-    rv = microsummary->GetGenerator(getter_AddRefs(generator));
-    NS_ENSURE_SUCCESS(rv, rv);
-    nsCOMPtr<nsIURI> genURI;
-    rv = generator->GetUri(getter_AddRefs(genURI));
-    NS_ENSURE_SUCCESS(rv, rv);
-    nsCAutoString spec;
-    rv = genURI->GetSpec(spec);
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    // write out generator URI
-    rv = aOutput->Write(kMicsumGenURIAttribute, sizeof(kMicsumGenURIAttribute)-1, &dummy);
-    NS_ENSURE_SUCCESS(rv, rv);
-    rv = WriteEscapedUrl(spec, aOutput);
-    NS_ENSURE_SUCCESS(rv, rv);
-    rv = aOutput->Write(kQuoteStr, sizeof(kQuoteStr)-1, &dummy);
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
-
   // last charset
   nsAutoString lastCharset;
   if (NS_SUCCEEDED(mHistoryService->GetCharsetForURI(pageURI, lastCharset)) &&
       !lastCharset.IsEmpty()) {
     rv = aOutput->Write(kLastCharsetAttribute, sizeof(kLastCharsetAttribute)-1, &dummy);
     NS_ENSURE_SUCCESS(rv, rv);
     char* escapedLastCharset = nsEscapeHTML(NS_ConvertUTF16toUTF8(lastCharset).get());
     rv = aOutput->Write(escapedLastCharset, strlen(escapedLastCharset), &dummy);
--- a/toolkit/components/places/nsPlacesImportExportService.h
+++ b/toolkit/components/places/nsPlacesImportExportService.h
@@ -6,17 +6,16 @@
 #include "nsCOMPtr.h"
 #include "nsILocalFile.h"
 #include "nsIOutputStream.h"
 #include "nsIFaviconService.h"
 #include "nsIAnnotationService.h"
 #include "nsILivemarkService.h"
 #include "nsINavHistoryService.h"
 #include "nsINavBookmarksService.h"
-#include "nsIMicrosummaryService.h"
 #include "nsIChannel.h"
 
 class nsPlacesImportExportService : public nsIPlacesImportExportService,
                                     public nsINavHistoryBatchCallback
 {
   public:
     NS_DECL_ISUPPORTS
     NS_DECL_NSIPLACESIMPORTEXPORTSERVICE
@@ -38,17 +37,16 @@ class nsPlacesImportExportService : publ
     virtual ~nsPlacesImportExportService();
 
   protected:
     nsCOMPtr<nsIFaviconService> mFaviconService;
     nsCOMPtr<nsIAnnotationService> mAnnotationService;
     nsCOMPtr<nsINavBookmarksService> mBookmarksService;
     nsCOMPtr<nsINavHistoryService> mHistoryService;
     nsCOMPtr<nsILivemarkService> mLivemarkService;
-    nsCOMPtr<nsIMicrosummaryService> mMicrosummaryService;
 
     nsCOMPtr<nsIChannel> mImportChannel;
     PRBool mIsImportDefaults;
 
     nsresult ImportHTMLFromFileInternal(nsILocalFile* aFile, PRBool aAllowRootChanges,
                                        PRInt64 aFolder, PRBool aIsImportDefaults);
     nsresult ImportHTMLFromURIInternal(nsIURI* aURI, PRBool aAllowRootChanges,
                                        PRInt64 aFolder, PRBool aIsImportDefaults);
@@ -62,14 +60,13 @@ class nsPlacesImportExportService : publ
     nsresult WriteDescription(PRInt64 aId, PRInt32 aType, nsIOutputStream* aOutput);
 
     inline nsresult EnsureServiceState() {
       NS_ENSURE_STATE(mHistoryService);
       NS_ENSURE_STATE(mFaviconService);
       NS_ENSURE_STATE(mAnnotationService);
       NS_ENSURE_STATE(mBookmarksService);
       NS_ENSURE_STATE(mLivemarkService);
-      NS_ENSURE_STATE(mMicrosummaryService);
       return NS_OK;
     }
 };
 
 #endif // nsPlacesImportExportService_h__
--- a/toolkit/components/places/toolkitplaces.manifest
+++ b/toolkit/components/places/toolkitplaces.manifest
@@ -8,18 +8,12 @@ contract @mozilla.org/browser/tagging-se
 component {1dcc23b0-d4cb-11dc-9ad6-479d56d89593} nsTaggingService.js
 contract @mozilla.org/autocomplete/search;1?name=places-tag-autocomplete {1dcc23b0-d4cb-11dc-9ad6-479d56d89593}
 
 # nsPlacesExpiration.js
 component {705a423f-2f69-42f3-b9fe-1517e0dee56f} nsPlacesExpiration.js
 contract @mozilla.org/places/expiration;1 {705a423f-2f69-42f3-b9fe-1517e0dee56f}
 category history-observers nsPlacesExpiration @mozilla.org/places/expiration;1
 
-# nsMicrosummaryService.js
-component {460a9792-b154-4f26-a922-0f653e2c8f91} nsMicrosummaryService.js
-contract @mozilla.org/microsummary/service;1 {460a9792-b154-4f26-a922-0f653e2c8f91}
-# How often to check for generator updates, in seconds 7 * 86400 == 1 week
-category update-timer nsMicrosummaryService @mozilla.org/microsummary/service;1,getService,microsummary-generator-update-timer,browser.microsummary.generatorUpdateInterval,604800
-
 # PlacesCategoriesStarter.js
 component {803938d5-e26d-4453-bf46-ad4b26e41114} PlacesCategoriesStarter.js
 contract @mozilla.org/places/categoriesStarter;1 {803938d5-e26d-4453-bf46-ad4b26e41114}
 category idle-daily PlacesCategoriesStarter @mozilla.org/places/categoriesStarter;1