Bug 1295237 - Add 'Mobile Bookmarks' root to the bookmark menus if we have it. r?markh
MozReview-Commit-ID: 3ybnskOID1O
--- a/browser/base/content/browser-menubar.inc
+++ b/browser/base/content/browser-menubar.inc
@@ -447,16 +447,29 @@
<menupopup id="otherBookmarksFolderPopup"
#ifndef XP_MACOSX
placespopup="true"
#endif
context="placesContext"
onpopupshowing="if (!this.parentNode._placesView)
new PlacesMenu(event, 'place:folder=UNFILED_BOOKMARKS');"/>
</menu>
+ <menu id="menu_mobileBookmarks"
+ class="menu-iconic bookmark-item"
+ label="&mobileBookmarksCmd.label;"
+ hidden="true"
+ container="true">
+ <menupopup id="mobileBookmarksFolderPopup"
+#ifndef XP_MACOSX
+ placespopup="true"
+#endif
+ context="placesContext"
+ onpopupshowing="if (!this.parentNode._placesView)
+ new PlacesMenu(event, 'place:folder=MOBILE_BOOKMARKS');"/>
+ </menu>
<menuseparator id="bookmarksMenuItemsSeparator"/>
<!-- Bookmarks menu items -->
</menupopup>
</menu>
<menu id="tools-menu"
label="&toolsMenu.label;"
accesskey="&toolsMenu.accesskey;"
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -1313,16 +1313,17 @@ var BookmarkingUI = {
if (widget.overflowed) {
// Don't open a popup in the overflow popup, rather just open the Library.
event.preventDefault();
widget.node.removeAttribute("closemenu");
PlacesCommandHook.showPlacesOrganizer("BookmarksMenu");
return;
}
+ this._initMobileBookmarks(document.getElementById("BMB_mobileBookmarks"));
this._initRecentBookmarks(document.getElementById("BMB_recentBookmarks"),
"subviewbutton");
if (!this._popupNeedsUpdate)
return;
this._popupNeedsUpdate = false;
let popup = event.target;
@@ -1351,16 +1352,38 @@ var BookmarkingUI = {
footer: "panel-subview-footer"
},
insertionPoint: ".panel-subview-footer"
});
},
RECENTLY_BOOKMARKED_PREF: "browser.bookmarks.showRecentlyBookmarked",
+ // Set by sync after syncing bookmarks successfully once.
+ MOBILE_BOOKMARKS_PREF: "browser.bookmarks.showMobileBookmarks",
+
+ _shouldShowMobileBookmarks() {
+ try {
+ return Services.prefs.getBoolPref(this.MOBILE_BOOKMARKS_PREF);
+ } catch (e) {}
+ // No pref set (or invalid pref set), look for a mobile bookmarks left pane query.
+ const organizerQueryAnno = "PlacesOrganizer/OrganizerQuery";
+ const mobileBookmarksAnno = "MobileBookmarks";
+ let shouldShow = PlacesUtils.annotations.getItemsWithAnnotation(organizerQueryAnno, {}).filter(
+ id => PlacesUtils.annotations.getItemAnnotation(id, organizerQueryAnno) == mobileBookmarksAnno
+ ).length > 0;
+ // Sync will change this pref if/when it adds a mobile bookmarks query.
+ Services.prefs.setBoolPref(this.MOBILE_BOOKMARKS_PREF, shouldShow);
+ return shouldShow;
+ },
+
+ _initMobileBookmarks(mobileMenuItem) {
+ mobileMenuItem.hidden = !this._shouldShowMobileBookmarks();
+ },
+
_initRecentBookmarks(aHeaderItem, aExtraCSSClass) {
this._populateRecentBookmarks(aHeaderItem, aExtraCSSClass);
// Add observers and listeners and remove them again when the menupopup closes.
let bookmarksMenu = aHeaderItem.parentNode;
let placesContextMenu = document.getElementById("placesContext");
@@ -1676,16 +1699,17 @@ var BookmarkingUI = {
onMainMenuPopupShowing: function BUI_onMainMenuPopupShowing(event) {
// Don't handle events for submenus.
if (event.target != event.currentTarget)
return;
this._updateBookmarkPageMenuItem();
PlacesCommandHook.updateBookmarkAllTabsCommand();
+ this._initMobileBookmarks(document.getElementById("menu_mobileBookmarks"));
this._initRecentBookmarks(document.getElementById("menu_recentBookmarks"));
},
_showBookmarkedNotification: function BUI_showBookmarkedNotification() {
function getCenteringTransformForRects(rectToPosition, referenceRect) {
let topDiff = referenceRect.top - rectToPosition.top;
let leftDiff = referenceRect.left - rectToPosition.left;
let heightDiff = referenceRect.height - rectToPosition.height;
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -877,16 +877,29 @@
container="true">
<menupopup id="BMB_unsortedBookmarksPopup"
placespopup="true"
context="placesContext"
onpopupshowing="if (!this.parentNode._placesView)
new PlacesMenu(event, 'place:folder=UNFILED_BOOKMARKS',
PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
</menu>
+ <menu id="BMB_mobileBookmarks"
+ class="menu-iconic bookmark-item subviewbutton"
+ label="&bookmarksMenuButton.mobile.label;"
+ hidden="true"
+ container="true">
+ <menupopup id="BMB_mobileBookmarksPopup"
+ placespopup="true"
+ context="placesContext"
+ onpopupshowing="if (!this.parentNode._placesView)
+ new PlacesMenu(event, 'place:folder=MOBILE_BOOKMARKS',
+ PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
+ </menu>
+
<menuseparator/>
<!-- Bookmarks menu items will go here -->
<menuitem id="BMB_bookmarksShowAll"
class="subviewbutton panel-subview-footer"
label="&showAllBookmarks2.label;"
command="Browser:ShowAllBookmarks"
key="manBookmarkKb"/>
</menupopup>
--- a/browser/locales/en-US/chrome/browser/browser.dtd
+++ b/browser/locales/en-US/chrome/browser/browser.dtd
@@ -179,16 +179,17 @@ These should match what Safari and other
<!ENTITY shareVideo.accesskey "r">
<!ENTITY feedsMenu2.label "Subscribe to This Page">
<!ENTITY subscribeToPageMenupopup.label "Subscribe to This Page">
<!ENTITY subscribeToPageMenuitem.label "Subscribe to This Page…">
<!ENTITY addCurPagesCmd.label "Bookmark All Tabs…">
<!ENTITY showAllBookmarks2.label "Show All Bookmarks">
<!ENTITY recentBookmarks.label "Recently Bookmarked">
<!ENTITY otherBookmarksCmd.label "Other Bookmarks">
+<!ENTITY mobileBookmarksCmd.label "Mobile Bookmarks">
<!ENTITY bookmarksToolbarChevron.tooltip "Show more bookmarks">
<!ENTITY showRecentlyBookmarked.label "Show Recently Bookmarked">
<!ENTITY showRecentlyBookmarked.accesskey "h">
<!ENTITY hideRecentlyBookmarked.label "Hide Recently Bookmarked">
<!ENTITY hideRecentlyBookmarked.accesskey "H">
<!ENTITY backCmd.label "Back">
<!ENTITY backButton.tooltip "Go back one page">
@@ -240,16 +241,17 @@ These should match what Safari and other
<!-- Toolbar items -->
<!ENTITY homeButton.label "Home">
<!ENTITY bookmarksButton.label "Bookmarks">
<!ENTITY bookmarksCmd.commandkey "b">
<!ENTITY bookmarksMenuButton.label "Bookmarks">
<!ENTITY bookmarksMenuButton.other.label "Other Bookmarks">
+<!ENTITY bookmarksMenuButton.mobile.label "Mobile Bookmarks">
<!ENTITY viewBookmarksSidebar2.label "View Bookmarks Sidebar">
<!ENTITY viewBookmarksToolbar.label "View Bookmarks Toolbar">
<!ENTITY containersMenu.label "Containers">
<!-- LOCALIZATION NOTE (bookmarksSidebarGtkCmd.commandkey): This command
- key should not contain the letters A-F, since these are reserved
- shortcut keys on Linux. -->
--- a/browser/themes/shared/customizableui/panelUI.inc.css
+++ b/browser/themes/shared/customizableui/panelUI.inc.css
@@ -1163,17 +1163,18 @@ menuitem.panel-subview-footer@menuStateA
/* Hide bottom separator as the styled footer includes a top border serving the same purpose */
display: none;
}
/* Popups with only one item don't have a footer */
#BMB_bookmarksPopup menupopup[placespopup=true][singleitempopup=true] > hbox > .popup-internal-box > .arrowscrollbox-scrollbox > .scrollbox-innerbox,
/* These popups never have a footer */
#BMB_bookmarksToolbarPopup > hbox > .popup-internal-box > .arrowscrollbox-scrollbox > .scrollbox-innerbox,
-#BMB_unsortedBookmarksPopup > hbox > .popup-internal-box > .arrowscrollbox-scrollbox > .scrollbox-innerbox {
+#BMB_unsortedBookmarksPopup > hbox > .popup-internal-box > .arrowscrollbox-scrollbox > .scrollbox-innerbox,
+#BMB_mobileBookmarksPopup > hbox > .popup-internal-box > .arrowscrollbox-scrollbox > .scrollbox-innerbox {
/* And so they need some bottom padding: */
padding-bottom: 4px;
}
/* Disabled (empty) item is always alone and never has an icon, so fix its left padding */
#BMB_bookmarksPopup menupopup[emptyplacesresult] .bookmark-item.subviewbutton {
padding-left: 6px;
}
--- a/services/sync/modules/engines/bookmarks.js
+++ b/services/sync/modules/engines/bookmarks.js
@@ -1024,16 +1024,17 @@ BookmarksTracker.prototype = {
return;
}
this._log.trace("onItemRemoved: " + itemId);
this._upScore();
},
_ensureMobileQuery: function _ensureMobileQuery() {
+ Services.prefs.setBoolPref("browser.bookmarks.showMobileBookmarks", true);
let find = val =>
PlacesUtils.annotations.getItemsWithAnnotation(ORGANIZERQUERY_ANNO, {}).filter(
id => PlacesUtils.annotations.getItemAnnotation(id, ORGANIZERQUERY_ANNO) == val
);
// Don't continue if the Library isn't ready
let all = find(ALLBOOKMARKS_ANNO);
if (all.length == 0)