Bug 1121681 - Add "Passwords" entry point in menu. r=margaret
authorChenxia Liu <liuche@mozilla.com>
Mon, 02 Mar 2015 14:33:28 -0800
changeset 261786 14486598bf2d80e4f5c6c55d44c03332d1518c0d
parent 261785 3eb0cc94e21739697d62610d9f9e67de01af0307
child 261787 b726620f6dc2f2c6d1de27bc75cc7e56d216a8d9
push id830
push userraliiev@mozilla.com
push dateFri, 19 Jun 2015 19:24:37 +0000
treeherdermozilla-release@932614382a68 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmargaret
bugs1121681
milestone39.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1121681 - Add "Passwords" entry point in menu. r=margaret
mobile/android/base/AboutPages.java
mobile/android/base/BrowserApp.java
mobile/android/base/locales/en-US/android_strings.dtd
mobile/android/base/preferences/GeckoPreferences.java
mobile/android/base/resources/menu-large-v11/browser_app_menu.xml
mobile/android/base/resources/menu-v11/browser_app_menu.xml
mobile/android/base/resources/menu-xlarge-v11/browser_app_menu.xml
mobile/android/base/resources/menu/browser_app_menu.xml
mobile/android/base/resources/xml/preferences_privacy.xml
mobile/android/base/strings.xml.in
mobile/android/base/tests/StringHelper.java
mobile/android/base/tests/testSettingsMenuItems.java
mobile/android/base/tests/testSystemPages.java
--- a/mobile/android/base/AboutPages.java
+++ b/mobile/android/base/AboutPages.java
@@ -14,16 +14,17 @@ public class AboutPages {
     // All of our special pages.
     public static final String ADDONS          = "about:addons";
     public static final String APPS            = "about:apps";
     public static final String CONFIG          = "about:config";
     public static final String DOWNLOADS       = "about:downloads";
     public static final String FIREFOX         = "about:firefox";
     public static final String HEALTHREPORT    = "about:healthreport";
     public static final String HOME            = "about:home";
+    public static final String PASSWORDS       = "about:passwords";
     public static final String PRIVATEBROWSING = "about:privatebrowsing";
     public static final String READER          = "about:reader";
     public static final String UPDATER         = "about:";
 
     public static final String URL_FILTER = "about:%";
 
     public static final String PANEL_PARAM = "panel";
 
--- a/mobile/android/base/BrowserApp.java
+++ b/mobile/android/base/BrowserApp.java
@@ -2934,16 +2934,17 @@ public class BrowserApp extends GeckoApp
         // (We check the pref last to save the pref read.)
         // In ICS+, it's easy to kill an app through the task switcher.
         final boolean visible = Versions.preICS ||
                                 HardwareUtils.isTelevision() ||
                                 !PrefUtils.getStringSet(GeckoSharedPrefs.forProfile(this),
                                                         ClearOnShutdownPref.PREF,
                                                         new HashSet<String>()).isEmpty();
         aMenu.findItem(R.id.quit).setVisible(visible);
+        aMenu.findItem(R.id.logins).setVisible(AppConstants.NIGHTLY_BUILD);
 
         if (tab == null || tab.getURL() == null) {
             bookmark.setEnabled(false);
             back.setEnabled(false);
             forward.setEnabled(false);
             share.setEnabled(false);
             saveAsPDF.setEnabled(false);
             findInPage.setEnabled(false);
@@ -3162,16 +3163,21 @@ public class BrowserApp extends GeckoApp
             return true;
         }
 
         if (itemId == R.id.addons) {
             Tabs.getInstance().loadUrlInTab(AboutPages.ADDONS);
             return true;
         }
 
+        if (itemId == R.id.logins) {
+            Tabs.getInstance().loadUrlInTab(AboutPages.PASSWORDS);
+            return true;
+        }
+
         if (itemId == R.id.apps) {
             Tabs.getInstance().loadUrlInTab(AboutPages.APPS);
             return true;
         }
 
         if (itemId == R.id.downloads) {
             Tabs.getInstance().loadUrlInTab(AboutPages.DOWNLOADS);
             return true;
--- a/mobile/android/base/locales/en-US/android_strings.dtd
+++ b/mobile/android/base/locales/en-US/android_strings.dtd
@@ -117,16 +117,17 @@
 <!ENTITY overlay_share_select_device "Select device">
 
 <!ENTITY pref_category_search3 "Search">
 <!ENTITY pref_category_search_summary "Customize your search providers">
 <!ENTITY pref_category_display "Display">
 <!ENTITY pref_category_display_summary "Text, title bar, full-screen browsing">
 <!ENTITY pref_category_privacy_short "Privacy">
 <!ENTITY pref_category_privacy_summary "Control passwords, cookies, tracking, data">
+<!ENTITY pref_manage_logins "Manage logins">
 <!ENTITY pref_category_vendor "&vendorShortName;">
 <!ENTITY pref_category_vendor_summary "About &brandShortName;, FAQs, data choices">
 <!ENTITY pref_category_datareporting "Data choices">
 <!ENTITY pref_learn_more "Learn more">
 <!ENTITY pref_category_installed_search_engines "Installed search engines">
 <!ENTITY pref_category_add_search_providers "Add more search providers">
 <!ENTITY pref_category_search_restore_defaults "Restore search engines">
 <!ENTITY pref_search_restore_defaults "Restore defaults">
@@ -282,16 +283,17 @@ size. -->
 <!ENTITY pref_update_autodownload_always "Always">
 
 <!-- Localization note (help_menu) : This string is used in the main menu-->
 <!ENTITY help_menu "Help">
 
 <!ENTITY quit "Quit">
 
 <!ENTITY addons "Add-ons">
+<!ENTITY logins "Logins">
 <!ENTITY downloads "Downloads">
 <!ENTITY apps "Apps">
 <!ENTITY char_encoding "Character Encoding">
 
 <!ENTITY share "Share">
 <!ENTITY share_title "Share via">
 <!ENTITY share_image_failed "Unable to share this image">
 <!ENTITY save_as_pdf "Save as PDF">
--- a/mobile/android/base/preferences/GeckoPreferences.java
+++ b/mobile/android/base/preferences/GeckoPreferences.java
@@ -110,16 +110,17 @@ OnSharedPreferenceChangeListener
 
     // These match keys in resources/xml*/preferences*.xml
     private static final String PREFS_SEARCH_RESTORE_DEFAULTS = NON_PREF_PREFIX + "search.restore_defaults";
     private static final String PREFS_DATA_REPORTING_PREFERENCES = NON_PREF_PREFIX + "datareporting.preferences";
     private static final String PREFS_TELEMETRY_ENABLED = "toolkit.telemetry.enabled";
     private static final String PREFS_CRASHREPORTER_ENABLED = "datareporting.crashreporter.submitEnabled";
     private static final String PREFS_MENU_CHAR_ENCODING = "browser.menu.showCharacterEncoding";
     private static final String PREFS_MP_ENABLED = "privacy.masterpassword.enabled";
+    private static final String PREFS_LOGIN_MANAGE = NON_PREF_PREFIX + "signon.manage";
     private static final String PREFS_UPDATER_AUTODOWNLOAD = "app.update.autodownload";
     private static final String PREFS_UPDATER_URL = "app.update.url.android";
     private static final String PREFS_GEO_REPORTING = NON_PREF_PREFIX + "app.geo.reportdata";
     private static final String PREFS_GEO_LEARN_MORE = NON_PREF_PREFIX + "geo.learn_more";
     private static final String PREFS_HEALTHREPORT_LINK = NON_PREF_PREFIX + "healthreport.link";
     private static final String PREFS_DEVTOOLS_REMOTE_ENABLED = "devtools.debugger.remote-enabled";
     private static final String PREFS_DISPLAY_REFLOW_ON_ZOOM = "browser.zoom.reflowOnZoom";
     private static final String PREFS_DISPLAY_TITLEBAR_MODE = "browser.chrome.titlebarMode";
@@ -669,16 +670,20 @@ OnSharedPreferenceChangeListener
                 setupPreferences((PreferenceGroup) pref, prefs);
             } else {
                 pref.setOnPreferenceChangeListener(this);
                 if (!AppConstants.MOZ_UPDATER &&
                     PREFS_UPDATER_AUTODOWNLOAD.equals(key)) {
                     preferences.removePreference(pref);
                     i--;
                     continue;
+                } else if (!AppConstants.NIGHTLY_BUILD &&
+                           PREFS_LOGIN_MANAGE.equals(key)) {
+                    preferences.removePreference(pref);
+                    i--;
                 } else if (AppConstants.RELEASE_BUILD &&
                            PREFS_DISPLAY_REFLOW_ON_ZOOM.equals(key)) {
                     // Remove UI for reflow on release builds.
                     preferences.removePreference(pref);
                     i--;
                     continue;
                 } else if (!AppConstants.NIGHTLY_BUILD &&
                            (PREFS_TRACKING_PROTECTION.equals(key) ||
--- a/mobile/android/base/resources/menu-large-v11/browser_app_menu.xml
+++ b/mobile/android/base/resources/menu-large-v11/browser_app_menu.xml
@@ -81,16 +81,19 @@
             <item android:id="@+id/downloads"
                   android:icon="@drawable/ic_menu_downloads"
                   android:title="@string/downloads"/>
 
             <item android:id="@+id/addons"
                   android:icon="@drawable/ic_menu_addons"
                   android:title="@string/addons"/>
 
+            <item android:id="@+id/logins"
+                  android:title="@string/logins"/>
+
             <item android:id="@+id/apps"
                   android:icon="@drawable/ic_menu_apps"
                   android:title="@string/apps"/>
 
             <item android:id="@+id/new_guest_session"
                   android:icon="@drawable/ic_menu_guest"
                   android:visible="false"
                   android:title="@string/new_guest_session"/>
--- a/mobile/android/base/resources/menu-v11/browser_app_menu.xml
+++ b/mobile/android/base/resources/menu-v11/browser_app_menu.xml
@@ -81,16 +81,19 @@
             <item android:id="@+id/downloads"
                   android:icon="@drawable/ic_menu_downloads"
                   android:title="@string/downloads"/>
 
             <item android:id="@+id/addons"
                   android:icon="@drawable/ic_menu_addons"
                   android:title="@string/addons"/>
 
+            <item android:id="@+id/logins"
+                  android:title="@string/logins"/>
+
             <item android:id="@+id/apps"
                   android:icon="@drawable/ic_menu_apps"
                   android:title="@string/apps"/>
 
             <item android:id="@+id/new_guest_session"
                   android:icon="@drawable/ic_menu_guest"
                   android:visible="false"
                   android:title="@string/new_guest_session"/>
--- a/mobile/android/base/resources/menu-xlarge-v11/browser_app_menu.xml
+++ b/mobile/android/base/resources/menu-xlarge-v11/browser_app_menu.xml
@@ -82,16 +82,19 @@
             <item android:id="@+id/downloads"
                   android:icon="@drawable/ic_menu_downloads"
                   android:title="@string/downloads"/>
 
             <item android:id="@+id/addons"
                   android:icon="@drawable/ic_menu_addons"
                   android:title="@string/addons"/>
 
+            <item android:id="@+id/logins"
+                  android:title="@string/logins"/>
+
             <item android:id="@+id/apps"
                   android:icon="@drawable/ic_menu_apps"
                   android:title="@string/apps"/>
 
             <item android:id="@+id/new_guest_session"
                   android:icon="@drawable/ic_menu_guest"
                   android:visible="false"
                   android:title="@string/new_guest_session"/>
--- a/mobile/android/base/resources/menu/browser_app_menu.xml
+++ b/mobile/android/base/resources/menu/browser_app_menu.xml
@@ -44,16 +44,19 @@
           android:checkable="true" />
 
     <item android:id="@+id/addons"
           android:title="@string/addons"/>
 
     <item android:id="@+id/downloads"
           android:title="@string/downloads"/>
 
+    <item android:id="@+id/logins"
+          android:title="@string/logins"/>
+
     <item android:id="@+id/apps"
           android:title="@string/apps"/>
 
     <item android:id="@+id/char_encoding"
           android:visible="false"
           android:title="@string/char_encoding"/>
 
     <item android:id="@+id/settings"
--- a/mobile/android/base/resources/xml/preferences_privacy.xml
+++ b/mobile/android/base/resources/xml/preferences_privacy.xml
@@ -31,16 +31,20 @@
             url="https://www.mozilla.org/firefox/dnt/" />
 
     <ListPreference android:key="network.cookie.cookieBehavior"
                     android:title="@string/pref_cookies_menu"
                     android:entries="@array/pref_cookies_entries"
                     android:entryValues="@array/pref_cookies_values"
                     android:persistent="false" />
 
+    <org.mozilla.gecko.preferences.LinkPreference android:key="android.not_a_preference.signon.manage"
+                                                  android:title="@string/pref_manage_logins"
+                                                  url="about:passwords"/>
+
     <CheckBoxPreference android:key="signon.rememberSignons"
                         android:title="@string/pref_remember_signons"
                         android:persistent="false" />
 
     <CheckBoxPreference android:key="privacy.masterpassword.enabled"
                         android:title="@string/pref_use_master_password"
                         android:persistent="false" />
 
--- a/mobile/android/base/strings.xml.in
+++ b/mobile/android/base/strings.xml.in
@@ -127,16 +127,17 @@
   <string name="pref_category_customize_alt_summary">&pref_category_customize_alt_summary;</string>
 
   <string name="pref_category_search">&pref_category_search3;</string>
   <string name="pref_category_search_summary">&pref_category_search_summary;</string>
   <string name="pref_category_display">&pref_category_display;</string>
   <string name="pref_category_display_summary">&pref_category_display_summary;</string>
   <string name="pref_category_privacy_short">&pref_category_privacy_short;</string>
   <string name="pref_category_privacy_summary">&pref_category_privacy_summary;</string>
+  <string name="pref_manage_logins">&pref_manage_logins;</string>
   <string name="pref_category_vendor">&pref_category_vendor;</string>
   <string name="pref_category_vendor_summary">&pref_category_vendor_summary;</string>
   <string name="pref_category_datareporting">&pref_category_datareporting;</string>
   <string name="pref_category_installed_search_engines">&pref_category_installed_search_engines;</string>
   <string name="pref_category_add_search_providers">&pref_category_add_search_providers;</string>
   <string name="pref_category_search_restore_defaults">&pref_category_search_restore_defaults;</string>
   <string name="pref_search_restore_defaults">&pref_search_restore_defaults;</string>
   <string name="pref_search_restore_defaults_summary">&pref_search_restore_defaults_summary;</string>
@@ -279,16 +280,17 @@
   <string name="site_security">&site_security;</string>
   <string name="close_tab">&close_tab;</string>
   <string name="new_tab_opened">&new_tab_opened;</string>
   <string name="new_private_tab_opened">&new_private_tab_opened;</string>
   <string name="switch_button_message">&switch_button_message;</string>
   <string name="one_tab">&one_tab;</string>
   <string name="num_tabs">&num_tabs2;</string>
   <string name="addons">&addons;</string>
+  <string name="logins">&logins;</string>
   <string name="downloads">&downloads;</string>
   <string name="apps">&apps;</string>
   <string name="char_encoding">&char_encoding;</string>
   <string name="new_tab">&new_tab;</string>
   <string name="new_private_tab">&new_private_tab;</string>
   <string name="close_all_tabs">&close_all_tabs;</string>
   <string name="close_private_tabs">&close_private_tabs;</string>
   <string name="tabs_normal">&tabs_normal;</string>
--- a/mobile/android/base/tests/StringHelper.java
+++ b/mobile/android/base/tests/StringHelper.java
@@ -29,16 +29,17 @@ public class StringHelper {
     public static final String ABOUT_FIREFOX_URL = "about:firefox";
     public static final String ABOUT_RIGHTS_URL = "about:rights";
     public static final String ABOUT_BUILDCONFIG_URL = "about:buildconfig";
     public static final String ABOUT_FEEDBACK_URL = "about:feedback";
     public static final String ABOUT_HEALTHREPORT_URL = "about:healthreport";
     public static final String ABOUT_DOWNLOADS_URL = "about:downloads";
     public static final String ABOUT_HOME_URL = "about:home";
     public static final String ABOUT_ADDONS_URL = "about:addons";
+    public static final String ABOUT_PASSWORDS_URL = "about:passwords";
     public static final String ABOUT_APPS_URL = "about:apps";
     public static final String ABOUT_ABOUT_URL = "about:about";
     public static final String ABOUT_SCHEME = "about:";
 
     // About pages' titles
     public static final String ABOUT_HOME_TITLE = "";
 
     // Context Menu item strings
@@ -179,16 +180,17 @@ public class StringHelper {
     public static final String SHOW_PAGE_TITLE_LABEL = "Show page title";
     public static final String SHOW_PAGE_ADDRESS_LABEL = "Show page address";
 
     // Privacy
     public static final String TRACKING_PROTECTION_LABEL = "Tracking protection";
     public static final String DNT_LABEL = "Do not track";
     public static final String COOKIES_LABEL = "Cookies";
     public static final String REMEMBER_PASSWORDS_LABEL = "Remember passwords";
+    public static final String MANAGE_LOGINS_LABEL = "Manage logins";
     public static final String MASTER_PASSWORD_LABEL = "Use master password";
     public static final String CLEAR_PRIVATE_DATA_LABEL = "Clear now";
 
     // Mozilla
     public static final String BRAND_NAME = "(Fennec|Nightly|Aurora|Firefox Beta|Firefox)";
     public static final String ABOUT_LABEL = "About " + BRAND_NAME;
     public static final String FAQS_LABEL = "FAQs";
     public static final String FEEDBACK_LABEL = "Give feedback";
@@ -221,16 +223,17 @@ public class StringHelper {
     public static final String NEW_TAB_LABEL = "New Tab";
     public static final String NEW_PRIVATE_TAB_LABEL = "New Private Tab";
     public static final String SHARE_LABEL = "Share";
     public static final String FIND_IN_PAGE_LABEL = "Find in Page";
     public static final String DESKTOP_SITE_LABEL = "Request Desktop Site";
     public static final String PDF_LABEL = "Save as PDF";
     public static final String DOWNLOADS_LABEL = "Downloads";
     public static final String ADDONS_LABEL = "Add-ons";
+    public static final String LOGINS_LABEL = "Logins";
     public static final String APPS_LABEL = "Apps";
     public static final String SETTINGS_LABEL = "Settings";
     public static final String GUEST_MODE_LABEL = "New Guest Session";
     public static final String TAB_QUEUE_LABEL = "Open later";
 
     // Android 3.0+
     public static final String TOOLS_LABEL = "Tools";
     public static final String PAGE_LABEL = "Page";
--- a/mobile/android/base/tests/testSettingsMenuItems.java
+++ b/mobile/android/base/tests/testSettingsMenuItems.java
@@ -54,21 +54,23 @@ public class testSettingsMenuItems exten
         { "Advanced" },
         { StringHelper.CHARACTER_ENCODING_LABEL, "Don't show menu", "Show menu", "Don't show menu" },
         { StringHelper.PLUGINS_LABEL, "Tap to play", "Enabled", "Tap to play", "Disabled" },
     };
 
     // Privacy menu items.
     String[] PATH_PRIVACY = { StringHelper.PRIVACY_SECTION_LABEL };
     final String[] TRACKING_PROTECTION_LABEL_ARR = { StringHelper.TRACKING_PROTECTION_LABEL };
+    final String[] MANAGE_LOGINS_ARR = { StringHelper.MANAGE_LOGINS_LABEL };
     String[][] OPTIONS_PRIVACY = {
         TRACKING_PROTECTION_LABEL_ARR,
         { StringHelper.DNT_LABEL },
         { StringHelper.COOKIES_LABEL, "Enabled", "Enabled, excluding 3rd party", "Disabled" },
         { StringHelper.REMEMBER_PASSWORDS_LABEL },
+        MANAGE_LOGINS_ARR,
         { StringHelper.MASTER_PASSWORD_LABEL },
         { StringHelper.CLEAR_PRIVATE_DATA_LABEL, "", "Browsing history", "Downloads", "Form & search history", "Cookies & active logins", "Saved passwords", "Cache", "Offline website data", "Site settings", "Clear data" },
     };
 
     // Mozilla/vendor menu items.
     String[] PATH_MOZILLA = { StringHelper.MOZILLA_SECTION_LABEL };
     String[][] OPTIONS_MOZILLA = {
         { StringHelper.ABOUT_LABEL },
@@ -166,17 +168,19 @@ public class testSettingsMenuItems exten
                 settingsMap.get(PATH_MOZILLA).add(networkReportingUi);
 
                 String[] learnMoreUi = { "Learn more" };
                 settingsMap.get(PATH_MOZILLA).add(learnMoreUi);
             }
         }
 
         if (!AppConstants.NIGHTLY_BUILD) {
-            settingsMap.get(PATH_PRIVACY).remove(TRACKING_PROTECTION_LABEL_ARR);
+            final List<String[]> privacy = settingsMap.get(PATH_PRIVACY);
+            privacy.remove(TRACKING_PROTECTION_LABEL_ARR);
+            privacy.remove(MANAGE_LOGINS_ARR);
         }
 
         // Automatic updates
         if (AppConstants.MOZ_UPDATER) {
             String[] autoUpdateUi = { "Download updates automatically", "Only over Wi-Fi", "Always", "Only over Wi-Fi", "Never" };
             settingsMap.get(PATH_CUSTOMIZE).add(autoUpdateUi);
         }
 
--- a/mobile/android/base/tests/testSystemPages.java
+++ b/mobile/android/base/tests/testSystemPages.java
@@ -1,30 +1,32 @@
 package org.mozilla.gecko.tests;
 
 import org.mozilla.gecko.Actions;
+import org.mozilla.gecko.AppConstants;
 
 /** This patch tests the System Pages first by loading system pages from
  *  the awesome bar and then from Firefox menu
  */
 public class testSystemPages extends PixelTest {
     final int mExpectedTabCount = 1;
     private static final int AFTER_BACK_SLEEP_MS = 500;
 
     public void testSystemPages() {
         blockForGeckoReady();
 
         final String urls [] = { StringHelper.ABOUT_FIREFOX_URL, StringHelper.ABOUT_RIGHTS_URL,
-                StringHelper.ABOUT_ADDONS_URL, StringHelper.ABOUT_DOWNLOADS_URL,
+                StringHelper.ABOUT_ADDONS_URL, StringHelper.ABOUT_DOWNLOADS_URL, StringHelper.ABOUT_PASSWORDS_URL,
                 StringHelper.ABOUT_BUILDCONFIG_URL, StringHelper.ABOUT_FEEDBACK_URL,
                 StringHelper.ABOUT_HEALTHREPORT_URL, StringHelper.ABOUT_SCHEME
         };
         // Pages to be tested from the menu and their expected urls. This if of the form { {{ <path to item> }, { <expected url> }}* }
         String menuItems [][][] = {{{ StringHelper.APPS_LABEL }, { StringHelper.ABOUT_APPS_URL }},
                                   {{ StringHelper.DOWNLOADS_LABEL }, { StringHelper.ABOUT_DOWNLOADS_URL}},
+                                  {{ StringHelper.LOGINS_LABEL}, { StringHelper.ABOUT_PASSWORDS_URL }},
                                   {{ StringHelper.ADDONS_LABEL }, { StringHelper.ABOUT_ADDONS_URL }},
                                   {{ StringHelper.SETTINGS_LABEL, StringHelper.MOZILLA_SECTION_LABEL, StringHelper.ABOUT_LABEL }, { StringHelper.ABOUT_SCHEME }},
                                   {{ StringHelper.SETTINGS_LABEL, StringHelper.MOZILLA_SECTION_LABEL, StringHelper.FEEDBACK_LABEL }, { StringHelper.ABOUT_FEEDBACK_URL }},
                                   {{ StringHelper.SETTINGS_LABEL, StringHelper.MOZILLA_SECTION_LABEL, StringHelper.MY_HEALTH_REPORT_LABEL }, { StringHelper.ABOUT_HEALTHREPORT_URL }}};
 
         /* Load system pages from url and check that the pages are loaded in the same tab */
         checkUrl(urls);
 
@@ -43,32 +45,39 @@ public class testSystemPages extends Pix
 
         // Load system pages by navigating through the UI.
         loadItemsByLevel(menuItems);
     }
 
     // Load from Url the about: pages,verify the Url and the tabs number
     public void checkUrl(String urls []) {
         for (String url:urls) {
+            if (skipItemURL(url)) {
+                continue;
+            }
             loadAndPaint(url);
             verifyTabCount(mExpectedTabCount);
             verifyUrl(url);
         }
     }
 
     public void loadItemsByLevel(String[][][] menuItems) {
         Actions.EventExpecter tabEventExpecter;
         Actions.EventExpecter contentEventExpecter;
         Actions.RepeatedEventExpecter paintExpecter = mActions.expectPaint();
         int expectedTabCount = mExpectedTabCount;
         // There's some special casing for about: because it's our starting page.
         for (String[][] item : menuItems) {
             String [] pathToItem = item[0];
             String expectedUrl = item[1][0];
 
+            if (skipItemURL(expectedUrl)) {
+                continue;
+            }
+
             expectedTabCount++;
 
             // Set up listeners to catch the page load we're about to do
             tabEventExpecter = mActions.expectGeckoEvent("Tab:Added");
             contentEventExpecter = mActions.expectGeckoEvent("DOMContentLoaded");
             selectMenuItemByPath(pathToItem);
 
             // Wait for the new tab and page to load
@@ -85,9 +94,16 @@ public class testSystemPages extends Pix
             verifyUrl(expectedUrl);
             if (StringHelper.ABOUT_SCHEME.equals(expectedUrl)) {
                 // Decreasing because we do not expect this to be in a different tab.
                 expectedTabCount--;
             }
             verifyTabCount(expectedTabCount);
         }
     }
+
+    private boolean skipItemURL(String item) {
+        if (StringHelper.ABOUT_PASSWORDS_URL.equals(item) && !AppConstants.NIGHTLY_BUILD) {
+            return true;
+        }
+        return false;
+    }
 }