Backed out changeset b453dca73b1a (bug 801040)
authorRyan VanderMeulen <ryanvm@gmail.com>
Thu, 18 Oct 2012 21:43:20 -0400
changeset 110867 2061e996e913108a97a110612a1ea0fb4ec9843a
parent 110866 d0be33c3a18294fcc6a12455e31baad2e214fdf1
child 110868 75058222ece680a62aad4e708556aa7631e7fc32
push id93
push usernmatsakis@mozilla.com
push dateWed, 31 Oct 2012 21:26:57 +0000
bugs801040
milestone19.0a1
backs outb453dca73b1a15c7c54b428974bbd5e9aab78af4
Backed out changeset b453dca73b1a (bug 801040)
browser/base/content/browser-menubar.inc
browser/base/content/browser-social.js
browser/base/content/test/browser_social_toolbar.js
--- a/browser/base/content/browser-menubar.inc
+++ b/browser/base/content/browser-menubar.inc
@@ -477,17 +477,19 @@
     </menupopup>
   </menu>
 
             <menu id="tools-menu"
                   label="&toolsMenu.label;"
                   accesskey="&toolsMenu.accesskey;">
               <menupopup id="menu_ToolsPopup"
 #ifdef MOZ_SERVICES_SYNC
-                         onpopupshowing="gSyncUI.updateUI();"
+                         onpopupshowing="gSyncUI.updateUI(); SocialMenu.populate();"
+#else
+                         onpopupshowing="SocialMenu.populate();"
 #endif
                          >
               <menuitem id="menu_search"
                         class="show-only-for-keyboard"
                         label="&search.label;"
                         accesskey="&search.accesskey;"
                         key="key_search"
                         command="Tools:Search"/>
@@ -505,32 +507,17 @@
                         command="Tools:Addons"/>
               <menuitem id="menu_socialToggle"
                         type="checkbox"
                         autocheck="false"
                         command="Social:Toggle"/>
               <menu id="menu_socialAmbientMenu"
                     class="show-only-for-keyboard"
                     command="Social:Toggle">
-                <menupopup id="menu_socialAmbientMenuPopup">
-                  <menuseparator id="socialAmbientMenuSeparator"
-                                 hidden="true"/>
-                  <menuitem id="social-toggle-sidebar-keyboardmenuitem"
-                            type="checkbox"
-                            autocheck="false"
-                            command="Social:ToggleSidebar"
-                            label="&social.toggleSidebar.label;"
-                            accesskey="&social.toggleSidebar.accesskey;"/>
-                  <menuitem id="social-toggle-notifications-keyboardmenuitem"
-                            type="checkbox"
-                            autocheck="false"
-                            command="Social:ToggleNotifications"
-                            label="&social.toggleNotifications.label;"
-                            accesskey="&social.toggleNotifications.accesskey;"/>
-                </menupopup>
+                <menupopup id="menu_socialAmbientMenuPopup"/>
               </menu>
 #ifdef MOZ_SERVICES_SYNC
               <!-- only one of sync-setup or sync-menu will be showing at once -->
               <menuitem id="sync-setup"
                         label="&syncSetup.label;"
                         accesskey="&syncSetup.accesskey;"
                         observes="sync-setup-state"
                         oncommand="gSyncUI.openSetup()"/>
--- a/browser/base/content/browser-social.js
+++ b/browser/base/content/browser-social.js
@@ -57,28 +57,26 @@ let SocialUI = {
           SocialFlyout.unload();
         } catch (e) {
           Components.utils.reportError(e);
           throw e;
         }
         break;
       case "social:ambient-notification-changed":
         SocialToolbar.updateButton();
-        SocialMenu.populate();
+        SocialMenu.updateMenu();
         break;
       case "social:profile-changed":
         SocialToolbar.updateProfile();
         SocialShareButton.updateProfileInfo();
         SocialChatBar.update();
         break;
       case "nsPref:changed":
         SocialSidebar.updateSidebar();
         SocialToolbar.updateButton();
-        SocialMenu.populate();
-        break;
     }
   },
 
   get toggleCommand() {
     return document.getElementById("Social:Toggle");
   },
 
   // Called once Social.jsm's provider has been set
