Merge m-c to m-i
authorPhil Ringnalda <philringnalda@gmail.com>
Sun, 20 Oct 2013 19:33:47 -0700
changeset 165297 2e3900ae8b35fee7e11d45a2eb1e4332221c4968
parent 165296 a98a45e180f600f980690123b9916fbb0558c145 (current diff)
parent 165295 7823e2985daf750ab8292c33840599f2e361acc0 (diff)
child 165298 b24213ae8b6818dbf06a825ab952b09333d112f0
push id3066
push userakeybl@mozilla.com
push dateMon, 09 Dec 2013 19:58:46 +0000
treeherdermozilla-beta@a31a0dce83aa [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone27.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
Merge m-c to m-i
browser/components/certerror/test/moz.build
browser/components/dirprovider/tests/moz.build
browser/components/downloads/test/browser/moz.build
browser/components/downloads/test/moz.build
browser/components/feeds/test/chrome/Makefile.in
browser/components/feeds/test/chrome/moz.build
browser/components/feeds/test/moz.build
browser/components/migration/tests/moz.build
browser/components/places/tests/browser/Makefile.in
browser/components/places/tests/browser/moz.build
browser/components/places/tests/chrome/moz.build
browser/components/places/tests/moz.build
browser/components/preferences/in-content/tests/moz.build
browser/components/preferences/tests/moz.build
browser/components/privatebrowsing/test/browser/moz.build
browser/components/privatebrowsing/test/moz.build
browser/components/safebrowsing/content/test/moz.build
browser/components/safebrowsing/moz.build
browser/components/search/test/moz.build
browser/components/sessionstore/test/Makefile.in
browser/components/sessionstore/test/moz.build
browser/components/shell/test/moz.build
browser/components/tabview/Makefile.in
browser/components/tabview/test/moz.build
browser/components/test/moz.build
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -91,16 +91,24 @@ pref("app.update.altwindowtype", "Browse
 // Enables some extra Application Update Logging (can reduce performance)
 pref("app.update.log", false);
 
 // The number of general background check failures to allow before notifying the
 // user of the failure. User initiated update checks always notify the user of
 // the failure.
 pref("app.update.backgroundMaxErrors", 10);
 
+// The aus update xml certificate checks for application update are disabled on
+// Windows since the mar signature check which is currently only implemented on
+// Windows is sufficient for preventing us from applying a mar that is not
+// valid.
+#ifdef XP_WIN
+pref("app.update.cert.requireBuiltIn", false);
+pref("app.update.cert.checkAttributes", false);
+#else
 // When |app.update.cert.requireBuiltIn| is true or not specified the
 // final certificate and all certificates the connection is redirected to before
 // the final certificate for the url specified in the |app.update.url|
 // preference must be built-in.
 pref("app.update.cert.requireBuiltIn", true);
 
 // When |app.update.cert.checkAttributes| is true or not specified the
 // certificate attributes specified in the |app.update.certs.| preference branch
@@ -139,16 +147,17 @@ pref("app.update.certs.2.issuerName", "C
 pref("app.update.certs.2.commonName", "aus4.mozilla.org");
 #else
 pref("app.update.certs.1.issuerName", "OU=Equifax Secure Certificate Authority,O=Equifax,C=US");
 pref("app.update.certs.1.commonName", "aus3.mozilla.org");
 
 pref("app.update.certs.2.issuerName", "CN=Thawte SSL CA,O=\"Thawte, Inc.\",C=US");
 pref("app.update.certs.2.commonName", "aus3.mozilla.org");
 #endif
+#endif
 
 // Whether or not app updates are enabled
 pref("app.update.enabled", true);
 
 // This preference turns on app.update.mode and allows automatic download and
 // install to take place. We use a separate boolean toggle for this to make
 // the UI easier to construct.
 pref("app.update.auto", true);
--- a/browser/components/certerror/moz.build
+++ b/browser/components/certerror/moz.build
@@ -1,7 +1,9 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-TEST_DIRS += ['test']
+BROWSER_CHROME_MANIFESTS += [
+    'test/browser.ini',
+]
deleted file mode 100644
--- a/browser/components/certerror/test/moz.build
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-BROWSER_CHROME_MANIFESTS += ['browser.ini']
-
--- a/browser/components/dirprovider/moz.build
+++ b/browser/components/dirprovider/moz.build
@@ -1,20 +1,21 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-TEST_DIRS += ['tests']
-
 MODULE = 'browserdir'
 
 EXPORTS.mozilla.browser += [
     'DirectoryProvider.h',
 ]
 
 CPP_SOURCES += [
     'DirectoryProvider.cpp',
 ]
 
 LIBRARY_NAME = 'browserdir_s'
 
+XPCSHELL_TESTS_MANIFESTS += [
+    'tests/unit/xpcshell.ini',
+]
deleted file mode 100644
--- a/browser/components/dirprovider/tests/moz.build
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-MODULE = 'test_browserdir'
-
-XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini']
--- a/browser/components/downloads/moz.build
+++ b/browser/components/downloads/moz.build
@@ -1,8 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += ['src']
-TEST_DIRS += ['test']
+
+XPCSHELL_TESTS_MANIFESTS += [
+    'test/unit/xpcshell.ini',
+]
+
+BROWSER_CHROME_MANIFESTS += [
+    'test/browser/browser.ini',
+]
deleted file mode 100644
--- a/browser/components/downloads/test/browser/moz.build
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-BROWSER_CHROME_MANIFESTS += ['browser.ini']
-
deleted file mode 100644
--- a/browser/components/downloads/test/moz.build
+++ /dev/null
@@ -1,9 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DIRS += ['browser']
-
-XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini']
--- a/browser/components/feeds/moz.build
+++ b/browser/components/feeds/moz.build
@@ -1,8 +1,19 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += ['public', 'src']
-TEST_DIRS += ['test']
+
+XPCSHELL_TESTS_MANIFESTS += [
+    'test/unit/xpcshell.ini',
+]
+
+MOCHITEST_CHROME_MANIFESTS += [
+    'test/chrome/chrome.ini',
+]
+
+MOCHITEST_MANIFESTS += [
+    'test/mochitest.ini'
+]
deleted file mode 100644
--- a/browser/components/feeds/test/chrome/Makefile.in
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-# sample_feed.atom was copied from toolkit/components/places/tests/chrome
-MOCHITEST_FILES	= \
-		sample_feed.atom \
-		$(NULL)
-
--- a/browser/components/feeds/test/chrome/chrome.ini
+++ b/browser/components/feeds/test/chrome/chrome.ini
@@ -1,6 +1,7 @@
 [DEFAULT]
+support-files = sample_feed.atom
 
 [test_423060.xul]
 [test_bug368464.html]
 [test_bug408328.html]
 [test_maxSniffing.html]
deleted file mode 100644
--- a/browser/components/feeds/test/chrome/moz.build
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-MOCHITEST_CHROME_MANIFESTS += ['chrome.ini']
-
deleted file mode 100644
--- a/browser/components/feeds/test/moz.build
+++ /dev/null
@@ -1,14 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DIRS += ['chrome']
-
-MODULE = 'test_browser_feeds'
-
-XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini']
-
-MOCHITEST_MANIFESTS += ['mochitest.ini']
-
--- a/browser/components/migration/moz.build
+++ b/browser/components/migration/moz.build
@@ -1,8 +1,11 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += ['public', 'src']
-TEST_DIRS += ['tests']
+
+XPCSHELL_TESTS_MANIFESTS += [
+    'tests/unit/xpcshell.ini',
+]
deleted file mode 100644
--- a/browser/components/migration/tests/moz.build
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini']
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -16,20 +16,16 @@ PARALLEL_DIRS += [
     'search',
     'sessionstore',
     'shell',
     'sidebar',
     'tabview',
     'migration',
 ]
 
-if CONFIG['MOZ_SAFE_BROWSING']:
-    PARALLEL_DIRS += ['safebrowsing']
-
-TEST_DIRS += ['test']
 DIRS += ['build']
 
 XPIDL_SOURCES += [
     'nsIBrowserGlue.idl',
     'nsIBrowserHandler.idl',
 ]
 
 XPIDL_MODULE = 'browsercompsbase'
@@ -43,8 +39,15 @@ EXTRA_PP_COMPONENTS += [
     'nsBrowserContentHandler.js',
     'nsBrowserGlue.js',
 ]
 
 EXTRA_JS_MODULES += [
     'distribution.js',
 ]
 
+BROWSER_CHROME_MANIFESTS += [
+    'test/browser.ini'
+]
+
+if CONFIG['MOZ_SAFE_BROWSING']:
+    BROWSER_CHROME_MANIFESTS += ['safebrowsing/content/test/browser.ini']
+
--- a/browser/components/places/moz.build
+++ b/browser/components/places/moz.build
@@ -1,9 +1,19 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += ['src']
-TEST_DIRS += ['tests']
+
+XPCSHELL_TESTS_MANIFESTS += [
+    'tests/unit/xpcshell.ini',
+]
 
+MOCHITEST_CHROME_MANIFESTS += [
+    'tests/chrome/chrome.ini'
+]
+
+BROWSER_CHROME_MANIFESTS += [
+    'tests/browser/browser.ini',
+]
deleted file mode 100644
--- a/browser/components/places/tests/browser/Makefile.in
+++ /dev/null
@@ -1,38 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-MOCHITEST_BROWSER_FILES = \
-	head.js \
-	browser_0_library_left_pane_migration.js \
-	browser_library_left_pane_fixnames.js \
-	browser_425884.js \
-	browser_475045.js \
-	browser_423515.js \
-	browser_410196_paste_into_tags.js \
-	browser_sort_in_library.js \
-	browser_library_open_leak.js \
-	browser_library_panel_leak.js \
-	browser_library_search.js \
-	browser_history_sidebar_search.js \
-	browser_bookmarksProperties.js \
-	$(filter disabled-for-very-frequent-oranges--bug-551540, browser_forgetthissite_single.js) \
-	browser_library_left_pane_commands.js \
-	browser_drag_bookmarks_on_toolbar.js \
-	browser_library_middleclick.js \
-	browser_library_views_liveupdate.js \
-	browser_views_liveupdate.js \
-	$(filter temporarily-disabled-for-breaking-the-treeview--bug-658744, browser_sidebarpanels_click.js) \
-	sidebarpanels_click_test_page.html \
-	browser_library_infoBox.js \
-	browser_markPageAsFollowedLink.js \
-	framedPage.html \
-	frameLeft.html \
-	frameRight.html \
-	browser_toolbar_migration.js \
-	browser_library_batch_delete.js \
-	browser_555547.js \
-	browser_416459_cut.js \
-	browser_library_downloads.js \
-	browser_library_left_pane_select_hierarchy.js \
-	$(NULL)
new file mode 100644
--- /dev/null
+++ b/browser/components/places/tests/browser/browser.ini
@@ -0,0 +1,47 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+[DEFAULT]
+support-files =
+  head.js
+  framedPage.html
+  frameLeft.html
+  frameRight.html
+  sidebarpanels_click_test_page.html
+
+[browser_0_library_left_pane_migration.js]
+[browser_library_left_pane_fixnames.js]
+[browser_425884.js]
+[browser_475045.js]
+[browser_423515.js]
+[browser_410196_paste_into_tags.js]
+[browser_sort_in_library.js]
+[browser_library_open_leak.js]
+[browser_library_panel_leak.js]
+[browser_library_search.js]
+[browser_history_sidebar_search.js]
+[browser_bookmarksProperties.js]
+
+[browser_forgetthissite_single.js]
+# disabled for very frequent oranges - bug 551540
+skip-if = true
+
+[browser_library_left_pane_commands.js]
+[browser_drag_bookmarks_on_toolbar.js]
+[browser_library_middleclick.js]
+[browser_library_views_liveupdate.js]
+[browser_views_liveupdate.js]
+
+[browser_sidebarpanels_click.js]
+# temporarily disabled for breaking the treeview - bug 658744
+skip-if = true
+
+[browser_library_infoBox.js]
+[browser_markPageAsFollowedLink.js]
+[browser_toolbar_migration.js]
+[browser_library_batch_delete.js]
+[browser_555547.js]
+[browser_416459_cut.js]
+[browser_library_downloads.js]
+[browser_library_left_pane_select_hierarchy.js]
deleted file mode 100644
--- a/browser/components/places/tests/browser/moz.build
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
deleted file mode 100644
--- a/browser/components/places/tests/chrome/moz.build
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-MOCHITEST_CHROME_MANIFESTS += ['chrome.ini']
-
deleted file mode 100644
--- a/browser/components/places/tests/moz.build
+++ /dev/null
@@ -1,11 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DIRS += ['browser', 'chrome']
-
-MODULE = 'test_browser_places'
-
-XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini']
--- a/browser/components/preferences/in-content/moz.build
+++ b/browser/components/preferences/in-content/moz.build
@@ -1,7 +1,6 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-TEST_DIRS += ['tests']
deleted file mode 100644
--- a/browser/components/preferences/in-content/tests/moz.build
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-BROWSER_CHROME_MANIFESTS += ['browser.ini']
-
--- a/browser/components/preferences/moz.build
+++ b/browser/components/preferences/moz.build
@@ -1,8 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 PARALLEL_DIRS += ['in-content']
-TEST_DIRS += ['tests']
+
+BROWSER_CHROME_MANIFESTS += [
+    'in-content/tests/browser.ini',
+    'tests/browser.ini',
+]
deleted file mode 100644
--- a/browser/components/preferences/tests/moz.build
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-BROWSER_CHROME_MANIFESTS += ['browser.ini']
-
--- a/browser/components/privatebrowsing/moz.build
+++ b/browser/components/privatebrowsing/moz.build
@@ -1,10 +1,9 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-TEST_DIRS += ['test']
-
-MODULE = 'privatebrowsing'
-
+BROWSER_CHROME_MANIFESTS += [
+    'test/browser/browser.ini',
+]
deleted file mode 100644
--- a/browser/components/privatebrowsing/test/browser/moz.build
+++ /dev/null
@@ -1,10 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-MODULE = 'test_privatebrowsing'
-
-BROWSER_CHROME_MANIFESTS += ['browser.ini']
-
deleted file mode 100644
--- a/browser/components/privatebrowsing/test/moz.build
+++ /dev/null
@@ -1,10 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-DIRS += ['browser']
-
-MODULE = 'test_privatebrowsing'
-
deleted file mode 100644
--- a/browser/components/safebrowsing/content/test/moz.build
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-BROWSER_CHROME_MANIFESTS += ['browser.ini']
-
deleted file mode 100644
--- a/browser/components/safebrowsing/moz.build
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-TEST_DIRS += ['content/test']
-
--- a/browser/components/search/moz.build
+++ b/browser/components/search/moz.build
@@ -1,7 +1,9 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-TEST_DIRS += ['test']
+BROWSER_CHROME_MANIFESTS += [
+    'test/browser.ini',
+]
deleted file mode 100644
--- a/browser/components/search/test/moz.build
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-BROWSER_CHROME_MANIFESTS += ['browser.ini']
-
--- a/browser/components/sessionstore/moz.build
+++ b/browser/components/sessionstore/moz.build
@@ -1,16 +1,22 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += ['src']
-TEST_DIRS += ['test']
 
 XPIDL_SOURCES += [
     'nsISessionStartup.idl',
     'nsISessionStore.idl',
 ]
 
 MODULE = 'sessionstore'
 
+XPCSHELL_TESTS_MANIFESTS += [
+    'test/unit/xpcshell.ini',
+]
+
+BROWSER_CHROME_MANIFESTS += [
+    'test/browser.ini',
+]
deleted file mode 100644
--- a/browser/components/sessionstore/test/Makefile.in
+++ /dev/null
@@ -1,165 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-# browser_506482.js is disabled because of frequent failures (bug 538672)
-# browser_526613.js is disabled because of frequent failures (bug 534489)
-# browser_589246.js is disabled for leaking browser windows (bug 752467)
-# browser_580512.js is disabled for leaking browser windows (bug 752467)
-
-MOCHITEST_BROWSER_FILES = \
-	head.js \
-	browser_attributes.js \
-	browser_capabilities.js \
-	browser_dying_cache.js \
-	browser_form_restore_events.js \
-	browser_form_restore_events_sample.html \
-	browser_formdata_format.js \
-	browser_formdata_format_sample.html \
-	browser_input.js \
-	browser_input_sample.html \
-	browser_pageshow.js \
-	browser_sessionStorage.js \
-	browser_tabStateCache.js \
-	browser_upgrade_backup.js \
-	browser_windowRestore_perwindowpb.js \
-	browser_248970_b_perwindowpb.js \
-	browser_248970_b_sample.html \
-	browser_339445.js \
-	browser_339445_sample.html \
-	browser_345898.js \
-	browser_346337.js \
-	browser_346337_sample.html \
-	browser_350525.js \
-	browser_354894_perwindowpb.js \
-	browser_367052.js \
-	browser_393716.js \
-	browser_394759_basic.js \
-	browser_394759_behavior.js \
-	browser_394759_perwindowpb.js \
-	browser_394759_purge.js \
-	browser_408470.js \
-	browser_408470_sample.html \
-	browser_423132.js \
-	browser_423132_sample.html \
-	browser_447951.js \
-	browser_447951_sample.html \
-	browser_448741.js \
-	browser_454908.js \
-	browser_454908_sample.html \
-	browser_456342.js \
-	browser_456342_sample.xhtml \
-	browser_461634.js \
-	browser_463205.js \
-	browser_463205_helper.html \
-	browser_463205_sample.html \
-	browser_463206.js \
-	browser_463206_sample.html \
-	browser_464199.js \
-	browser_465215.js \
-	browser_465223.js \
-	browser_466937.js \
-	browser_466937_sample.html \
-	browser_467409-backslashplosion.js \
-	browser_477657.js \
-	browser_480148.js \
-	browser_480893.js \
-	browser_483330.js \
-	browser_485482.js \
-	browser_485482_sample.html \
-	browser_485563.js \
-	browser_490040.js \
-	browser_491168.js \
-	browser_491577.js \
-	browser_495495.js \
-	browser_500328.js \
-	browser_514751.js \
-	browser_522375.js \
-	browser_522545.js \
-	browser_524745.js \
-	browser_528776.js \
-	browser_579868.js \
-	browser_579879.js \
-	browser_581593.js \
-	browser_581937.js \
-	browser_586147.js \
-	browser_586068-apptabs.js \
-	browser_586068-apptabs_ondemand.js \
-	browser_586068-browser_state_interrupted.js \
-	browser_586068-cascade.js \
-	browser_586068-multi_window.js \
-	browser_586068-reload.js \
-	browser_586068-select.js \
-	browser_586068-window_state.js \
-	browser_586068-window_state_override.js \
-	browser_588426.js \
-	browser_590268.js \
-	browser_590563.js \
-	browser_595601-restore_hidden.js \
-	browser_597315.js \
-	browser_597315_index.html \
-	browser_597315_a.html \
-	browser_597315_b.html \
-	browser_597315_c.html \
-	browser_597315_c1.html \
-	browser_597315_c2.html \
-	browser_599909.js \
-	browser_600545.js \
-	browser_601955.js \
-	browser_607016.js \
-	browser_615394-SSWindowState_events.js \
-	browser_618151.js \
-	browser_623779.js \
-	browser_624727.js \
-	browser_625257.js \
-	browser_628270.js \
-	browser_635418.js \
-	browser_636279.js \
-	browser_637020.js \
-	browser_637020_slow.sjs \
-	browser_644409-scratchpads.js \
-	browser_645428.js \
-	browser_659591.js \
-	browser_662743.js \
-	browser_662743_sample.html \
-	browser_662812.js \
-	browser_665702-state_session.js \
-	browser_682507.js \
-	browser_687710.js \
-	browser_687710_2.js \
-	browser_694378.js \
-	browser_701377.js \
-	browser_705597.js \
-	browser_707862.js \
-	browser_739531.js \
-	browser_739531_sample.html \
-	browser_739805.js \
-	browser_819510_perwindowpb.js \
-	browser_833286_atomic_backup.js \
-	browser_916390_form_data_loss.js \
-	browser_916390_sample.html \
-	$(filter disabled-for-intermittent-failures--bug-766044, browser_459906_empty.html) \
-	$(filter disabled-for-intermittent-failures--bug-766044, browser_459906_sample.html) \
-	$(filter disabled-for-intermittent-failures--bug-765389, browser_461743_sample.html) \
-	$(NULL)
-
-# Disabled on Windows for frequent intermittent failures
-ifneq ($(OS_ARCH), WINNT)
-MOCHITEST_FILES += \
-	browser_464620_a.js \
-	browser_464620_a.html \
-	browser_464620_b.js \
-	browser_464620_b.html \
-	browser_464620_xd.html \
-	$(NULL)
-else
-$(filter disabled-for-intermittent-failures-on-windows--bug-552424, browser_464620_a.js)
-$(filter disabled-for-intermittent-failures-on-windows--bug-552424, browser_464620_b.js)
-endif
-
-ifneq ($(OS_ARCH),Darwin)
-MOCHITEST_BROWSER_FILES += \
-	browser_597071.js \
-	browser_625016.js \
-	$(NULL)
-endif
new file mode 100644
--- /dev/null
+++ b/browser/components/sessionstore/test/browser.ini
@@ -0,0 +1,165 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# browser_506482.js is disabled because of frequent failures (bug 538672)
+# browser_526613.js is disabled because of frequent failures (bug 534489)
+# browser_589246.js is disabled for leaking browser windows (bug 752467)
+# browser_580512.js is disabled for leaking browser windows (bug 752467)
+
+[DEFAULT]
+support-files =
+  head.js
+  browser_form_restore_events_sample.html
+  browser_formdata_format_sample.html
+  browser_input_sample.html
+  browser_248970_b_sample.html
+  browser_339445_sample.html
+  browser_346337_sample.html
+  browser_408470_sample.html
+  browser_423132_sample.html
+  browser_447951_sample.html
+  browser_454908_sample.html
+  browser_456342_sample.xhtml
+  browser_463205_helper.html
+  browser_463205_sample.html
+  browser_463206_sample.html
+  browser_466937_sample.html
+  browser_485482_sample.html
+  browser_597315_index.html
+  browser_597315_a.html
+  browser_597315_b.html
+  browser_597315_c.html
+  browser_597315_c1.html
+  browser_597315_c2.html
+  browser_662743_sample.html
+  browser_739531_sample.html
+  browser_916390_sample.html
+
+#NB: the following are disabled
+#  browser_464620_a.html
+#  browser_464620_b.html 
+#  browser_464620_xd.html
+
+
+#disabled-for-intermittent-failures--bug-766044, browser_459906_empty.html
+#disabled-for-intermittent-failures--bug-766044, browser_459906_sample.html
+#disabled-for-intermittent-failures--bug-765389, browser_461743_sample.html
+
+[browser_attributes.js]
+[browser_capabilities.js]
+[browser_dying_cache.js]
+[browser_form_restore_events.js]
+[browser_formdata_format.js]
+[browser_input.js]
+[browser_pageshow.js]
+[browser_sessionStorage.js]
+[browser_tabStateCache.js]
+[browser_upgrade_backup.js]
+[browser_windowRestore_perwindowpb.js]
+[browser_248970_b_perwindowpb.js]
+[browser_339445.js]
+[browser_345898.js]
+[browser_346337.js]
+[browser_350525.js]
+[browser_354894_perwindowpb.js]
+[browser_367052.js]
+[browser_393716.js]
+[browser_394759_basic.js]
+[browser_394759_behavior.js]
+[browser_394759_perwindowpb.js]
+[browser_394759_purge.js]
+[browser_408470.js]
+[browser_423132.js]
+[browser_447951.js]
+[browser_448741.js]
+[browser_454908.js]
+[browser_456342.js]
+[browser_461634.js]
+[browser_463205.js]
+[browser_463206.js]
+[browser_464199.js]
+[browser_465215.js]
+[browser_465223.js]
+[browser_466937.js]
+[browser_467409-backslashplosion.js]
+[browser_477657.js]
+[browser_480148.js]
+[browser_480893.js]
+[browser_483330.js]
+[browser_485482.js]
+[browser_485563.js]
+[browser_490040.js]
+[browser_491168.js]
+[browser_491577.js]
+[browser_495495.js]
+[browser_500328.js]
+[browser_514751.js]
+[browser_522375.js]
+[browser_522545.js]
+[browser_524745.js]
+[browser_528776.js]
+[browser_579868.js]
+[browser_579879.js]
+[browser_581593.js]
+[browser_581937.js]
+[browser_586147.js]
+[browser_586068-apptabs.js]
+[browser_586068-apptabs_ondemand.js]
+[browser_586068-browser_state_interrupted.js]
+[browser_586068-cascade.js]
+[browser_586068-multi_window.js]
+[browser_586068-reload.js]
+[browser_586068-select.js]
+[browser_586068-window_state.js]
+[browser_586068-window_state_override.js]
+[browser_588426.js]
+[browser_590268.js]
+[browser_590563.js]
+[browser_595601-restore_hidden.js]
+[browser_597315.js]
+[browser_599909.js]
+[browser_600545.js]
+[browser_601955.js]
+[browser_607016.js]
+[browser_615394-SSWindowState_events.js]
+[browser_618151.js]
+[browser_623779.js]
+[browser_624727.js]
+[browser_625257.js]
+[browser_628270.js]
+[browser_635418.js]
+[browser_636279.js]
+[browser_637020.js]
+[browser_637020_slow.sjs]
+[browser_644409-scratchpads.js]
+[browser_645428.js]
+[browser_659591.js]
+[browser_662743.js]
+[browser_662812.js]
+[browser_665702-state_session.js]
+[browser_682507.js]
+[browser_687710.js]
+[browser_687710_2.js]
+[browser_694378.js]
+[browser_701377.js]
+[browser_705597.js]
+[browser_707862.js]
+[browser_739531.js]
+[browser_739805.js]
+[browser_819510_perwindowpb.js]
+[browser_833286_atomic_backup.js]
+[browser_916390_form_data_loss.js]
+
+# Disabled for frequent intermittent failures
+[browser_464620_a.js]
+skip-if = true
+[browser_464620_b.js]
+skip-if = true
+
+# Disabled on OS X:
+[browser_597071.js]
+skip-if = os == "mac"
+[browser_625016.js]
+skip-if = os == "mac"
+
deleted file mode 100644
--- a/browser/components/sessionstore/test/moz.build
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini']
--- a/browser/components/shell/moz.build
+++ b/browser/components/shell/moz.build
@@ -1,8 +1,15 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += ['public', 'src']
-TEST_DIRS += ['test']
+
+XPCSHELL_TESTS_MANIFESTS += [
+    'test/unit/xpcshell.ini'
+]
+
+BROWSER_CHROME_MANIFESTS += [
+    'test/browser.ini',
+]
deleted file mode 100644
--- a/browser/components/shell/test/moz.build
+++ /dev/null
@@ -1,12 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-MODULE = 'test_browser_shell'
-
-XPCSHELL_TESTS_MANIFESTS += ['unit/xpcshell.ini']
-
-BROWSER_CHROME_MANIFESTS += ['browser.ini']
-
deleted file mode 100644
--- a/browser/components/tabview/Makefile.in
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-include $(topsrcdir)/config/rules.mk
-
-libs::
-	$(NSINSTALL) $(srcdir)/modules/* $(FINAL_TARGET)/modules/tabview
--- a/browser/components/tabview/moz.build
+++ b/browser/components/tabview/moz.build
@@ -1,7 +1,12 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-TEST_DIRS += ['test']
+EXTRA_JS_MODULES = ['modules/utils.jsm']
+JS_MODULES_PATH  = 'modules/tabview'
+
+BROWSER_CHROME_MANIFESTS += [
+    'test/browser.ini',
+]
deleted file mode 100644
--- a/browser/components/tabview/test/moz.build
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-BROWSER_CHROME_MANIFESTS += ['browser.ini']
-
deleted file mode 100644
--- a/browser/components/test/moz.build
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-BROWSER_CHROME_MANIFESTS += ['browser.ini']
-
--- a/browser/devtools/debugger/debugger-toolbar.js
+++ b/browser/devtools/debugger/debugger-toolbar.js
@@ -965,17 +965,20 @@ FilterView.prototype = {
     else if ((e.char == "G" && e.metaKey) || e.char == "p" && e.ctrlKey) {
       actionToPerform = "selectPrev";
     }
     // Return, enter, down and up keys focus next or previous matches, while
     // the escape key switches focus from the search container.
     else switch (e.keyCode) {
       case e.DOM_VK_RETURN:
       case e.DOM_VK_ENTER:
-        var isReturnKey = true; // Fall through.
+        var isReturnKey = true;
+        // If the shift key is pressed, focus on the previous result
+        actionToPerform = e.shiftKey ? "selectPrev" : "selectNext";
+        break;
       case e.DOM_VK_DOWN:
         actionToPerform = "selectNext";
         break;
       case e.DOM_VK_UP:
         actionToPerform = "selectPrev";
         break;
     }
 
--- a/browser/devtools/debugger/test/browser_dbg_search-basic-01.js
+++ b/browser/devtools/debugger/test/browser_dbg_search-basic-01.js
@@ -21,16 +21,36 @@ function test() {
     gFiltering = gDebugger.DebuggerView.Filtering;
     gSearchBox = gDebugger.DebuggerView.Filtering._searchbox;
 
     waitForSourceShown(gPanel, ".html").then(performTest);
   });
 }
 
 function performTest() {
+  setText(gSearchBox, "#html");
+  
+  EventUtils.synthesizeKey("VK_RETURN", { shiftKey: true }, gDebugger);
+  is(gFiltering.searchData.toSource(), '["#", ["", "html"]]',
+    "The searchbox data wasn't parsed correctly.");
+  ok(isCaretPos(gPanel, 35, 7),
+    "The editor didn't jump to the correct line.");
+
+  EventUtils.synthesizeKey("VK_RETURN", { shiftKey: true }, gDebugger);
+  is(gFiltering.searchData.toSource(), '["#", ["", "html"]]',
+    "The searchbox data wasn't parsed correctly.");
+  ok(isCaretPos(gPanel, 5, 6),
+    "The editor didn't jump to the correct line.");
+
+  EventUtils.synthesizeKey("VK_RETURN", { shiftKey: true }, gDebugger);
+  is(gFiltering.searchData.toSource(), '["#", ["", "html"]]',
+    "The searchbox data wasn't parsed correctly.");
+  ok(isCaretPos(gPanel, 3, 15),
+    "The editor didn't jump to the correct line.");
+  
   setText(gSearchBox, ":12");
   is(gFiltering.searchData.toSource(), '[":", ["", 12]]',
     "The searchbox data wasn't parsed correctly.");
   ok(isCaretPos(gPanel, 12),
     "The editor didn't jump to the correct line.");
 
   EventUtils.synthesizeKey("g", { metaKey: true }, gDebugger);
   is(gFiltering.searchData.toSource(), '[":", ["", 13]]',
--- a/browser/metro/profile/metro.js
+++ b/browser/metro/profile/metro.js
@@ -484,62 +484,32 @@ pref("app.update.timerMinimumDelay", 120
 // Enables some extra Application Update Logging (can reduce performance)
 pref("app.update.log", false);
 
 // The number of general background check failures to allow before notifying the
 // user of the failure. User initiated update checks always notify the user of
 // the failure.
 pref("app.update.backgroundMaxErrors", 10);
 
+// The aus update xml certificate checks for application update are disabled on
+// Windows since the mar signature check which is currently only implemented on
+// Windows is sufficient for preventing us from applying a mar that is not
+// valid.
+
 // When |app.update.cert.requireBuiltIn| is true or not specified the
 // final certificate and all certificates the connection is redirected to before
 // the final certificate for the url specified in the |app.update.url|
 // preference must be built-in.
-pref("app.update.cert.requireBuiltIn", true);
+pref("app.update.cert.requireBuiltIn", false);
 
 // When |app.update.cert.checkAttributes| is true or not specified the
 // certificate attributes specified in the |app.update.certs.| preference branch
 // are checked against the certificate for the url specified by the
 // |app.update.url| preference.
-pref("app.update.cert.checkAttributes", true);
-
-// The number of certificate attribute check failures to allow for background
-// update checks before notifying the user of the failure. User initiated update
-// checks always notify the user of the certificate attribute check failure.
-pref("app.update.cert.maxErrors", 5);
-
-// The |app.update.certs.| preference branch contains branches that are
-// sequentially numbered starting at 1 that contain attribute name / value
-// pairs for the certificate used by the server that hosts the update xml file
-// as specified in the |app.update.url| preference. When these preferences are
-// present the following conditions apply for a successful update check:
-// 1. the uri scheme must be https
-// 2. the preference name must exist as an attribute name on the certificate and
-//    the value for the name must be the same as the value for the attribute name
-//    on the certificate.
-// If these conditions aren't met it will be treated the same as when there is
-// no update available. This validation will not be performed when the
-// |app.update.url.override| user preference has been set for testing updates or
-// when the |app.update.cert.checkAttributes| preference is set to false. Also,
-// the |app.update.url.override| preference should ONLY be used for testing.
-// IMPORTANT! firefox.js should also be updated for updates to certs.X.issuerName
-
-// Non-release builds (Nightly, Aurora, etc.) have been switched over to aus4.mozilla.org.
-// This condition protects us against accidentally using it for release builds.
-#ifndef RELEASE_BUILD
-pref("app.update.certs.1.issuerName", "CN=DigiCert Secure Server CA,O=DigiCert Inc,C=US");
-pref("app.update.certs.1.commonName", "aus4.mozilla.org");
-pref("app.update.certs.2.issuerName", "CN=Thawte SSL CA,O=\"Thawte, Inc.\",C=US");
-pref("app.update.certs.2.commonName", "aus4.mozilla.org");
-#else
-pref("app.update.certs.1.issuerName", "OU=Equifax Secure Certificate Authority,O=Equifax,C=US");
-pref("app.update.certs.1.commonName", "aus3.mozilla.org");
-pref("app.update.certs.2.issuerName", "CN=Thawte SSL CA,O=\"Thawte, Inc.\",C=US");
-pref("app.update.certs.2.commonName", "aus3.mozilla.org");
-#endif
+pref("app.update.cert.checkAttributes", false);
 
 // User-settable override to app.update.url for testing purposes.
 //pref("app.update.url.override", "");
 
 // replace newlines with spaces on paste into single-line text boxes
 pref("editor.singleLine.pasteNewlines", 2);
 
 #ifdef MOZ_SERVICES_SYNC
--- a/mobile/android/base/home/BookmarksListAdapter.java
+++ b/mobile/android/base/home/BookmarksListAdapter.java
@@ -9,16 +9,18 @@ import org.mozilla.gecko.R;
 import org.mozilla.gecko.db.BrowserContract.Bookmarks;
 
 import android.content.Context;
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.util.Pair;
 import android.view.View;
 
+import java.util.Collections;
+import java.util.List;
 import java.util.LinkedList;
 
 /**
  * Adapter to back the BookmarksListView with a list of bookmarks.
  */
 class BookmarksListAdapter extends MultiTypeCursorAdapter {
     private static final int VIEW_TYPE_ITEM = 0;
     private static final int VIEW_TYPE_FOLDER = 1;
@@ -35,25 +37,33 @@ class BookmarksListAdapter extends Multi
 
     // mParentStack holds folder id/title pairs that allow us to navigate
     // back up the folder heirarchy.
     private LinkedList<Pair<Integer, String>> mParentStack;
 
     // Refresh folder listener.
     private OnRefreshFolderListener mListener;
 
-    public BookmarksListAdapter(Context context, Cursor cursor) {
+    public BookmarksListAdapter(Context context, Cursor cursor, List<Pair<Integer, String>> parentStack) {
         // Initializing with a null cursor.
         super(context, cursor, VIEW_TYPES, LAYOUT_TYPES);
 
-        mParentStack = new LinkedList<Pair<Integer, String>>();
+        if (parentStack == null) {
+            mParentStack = new LinkedList<Pair<Integer, String>>();
 
-        // Add the root folder to the stack
-        Pair<Integer, String> rootFolder = new Pair<Integer, String>(Bookmarks.FIXED_ROOT_ID, "");
-        mParentStack.addFirst(rootFolder);
+            // Add the root folder to the stack
+            Pair<Integer, String> rootFolder = new Pair<Integer, String>(Bookmarks.FIXED_ROOT_ID, "");
+            mParentStack.addFirst(rootFolder);
+        } else {
+            mParentStack = new LinkedList<Pair<Integer, String>>(parentStack);
+        }
+    }
+
+    public List<Pair<Integer, String>> getParentStack() {
+        return Collections.unmodifiableList(mParentStack);
     }
 
     // Refresh the current folder by executing a new task.
     private void refreshCurrentFolder() {
         if (mListener != null) {
             mListener.onRefreshFolder(mParentStack.peek().first);
         }
     }
--- a/mobile/android/base/home/BookmarksPage.java
+++ b/mobile/android/base/home/BookmarksPage.java
@@ -13,23 +13,26 @@ import org.mozilla.gecko.home.HomePager.
 
 import android.app.Activity;
 import android.content.Context;
 import android.content.res.Configuration;
 import android.database.Cursor;
 import android.os.Bundle;
 import android.support.v4.app.LoaderManager.LoaderCallbacks;
 import android.support.v4.content.Loader;
+import android.util.Pair;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewStub;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import java.util.List;
+
 /**
  * A page in about:home that displays a ListView of bookmarks.
  */
 public class BookmarksPage extends HomeFragment {
     public static final String LOGTAG = "GeckoBookmarksPage";
 
     // Cursor loader ID for list of bookmarks.
     private static final int LOADER_ID_BOOKMARKS_LIST = 0;
@@ -38,16 +41,19 @@ public class BookmarksPage extends HomeF
     private static final String BOOKMARKS_FOLDER_KEY = "folder_id";
 
     // List of bookmarks.
     private BookmarksListView mList;
 
     // Adapter for list of bookmarks.
     private BookmarksListAdapter mListAdapter;
 
+    // Adapter's parent stack.
+    private List<Pair<Integer, String>> mSavedParentStack;
+
     // Reference to the View to display when there are no results.
     private View mEmptyView;
 
     // Callback for cursor loaders.
     private CursorLoaderCallbacks mLoaderCallbacks;
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -78,17 +84,17 @@ public class BookmarksPage extends HomeF
 
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
 
         final Activity activity = getActivity();
 
         // Setup the list adapter.
-        mListAdapter = new BookmarksListAdapter(activity, null);
+        mListAdapter = new BookmarksListAdapter(activity, null, mSavedParentStack);
         mListAdapter.setOnRefreshFolderListener(new OnRefreshFolderListener() {
             @Override
             public void onRefreshFolder(int folderId) {
                 // Restart the loader with folder as the argument.
                 Bundle bundle = new Bundle();
                 bundle.putInt(BOOKMARKS_FOLDER_KEY, folderId);
                 getLoaderManager().restartLoader(LOADER_ID_BOOKMARKS_LIST, bundle, mLoaderCallbacks);
             }
@@ -120,16 +126,20 @@ public class BookmarksPage extends HomeF
         // We use commitAllowingStateLoss() instead of commit() here to avoid
         // an IllegalStateException. If the phone is rotated while Fennec
         // is in the background, onConfigurationChanged() is fired.
         // onConfigurationChanged() is called before onResume(), so
         // using commit() would throw an IllegalStateException since it can't
         // be used between the Activity's onSaveInstanceState() and
         // onResume().
         if (isVisible()) {
+            // The parent stack is saved just so that the folder state can be
+            // restored on rotation.
+            mSavedParentStack = mListAdapter.getParentStack();
+
             getFragmentManager().beginTransaction()
                                 .detach(this)
                                 .attach(this)
                                 .commitAllowingStateLoss();
         }
     }
 
     @Override
--- a/toolkit/mozapps/update/test/chrome/test_0121_check_requireBuiltinCert.xul
+++ b/toolkit/mozapps/update/test/chrome/test_0121_check_requireBuiltinCert.xul
@@ -76,16 +76,19 @@ function testXHRLoad(aEvent) {
   var channel = aEvent.target.channel;
   var cert = channel.securityInfo.QueryInterface(AUS_Ci.nsISSLStatusProvider).
              SSLStatus.QueryInterface(AUS_Ci.nsISSLStatus).serverCert;
   CERT_ATTRS.forEach(function(aCertAttrName) {
     Services.prefs.setCharPref(PREF_APP_UPDATE_CERTS_BRANCH + "1." +
                                aCertAttrName, cert[aCertAttrName]);
   });
 
+  Services.prefs.setBoolPref(PREF_APP_UPDATE_CERT_REQUIREBUILTIN, true);
+  Services.prefs.setBoolPref(PREF_APP_UPDATE_CERT_CHECKATTRS, false);
+
   let url = "https://example.com/" + URL_PATH + "/update.sjs?showDetails=1" +
             getVersionParams();
   gAppUpdateURLDefault = gDefaultPrefBranch.getCharPref(PREF_APP_UPDATE_URL);
   debugDump("setting default pref " + PREF_APP_UPDATE_URL + " to " + url);
   gDefaultPrefBranch.setCharPref(PREF_APP_UPDATE_URL, url);
 
   gRequest = null;
   gUP.checkForUpdates();
--- a/toolkit/mozapps/update/test/chrome/test_0122_check_allowNonBuiltinCert_validCertAttrs.xul
+++ b/toolkit/mozapps/update/test/chrome/test_0122_check_allowNonBuiltinCert_validCertAttrs.xul
@@ -77,16 +77,17 @@ function testXHRLoad(aEvent) {
   var cert = channel.securityInfo.QueryInterface(AUS_Ci.nsISSLStatusProvider).
              SSLStatus.QueryInterface(AUS_Ci.nsISSLStatus).serverCert;
   CERT_ATTRS.forEach(function(aCertAttrName) {
     Services.prefs.setCharPref(PREF_APP_UPDATE_CERTS_BRANCH + "1." +
                                aCertAttrName, cert[aCertAttrName]);
   });
 
   Services.prefs.setBoolPref(PREF_APP_UPDATE_CERT_REQUIREBUILTIN, false);
+  Services.prefs.setBoolPref(PREF_APP_UPDATE_CERT_CHECKATTRS, true);
 
   let url = "https://example.com/" + URL_PATH + "/update.sjs?showDetails=1" +
             getVersionParams();
   gAppUpdateURLDefault = gDefaultPrefBranch.getCharPref(PREF_APP_UPDATE_URL);
   debugDump("setting default pref " + PREF_APP_UPDATE_URL + " to " + url);
   gDefaultPrefBranch.setCharPref(PREF_APP_UPDATE_URL, url);
 
   gRequest = null;
--- a/toolkit/mozapps/update/test/chrome/test_0131_check_invalidCertAttrs_noUpdate.xul
+++ b/toolkit/mozapps/update/test/chrome/test_0131_check_invalidCertAttrs_noUpdate.xul
@@ -30,16 +30,18 @@ const TESTS = [ {
 } ];
 
 function runTest() {
   debugDump("entering");
 
   Services.prefs.setCharPref(PREF_APP_UPDATE_CERT_INVALID_ATTR_NAME,
                              "Invalid Attribute Name");
   Services.prefs.setIntPref(PREF_APP_UPDATE_CERT_ERRORS, 1);
+  Services.prefs.setBoolPref(PREF_APP_UPDATE_CERT_REQUIREBUILTIN, false);
+  Services.prefs.setBoolPref(PREF_APP_UPDATE_CERT_CHECKATTRS, true);
 
   let url = "https://example.com/" + URL_PATH + "/update.sjs?noUpdates=1";
   gAppUpdateURLDefault = gDefaultPrefBranch.getCharPref(PREF_APP_UPDATE_URL);
   debugDump("setting default pref " + PREF_APP_UPDATE_URL + " to " + url);
   gDefaultPrefBranch.setCharPref(PREF_APP_UPDATE_URL, url);
 
   gUP.checkForUpdates();
 }
--- a/toolkit/mozapps/update/test/chrome/test_0132_check_invalidCertAttrs_hasUpdate.xul
+++ b/toolkit/mozapps/update/test/chrome/test_0132_check_invalidCertAttrs_hasUpdate.xul
@@ -30,16 +30,18 @@ const TESTS = [ {
 } ];
 
 function runTest() {
   debugDump("entering");
 
   Services.prefs.setCharPref(PREF_APP_UPDATE_CERT_INVALID_ATTR_NAME,
                              "Invalid Attribute Name");
   Services.prefs.setIntPref(PREF_APP_UPDATE_CERT_ERRORS, 1);
+  Services.prefs.setBoolPref(PREF_APP_UPDATE_CERT_REQUIREBUILTIN, false);
+  Services.prefs.setBoolPref(PREF_APP_UPDATE_CERT_CHECKATTRS, true);
 
   let url = "https://example.com/" + URL_PATH + "/update.sjs?showDetails=1" +
             getVersionParams();
   gAppUpdateURLDefault = gDefaultPrefBranch.getCharPref(PREF_APP_UPDATE_URL);
   debugDump("setting default pref " + PREF_APP_UPDATE_URL + " to " + url);
   gDefaultPrefBranch.setCharPref(PREF_APP_UPDATE_URL, url);
 
   gUP.checkForUpdates();
--- a/toolkit/mozapps/update/test/chrome/test_0141_notify_invalidCertAttrs_noUpdate.xul
+++ b/toolkit/mozapps/update/test/chrome/test_0141_notify_invalidCertAttrs_noUpdate.xul
@@ -27,16 +27,18 @@ const TESTS = [ {
   buttonClick: "finish"
 } ];
 
 function runTest() {
   debugDump("entering");
 
   Services.prefs.setCharPref(PREF_APP_UPDATE_CERT_INVALID_ATTR_NAME,
                              "Invalid Attribute Name");
+  Services.prefs.setBoolPref(PREF_APP_UPDATE_CERT_REQUIREBUILTIN, false);
+  Services.prefs.setBoolPref(PREF_APP_UPDATE_CERT_CHECKATTRS, true);
 
   let url = "https://example.com/" + URL_PATH + "/update.sjs?noUpdates=1";
   gAppUpdateURLDefault = gDefaultPrefBranch.getCharPref(PREF_APP_UPDATE_URL);
   debugDump("setting default pref " + PREF_APP_UPDATE_URL + " to " + url);
   gDefaultPrefBranch.setCharPref(PREF_APP_UPDATE_URL, url);
 
   errorsPrefObserver.init(PREF_APP_UPDATE_CERT_ERRORS,
                           PREF_APP_UPDATE_CERT_MAXERRORS);
--- a/toolkit/mozapps/update/test/chrome/test_0142_notify_invalidCertAttrs_hasUpdate.xul
+++ b/toolkit/mozapps/update/test/chrome/test_0142_notify_invalidCertAttrs_hasUpdate.xul
@@ -27,16 +27,18 @@ const TESTS = [ {
   buttonClick: "finish"
 } ];
 
 function runTest() {
   debugDump("entering");
 
   Services.prefs.setCharPref(PREF_APP_UPDATE_CERT_INVALID_ATTR_NAME,
                              "Invalid Attribute Name");
+  Services.prefs.setBoolPref(PREF_APP_UPDATE_CERT_REQUIREBUILTIN, false);
+  Services.prefs.setBoolPref(PREF_APP_UPDATE_CERT_CHECKATTRS, true);
 
   let url = "https://example.com/" + URL_PATH + "/update.sjs?showDetails=1" +
             getVersionParams();
   gAppUpdateURLDefault = gDefaultPrefBranch.getCharPref(PREF_APP_UPDATE_URL);
   debugDump("setting default pref " + PREF_APP_UPDATE_URL + " to " + url);
   gDefaultPrefBranch.setCharPref(PREF_APP_UPDATE_URL, url);
 
   errorsPrefObserver.init(PREF_APP_UPDATE_CERT_ERRORS,