@@ -604,50 +602,42 @@ let SocialShareButton = {
     shareButton.style.backgroundImage = 'url("' + encodeURI(imageURL) + '")';
   }
 };
 
 var SocialMenu = {
   populate: function SocialMenu_populate() {
     // This menu is only accessible through keyboard navigation.
     let submenu = document.getElementById("menu_socialAmbientMenuPopup");
-    let ambientMenuItems = submenu.getElementsByClassName("ambient-menuitem");
-
-    for (let ambientMenuItem of ambientMenuItems) {
-      submenu.removeChild(ambientMenuItem);
-    }
-
+    while (submenu.hasChildNodes())
+      submenu.removeChild(submenu.firstChild);
     let provider = Social.provider;
     if (Social.active && provider) {
       let iconNames = Object.keys(provider.ambientNotificationIcons);
-      let separator = document.getElementById("socialAmbientMenuSeparator");
       for (let name of iconNames) {
         let icon = provider.ambientNotificationIcons[name];
         if (!icon.label || !icon.menuURL)
           continue;
         let menuitem = document.createElement("menuitem");
         menuitem.setAttribute("label", icon.label);
-        menuitem.classList.add("ambient-menuitem");
         menuitem.addEventListener("command", function() {
           openUILinkIn(icon.menuURL, "tab");
         }, false);
-        submenu.insertBefore(menuitem, separator);
+        submenu.appendChild(menuitem);
       }
-      separator.hidden = !iconNames.length;
     }
-    document.getElementById("menu_socialAmbientMenu").hidden = !Social.enabled;
+    document.getElementById("menu_socialAmbientMenu").hidden = !submenu.querySelector("menuitem");
   }
 };
 
 var SocialToolbar = {
   // Called once, after window load, when the Social.provider object is initialized
   init: function SocialToolbar_init() {
     this.button.setAttribute("image", Social.provider.iconURL);
     this.updateButton();
-    SocialMenu.populate();
     this.updateProfile();
     this._dynamicResizer = new DynamicResizeWatcher();
   },
 
   get button() {
     return document.getElementById("social-provider-button");
   },
 
--- a/browser/base/content/test/browser_social_toolbar.js
+++ b/browser/base/content/test/browser_social_toolbar.js
@@ -41,18 +41,17 @@ var tests = {
     }
 
     // Test that keyboard accessible menuitem doesn't exist when no ambient icons specified.
     let toolsPopup = document.getElementById("menu_ToolsPopup");
     toolsPopup.addEventListener("popupshown", function ontoolspopupshownNoAmbient() {
       toolsPopup.removeEventListener("popupshown", ontoolspopupshownNoAmbient);
       let socialToggleMore = document.getElementById("menu_socialAmbientMenu");
       ok(socialToggleMore, "Keyboard accessible social menu should exist");
-      is(socialToggleMore.querySelectorAll("menuitem").length, 2, "The minimum number of menuitems is two when there are no ambient notifications.");
-      is(socialToggleMore.hidden, false, "Menu should be visible since we show some non-ambient notifications in the menu.");
+      is(socialToggleMore.hidden, true, "Menu should be hidden when no ambient notifications.");
       toolsPopup.hidePopup();
       next();
     }, false);
     document.getElementById("menu_ToolsPopup").openPopup();
   },
   testAmbientNotifications: function(next) {
     let ambience = {
       name: "testIcon",
@@ -81,17 +80,16 @@ var tests = {
         next();
 
       // Test that keyboard accessible menuitem was added.
       let toolsPopup = document.getElementById("menu_ToolsPopup");
       toolsPopup.addEventListener("popupshown", function ontoolspopupshownAmbient() {
         toolsPopup.removeEventListener("popupshown", ontoolspopupshownAmbient);
         let socialToggleMore = document.getElementById("menu_socialAmbientMenu");
         ok(socialToggleMore, "Keyboard accessible social menu should exist");
-        is(socialToggleMore.querySelectorAll("menuitem").length, 3, "The number of menuitems is minimum plus one ambient notification menuitem.");
         is(socialToggleMore.hidden, false, "Menu is visible when ambient notifications have label & menuURL");
         let menuitem = socialToggleMore.querySelector("menuitem");
         is(menuitem.getAttribute("label"), "Test Ambient 1", "Keyboard accessible ambient menuitem should have specified label");
         toolsPopup.hidePopup();
         next();
       }, false);
       document.getElementById("menu_ToolsPopup").openPopup();
     }, "statusIcon was never found");
@@ -106,21 +104,17 @@ var tests = {
       ok(ambientIcon.collapsed, "ambient icon (" + ambientIcon.id + ") is collapsed");
     }
     
     next();
   },
   testShowSidebarMenuitemExists: function(next) {
     let toggleSidebarMenuitem = document.getElementById("social-toggle-sidebar-menuitem");
     ok(toggleSidebarMenuitem, "Toggle Sidebar menuitem exists");
-    let toggleSidebarKeyboardMenuitem = document.getElementById("social-toggle-sidebar-keyboardmenuitem");
-    ok(toggleSidebarKeyboardMenuitem, "Toggle Sidebar keyboard menuitem exists");
     next();
   },
   testShowDesktopNotificationsMenuitemExists: function(next) {
     let toggleDesktopNotificationsMenuitem = document.getElementById("social-toggle-notifications-menuitem");
     ok(toggleDesktopNotificationsMenuitem, "Toggle notifications menuitem exists");
-    let toggleDesktopNotificationsKeyboardMenuitem = document.getElementById("social-toggle-notifications-keyboardmenuitem");
-    ok(toggleDesktopNotificationsKeyboardMenuitem, "Toggle notifications keyboard menuitem exists");
     next();
   }
 }