Merge.
authorDavid Anderson <danderson@mozilla.com>
Tue, 20 Dec 2011 13:42:14 -0800
changeset 111733 dee50ee8534e2380cd5093915626fbe8f58ffbb5
parent 111732 bf524b56351f62174a34e1038ff9123f7e2d0335 (current diff)
parent 85575 a0d32d0353e1bdadf0090c89ad2ec795133619cf (diff)
child 111734 817ac4d9daf21f741ce86dd53d926698e05c1204
push id1708
push userakeybl@mozilla.com
push dateMon, 19 Nov 2012 21:10:21 +0000
treeherdermozilla-beta@27b14fe50103 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone12.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.
.hgtags
accessible/src/atk/nsApplicationAccessibleWrap.cpp
accessible/src/base/nsAccUtils.cpp
accessible/src/base/nsAccessibilityService.h
accessible/src/base/nsDocAccessible.cpp
accessible/src/html/nsHTMLTableAccessible.cpp
accessible/src/xul/nsXULTreeGridAccessible.cpp
b2g/chrome/jar.mn
browser/app/profile/firefox.js
browser/base/content/browser.js
browser/base/content/browser.xul
browser/base/content/syncSetup.js
browser/base/content/syncSetup.xul
browser/base/content/tabbrowser.xml
browser/base/content/test/browser_sanitizeDialog.js
browser/components/preferences/sync.xul
browser/components/tabview/test/Makefile.in
browser/config/version.txt
browser/devtools/highlighter/test/browser_inspector_highlighter.js
browser/locales/en-US/chrome/browser/preferences/sync.dtd
browser/locales/en-US/chrome/browser/syncSetup.dtd
browser/themes/gnomestripe/devtools/eye-toggle.png
browser/themes/pinstripe/devtools/eye-toggle.png
browser/themes/winstripe/devtools/eye-toggle.png
build/unix/gnu-ld-scripts/jemalloc-standalone-linkage-version-script
config/milestone.txt
configure.in
content/base/public/nsDOMFile.h
content/base/public/nsIContent.h
content/base/public/nsIMozWebSocket.idl
content/base/public/nsINode.h
content/base/public/nsIRange.h
content/base/src/nsContentSink.cpp
content/base/src/nsContentUtils.cpp
content/base/src/nsDOMAttribute.cpp
content/base/src/nsDocument.cpp
content/base/src/nsFrameLoader.cpp
content/base/src/nsGenericDOMDataNode.cpp
content/base/src/nsGenericDOMDataNode.h
content/base/src/nsGenericElement.cpp
content/base/src/nsGenericElement.h
content/base/src/nsGkAtomList.h
content/base/src/nsImageLoadingContent.cpp
content/base/src/nsRange.cpp
content/base/src/nsRange.h
content/base/src/nsScriptLoader.cpp
content/base/src/nsScriptLoader.h
content/base/src/nsTextNode.cpp
content/base/src/nsWebSocket.cpp
content/base/src/nsWebSocket.h
content/base/src/nsXMLHttpRequest.cpp
content/base/test/Makefile.in
content/canvas/src/WebGLContext.cpp
content/canvas/src/WebGLContext.h
content/canvas/src/WebGLContextGL.cpp
content/canvas/src/nsCanvasRenderingContext2D.cpp
content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
content/events/public/nsAsyncDOMEvent.h
content/events/public/nsPLDOMEvent.h
content/events/src/nsAsyncDOMEvent.cpp
content/events/src/nsEventListenerManager.cpp
content/events/src/nsEventListenerService.cpp
content/events/src/nsPLDOMEvent.cpp
content/html/content/src/nsGenericHTMLElement.cpp
content/html/content/src/nsHTMLBRElement.cpp
content/html/content/src/nsHTMLBodyElement.cpp
content/html/content/src/nsHTMLButtonElement.cpp
content/html/content/src/nsHTMLDivElement.cpp
content/html/content/src/nsHTMLFontElement.cpp
content/html/content/src/nsHTMLFormElement.cpp
content/html/content/src/nsHTMLFrameElement.cpp
content/html/content/src/nsHTMLHRElement.cpp
content/html/content/src/nsHTMLHeadingElement.cpp
content/html/content/src/nsHTMLIFrameElement.cpp
content/html/content/src/nsHTMLImageElement.cpp
content/html/content/src/nsHTMLInputElement.cpp
content/html/content/src/nsHTMLLIElement.cpp
content/html/content/src/nsHTMLLinkElement.cpp
content/html/content/src/nsHTMLMenuItemElement.cpp
content/html/content/src/nsHTMLMetaElement.cpp
content/html/content/src/nsHTMLOListElement.cpp
content/html/content/src/nsHTMLObjectElement.cpp
content/html/content/src/nsHTMLParagraphElement.cpp
content/html/content/src/nsHTMLPreElement.cpp
content/html/content/src/nsHTMLSelectElement.cpp
content/html/content/src/nsHTMLSharedElement.cpp
content/html/content/src/nsHTMLSharedObjectElement.cpp
content/html/content/src/nsHTMLTableCaptionElement.cpp
content/html/content/src/nsHTMLTableCellElement.cpp
content/html/content/src/nsHTMLTableColElement.cpp
content/html/content/src/nsHTMLTableElement.cpp
content/html/content/src/nsHTMLTableRowElement.cpp
content/html/content/src/nsHTMLTableSectionElement.cpp
content/html/content/src/nsHTMLTextAreaElement.cpp
content/html/content/src/nsHTMLVideoElement.cpp
content/mathml/content/src/nsMathMLElement.cpp
content/media/nsMediaCache.cpp
content/svg/content/src/SVGOrientSMILType.cpp
content/svg/content/src/nsSVGAElement.cpp
content/svg/content/src/nsSVGAltGlyphElement.cpp
content/svg/content/src/nsSVGDefsElement.cpp
content/svg/content/src/nsSVGFilterElement.cpp
content/svg/content/src/nsSVGFilters.cpp
content/svg/content/src/nsSVGForeignObjectElement.cpp
content/svg/content/src/nsSVGGElement.cpp
content/svg/content/src/nsSVGGradientElement.cpp
content/svg/content/src/nsSVGGraphicElement.cpp
content/svg/content/src/nsSVGImageElement.cpp
content/svg/content/src/nsSVGLineElement.cpp
content/svg/content/src/nsSVGMarkerElement.cpp
content/svg/content/src/nsSVGMaskElement.cpp
content/svg/content/src/nsSVGPathElement.cpp
content/svg/content/src/nsSVGPatternElement.cpp
content/svg/content/src/nsSVGPolyElement.cpp
content/svg/content/src/nsSVGSVGElement.cpp
content/svg/content/src/nsSVGStopElement.cpp
content/svg/content/src/nsSVGSwitchElement.cpp
content/svg/content/src/nsSVGSymbolElement.cpp
content/svg/content/src/nsSVGTSpanElement.cpp
content/svg/content/src/nsSVGTextElement.cpp
content/svg/content/src/nsSVGTextPathElement.cpp
content/svg/content/src/nsSVGUseElement.cpp
content/xbl/src/nsXBLPrototypeBinding.cpp
content/xbl/src/nsXBLPrototypeHandler.cpp
content/xbl/src/nsXBLPrototypeHandler.h
content/xul/content/src/nsXULElement.cpp
content/xul/content/src/nsXULElement.h
docshell/base/nsDocShell.cpp
dom/base/nsDOMClassInfo.cpp
dom/base/nsDOMClassInfoClasses.h
dom/base/nsDOMScriptObjectHolder.h
dom/base/nsDOMWindowUtils.cpp
dom/base/nsFocusManager.cpp
dom/base/nsGlobalWindow.cpp
dom/base/nsGlobalWindow.h
dom/base/nsIScriptContext.h
dom/base/nsJSEnvironment.cpp
dom/base/nsJSEnvironment.h
dom/base/nsPIDOMWindow.h
dom/base/nsScriptNameSpaceManager.cpp
dom/indexedDB/IDBDatabase.cpp
dom/indexedDB/IDBFactory.cpp
dom/indexedDB/IDBIndex.cpp
dom/indexedDB/IDBKeyRange.cpp
dom/indexedDB/IDBObjectStore.cpp
dom/indexedDB/IDBObjectStore.h
dom/indexedDB/IDBTransaction.cpp
dom/indexedDB/IndexedDatabaseManager.cpp
dom/indexedDB/LazyIdleThread.cpp
dom/indexedDB/test/test_cmp.html
dom/interfaces/base/domstubs.idl
dom/interfaces/base/nsIDOMWindowUtils.idl
dom/interfaces/canvas/nsIDOMWebGLRenderingContext.idl
dom/interfaces/core/Makefile.in
dom/interfaces/core/nsIDOMNSElement.idl
dom/interfaces/css/nsIDOMCSS2Properties.idl
dom/ipc/ContentChild.h
dom/locales/en-US/chrome/dom/dom.properties
dom/plugins/base/nsPluginInstanceOwner.cpp
dom/plugins/ipc/PluginModuleChild.h
dom/src/jsurl/nsJSProtocolHandler.cpp
dom/src/storage/nsDOMStoragePersistentDB.cpp
dom/src/storage/nsDOMStoragePersistentDB.h
dom/workers/RuntimeService.cpp
dom/workers/XMLHttpRequestPrivate.cpp
editor/libeditor/html/nsHTMLEditor.cpp
extensions/spellcheck/src/mozInlineSpellWordUtil.cpp
extensions/universalchardet/src/base/JpCntx.cpp
extensions/widgetutils/src/nsWidgetUtils.cpp
gfx/angle/README.mozilla
gfx/angle/angle-intrinsic-msvc2005.patch
gfx/angle/angle-limit-identifiers-to-250-chars.patch
gfx/angle/angle-renaming-debug.patch
gfx/angle/src/common/version.h
gfx/angle/src/compiler/BuiltInFunctionEmulator.cpp
gfx/angle/src/libEGL/Display.cpp
gfx/angle/src/libEGL/Display.h
gfx/angle/src/libEGL/Surface.cpp
gfx/angle/src/libGLESv2/Context.cpp
gfx/angle/src/libGLESv2/libGLESv2.cpp
gfx/gl/GLContext.cpp
gfx/gl/GLContext.h
gfx/gl/GLContextProviderWGL.cpp
gfx/layers/ImageLayers.h
gfx/layers/basic/BasicImages.cpp
gfx/layers/basic/BasicLayers.cpp
gfx/layers/basic/BasicLayers.h
gfx/layers/d3d10/CanvasLayerD3D10.cpp
gfx/layers/d3d9/CanvasLayerD3D9.cpp
gfx/layers/opengl/CanvasLayerOGL.cpp
gfx/layers/opengl/LayerManagerOGL.cpp
gfx/src/nsFontMetrics.cpp
gfx/thebes/gfxFont.cpp
gfx/thebes/gfxFont.h
gfx/thebes/gfxFontUtils.cpp
gfx/thebes/gfxMacPlatformFontList.mm
gfx/thebes/gfxPlatformMac.cpp
gfx/thebes/gfxTextRunWordCache.cpp
image/src/imgTools.cpp
intl/chardet/tests/DetectCharset.cpp
intl/chardet/tests/Makefile.in
intl/strres/src/nsStringBundleTextOverride.cpp
ipc/ipdl/ipdl/mgen.py
ipc/testshell/XPCShellEnvironment.cpp
js/jsd/jsd_xpc.cpp
js/src/Makefile.in
js/src/config/milestone.txt
js/src/configure.in
js/src/jsapi.cpp
js/src/jsapi.h
js/src/jscntxt.h
js/src/jsdbgapi.cpp
js/src/jsexn.cpp
js/src/jsfriendapi.cpp
js/src/jsfriendapi.h
js/src/jsgc.cpp
js/src/jsgc.h
js/src/jsgcmark.cpp
js/src/jsgcmark.h
js/src/jsinfer.cpp
js/src/jsinterp.cpp
js/src/jsobj.cpp
js/src/json.cpp
js/src/jsopcode.cpp
js/src/jsopcode.h
js/src/jsscript.cpp
js/src/jsscript.h
js/src/jsscriptinlines.h
js/src/jsxml.cpp
js/src/methodjit/Compiler.cpp
js/src/shell/js.cpp
js/src/shell/jsworkers.cpp
js/xpconnect/loader/mozJSComponentLoader.cpp
js/xpconnect/loader/mozJSComponentLoader.h
js/xpconnect/loader/mozJSSubScriptLoader.cpp
js/xpconnect/public/nsAXPCNativeCallContext.h
js/xpconnect/shell/xpcshell.cpp
js/xpconnect/src/XPCCallContext.cpp
js/xpconnect/src/XPCComponents.cpp
js/xpconnect/src/XPCInlines.h
js/xpconnect/src/XPCJSRuntime.cpp
js/xpconnect/src/XPCMaps.cpp
js/xpconnect/src/XPCMaps.h
js/xpconnect/src/XPCQuickStubs.cpp
js/xpconnect/src/XPCWrappedNative.cpp
js/xpconnect/src/dom_quickstubs.qsconf
js/xpconnect/src/nsXPConnect.cpp
js/xpconnect/src/xpcprivate.h
js/xpconnect/wrappers/CrossOriginWrapper.h
layout/base/FrameLayerBuilder.cpp
layout/base/nsCSSFrameConstructor.cpp
layout/base/nsDisplayList.cpp
layout/base/nsDisplayList.h
layout/base/nsLayoutUtils.cpp
layout/base/nsPresShell.cpp
layout/forms/nsComboboxControlFrame.cpp
layout/generic/TextOverflow.cpp
layout/generic/nsColumnSetFrame.cpp
layout/generic/nsFrame.cpp
layout/generic/nsFrame.h
layout/generic/nsFrameSelection.h
layout/generic/nsGfxScrollFrame.cpp
layout/generic/nsGfxScrollFrame.h
layout/generic/nsIFrame.h
layout/generic/nsSelection.cpp
layout/generic/nsTextFrame.h
layout/generic/nsTextFrameThebes.cpp
layout/generic/nsTextRunTransformations.cpp
layout/mathml/nsMathMLmoFrame.cpp
layout/media/symbols.def
layout/printing/nsPrintEngine.cpp
layout/reftests/scrolling/reftest.list
layout/reftests/selection/reftest.list
layout/reftests/svg/as-image/reftest.list
layout/reftests/svg/reftest.list
layout/reftests/svg/smil/reftest.list
layout/reftests/text-overflow/reftest.list
layout/style/nsCSSProps.cpp
layout/style/nsCSSProps.h
layout/style/nsCSSRuleProcessor.cpp
layout/style/nsComputedDOMStyle.cpp
layout/style/nsComputedDOMStyle.h
layout/style/nsRuleNode.cpp
layout/style/nsStyleStruct.cpp
layout/style/nsStyleStruct.h
layout/style/test/property_database.js
layout/svg/base/src/nsSVGForeignObjectFrame.cpp
layout/svg/base/src/nsSVGForeignObjectFrame.h
layout/svg/base/src/nsSVGGlyphFrame.cpp
layout/svg/base/src/nsSVGGlyphFrame.h
layout/svg/base/src/nsSVGOuterSVGFrame.cpp
layout/svg/base/src/nsSVGPathGeometryFrame.h
layout/tables/nsTableCellFrame.cpp
layout/tables/nsTableFrame.cpp
layout/tables/nsTableOuterFrame.cpp
layout/tables/nsTableOuterFrame.h
layout/tools/reftest/quit.js
layout/tools/reftest/reftest.js
layout/xul/base/src/tree/src/nsTreeBodyFrame.cpp
layout/xul/base/src/tree/src/nsTreeSelection.cpp
mfbt/Util.h
mobile/android/base/AndroidManifest.xml.in
mobile/android/base/GeckoApp.java
mobile/android/base/GeckoAppShell.java
mobile/android/base/Makefile.in
mobile/android/base/db/BrowserContract.java
mobile/android/base/resources/drawable-hdpi-v11/address_bar_url_bg.9.png
mobile/android/base/resources/drawable-hdpi-v11/tabs_more.png
mobile/android/base/resources/drawable-hdpi-v11/tabs_normal.png
mobile/android/base/resources/drawable-hdpi-v11/tabs_plus.png
mobile/android/base/resources/drawable-hdpi-v11/tabs_pressed.png
mobile/android/base/resources/drawable-hdpi-v8/site_security_lock.png
mobile/android/base/resources/drawable-mdpi-v11/address_bar_url_bg.9.png
mobile/android/base/resources/drawable-mdpi-v11/tabs_more.png
mobile/android/base/resources/drawable-mdpi-v11/tabs_normal.png
mobile/android/base/resources/drawable-mdpi-v11/tabs_plus.png
mobile/android/base/resources/drawable-mdpi-v11/tabs_pressed.png
mobile/android/base/resources/drawable-mdpi-v8/site_security_lock.png
mobile/android/base/resources/drawable/abouthome_bg.png
mobile/android/base/resources/drawable/abouthome_topsites_bg.png
mobile/android/base/resources/drawable/tab_close.png
mobile/android/base/resources/drawable/tab_new.png
mobile/android/base/resources/drawable/tabs_tray_bg.9.png
mobile/android/chrome/content/bindings/console.xml
mobile/android/locales/en-US/chrome/browser.dtd
mobile/android/locales/en-US/chrome/preferences.dtd
mobile/xul/app/mobile.js
mobile/xul/confvars.sh
mobile/xul/installer/package-manifest.in
modules/libpref/src/init/all.js
netwerk/base/src/nsIncrementalDownload.cpp
netwerk/cache/nsCacheEntryDescriptor.cpp
netwerk/cache/nsCacheEntryDescriptor.h
netwerk/cache/nsCacheService.cpp
netwerk/cache/nsCacheService.h
netwerk/dns/nsDNSService2.cpp
netwerk/dns/nsHostResolver.cpp
netwerk/dns/nsHostResolver.h
netwerk/protocol/about/nsAboutCacheEntry.cpp
netwerk/protocol/http/SpdySession.cpp
netwerk/protocol/http/SpdyStream.cpp
netwerk/protocol/http/nsHttpChannel.cpp
netwerk/protocol/websocket/WebSocketChannel.cpp
netwerk/protocol/websocket/WebSocketChannel.h
netwerk/streamconv/converters/mozTXTToHTMLConv.cpp
other-licenses/android/APKOpen.cpp
security/manager/ssl/src/nsIdentityChecking.cpp
services/crypto/component/nsSyncJPAKE.cpp
services/sync/locales/en-US/errors.properties
services/sync/modules/constants.js
services/sync/modules/main.js
services/sync/services-sync.js
services/sync/tests/tps/restartless.xml
services/sync/tests/tps/unsigned-1.0.xml
services/sync/tests/tps/unsigned-1.0.xpi
services/sync/tests/unit/test_syncengine_sync.js
services/sync/tests/unit/xpcshell.ini
startupcache/StartupCache.cpp
startupcache/StartupCache.h
startupcache/test/TestStartupCache.cpp
testing/mochitest/runtests.py
toolkit/components/downloads/nsDownloadManager.cpp
toolkit/components/places/History.cpp
toolkit/components/places/nsFaviconService.cpp
toolkit/components/places/nsNavBookmarks.cpp
toolkit/components/places/nsNavBookmarks.h
toolkit/components/places/nsNavHistory.cpp
toolkit/components/places/nsNavHistoryResult.cpp
toolkit/components/places/nsNavHistoryResult.h
toolkit/components/places/nsPlacesImportExportService.cpp
toolkit/components/telemetry/Telemetry.cpp
toolkit/components/telemetry/TelemetryHistograms.h
toolkit/components/telemetry/TelemetryPing.js
toolkit/components/url-classifier/nsUrlClassifierDBService.cpp
toolkit/components/url-classifier/nsUrlClassifierPrefixSet.cpp
toolkit/mozapps/extensions/XPIProvider.jsm
toolkit/mozapps/extensions/content/extensions.js
toolkit/mozapps/installer/packager.mk
toolkit/mozapps/update/nsUpdateService.js
toolkit/themes/gnomestripe/global/filefield.css
toolkit/themes/gnomestripe/mozapps/extensions/cancel.png
toolkit/themes/gnomestripe/mozapps/extensions/category-searchengines.png
toolkit/themes/gnomestripe/mozapps/extensions/discover-logo.png
toolkit/themes/gnomestripe/mozapps/extensions/extensions.svg
toolkit/themes/gnomestripe/mozapps/extensions/heart.png
toolkit/themes/gnomestripe/mozapps/extensions/rating-not-won.png
toolkit/themes/gnomestripe/mozapps/extensions/rating-won.png
toolkit/themes/gnomestripe/mozapps/extensions/stripes-error.png
toolkit/themes/gnomestripe/mozapps/extensions/stripes-info-negative.png
toolkit/themes/gnomestripe/mozapps/extensions/stripes-info-positive.png
toolkit/themes/gnomestripe/mozapps/extensions/stripes-warning.png
toolkit/xre/nsAppRunner.cpp
widget/public/LookAndFeel.h
widget/src/android/AndroidJNI.cpp
widget/src/android/nsWindow.cpp
widget/src/android/nsWindow.h
widget/src/gtk2/nsNativeKeyBindings.cpp
widget/src/gtk2/nsWindow.cpp
widget/src/gtk2/nsWindow.h
widget/src/windows/JumpListBuilder.cpp
widget/src/windows/nsFilePicker.cpp
widget/src/xpwidgets/nsXPLookAndFeel.cpp
widget/tests/TestWinTSF.cpp
xpcom/base/nsConsoleService.h
xpcom/base/nsCycleCollector.cpp
xpcom/base/nsExceptionService.cpp
xpcom/build/BinaryPath.h
xpcom/components/Module.h
xpcom/ds/nsByteBuffer.h
xpcom/ds/nsSupportsPrimitives.h
xpcom/glue/nsBaseHashtable.h
xpcom/glue/nsCOMPtr.h
xpcom/glue/nsTArray.h
xpcom/glue/nsTHashtable.h
xpcom/glue/nsTObserverArray.h
xpcom/glue/pldhash.cpp
xpcom/glue/pldhash.h
xpcom/io/nsLocalFileWin.cpp
xpcom/threads/nsThread.cpp
xpfe/appshell/src/nsWindowMediator.cpp
--- a/.hgtags
+++ b/.hgtags
@@ -66,8 +66,9 @@ 138f593553b66c9f815e8f57870c19d6347f7702
 9eae975b3d6fb7748fe5a3c0113d449b1c7cc0b2 AURORA_BASE_20110524
 138f593553b66c9f815e8f57870c19d6347f7702 UPDATE_PACKAGING_R14
 462c726144bc1fb45b61e774f64ac5d61b4e047c UPDATE_PACKAGING_R14
 5eb553dd2ceae5f88d80f27afc5ef3935c5d43b0 AURORA_BASE_20110705
 41b84b87c816403e1b74963d8094cff0406c989e AURORA_BASE_20110816
 c0983049bcaa9551e5f276d5a77ce154c151e0b0 AURORA_BASE_20110927
 462c726144bc1fb45b61e774f64ac5d61b4e047c UPDATE_PACKAGING_R15
 54bfd8bf682e295ffd7f22fa921ca343957b6c1c AURORA_BASE_20111108
+a8506ab2c65480cf2f85f54e203ea746522c62bb AURORA_BASE_20111220
--- a/Makefile.in
+++ b/Makefile.in
@@ -57,16 +57,17 @@ TIERS += base
 
 #
 # tier "base" - basic setup
 #
 tier_base_dirs = \
 	config \
 	build \
 	probes \
+	mfbt \
 	$(NULL)
 
 ifndef LIBXUL_SDK
 ifeq (android,$(MOZ_WIDGET_TOOLKIT))
 tier_base_dirs += other-licenses/android other-licenses/skia-npapi
 endif
 
 tier_base_dirs += memory
--- a/accessible/build/nsAccessibilityFactory.cpp
+++ b/accessible/build/nsAccessibilityFactory.cpp
@@ -57,17 +57,16 @@ NS_ConstructAccessibilityService(nsISupp
     }
     rv = accessibility->QueryInterface(aIID, aResult);
     NS_ASSERTION(NS_SUCCEEDED(rv), "unable to find correct interface");
     NS_RELEASE(accessibility);
     return rv;
 }
 
 NS_DEFINE_NAMED_CID(NS_ACCESSIBILITY_SERVICE_CID);
-NS_DEFINE_NAMED_CID(NS_ACCESSIBLE_RETRIEVAL_CID);
 
 static const mozilla::Module::CIDEntry kA11yCIDs[] = {
     { &kNS_ACCESSIBILITY_SERVICE_CID, false, NULL, NS_ConstructAccessibilityService },
     { NULL }
 };
 
 static const mozilla::Module::ContractIDEntry kA11yContracts[] = {
     { "@mozilla.org/accessibilityService;1", &kNS_ACCESSIBILITY_SERVICE_CID },
--- a/accessible/src/base/nsAccUtils.cpp
+++ b/accessible/src/base/nsAccUtils.cpp
@@ -435,17 +435,18 @@ nsAccUtils::GetTextAccessibleFromSelecti
     return nsnull;
   }
 
   do {
     nsHyperTextAccessible* textAcc = accessible->AsHyperText();
     if (textAcc)
       return textAcc;
 
-  } while (accessible = accessible->Parent());
+    accessible = accessible->Parent();
+  } while (accessible);
 
   NS_NOTREACHED("We must reach document accessible implementing nsIAccessibleText!");
   return nsnull;
 }
 
 nsresult
 nsAccUtils::ConvertToScreenCoords(PRInt32 aX, PRInt32 aY,
                                   PRUint32 aCoordinateType,
--- a/accessible/src/base/nsDocAccessible.cpp
+++ b/accessible/src/base/nsDocAccessible.cpp
@@ -1560,24 +1560,24 @@ nsDocAccessible::AddDependentIDsFor(nsAc
 {
   for (PRUint32 idx = 0; idx < kRelationAttrsLen; idx++) {
     nsIAtom* relAttr = *kRelationAttrs[idx];
     if (aRelAttr && aRelAttr != relAttr)
       continue;
 
     if (relAttr == nsGkAtoms::_for) {
       if (!aRelProvider->GetContent()->IsHTML() ||
-          aRelProvider->GetContent()->Tag() != nsGkAtoms::label &&
-          aRelProvider->GetContent()->Tag() != nsGkAtoms::output)
+          (aRelProvider->GetContent()->Tag() != nsGkAtoms::label &&
+           aRelProvider->GetContent()->Tag() != nsGkAtoms::output))
         continue;
 
     } else if (relAttr == nsGkAtoms::control) {
       if (!aRelProvider->GetContent()->IsXUL() ||
-          aRelProvider->GetContent()->Tag() != nsGkAtoms::label &&
-          aRelProvider->GetContent()->Tag() != nsGkAtoms::description)
+          (aRelProvider->GetContent()->Tag() != nsGkAtoms::label &&
+           aRelProvider->GetContent()->Tag() != nsGkAtoms::description))
         continue;
     }
 
     IDRefsIterator iter(aRelProvider->GetContent(), relAttr);
     while (true) {
       const nsDependentSubstring id = iter.NextID();
       if (id.IsEmpty())
         break;
--- a/accessible/src/html/nsHTMLTableAccessible.cpp
+++ b/accessible/src/html/nsHTMLTableAccessible.cpp
@@ -101,19 +101,17 @@ nsHTMLTableCellAccessible::NativeState()
 {
   PRUint64 state = nsHyperTextAccessibleWrap::NativeState();
 
   nsIFrame *frame = mContent->GetPrimaryFrame();
   NS_ASSERTION(frame, "No frame for valid cell accessible!");
 
   if (frame) {
     state |= states::SELECTABLE;
-    bool isSelected = false;
-    frame->GetSelected(&isSelected);
-    if (isSelected)
+    if (frame->IsSelected())
       state |= states::SELECTED;
   }
 
   return state;
 }
 
 nsresult
 nsHTMLTableCellAccessible::GetAttributesInternal(nsIPersistentProperties *aAttributes)
--- a/accessible/src/xul/nsXULTreeGridAccessible.cpp
+++ b/accessible/src/xul/nsXULTreeGridAccessible.cpp
@@ -1247,18 +1247,22 @@ nsXULTreeGridCellAccessible::RelationByT
 ////////////////////////////////////////////////////////////////////////////////
 // nsXULTreeGridCellAccessible: public implementation
 
 PRInt32
 nsXULTreeGridCellAccessible::GetColumnIndex() const
 {
   PRInt32 index = 0;
   nsCOMPtr<nsITreeColumn> column = mColumn;
-  while (column = nsCoreUtils::GetPreviousSensibleColumn(column))
+  while (true) {
+    column = nsCoreUtils::GetPreviousSensibleColumn(column);
+    if (!column)
+      break;
     index++;
+  }
 
   return index;
 }
 
 void
 nsXULTreeGridCellAccessible::CellInvalidated()
 {
   nsAutoString textEquiv;
--- a/accessible/tests/mochitest/table/test_table_1.html
+++ b/accessible/tests/mochitest/table/test_table_1.html
@@ -21,28 +21,34 @@ function doTest()
 
   var cell = getNode("col2b");
   var range = document.createRange();
   range.selectNode(cell);
   s.addRange(range);
 
   is(accTable.selectedCellCount, 1, "only one cell selected");
   cell = getNode("col2a");
+  range = document.createRange();
   range.selectNode(cell);
   s.addRange(range);
   cell = getNode("col2c");
+  range = document.createRange();
   range.selectNode(cell);
   s.addRange(range);
   is(accTable.selectedColumnCount, 1, "only one column selected");
+
   cell = getNode("row2a");
+  range = document.createRange();
   range.selectNode(cell);
   s.addRange(range);
   cell = getNode("row2b");
+  range = document.createRange();
   range.selectNode(cell);
   s.addRange(range);
+  range = document.createRange();
   cell = getNode("row2c");
   range.selectNode(cell);
   s.addRange(range);
 
   is(accTable.selectedRowCount, 1, "no cells selected");
 
   var columnDescription;
   works = true;
--- a/b2g/app/b2g.js
+++ b/b2g/app/b2g.js
@@ -44,18 +44,18 @@ pref("browser.chromeURL", "chrome://brow
 pref("browser.homescreenURL", "file:///system/home/homescreen.html");
 #else
 pref("browser.homescreenURL", "file:///data/local/homescreen.html,file:///system/home/homescreen.html");
 #endif
 
 // Device pixel to CSS px ratio, in percent. Set to -1 to calculate based on display density.
 pref("browser.viewport.scaleRatio", -1);
 
-/* allow scrollbars to float above chrome ui */
-pref("ui.scrollbarsCanOverlapContent", 1);
+/* disable text selection */
+pref("browser.ignoreNativeFrameTextSelection", true);
 
 /* cache prefs */
 pref("browser.cache.disk.enable", false);
 pref("browser.cache.disk.capacity", 0); // kilobytes
 pref("browser.cache.disk.smart_size.enabled", false);
 pref("browser.cache.disk.smart_size.first_run", false);
 
 pref("browser.cache.memory.enable", true);
new file mode 100644
--- /dev/null
+++ b/b2g/chrome/content/content.css
@@ -0,0 +1,112 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla B2G.
+ *
+ * The Initial Developer of the Original Code is
+ * Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+@namespace url("http://www.w3.org/1999/xhtml");
+@namespace xul url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
+
+/* Style the scrollbars */
+xul|window xul|scrollbar {
+  display: none;
+}
+
+html xul|scrollbar {
+  display: block;
+}
+
+xul|scrollbar[orient="vertical"] {
+  -moz-appearance: none !important;
+  position: relative;
+  margin-left: -8px;
+  min-width: 8px;
+  max-width: 8px;
+  background-color: transparent !important;
+  background-image: none !important;
+  border: 0px solid transparent !important;
+}
+
+xul|scrollbar[orient="vertical"]:-moz-locale-dir(rtl) {
+  margin-left: 2px;
+  margin-right: -10px;
+}
+
+xul|scrollbar[orient="vertical"] xul|thumb {
+  max-width: 6px !important;
+  min-width: 6px !important;
+}
+
+xul|scrollbar[orient="horizontal"] {
+  -moz-appearance: none !important;
+  position: relative;
+  min-height: 8px;
+  max-height: 8px;
+  margin-top: -8px;
+  background-color: transparent !important;
+  background-image: none !important;
+  border: 0px solid transparent !important;
+}
+
+xul|scrollbar[orient="horizontal"] xul|thumb {
+  max-height: 6px !important;
+  min-height: 6px !important;
+}
+
+xul|scrollbox {
+  overflow-y: scroll;
+  overflow-x: scroll;
+}
+
+xul|scrollbarbutton {
+  min-height: 8px !important;
+  min-width: 8px !important;
+  -moz-appearance: none !important;
+  visibility: hidden;
+}
+
+xul|scrollbarbutton[sbattr="scrollbar-up-top"],
+xul|scrollbarbutton[sbattr="scrollbar-bottom-top"] {
+  display: none;
+}
+
+xul|thumb {
+  background-color: rgba(0, 0, 0, 0.4) !important;
+  -moz-border-top-colors: none !important;
+  -moz-border-bottom-colors: none !important;
+  -moz-border-right-colors: none !important;
+  -moz-border-left-colors: none !important;
+  border: 1px solid rgba(255, 255, 255, 0.4) !important;
+  -moz-border-radius: 3px;
+}
+
--- a/b2g/chrome/jar.mn
+++ b/b2g/chrome/jar.mn
@@ -4,11 +4,12 @@ chrome.jar:
 % content branding %content/branding/
 % content browser %content/
 
 * content/shell.xul                     (content/shell.xul)
   content/shell.js                      (content/shell.js)
   content/touch.js                      (content/touch.js)
   content/commandUtil.js                (content/commandUtil.js)
   content/httpd.js                      (content/httpd.js)
+  content/content.css                   (content/content.css)
 
 % override chrome://global/content/netError.xhtml chrome://browser/content/netError.xhtml
   content/netError.xhtml                (content/netError.xhtml)
--- a/b2g/components/B2GComponents.manifest
+++ b/b2g/components/B2GComponents.manifest
@@ -0,0 +1,2 @@
+# Scrollbars
+category agent-style-sheets browser-content-stylesheet chrome://browser/content/content.css
--- a/browser/app/blocklist.xml
+++ b/browser/app/blocklist.xml
@@ -220,9 +220,9 @@
             <feature>DIRECT3D_9_LAYERS</feature>
       <featureStatus>BLOCKED_DRIVER_VERSION</featureStatus>
       <driverVersion>7.0.0.0</driverVersion>
       <driverVersionComparator>GREATER_THAN_OR_EQUAL</driverVersionComparator>
     </gfxBlacklistEntry>
     </gfxItems>
 
 
-</blocklist>
+</blocklist>
\ No newline at end of file
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -76,16 +76,20 @@ pref("extensions.blocklist.interval", 86
 // blocking them.
 pref("extensions.blocklist.level", 2);
 pref("extensions.blocklist.url", "https://addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/%PRODUCT%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/%PING_COUNT%/%TOTAL_PING_COUNT%/%DAYS_SINCE_LAST_PING%/");
 pref("extensions.blocklist.detailsURL", "https://www.mozilla.com/%LOCALE%/blocklist/");
 pref("extensions.blocklist.itemURL", "https://addons.mozilla.org/%LOCALE%/%APP%/blocked/%blockID%");
 
 pref("extensions.update.autoUpdateDefault", true);
 
+pref("extensions.hotfix.id", "firefox-hotfix@mozilla.org");
+pref("extensions.hotfix.cert.checkAttributes", true);
+pref("extensions.hotfix.certs.1.sha1Fingerprint", "foo");
+
 // Disable add-ons installed into the shared user and shared system areas by
 // default. This does not include the application directory. See the SCOPE
 // constants in AddonManager.jsm for values to use here
 pref("extensions.autoDisableScopes", 15);
 
 // Dictionary download preference
 pref("browser.dictionaries.download.url", "https://addons.mozilla.org/%LOCALE%/firefox/dictionaries/");
 
@@ -922,22 +926,28 @@ pref("browser.taskbar.lists.frequent.ena
 pref("browser.taskbar.lists.recent.enabled", false);
 pref("browser.taskbar.lists.maxListItemCount", 7);
 pref("browser.taskbar.lists.tasks.enabled", true);
 pref("browser.taskbar.lists.refreshInSeconds", 120);
 #endif
 
 #ifdef MOZ_SERVICES_SYNC
 // The sync engines to use.
-pref("services.sync.registerEngines", "Bookmarks,Form,History,Password,Prefs,Tab");
+pref("services.sync.registerEngines", "Bookmarks,Form,History,Password,Prefs,Tab,Addons");
 // Preferences to be synced by default
 pref("services.sync.prefs.sync.accessibility.blockautorefresh", true);
 pref("services.sync.prefs.sync.accessibility.browsewithcaret", true);
 pref("services.sync.prefs.sync.accessibility.typeaheadfind", true);
 pref("services.sync.prefs.sync.accessibility.typeaheadfind.linksonly", true);
+pref("services.sync.prefs.sync.addons.ignoreUserEnabledChanges", true);
+// The addons prefs related to repository verification are intentionally
+// not synced for security reasons. If a system is compromised, a user
+// could weaken the pref locally, install an add-on from an untrusted
+// source, and this would propagate automatically to other,
+// uncompromised Sync-connected devices.
 pref("services.sync.prefs.sync.app.update.mode", true);
 pref("services.sync.prefs.sync.browser.download.manager.closeWhenDone", true);
 pref("services.sync.prefs.sync.browser.download.manager.retention", true);
 pref("services.sync.prefs.sync.browser.download.manager.scanWhenDone", true);
 pref("services.sync.prefs.sync.browser.download.manager.showWhenStarting", true);
 pref("services.sync.prefs.sync.browser.formfill.enable", true);
 pref("services.sync.prefs.sync.browser.link.open_newwindow", true);
 pref("services.sync.prefs.sync.browser.offline-apps.notify", true);
--- a/browser/base/content/aboutDialog.js
+++ b/browser/base/content/aboutDialog.js
@@ -35,16 +35,18 @@
 # the provisions above, a recipient may use your version of this file under
 # the terms of any one of the MPL, the GPL or the LGPL.
 #
 # ***** END LICENSE BLOCK ***** -->
 
 // Services = object with smart getters for common XPCOM services
 Components.utils.import("resource://gre/modules/Services.jsm");
 
+const PREF_EM_HOTFIX_ID = "extensions.hotfix.id";
+
 function init(aEvent)
 {
   if (aEvent.target != document)
     return;
 
   try {
     var distroId = Services.prefs.getCharPref("distribution.id");
     if (distroId) {
@@ -60,22 +62,24 @@ function init(aEvent)
       distroIdField.value = distroId + " - " + distroVersion;
       distroIdField.style.display = "block";
     }
   }
   catch (e) {
     // Pref is unset
   }
 
-  // Include the build ID if this is an "a#" (nightly or aurora) build
+  // Include the build ID and display warning if this is an "a#" (nightly or aurora) build
   let version = Services.appinfo.version;
   if (/a\d+$/.test(version)) {
     let buildID = Services.appinfo.appBuildID;
     let buildDate = buildID.slice(0,4) + "-" + buildID.slice(4,6) + "-" + buildID.slice(6,8);
     document.getElementById("version").textContent += " (" + buildDate + ")";
+    document.getElementById("experimental").hidden = false;
+    document.getElementById("communityDesc").hidden = true;
   }
 
 #ifdef MOZ_OFFICIAL_BRANDING
   // Hide the Charlton trademark attribution for non-en-US/en-GB
   // DO NOT REMOVE without consulting people involved with bug 616193
   let chromeRegistry = Components.classes["@mozilla.org/chrome/chrome-registry;1"].
                        getService(Components.interfaces.nsIXULChromeRegistry);
   let currentLocale = chromeRegistry.getSelectedLocale("global");
@@ -373,16 +377,21 @@ appUpdater.prototype =
       return this;
     }
   },
 
   /**
    * Checks the compatibility of add-ons for the application update.
    */
   checkAddonCompatibility: function() {
+    try {
+      var hotfixID = Services.prefs.getCharPref(PREF_EM_HOTFIX_ID);
+    }
+    catch (e) { }
+
     var self = this;
     AddonManager.getAllAddons(function(aAddons) {
       self.addons = [];
       self.addonsCheckedCount = 0;
       aAddons.forEach(function(aAddon) {
         // Protect against code that overrides the add-ons manager and doesn't
         // implement the isCompatibleWith or the findUpdates method.
         if (!("isCompatibleWith" in aAddon) || !("findUpdates" in aAddon)) {
@@ -397,19 +406,20 @@ appUpdater.prototype =
         // If an add-on isn't appDisabled and isn't userDisabled then it is
         // either active now or the user expects it to be active after the
         // restart. If that is the case and the add-on is not installed by the
         // application and is not compatible with the new application version
         // then the user should be warned that the add-on will become
         // incompatible. If an addon's type equals plugin it is skipped since
         // checking plugins compatibility information isn't supported and
         // getting the scope property of a plugin breaks in some environments
-        // (see bug 566787).
+        // (see bug 566787). The hotfix add-on is also ignored as it shouldn't
+        // block the user from upgrading.
         try {
-          if (aAddon.type != "plugin" &&
+          if (aAddon.type != "plugin" && aAddon.id != hotfixID &&
               !aAddon.appDisabled && !aAddon.userDisabled &&
               aAddon.scope != AddonManager.SCOPE_APPLICATION &&
               aAddon.isCompatible &&
               !aAddon.isCompatibleWith(self.update.appVersion,
                                        self.update.platformVersion))
             self.addons.push(aAddon);
         }
         catch (e) {
--- a/browser/base/content/aboutDialog.xul
+++ b/browser/base/content/aboutDialog.xul
@@ -115,18 +115,29 @@
 #endif
           </vbox>
 
 #ifdef MOZ_UPDATER
           <description class="text-blurb" id="currentChannelText">
             &channel.description.start;<label id="currentChannel"/>&channel.description.end;
           </description>
 #endif
+          <vbox id="experimental" hidden="true">
+            <description class="text-blurb" id="warningDesc">
+              &warningDesc.version;
+#ifdef MOZ_TELEMETRY_REPORTING
+              &warningDesc.telemetry;
+#endif
+            </description>
+            <description class="text-blurb" id="communityExperimentalDesc">
+              &community.exp.start;<label class="text-link" href="http://www.mozilla.org/">&community.exp.mozillaLink;</label>&community.exp.middle;<label class="text-link" href="about:credits">&community.exp.creditsLink;</label>&community.exp.end;
+            </description>
+          </vbox>
           <description class="text-blurb" id="communityDesc">
-            &community.start2;<label class="text-link" href="http://www.mozilla.org/">&community.mozillaLink;</label>&community.middle2;<label class="text-link" href="about:credits">&community.creditsLink;</label>&community.end2;
+            &community.start2;<label class="text-link" href="http://www.mozilla.org/">&community.mozillaLink;</label>&community.middle2;<label class="text-link" href="about:credits">&community.creditsLink;</label>&community.end3;
           </description>
           <description class="text-blurb" id="contributeDesc">
             &contribute.start;<label class="text-link" href="http://www.mozilla.org/contribute/">&contribute.getInvolvedLink;</label>&contribute.end;
           </description>
         </vbox>
       </vbox>
     </hbox>
     <vbox id="bottomBox">
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -2192,24 +2192,17 @@ function openLocation() {
 function openLocationCallback()
 {
   // make sure the DOM is ready
   setTimeout(function() { this.openLocation(); }, 0);
 }
 
 function BrowserOpenTab()
 {
-  if (!gBrowser) {
-    // If there are no open browser windows, open a new one
-    window.openDialog("chrome://browser/content/", "_blank",
-                      "chrome,all,dialog=no", "about:blank");
-    return;
-  }
-  gBrowser.loadOneTab("about:blank", {inBackground: false});
-  focusAndSelectUrlBar();
+  openUILinkIn("about:blank", "tab");
 }
 
 /* Called from the openLocation dialog. This allows that dialog to instruct
    its opener to open a new window and then step completely out of the way.
    Anything less byzantine is causing horrible crashes, rather believably,
    though oddly only on Linux. */
 function delayedOpenWindow(chrome, flags, href, postData)
 {
@@ -3006,19 +2999,20 @@ function getMarkupDocumentViewer()
  *       which performs the same function, but for embedded clients that
  *       don't use a XUL/JS layer. It is important that the logic of
  *       these two routines be kept more or less in sync.
  *       (pinkerton)
  **/
 function FillInHTMLTooltip(tipElement)
 {
   var retVal = false;
-  // Don't show the tooltip if the tooltip node is a XUL element or a document.
+  // Don't show the tooltip if the tooltip node is a XUL element, a document or is disconnected.
   if (tipElement.namespaceURI == "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" ||
-      !tipElement.ownerDocument)
+      !tipElement.ownerDocument ||
+      tipElement.ownerDocument.compareDocumentPosition(tipElement) == document.DOCUMENT_POSITION_DISCONNECTED)
     return retVal;
 
   const XLinkNS = "http://www.w3.org/1999/xlink";
 
 
   var titleText = null;
   var XLinkTitleText = null;
   var SVGTitleText = null;
@@ -3036,20 +3030,20 @@ function FillInHTMLTooltip(tipElement)
     // If the element is barred from constraint validation or valid,
     // the validation message will be the empty string.
     titleText = tipElement.validationMessage;
   }
 
   while (!titleText && !XLinkTitleText && !SVGTitleText && tipElement) {
     if (tipElement.nodeType == Node.ELEMENT_NODE) {
       titleText = tipElement.getAttribute("title");
-      if ((tipElement instanceof HTMLAnchorElement && tipElement.href) ||
-          (tipElement instanceof HTMLAreaElement && tipElement.href) ||
-          (tipElement instanceof HTMLLinkElement && tipElement.href) ||
-          (tipElement instanceof SVGAElement && tipElement.hasAttributeNS(XLinkNS, "href"))) {
+      if ((tipElement instanceof HTMLAnchorElement ||
+           tipElement instanceof HTMLAreaElement ||
+           tipElement instanceof HTMLLinkElement ||
+           tipElement instanceof SVGAElement) && tipElement.href) {
         XLinkTitleText = tipElement.getAttributeNS(XLinkNS, "title");
       }
       if (lookingForSVGTitle &&
           (!(tipElement instanceof SVGElement) ||
            tipElement.parentNode.nodeType == Node.DOCUMENT_NODE)) {
         lookingForSVGTitle = false;
       }
       if (lookingForSVGTitle) {
@@ -8794,17 +8788,17 @@ function switchToTabHavingURI(aURI, aOpe
       return true;
   }
 
   // No opened tab has that url.
   if (aOpenNew) {
     if (isBrowserWindow && isTabEmpty(gBrowser.selectedTab))
       gBrowser.selectedBrowser.loadURI(aURI.spec);
     else
-      openUILinkIn(aURI.spec, "tab", { inBackground: false });
+      openUILinkIn(aURI.spec, "tab");
   }
 
   return false;
 }
 
 function restoreLastSession() {
   let ss = Cc["@mozilla.org/browser/sessionstore;1"].
            getService(Ci.nsISessionStore);
@@ -8904,30 +8898,26 @@ function safeModeRestart()
  *
  * delta is the offset to the history entry that you want to load.
  */
 function duplicateTabIn(aTab, where, delta) {
   let newTab = Cc['@mozilla.org/browser/sessionstore;1']
                  .getService(Ci.nsISessionStore)
                  .duplicateTab(window, aTab, delta);
 
-  var loadInBackground =
-    getBoolPref("browser.tabs.loadBookmarksInBackground", false);
-
   switch (where) {
     case "window":
       gBrowser.hideTab(newTab);
       gBrowser.replaceTabWithWindow(newTab);
       break;
     case "tabshifted":
-      loadInBackground = !loadInBackground;
-      // fall through
+      // A background tab has been opened, nothing else to do here.
+      break;
     case "tab":
-      if (!loadInBackground)
-        gBrowser.selectedTab = newTab;
+      gBrowser.selectedTab = newTab;
       break;
   }
 }
 
 /*
  * When addons are installed/uninstalled, check and see if the number of items
  * on the add-on bar changed:
  * - If an add-on was installed, incrementing the count, show the bar.
--- a/browser/base/content/browser.xul
+++ b/browser/base/content/browser.xul
@@ -50,16 +50,17 @@
 # and other provisions required by the GPL or the LGPL. If you do not delete
 # the provisions above, a recipient may use your version of this file under
 # the terms of any one of the MPL, the GPL or the LGPL.
 #
 # ***** END LICENSE BLOCK *****
 
 <?xml-stylesheet href="chrome://browser/content/browser.css" type="text/css"?>
 <?xml-stylesheet href="chrome://browser/content/places/places.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/devtools/common.css" type="text/css"?>
 <?xml-stylesheet href="chrome://browser/skin/devtools/webconsole.css" type="text/css"?>
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 
 <?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
 <?xul-overlay href="chrome://browser/content/baseMenuOverlay.xul"?>
 <?xul-overlay href="chrome://browser/content/places/placesOverlay.xul"?>
 
 # All DTD information is stored in a separate file so that it can be shared by
@@ -966,59 +967,65 @@
                   contentcontextmenu="contentAreaContextMenu"
                   autocompletepopup="PopupAutoComplete"
                   onclick="return contentAreaClick(event, false);"/>
       <statuspanel id="statusbar-display" inactive="true"/>
     </vbox>
     <splitter id="devtools-side-splitter" hidden="true"/>
     <vbox id="devtools-sidebar-box" hidden="true"
           style="min-width: 18em; width: 22em; max-width: 42em;" persist="width">
-      <toolbar id="devtools-sidebar-toolbar" nowindowdrag="true"/>
+      <toolbar id="devtools-sidebar-toolbar"
+               class="devtools-toolbar"
+               nowindowdrag="true"/>
       <deck id="devtools-sidebar-deck" flex="1"/>
     </vbox>
     <vbox id="browser-border-end" hidden="true" layer="true"/>
   </hbox>
 
   <hbox id="full-screen-warning-container" hidden="true" fadeout="true">
     <hbox style="width: 100%;" pack="center"> <!-- Inner hbox needed due to bug 579776. -->
       <hbox id="full-screen-warning-message">
         <description id="full-screen-warning-text" value="&domFullScreenWarning.label;"></description>
       </hbox>
     </hbox>
   </hbox>
 
   <vbox id="browser-bottombox" layer="true">
     <toolbar id="inspector-toolbar"
+             class="devtools-toolbar"
              nowindowdrag="true"
              hidden="true">
       <vbox flex="1">
         <resizer id="inspector-top-resizer" flex="1" 
                  class="inspector-resizer"
                  dir="top" disabled="true"
                  element="inspector-tree-box"/>
         <hbox>
 #ifdef XP_MACOSX
           <toolbarbutton id="highlighter-closebutton"
                          oncommand="InspectorUI.closeInspectorUI(false);"
                          tooltiptext="&inspectCloseButton.tooltiptext;"/>
 #endif
           <toolbarbutton id="inspector-inspect-toolbutton"
+                         class="devtools-toolbarbutton"
                          label="&inspectButton.label;"
                          accesskey="&inspectButton.accesskey;"
                          command="Inspector:Inspect"/>
           <arrowscrollbox id="inspector-breadcrumbs"
                           flex="1" orient="horizontal"
                           clicktoscroll="true"/>
           <hbox id="inspector-tools">
             <toolbarbutton id="inspector-3D-button"
+                           class="devtools-toolbarbutton"
                            hidden="true"
                            label="&inspect3DButton.label;"
                            accesskey="&inspect3DButton.accesskey;"
                            command="Inspector:Tilt"/>
             <toolbarbutton id="inspector-style-button"
+                           class="devtools-toolbarbutton"
                            label="&inspectStyleButton.label;"
                            accesskey="&inspectStyleButton.accesskey;"
                            command="Inspector:Sidebar"/>
             <!-- registered tools go here -->
           </hbox>
 #ifndef XP_MACOSX
           <toolbarbutton id="highlighter-closebutton"
                          oncommand="InspectorUI.closeInspectorUI(false);"
--- a/browser/base/content/sanitize.js
+++ b/browser/base/content/sanitize.js
@@ -199,34 +199,23 @@ Sanitizer.prototype = {
       {
         return true;
       }
     },
 
     offlineApps: {
       clear: function ()
       {
-        const Cc = Components.classes;
-        const Ci = Components.interfaces;
-        var cacheService = Cc["@mozilla.org/network/cache-service;1"].
-                           getService(Ci.nsICacheService);
-        try {
-          // Offline app data is "timeless", and doesn't respect
-          // the setting of timespan, it always clears everything
-          cacheService.evictEntries(Ci.nsICache.STORE_OFFLINE);
-        } catch(er) {}
-
-        var storageManagerService = Cc["@mozilla.org/dom/storagemanager;1"].
-                                    getService(Ci.nsIDOMStorageManager);
-        storageManagerService.clearOfflineApps();
+        Components.utils.import("resource:///modules/offlineAppCache.jsm");
+        OfflineAppCacheHelper.clear();
       },
 
       get canClear()
       {
-          return true;
+        return true;
       }
     },
 
     history: {
       clear: function ()
       {
         var globalHistory = Components.classes["@mozilla.org/browser/global-history;2"]
                                       .getService(Components.interfaces.nsIBrowserHistory);
--- a/browser/base/content/sanitize.xul
+++ b/browser/base/content/sanitize.xul
@@ -88,16 +88,17 @@
 
     <preferences id="sanitizePreferences">
       <preference id="privacy.cpd.history"               name="privacy.cpd.history"               type="bool"/>
       <preference id="privacy.cpd.formdata"              name="privacy.cpd.formdata"              type="bool"/>
       <preference id="privacy.cpd.downloads"             name="privacy.cpd.downloads"             type="bool" disabled="true"/>
       <preference id="privacy.cpd.cookies"               name="privacy.cpd.cookies"               type="bool"/>
       <preference id="privacy.cpd.cache"                 name="privacy.cpd.cache"                 type="bool"/>
       <preference id="privacy.cpd.sessions"              name="privacy.cpd.sessions"              type="bool"/>
+      <preference id="privacy.cpd.offlineApps"           name="privacy.cpd.offlineApps"           type="bool"/>
       <preference id="privacy.cpd.siteSettings"          name="privacy.cpd.siteSettings"          type="bool"/>
     </preferences>
     
     <preferences id="nonItemPreferences">
       <preference id="privacy.sanitize.timeSpan"
                   name="privacy.sanitize.timeSpan"
                   type="int"/>
     </preferences>
@@ -170,17 +171,17 @@
               class="expander-down"
               persist="class"
               oncommand="gSanitizePromptDialog.toggleItemList();"/>
       <label id="detailsExpanderLabel"
              value="&detailsProgressiveDisclosure.label;"
              accesskey="&detailsProgressiveDisclosure.accesskey;"
              control="detailsExpander"/>
     </hbox>
-    <listbox id="itemList" rows="6" collapsed="true" persist="collapsed">
+    <listbox id="itemList" rows="7" collapsed="true" persist="collapsed">
       <listitem label="&itemHistoryAndDownloads.label;"
                 type="checkbox"
                 accesskey="&itemHistoryAndDownloads.accesskey;"
                 preference="privacy.cpd.history"
                 onsyncfrompreference="return gSanitizePromptDialog.onReadGeneric();"/>
       <listitem label="&itemFormSearchHistory.label;"
                 type="checkbox"
                 accesskey="&itemFormSearchHistory.accesskey;"
@@ -196,16 +197,21 @@
                 accesskey="&itemCache.accesskey;"
                 preference="privacy.cpd.cache"
                 onsyncfrompreference="return gSanitizePromptDialog.onReadGeneric();"/>
       <listitem label="&itemActiveLogins.label;"
                 type="checkbox"
                 accesskey="&itemActiveLogins.accesskey;"
                 preference="privacy.cpd.sessions"
                 onsyncfrompreference="return gSanitizePromptDialog.onReadGeneric();"/>
+      <listitem label="&itemOfflineApps.label;"
+                type="checkbox"
+                accesskey="&itemOfflineApps.accesskey;"
+                preference="privacy.cpd.offlineApps"
+                onsyncfrompreference="return gSanitizePromptDialog.onReadGeneric();"/>
       <listitem label="&itemSitePreferences.label;"
                 type="checkbox"
                 accesskey="&itemSitePreferences.accesskey;"
                 preference="privacy.cpd.siteSettings"
                 noduration="true"
                 onsyncfrompreference="return gSanitizePromptDialog.onReadGeneric();"/>
     </listbox>
 
--- a/browser/base/content/syncSetup.js
+++ b/browser/base/content/syncSetup.js
@@ -577,17 +577,18 @@ var gSyncSetup = {
       this.completePairing();
     }
 
     if (!this._resettingSync) {
       function isChecked(element) {
         return document.getElementById(element).hasAttribute("checked");
       }
 
-      let prefs = ["engine.bookmarks", "engine.passwords", "engine.history", "engine.tabs", "engine.prefs"];
+      let prefs = ["engine.bookmarks", "engine.passwords", "engine.history",
+                   "engine.tabs", "engine.prefs", "engine.addons"];
       for (let i = 0;i < prefs.length;i++) {
         Weave.Svc.Prefs.set(prefs[i], isChecked(prefs[i]));
       }
       this._handleNoScript(false);
       if (Weave.Svc.Prefs.get("firstSync", "") == "notReady")
         Weave.Svc.Prefs.reset("firstSync");
 
       Weave.Service.persistLogin();
--- a/browser/base/content/syncSetup.xul
+++ b/browser/base/content/syncSetup.xul
@@ -115,17 +115,17 @@
     </hbox>
   </wizardpage>
 
   <wizardpage id="pickSetupType"
               label="&syncBrand.fullName.label;"
               onpageshow="gSyncSetup.onPageShow()">
     <vbox align="center" flex="1">
       <description style="padding: 0 7em;">
-        &setup.pickSetupType.description;
+        &setup.pickSetupType.description2;
       </description>
       <spacer flex="3"/>
       <button id="newAccount"
               class="accountChoiceButton"
               label="&button.createNewAccount.label;"
               oncommand="gSyncSetup.startNewAccountSetup()"
               align="center"/>
       <spacer flex="1"/>
@@ -423,16 +423,20 @@
             <checkbox label="&engine.history.label;"
                       accesskey="&engine.history.accesskey;"
                       id="engine.history"
                       checked="true"/>
             <checkbox label="&engine.tabs.label;"
                       accesskey="&engine.tabs.accesskey;"
                       id="engine.tabs"
                       checked="true"/>
+            <checkbox label="&engine.addons.label;"
+                      accesskey="&engine.addons.accesskey;"
+                      id="engine.addons"
+                      checked="true"/>
           </vbox>
         </row>
       </rows>
     </grid>
     </groupbox>
 
     <groupbox id="mergeOptions">
       <radiogroup id="mergeChoiceRadio" pack="start">
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -611,17 +611,18 @@
             onLocationChange: function (aWebProgress, aRequest, aLocation,
                                         aFlags) {
               // OnLocationChange is called for both the top-level content
               // and the subframes.
               let topLevel = aWebProgress.DOMWindow == this.mBrowser.contentWindow;
 
               if (topLevel) {
                 // The document loaded correctly, clear the value if we should
-                if (this.mBrowser.userTypedClear > 0)
+                if (this.mBrowser.userTypedClear > 0 ||
+                    (aRequest && !Components.isSuccessCode(aRequest.status)))
                   this.mBrowser.userTypedValue = null;
 
                 // Clear out the missing plugins list since it's related to the
                 // previous location.
                 this.mBrowser.missingPlugins = null;
 
                 // Don't clear the favicon if this onLocationChange was
                 // triggered by a pushState or a replaceState.  See bug 550565.
@@ -1259,18 +1260,20 @@
               t.setAttribute("fadein", "true");
               setTimeout(function (tabContainer) {
                 tabContainer._handleNewTab(t);
               }, 0, this.tabContainer);
             } else {
               setTimeout(function (tabContainer) {
                 if (t.pinned)
                   tabContainer._handleNewTab(t);
-                else
+                else {
+                  t._animStartTime = Date.now();
                   t.setAttribute("fadein", "true");
+                }
               }, 0, this.tabContainer);
             }
 
             this.tabContainer.appendChild(t);
 
             // invalidate cache, because tabContainer is about to change
             this._browsers = null;
 
@@ -1521,16 +1524,18 @@
                 this._removingTabs.length > 3 /* don't want lots of concurrent animations */ ||
                 aTab.getAttribute("fadein") != "true" /* fade-in transition hasn't been triggered yet */ ||
                 window.getComputedStyle(aTab).maxWidth == "0.1px" /* fade-in transition hasn't moved yet */ ||
                 !Services.prefs.getBoolPref("browser.tabs.animate")) {
               this._endRemoveTab(aTab);
               return;
             }
 
+            aTab._animStartTime = Date.now();
+
             this._blurTab(aTab);
             aTab.style.maxWidth = ""; // ensure that fade-out transition happens
             aTab.removeAttribute("fadein");
 
             setTimeout(function (tab, tabbrowser) {
               if (tab.parentNode &&
                   window.getComputedStyle(tab).maxWidth == "0.1px") {
                 NS_ASSERT(false, "Giving up waiting for the tab closing animation to finish (bug 608589)");
@@ -3252,16 +3257,24 @@
       <handler event="TabSelect" action="this._handleTabSelect();"/>
 
       <handler event="transitionend"><![CDATA[
         if (event.propertyName != "max-width")
           return;
 
         var tab = event.target;
 
+        if (tab._animStartTime) {
+          Services.telemetry.getHistogramById(tab.closing ?
+                                              "FX_TAB_ANIM_CLOSE_MS" :
+                                              "FX_TAB_ANIM_OPEN_MS")
+                            .add(Date.now() - tab._animStartTime);
+          tab._animStartTime = 0;
+        }
+
         if (tab.getAttribute("fadein") == "true") {
           if (tab._fullyOpen)
             this.adjustTabstrip();
           else
             this._handleNewTab(tab);
         } else if (tab.closing) {
           this.tabbrowser._endRemoveTab(tab);
         }
--- a/browser/base/content/test/Makefile.in
+++ b/browser/base/content/test/Makefile.in
@@ -159,16 +159,17 @@ endif
                  browser_bug594131.js \
                  browser_bug595507.js \
                  browser_bug596687.js \
                  browser_bug597218.js \
                  browser_bug598923.js \
                  browser_bug599325.js \
                  browser_bug609700.js \
                  browser_bug616836.js \
+                 browser_bug623155.js \
                  browser_bug623893.js \
                  browser_bug624734.js \
                  browser_bug647886.js \
                  browser_bug655584.js \
                  browser_bug664672.js \
                  browser_bug710878.js \
                  browser_canonizeURL.js \
                  browser_findbarClose.js \
@@ -249,16 +250,17 @@ endif
                  browser_addon_bar_aomlistener.js \
                  test_bug628179.html \
                  browser_wyciwyg_urlbarCopying.js \
                  test_wyciwyg_copying.html \
                  authenticate.sjs \
                  browser_minimize.js \
 								 browser_aboutSyncProgress.js \
                  browser_middleMouse_inherit.js \
+                 redirect_bug623155.sjs \
                  $(NULL)
 
 ifneq (cocoa,$(MOZ_WIDGET_TOOLKIT))
 _BROWSER_FILES += \
 		browser_bug462289.js \
 		$(NULL)
 else
 _BROWSER_FILES += \
--- a/browser/base/content/test/browser_bug594131.js
+++ b/browser/base/content/test/browser_bug594131.js
@@ -30,31 +30,26 @@
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 function test() {
-  let backgroundPref = "browser.tabs.loadBookmarksInBackground";
   let newTab = gBrowser.addTab("http://example.com");
   waitForExplicitFinish();
   newTab.linkedBrowser.addEventListener("load", mainPart, true);
-  
-  Services.prefs.setBoolPref(backgroundPref, true);
-  
+
   function mainPart() {
     newTab.linkedBrowser.removeEventListener("load", mainPart, true);
 
     gBrowser.pinTab(newTab);
     gBrowser.selectedTab = newTab;
-    
-    openUILinkIn("http://example.org/", "current");
+
+    openUILinkIn("http://example.org/", "current", { inBackground: true });
     isnot(gBrowser.selectedTab, newTab, "shouldn't load in background");
-    
-    if (Services.prefs.prefHasUserValue(backgroundPref))
-      Services.prefs.clearUserPref(backgroundPref);
+
     gBrowser.removeTab(newTab);
     gBrowser.removeTab(gBrowser.tabs[1]); // example.org tab
     finish();
   }
 }
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/browser_bug623155.js
@@ -0,0 +1,134 @@
+/* Any copyright is dedicated to the Public Domain.
+   http://creativecommons.org/publicdomain/zero/1.0/ */
+
+const REDIRECT_FROM = "https://example.com/browser/browser/base/content/test/" +
+                      "redirect_bug623155.sjs";
+
+const REDIRECT_TO = "https://www.bank1.com/"; // Bad-cert host.
+
+function isRedirectedURISpec(aURISpec) {
+  return isRedirectedURI(Services.io.newURI(aURISpec, null, null));
+}
+
+function isRedirectedURI(aURI) {
+  // Compare only their before-hash portion.
+  return Services.io.newURI(REDIRECT_TO, null, null)
+                 .equalsExceptRef(aURI);
+}
+
+/*
+   Test.
+
+1. Load
+https://example.com/browser/browser/base/content/test/redirect_bug623155.sjs#BG
+   in a background tab.
+
+2. The redirected URI is <https://www.bank1.com/#BG>, which displayes a cert
+   error page.
+
+3. Switch the tab to foreground.
+
+4. Check the URLbar's value, expecting <https://www.bank1.com/#BG>
+
+5. Load
+https://example.com/browser/browser/base/content/test/redirect_bug623155.sjs#FG
+   in the foreground tab.
+
+6. The redirected URI is <https://www.bank1.com/#FG>. And this is also
+   a cert-error page.
+
+7. Check the URLbar's value, expecting <https://www.bank1.com/#FG>
+
+8. End.
+
+ */
+
+function test() {
+  waitForExplicitFinish();
+
+  // Load a URI in the background.
+  gNewTab = gBrowser.addTab(REDIRECT_FROM + "#BG");
+  gBrowser.getBrowserForTab(gNewTab)
+          .webProgress
+          .addProgressListener(gWebProgressListener,
+                               Components.interfaces.nsIWebProgress
+                                                    .NOTIFY_LOCATION);
+}
+
+var gWebProgressListener = {
+  QueryInterface: function(aIID) {
+    if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
+        aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
+        aIID.equals(Components.interfaces.nsISupports))
+      return this;
+    throw Components.results.NS_NOINTERFACE;
+  },
+
+  // ---------------------------------------------------------------------------
+  // NOTIFY_LOCATION mode should work fine without these methods.
+  //
+  //onStateChange: function() {},
+  //onStatusChange: function() {},
+  //onProgressChange: function() {},
+  //onSecurityChange: function() {},
+  //----------------------------------------------------------------------------
+
+  onLocationChange: function(aWebProgress, aRequest, aLocation, aFlags) {
+    if (!aRequest) {
+      // This is bug 673752, or maybe initial "about:blank".
+      return;
+    }
+
+    ok(gNewTab, "There is a new tab.");
+    ok(isRedirectedURI(aLocation), 
+       "onLocationChange catches only redirected URI.");
+
+    if (aLocation.ref == "BG") {
+      // This is background tab's request.
+      isnot(gNewTab, gBrowser.selectedTab, "This is a background tab.");
+    } else if (aLocation.ref == "FG") {
+      // This is foreground tab's request.
+      is(gNewTab, gBrowser.selectedTab, "This is a foreground tab.");
+    }
+    else {
+      // We shonuld not reach here.
+      ok(false, "This URI hash is not expected:" + aLocation.ref);
+    }
+
+    let isSelectedTab = (gNewTab == gBrowser.selectedTab);
+    setTimeout(delayed, 0, isSelectedTab);
+  }
+};
+
+function delayed(aIsSelectedTab) {
+  // Switch tab and confirm URL bar.
+  if (!aIsSelectedTab) {
+    gBrowser.selectedTab = gNewTab;
+  }
+
+  ok(isRedirectedURISpec(content.location.href),
+     "The content area is redirected. aIsSelectedTab:" + aIsSelectedTab);
+  is(gURLBar.value, content.location.href,
+     "The URL bar shows the content URI. aIsSelectedTab:" + aIsSelectedTab);
+
+  if (!aIsSelectedTab) {
+    // If this was a background request, go on a foreground request.
+    content.location = REDIRECT_FROM + "#FG";
+  }
+  else {
+    // Othrewise, nothing to do remains.
+    finish();
+  }
+}
+
+/* Cleanup */
+registerCleanupFunction(function() {
+  if (gNewTab) {
+    gBrowser.getBrowserForTab(gNewTab)
+            .webProgress
+            .removeProgressListener(gWebProgressListener);
+
+    gBrowser.removeTab(gNewTab);
+  }
+  gNewTab = null;
+});
--- a/browser/base/content/test/browser_sanitizeDialog.js
+++ b/browser/base/content/test/browser_sanitizeDialog.js
@@ -458,16 +458,118 @@ var gAllTests = [
       this.checkDetails(false);
 
       // Show details
       this.toggleDetails();
       this.checkDetails(true);
       this.cancelDialog();
     };
     wh.open();
+  },
+  function () {
+    // Test for offline apps data and cache deletion
+
+    // Prepare stuff, we will work with www.example.com
+    var URL = "http://www.example.com";
+
+    var ios = Cc["@mozilla.org/network/io-service;1"]
+              .getService(Ci.nsIIOService);
+    var URI = ios.newURI(URL, null, null);
+
+    var sm = Cc["@mozilla.org/scriptsecuritymanager;1"]
+             .getService(Ci.nsIScriptSecurityManager);
+    var principal = sm.getCodebasePrincipal(URI);
+
+    // Give www.example.com privileges to store offline data
+    var pm = Cc["@mozilla.org/permissionmanager;1"]
+             .getService(Ci.nsIPermissionManager);
+    pm.add(URI, "offline-app", Ci.nsIPermissionManager.ALLOW_ACTION);
+    pm.add(URI, "offline-app", Ci.nsIOfflineCacheUpdateService.ALLOW_NO_WARN);
+
+    // Store some user data to localStorage
+    var dsm = Cc["@mozilla.org/dom/storagemanager;1"]
+             .getService(Ci.nsIDOMStorageManager);
+    var localStorage = dsm.getLocalStorageForPrincipal(principal, URL);
+    localStorage.setItem("test", "value");
+
+    // Store something to the offline cache
+    const nsICache = Components.interfaces.nsICache;
+    var cs = Components.classes["@mozilla.org/network/cache-service;1"]
+             .getService(Components.interfaces.nsICacheService);
+    var session = cs.createSession(URL + "/manifest", nsICache.STORE_OFFLINE, nsICache.STREAM_BASED);
+    var cacheEntry = session.openCacheEntry(URL, nsICache.ACCESS_READ_WRITE, false);
+    var stream = cacheEntry.openOutputStream(0);
+    var content = "content";
+    stream.write(content, content.length);
+    stream.close();
+    cacheEntry.close();
+
+    // Open the dialog
+    let wh = new WindowHelper();
+    wh.onload = function () {
+      this.selectDuration(Sanitizer.TIMESPAN_EVERYTHING);
+      // Show details
+      this.toggleDetails();
+      // Clear only offlineApps
+      this.uncheckAllCheckboxes();
+      this.checkPrefCheckbox("offlineApps", true);
+      this.acceptDialog();
+
+      // Check all has been deleted (data, cache)
+      is(localStorage.length, 0, "DOM storage cleared");
+
+      var size = -1;
+      var visitor = {
+        visitDevice: function (deviceID, deviceInfo)
+        {
+          if (deviceID == "offline")
+            size = deviceInfo.totalSize;
+
+          // Do not enumerate entries
+          return false;
+        },
+
+        visitEntry: function (deviceID, entryInfo)
+        {
+          // Do not enumerate entries.
+          return false;
+        }
+      };
+      cs.visitEntries(visitor);
+      is(size, 0, "offline application cache entries evicted");
+    };
+    wh.open();
+  },
+  function () {
+    // Test for offline apps permission deletion
+
+    // Prepare stuff, we will work with www.example.com
+    var URL = "http://www.example.com";
+
+    var ios = Cc["@mozilla.org/network/io-service;1"]
+              .getService(Ci.nsIIOService);
+    var URI = ios.newURI(URL, null, null);
+
+    // Open the dialog
+    let wh = new WindowHelper();
+    wh.onload = function () {
+      this.selectDuration(Sanitizer.TIMESPAN_EVERYTHING);
+      // Show details
+      this.toggleDetails();
+      // Clear only offlineApps
+      this.uncheckAllCheckboxes();
+      this.checkPrefCheckbox("siteSettings", true);
+      this.acceptDialog();
+
+      // Check all has been deleted (privileges, data, cache)
+      var pm = Cc["@mozilla.org/permissionmanager;1"]
+               .getService(Ci.nsIPermissionManager);
+      is(pm.testPermission(URI, "offline-app"), 0, "offline-app permissions removed");
+    };
+    wh.open();
   }
 ];
 
 // Used as the download database ID for a new download.  Incremented for each
 // new download.  See addDownloadWithMinutesAgo().
 var gDownloadId = 5555551;
 
 // Index in gAllTests of the test currently being run.  Incremented for each
@@ -552,26 +654,34 @@ WindowHelper.prototype = {
     is(cb.length, 1, "found checkbox for " + pref + " preference");
     if (cb[0].checked != aCheckState)
       cb[0].click();
   },
 
   /**
    * Makes sure all the checkboxes are checked.
    */
-  checkAllCheckboxes: function () {
+  _checkAllCheckboxesCustom: function (check) {
     var cb = this.win.document.querySelectorAll("#itemList > [preference]");
     ok(cb.length > 1, "found checkboxes for preferences");
     for (var i = 0; i < cb.length; ++i) {
       var pref = this.win.document.getElementById(cb[i].getAttribute("preference"));
-      if (!pref.value)
+      if (!!pref.value ^ check)
         cb[i].click();
     }
   },
 
+  checkAllCheckboxes: function () {
+    this._checkAllCheckboxesCustom(true);
+  },
+
+  uncheckAllCheckboxes: function () {
+    this._checkAllCheckboxesCustom(false);
+  },
+
   /**
    * @return The details progressive disclosure button
    */
   getDetailsButton: function () {
     return this.win.document.getElementById("detailsExpander");
   },
 
   /**
--- a/browser/base/content/test/browser_sanitizeDialog_treeView.js
+++ b/browser/base/content/test/browser_sanitizeDialog_treeView.js
@@ -396,18 +396,19 @@ WindowHelper.prototype = {
    *        The amount and direction to move
    */
   moveGrippyBy: function (aDelta) {
     if (aDelta === 0)
       return;
     let key = aDelta < 0 ? "UP" : "DOWN";
     let abs = Math.abs(aDelta);
     let treechildren = this.getTree().treeBoxObject.treeBody;
+    treechildren.focus();
     for (let i = 0; i < abs; i++) {
-      EventUtils.sendKey(key, treechildren);
+      EventUtils.sendKey(key);
     }
   },
 
   /**
    * Selects a duration in the duration dropdown.
    *
    * @param aDurVal
    *        One of the Sanitizer.TIMESPAN_* values
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/redirect_bug623155.sjs
@@ -0,0 +1,16 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+const REDIRECT_TO = "https://www.bank1.com/"; // Bad-cert host.
+
+function handleRequest(aRequest, aResponse) {
+ // Set HTTP Status
+ aResponse.setStatusLine(aRequest.httpVersion, 301, "Moved Permanently");
+
+ // Set redirect URI, mirroring the hash value.
+ let hash = (/\#.+/.test(aRequest.path))? 
+              "#" + aRequest.path.split("#")[1]:
+              "";
+ aResponse.setHeader("Location", REDIRECT_TO + hash);
+}
--- a/browser/base/content/urlbarBindings.xml
+++ b/browser/base/content/urlbarBindings.xml
@@ -358,18 +358,16 @@
             if (isMouseEvent)
               where = whereToOpenLink(aTriggeringEvent, false, false);
 
             if (where == "current") {
               loadCurrent();
             } else {
               this.handleRevert();
               let params = { allowThirdPartyFixup: true, postData: postData };
-              if (altEnter)
-                params.inBackground = false;
               if (!this.valueIsTyped)
                 params.isUTF8 = true;
               openUILinkIn(url, where, params);
             }
           } else {
             loadCurrent();
           }
         ]]></body>
@@ -939,17 +937,17 @@
       </method>
 
     </implementation>
   </binding>
 
   <binding id="geolocation-notification" extends="chrome://global/content/bindings/notification.xml#popup-notification">
     <content align="start">
       <xul:image class="popup-notification-icon"
-                 xbl:inherits="popupid"/>
+                 xbl:inherits="popupid,src=icon"/>
       <xul:vbox flex="1">
         <xul:description class="popup-notification-description"
                          xbl:inherits="xbl:text=label"/>
         <xul:spacer flex="1"/>
         <xul:hbox class="popup-notification-button-container"
                   pack="end" align="center">
           <xul:label anonid="learnmore" class="text-link geolocation-text-link"/>
           <xul:spacer flex="1"/>
@@ -983,17 +981,17 @@
         link.href = formatter.formatURLPref("browser.geolocation.warning.infoURL");
       ]]></constructor>
     </implementation>
   </binding>
 
   <binding id="addon-progress-notification" extends="chrome://global/content/bindings/notification.xml#popup-notification">
     <content align="start">
       <xul:image class="popup-notification-icon"
-                 xbl:inherits="popupid"/>
+                 xbl:inherits="popupid,src=icon"/>
       <xul:vbox flex="1">
         <xul:description class="popup-notification-description addon-progress-description"
                          xbl:inherits="xbl:text=label"/>
         <xul:spacer flex="1"/>
         <xul:hbox align="center">
           <xul:progressmeter anonid="progressmeter" flex="1" mode="undetermined" class="popup-progress-meter"/>
           <xul:button anonid="cancel" class="popup-progress-cancel" oncommand="document.getBindingParent(this).cancel()"/>
         </xul:hbox>
--- a/browser/base/content/utilityOverlay.js
+++ b/browser/base/content/utilityOverlay.js
@@ -95,22 +95,17 @@ function openUILink( url, e, ignoreButto
  * The event may be a mouse event (click, double-click, middle-click) or keypress event (enter).
  *
  * On Windows, the modifiers are:
  * Ctrl        new tab, selected
  * Shift       new window
  * Ctrl+Shift  new tab, in background
  * Alt         save
  *
- * You can swap Ctrl and Ctrl+shift by toggling the hidden pref
- * browser.tabs.loadBookmarksInBackground (not browser.tabs.loadInBackground, which
- * is for content area links).
- *
- * Middle-clicking is the same as Ctrl+clicking (it opens a new tab) and it is
- * subject to the shift modifier and pref in the same way.
+ * Middle-clicking is the same as Ctrl+clicking (it opens a new tab).
  *
  * Exceptions: 
  * - Alt is ignored for menu items selected using the keyboard so you don't accidentally save stuff.  
  *    (Currently, the Alt isn't sent here at all for menu items, but that will change in bug 126189.)
  * - Alt is hard to use in context menus, because pressing Alt closes the menu.
  * - Alt can't be used on the bookmarks toolbar because Alt is used for "treat this as something draggable".
  * - The button is ignored for the middle-click-paste-URL feature, since it's always a middle-click.
  */
@@ -241,20 +236,20 @@ function openLinkIn(url, where, params) 
     sa.AppendElement(aPostData);
     sa.AppendElement(allowThirdPartyFixupSupports);
 
     Services.ww.openWindow(w || window, getBrowserURL(),
                            null, "chrome,dialog=no,all", sa);
     return;
   }
 
-  let loadInBackground = aInBackground;
+  let loadInBackground = where == "current" ? false : aInBackground;
   if (loadInBackground == null) {
     loadInBackground = aFromChrome ?
-                         getBoolPref("browser.tabs.loadBookmarksInBackground") :
+                         false :
                          getBoolPref("browser.tabs.loadInBackground");
   }
 
   if (where == "current" && w.gBrowser.selectedTab.pinned) {
     try {
       let uriObj = Services.io.newURI(url, null, null);
       if (!uriObj.schemeIs("javascript") &&
           w.gBrowser.currentURI.host != uriObj.host) {
@@ -298,16 +293,19 @@ function openLinkIn(url, where, params) 
   // content but don't raise the window, since the URI we just loaded may have
   // resulted in a new frontmost window (e.g. "javascript:window.open('');").
   var fm = Components.classes["@mozilla.org/focus-manager;1"].
              getService(Components.interfaces.nsIFocusManager);
   if (window == fm.activeWindow)
     w.content.focus();
   else
     w.gBrowser.selectedBrowser.focus();
+
+  if (!loadInBackground && url == "about:blank")
+    w.focusAndSelectUrlBar();
 }
 
 // Used as an onclick handler for UI elements with link-like behavior.
 // e.g. onclick="checkForMiddleClick(this, event);"
 function checkForMiddleClick(node, event) {
   // We should be using the disabled property here instead of the attribute,
   // but some elements that this function is used with don't support it (e.g.
   // menuitem).
--- a/browser/components/places/src/PlacesUIUtils.jsm
+++ b/browser/components/places/src/PlacesUIUtils.jsm
@@ -724,17 +724,19 @@ var PlacesUIUtils = {
                        .itemHasAnnotation(aNode.itemId, this.LOAD_IN_SIDEBAR_ANNO)) {
           let browserWin = this._getTopBrowserWin();
           if (browserWin) {
             browserWin.openWebPanel(aNode.title, aNode.uri);
             return;
           }
         }
       }
-      aWindow.openUILinkIn(aNode.uri, aWhere);
+      aWindow.openUILinkIn(aNode.uri, aWhere, {
+        inBackground: Services.prefs.getBoolPref("browser.tabs.loadBookmarksInBackground")
+      });
     }
   },
 
   /**
    * Helper for guessing scheme from an url string.
    * Used to avoid nsIURI overhead in frequently called UI functions.
    *
    * @param aUrlString the url to guess the scheme from.
--- a/browser/components/preferences/advanced.js
+++ b/browser/components/preferences/advanced.js
@@ -63,17 +63,18 @@ var gAdvancedPane = {
 
 #ifdef MOZ_UPDATER
     this.updateReadPrefs();
 #endif
     this.updateOfflineApps();
 #ifdef MOZ_CRASHREPORTER
     this.initSubmitCrashes();
 #endif
-    this.updateActualCacheSize();
+    this.updateActualCacheSize("disk");
+    this.updateActualCacheSize("offline");
   },
 
   /**
    * Stores the identity of the current tab in preferences so that the selected
    * tab can be persisted between openings of the preferences window.
    */
   tabSelectionChanged: function ()
   {
@@ -197,40 +198,45 @@ var gAdvancedPane = {
    * Displays a dialog in which proxy settings may be changed.
    */
   showConnections: function ()
   {
     document.documentElement.openSubDialog("chrome://browser/content/preferences/connection.xul",
                                            "", null);
   },
  
-  // Retrieves the amount of space currently used by disk cache
-  updateActualCacheSize: function ()
+  // Retrieves the amount of space currently used by disk or offline cache
+  updateActualCacheSize: function (device)
   {
     var visitor = {
       visitDevice: function (deviceID, deviceInfo)
       {
-        if (deviceID == "disk") {
-          var actualSizeLabel = document.getElementById("actualCacheSize");
+        if (deviceID == device) {
+          var actualSizeLabel = document.getElementById(device == "disk" ?
+                                                        "actualDiskCacheSize" :
+                                                        "actualAppCacheSize");
           var sizeStrings = DownloadUtils.convertByteUnits(deviceInfo.totalSize);
           var prefStrBundle = document.getElementById("bundlePreferences");
-          var sizeStr = prefStrBundle.getFormattedString("actualCacheSize",
-                                                          sizeStrings);
+          var sizeStr = prefStrBundle.getFormattedString(device == "disk" ?
+                                                         "actualDiskCacheSize" :
+                                                         "actualAppCacheSize",
+                                                         sizeStrings);
           actualSizeLabel.value = sizeStr;
         }
         // Do not enumerate entries
         return false;
       },
 
       visitEntry: function (deviceID, entryInfo)
       {
         // Do not enumerate entries.
         return false;
       }
     };
+
     var cacheService =
       Components.classes["@mozilla.org/network/cache-service;1"]
                 .getService(Components.interfaces.nsICacheService);
     cacheService.visitEntries(visitor);
   },
 
   updateCacheSizeUI: function (smartSizeEnabled)
   {
@@ -269,21 +275,33 @@ var gAdvancedPane = {
   },
 
   /**
    * Clears the cache.
    */
   clearCache: function ()
   {
     var cacheService = Components.classes["@mozilla.org/network/cache-service;1"]
-                         	       .getService(Components.interfaces.nsICacheService);
+                                 .getService(Components.interfaces.nsICacheService);
     try {
       cacheService.evictEntries(Components.interfaces.nsICache.STORE_ANYWHERE);
     } catch(ex) {}
-    this.updateActualCacheSize();
+    this.updateActualCacheSize("disk");
+  },
+
+  /**
+   * Clears the application cache.
+   */
+  clearOfflineAppCache: function ()
+  {
+    Components.utils.import("resource:///modules/offlineAppCache.jsm");
+    OfflineAppCacheHelper.clear();
+
+    this.updateActualCacheSize("offline");
+    this.updateOfflineApps();
   },
 
   readOfflineNotify: function()
   {
     var pref = document.getElementById("browser.offline-apps.notify");
     var button = document.getElementById("offlineNotifyExceptions");
     button.disabled = !pref.value;
     return pref.value;
@@ -427,16 +445,17 @@ var gAdvancedPane = {
                        .getService(Components.interfaces.nsIPermissionManager);
     pm.remove(host, "offline-app",
               Components.interfaces.nsIPermissionManager.ALLOW_ACTION);
     pm.remove(host, "offline-app",
               Components.interfaces.nsIOfflineCacheUpdateService.ALLOW_NO_WARN);
 
     list.removeChild(item);
     gAdvancedPane.offlineAppSelected();
+    this.updateActualCacheSize("offline");
   },
 
   // UPDATE TAB
 
   /*
    * Preferences:
    *
    * app.update.enabled
--- a/browser/components/preferences/advanced.xul
+++ b/browser/components/preferences/advanced.xul
@@ -229,22 +229,22 @@
             <hbox align="center">
               <description flex="1" control="connectionSettings">&connectionDesc.label;</description>
               <button id="connectionSettings" icon="network" label="&connectionSettings.label;"
                       accesskey="&connectionSettings.accesskey;"
                       oncommand="gAdvancedPane.showConnections();"/>
             </hbox>
           </groupbox>
 
-          <!-- Cache/Offline apps -->
-          <groupbox id="offlineGroup">
-            <caption label="&offlineStorage.label;"/>
- 
+          <!-- Cache -->
+          <groupbox id="cacheGroup">
+            <caption label="&httpCache.label;"/>
+
             <hbox align="center">
-              <label id="actualCacheSize" flex="1"/>
+              <label id="actualDiskCacheSize" flex="1"/>
               <button id="clearCacheButton" icon="clear"
                       label="&clearCacheNow.label;" accesskey="&clearCacheNow.accesskey;"
                       oncommand="gAdvancedPane.clearCache();"/>
             </hbox>
             <checkbox preference="browser.cache.disk.smart_size.enabled"
                       id="allowSmartSize" flex="1"
                       onsyncfrompreference="return gAdvancedPane.readSmartSizeEnabled();"
                       label="&overrideSmartCacheSize.label;" 
@@ -255,29 +255,41 @@
                      value="&limitCacheSizeBefore.label;"/>
               <textbox id="cacheSize" type="number" size="4" max="1024"
                        preference="browser.cache.disk.capacity"
                        onsyncfrompreference="return gAdvancedPane.readCacheSize();"
                        onsynctopreference="return gAdvancedPane.writeCacheSize();"
                        aria-labelledby="useCacheBefore cacheSize useCacheAfter"/>
               <label id="useCacheAfter" flex="1">&limitCacheSizeAfter.label;</label>
             </hbox>
+          </groupbox>
+
+          <!-- Offline apps -->
+          <groupbox id="offlineGroup">
+            <caption label="&offlineStorage2.label;"/>
+
+            <hbox align="center">
+              <label id="actualAppCacheSize" flex="1"/>
+              <button id="clearOfflineAppCacheButton" icon="clear"
+                      label="&clearOfflineAppCacheNow.label;" accesskey="&clearOfflineAppCacheNow.accesskey;"
+                      oncommand="gAdvancedPane.clearOfflineAppCache();"/>
+            </hbox>
             <hbox align="center">
               <checkbox id="offlineNotify" flex="1"
                         label="&offlineNotify.label;" accesskey="&offlineNotify.accesskey;"
                         preference="browser.offline-apps.notify"
                         onsyncfrompreference="return gAdvancedPane.readOfflineNotify();"/>
               <button id="offlineNotifyExceptions"
                       label="&offlineNotifyExceptions.label;"
                       accesskey="&offlineNotifyExceptions.accesskey;"
                       oncommand="gAdvancedPane.showOfflineExceptions();"/>
             </hbox>
             <hbox>
               <vbox flex="1">
-                <label id="offlineAppsListLabel">&offlineAppsList.label;</label>
+                <label id="offlineAppsListLabel">&offlineAppsList2.label;</label>
                 <listbox id="offlineAppsList"
                          style="height: &offlineAppsList.height;;"
                          flex="1"
                          aria-labelledby="offlineAppsListLabel"
                          onselect="gAdvancedPane.offlineAppSelected(event);">
                 </listbox>
               </vbox>
               <vbox pack="end">
--- a/browser/components/preferences/applications.js
+++ b/browser/components/preferences/applications.js
@@ -474,20 +474,16 @@ HandlerInfoWrapper.prototype = {
 
   //**************************************************************************//
   // Icons
 
   get smallIcon() {
     return this._getIcon(16);
   },
 
-  get largeIcon() {
-    return this._getIcon(32);
-  },
-
   _getIcon: function(aSize) {
     if (this.primaryExtension)
       return "moz-icon://goat." + this.primaryExtension + "?size=" + aSize;
 
     if (this.wrappedHandlerInfo instanceof Ci.nsIMIMEInfo)
       return "moz-icon://goat?size=" + aSize + "&contentType=" + this.type;
 
     // FIXME: consider returning some generic icon when we can't get a URL for
@@ -816,54 +812,47 @@ FeedHandlerInfo.prototype = {
   },
 
 
   //**************************************************************************//
   // Icons
 
   get smallIcon() {
     return this._smallIcon;
-  },
-
-  get largeIcon() {
-    return this._largeIcon;
   }
 
 };
 
 var feedHandlerInfo = {
   __proto__: new FeedHandlerInfo(TYPE_MAYBE_FEED),
   _prefSelectedApp: PREF_FEED_SELECTED_APP, 
   _prefSelectedWeb: PREF_FEED_SELECTED_WEB, 
   _prefSelectedAction: PREF_FEED_SELECTED_ACTION, 
   _prefSelectedReader: PREF_FEED_SELECTED_READER,
   _smallIcon: "chrome://browser/skin/feeds/feedIcon16.png",
-  _largeIcon: "chrome://browser/skin/feeds/feedIcon.png",
   _appPrefLabel: "webFeed"
 }
 
 var videoFeedHandlerInfo = {
   __proto__: new FeedHandlerInfo(TYPE_MAYBE_VIDEO_FEED),
   _prefSelectedApp: PREF_VIDEO_FEED_SELECTED_APP, 
   _prefSelectedWeb: PREF_VIDEO_FEED_SELECTED_WEB, 
   _prefSelectedAction: PREF_VIDEO_FEED_SELECTED_ACTION, 
   _prefSelectedReader: PREF_VIDEO_FEED_SELECTED_READER,
   _smallIcon: "chrome://browser/skin/feeds/videoFeedIcon16.png",
-  _largeIcon: "chrome://browser/skin/feeds/videoFeedIcon.png",
   _appPrefLabel: "videoPodcastFeed"
 }
 
 var audioFeedHandlerInfo = {
   __proto__: new FeedHandlerInfo(TYPE_MAYBE_AUDIO_FEED),
   _prefSelectedApp: PREF_AUDIO_FEED_SELECTED_APP, 
   _prefSelectedWeb: PREF_AUDIO_FEED_SELECTED_WEB, 
   _prefSelectedAction: PREF_AUDIO_FEED_SELECTED_ACTION, 
   _prefSelectedReader: PREF_AUDIO_FEED_SELECTED_READER,
   _smallIcon: "chrome://browser/skin/feeds/audioFeedIcon16.png",
-  _largeIcon: "chrome://browser/skin/feeds/audioFeedIcon.png",
   _appPrefLabel: "audioPodcastFeed"
 }
 
 
 //****************************************************************************//
 // Prefpane Controller
 
 var gApplicationsPane = {
--- a/browser/components/preferences/sync.xul
+++ b/browser/components/preferences/sync.xul
@@ -57,16 +57,17 @@
             onpaneload="gSyncPane.init()">
 
     <preferences>
       <preference id="engine.bookmarks" name="services.sync.engine.bookmarks" type="bool"/>
       <preference id="engine.history"   name="services.sync.engine.history"   type="bool"/>
       <preference id="engine.tabs"      name="services.sync.engine.tabs"      type="bool"/>
       <preference id="engine.prefs"     name="services.sync.engine.prefs"     type="bool"/>
       <preference id="engine.passwords" name="services.sync.engine.passwords" type="bool"/>
+      <preference id="engine.addons"    name="services.sync.engine.addons"    type="bool"/>
     </preferences>
 
 
     <script type="application/javascript"
             src="chrome://browser/content/preferences/sync.js"/>
     <script type="application/javascript"
             src="chrome://browser/content/syncUtils.js"/>
 
@@ -147,16 +148,21 @@
                             accesskey="&engine.history.accesskey;"
                             preference="engine.history"/>
                 </richlistitem>
                 <richlistitem>
                   <checkbox label="&engine.tabs.label;"
                             accesskey="&engine.tabs.accesskey;"
                             preference="engine.tabs"/>
                 </richlistitem>
+                <richlistitem>
+                  <checkbox label="&engine.addons.label;"
+                            accesskey="&engine.addons.accesskey;"
+                            preference="engine.addons"/>
+                </richlistitem>
               </richlistbox>
             </vbox>
           </groupbox>
 
           <groupbox class="syncGroupBox">
             <grid>
               <columns>
                 <column/>
--- a/browser/components/tabview/test/Makefile.in
+++ b/browser/components/tabview/test/Makefile.in
@@ -69,17 +69,16 @@ include $(topsrcdir)/config/rules.mk
                  browser_tabview_bug595804.js \
                  browser_tabview_bug595930.js \
                  browser_tabview_bug595943.js \
                  browser_tabview_bug595965.js \
                  browser_tabview_bug596781.js \
                  browser_tabview_bug597248.js \
                  browser_tabview_bug597360.js \
                  browser_tabview_bug597399.js \
-                 browser_tabview_bug597980.js \
                  browser_tabview_bug598375.js \
                  browser_tabview_bug598600.js \
                  browser_tabview_bug599048.js \
                  browser_tabview_bug599626.js \
                  browser_tabview_bug600645.js \
                  browser_tabview_bug600812.js \
                  browser_tabview_bug602432.js \
                  browser_tabview_bug604098.js \
@@ -189,10 +188,12 @@ include $(topsrcdir)/config/rules.mk
                  dummy_page.html \
                  head.js \
                  search1.html \
                  search2.html \
                  test_bug600645.html \
                  test_bug644097.html \
                  $(NULL)
 
+# browser_tabview_bug597980.js is disabled for leaking, see bug 711907
+
 libs::	$(_BROWSER_FILES)
 	$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/browser/$(relativesrcdir)
--- a/browser/config/version.txt
+++ b/browser/config/version.txt
@@ -1,1 +1,1 @@
-11.0a1
+12.0a1
--- a/browser/devtools/highlighter/inspector.jsm
+++ b/browser/devtools/highlighter/inspector.jsm
@@ -1667,16 +1667,17 @@ InspectorUI.prototype = {
     if (aRegObj.sidebar) {
       this.createSidebarTool(aRegObj);
       return;
     }
 
     btn = this.chromeDoc.createElement("toolbarbutton");
     let buttonId = this.getToolbarButtonId(aRegObj.id);
     btn.setAttribute("id", buttonId);
+    btn.setAttribute("class", "devtools-toolbarbutton");
     btn.setAttribute("label", aRegObj.label);
     btn.setAttribute("tooltiptext", aRegObj.tooltiptext);
     btn.setAttribute("accesskey", aRegObj.accesskey);
     btn.setAttribute("image", aRegObj.icon || "");
     buttonContainer.insertBefore(btn, this.stylingButton);
 
     this.bindToolEvent(btn, "click",
       function IUI_toolButtonClick(aEvent) {
@@ -1728,16 +1729,17 @@ InspectorUI.prototype = {
   createSidebarTool: function IUI_createSidebarTab(aRegObj)
   {
     // toolbutton elements
     let btn = this.chromeDoc.createElement("toolbarbutton");
     let buttonId = this.getToolbarButtonId(aRegObj.id);
 
     btn.id = buttonId;
     btn.setAttribute("label", aRegObj.label);
+    btn.setAttribute("class", "devtools-toolbarbutton");
     btn.setAttribute("tooltiptext", aRegObj.tooltiptext);
     btn.setAttribute("accesskey", aRegObj.accesskey);
     btn.setAttribute("image", aRegObj.icon || "");
     btn.setAttribute("type", "radio");
     btn.setAttribute("group", "sidebar-tools");
     this.sidebarToolbar.appendChild(btn);
 
     // create tool iframe
--- a/browser/devtools/sourceeditor/orion/README
+++ b/browser/devtools/sourceeditor/orion/README
@@ -8,16 +8,18 @@ The Orion editor web site: http://www.ec
 
 To upgrade Orion to a newer version see the UPGRADE file.
 
 Orion version: git clone from 2011-12-09
                commit hash d8a6dc01d9c561d6eb99f03b64c8c78ce785c59d
   + patch for Eclipse Bug 366312 - right-clicking outside of the selection causes the caret to move
     https://github.com/mihaisucan/orion.client/tree/bug-366312
       see https://bugs.eclipse.org/bugs/show_bug.cgi?id=366312
+  + patch for Mozilla Bug 711737 - Orion should support all the CSS properties from CSS1, CSS2, CSS2.1 and CSS3
+    https://bugzilla.mozilla.org/show_bug.cgi?id=711737
 
 # License
 
 The following files are licensed according to the contents in the LICENSE
 file:
   orion.js
   orion.css
 
--- a/browser/devtools/sourceeditor/orion/mozilla.css
+++ b/browser/devtools/sourceeditor/orion/mozilla.css
@@ -1,125 +1,128 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 .viewContainer {
-	background: -moz-Dialog;
-	font-family: monospace;
-	font-size: inherit; /* inherit browser's default monospace font size */
+  background: #cddae5; /* This will be seen as the continuation of the ruler */
+  font-family: monospace;
+  font-size: inherit; /* inherit browser's default monospace font size */
 }
 
 .view {
-	background: #fff;
+  background: #f0f0ff; /* Background of the editor */
+  padding-left: 0;
 }
 
 .readonly > .view {
-	background: #f6f6f6;
+  background: #f0f0ff;
+}
+
+/* One line */
+.viewContent > div {
+  padding-left: 4px; /* Margin between the ruler and the editor */
 }
 
 /* Styles for rulers */
-.ruler {
-	background-color: white;
-}
 .ruler.lines {
-	border-right: 1px solid lightgray;
-	text-align: right;
+  text-align: right;
 }
 
 /* Styles for the line number ruler */
 .rulerLines {
-	background: -moz-Dialog;
-	color: -moz-DialogText;
-	min-width: 1.4em;
-	padding-left: 4px;
-	padding-right: 4px;
-	text-align: end;
+  border-right: 1px solid #b4c4d3;
+  background: #cddae5;
+  color: #7a8a99;
+  min-width: 1.4em;
+  padding-left: 4px;
+  padding-right: 4px;
+  text-align: end;
 }
 
 .token_singleline_comment {
-	color: green;
+  color: #45a946; /* green */
 }
 
 .token_multiline_comment {
-	color: green;
+  color: #45a946; /* green */
 }
 
 .token_doc_comment {
-	color: #00008F;
+  color: #45a946; /* green */
 }
 
 .token_doc_html_markup {
-	color: #7F7F9F;
+  color: #dd0058; /* purple */
 }
 
 .token_doc_tag {
-	color: #7F9FBF;
+  color: #dd0058; /* purple */
 }
 
-.token_task_tag {
-	color: #7F9FBF;
+.token_task_tag { /* "TODO" */
+  color: black;
+  background: yellow;
 }
 
 .token_string {
-	color: blue;
+  color: #1e66b1; /* blue */
+  font-style: italic;
 }
 
 .token_keyword {
-	color: darkred;
-	font-weight: bold;
+  color: #dd0058; /* purple */
 }
 
 .token_space {
-	/* images/white_space.png */
-	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAIAAABv85FHAAAABnRSTlMA/wAAAACkwsAdAAAAIUlEQVR4nGP4z8CAC+GUIEXuABhgkTuABEiRw2cmae4EAH05X7xDolNRAAAAAElFTkSuQmCC");
-	background-repeat: no-repeat;
- 	background-position: center center;
+  /* images/white_space.png */
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAIAAABv85FHAAAABnRSTlMA/wAAAACkwsAdAAAAIUlEQVR4nGP4z8CAC+GUIEXuABhgkTuABEiRw2cmae4EAH05X7xDolNRAAAAAElFTkSuQmCC");
+  background-repeat: no-repeat;
+  background-position: center center;
 }
 
 .token_tab {
-	/* images/white_tab.png */
-	background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAJCAIAAACJ2loDAAAABnRSTlMA/wD/AP83WBt9AAAAMklEQVR4nGP4TwRgoK6i52c3bz5w6zMSA6tJn28d2Lx589nnCAYu63AaSLxJRLoJPwAAeNk0aG4opfMAAAAASUVORK5CYII=");
-	background-repeat: no-repeat;
- 	background-position: left center;
+  /* images/white_tab.png */
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAJCAIAAACJ2loDAAAABnRSTlMA/wD/AP83WBt9AAAAMklEQVR4nGP4TwRgoK6i52c3bz5w6zMSA6tJn28d2Lx589nnCAYu63AaSLxJRLoJPwAAeNk0aG4opfMAAAAASUVORK5CYII=");
+  background-repeat: no-repeat;
+  background-position: left center;
 }
 
-.line_caret {
-	background: #EAF2FE;
+.line_caret { /* Current line */
+  background: #dae2ee; /* lighter than the background */
 }
 
 .readonly .line_caret {
-	background: #fcfcfc;
+  background: #cddae5; /* a bit darker than the background */
 }
 
 /* Styling for html syntax highlighting */
 .entity-name-tag {
-	color: #3f7f7f;
+  color: #dd0058; /* purple */
 }
 
 .entity-other-attribute-name {
-	color: #7f007f;
+  color: #dd0058; /* purple */
 }
 
 .punctuation-definition-comment {
-	color: #3f5fbf;
+  color: #45a946; /* green */
 }
 
 .comment {
-	color: #3f5fbf
+  color: #45a946; /* green */
 }
 
 .string-quoted {
-	color: #2a00ff;
-	font-style: italic;
+  color: #1e66b1; /* blue */
+  font-style: italic;
 }
 
 .invalid {
-	color: red;
-	font-weight: bold;
+  color: red;
+  font-weight: bold;
 }
 
 .annotationRange.currentBracket {
 }
 
 .annotationRange.matchingBracket {
-	outline: 1px solid red;
+  outline: 1px solid grey;
 }
-
--- a/browser/devtools/sourceeditor/orion/orion.js
+++ b/browser/devtools/sourceeditor/orion/orion.js
@@ -10467,34 +10467,52 @@ define(['orion/textview/annotations'], f
 		 "package", "private", "protected", "public",
 		 "return",
 		 "short", "static", "super", "switch", "synchronized",
 		 "this", "throw", "throws", "transient", "true", "try",
 		 "void", "volatile",
 		 "while"];
 
 	var CSS_KEYWORDS =
-		["color", "text-align", "text-indent", "text-decoration", 
-		 "font", "font-style", "font-family", "font-weight", "font-size", "font-variant", "line-height",
-		 "background", "background-color", "background-image", "background-position", "background-repeat", "background-attachment",
-		 "list-style", "list-style-image", "list-style-position", "list-style-type", 
-		 "outline", "outline-color", "outline-style", "outline-width",
-		 "border", "border-left", "border-top", "border-bottom", "border-right", "border-color", "border-width", "border-style",
-		 "border-bottom-color", "border-bottom-style", "border-bottom-width",
-		 "border-left-color", "border-left-style", "border-left-width",
-		 "border-top-color", "border-top-style", "border-top-width",
-		 "border-right-color", "border-right-style", "border-right-width",
-		 "padding", "padding-left", "padding-top", "padding-bottom", "padding-right",
-		 "margin", "margin-left", "margin-top", "margin-bottom", "margin-right",
-		 "width", "height", "left", "top", "right", "bottom",
-		 "min-width", "max-width", "min-height", "max-height",
-		 "display", "visibility",
-		 "clip", "cursor", "overflow", "overflow-x", "overflow-y", "position", "z-index",
-		 "vertical-align", "horizontal-align",
-		 "float", "clear"
+		["alignment-adjust", "alignment-baseline", "animation", "animation-delay", "animation-direction", "animation-duration",
+		 "animation-iteration-count", "animation-name", "animation-play-state", "animation-timing-function", "appearance",
+		 "azimuth", "backface-visibility", "background", "background-attachment", "background-clip", "background-color",
+		 "background-image", "background-origin", "background-position", "background-repeat", "background-size", "baseline-shift",
+		 "binding", "bleed", "bookmark-label", "bookmark-level", "bookmark-state", "bookmark-target", "border", "border-bottom",
+		 "border-bottom-color", "border-bottom-left-radius", "border-bottom-right-radius", "border-bottom-style", "border-bottom-width",
+		 "border-collapse", "border-color", "border-image", "border-image-outset", "border-image-repeat", "border-image-slice",
+		 "border-image-source", "border-image-width", "border-left", "border-left-color", "border-left-style", "border-left-width",
+		 "border-radius", "border-right", "border-right-color", "border-right-style", "border-right-width", "border-spacing", "border-style",
+		 "border-top", "border-top-color", "border-top-left-radius", "border-top-right-radius", "border-top-style", "border-top-width",
+		 "border-width", "bottom", "box-align", "box-decoration-break", "box-direction", "box-flex", "box-flex-group", "box-lines",
+		 "box-ordinal-group", "box-orient", "box-pack", "box-shadow", "box-sizing", "break-after", "break-before", "break-inside",
+		 "caption-side", "clear", "clip", "color", "color-profile", "column-count", "column-fill", "column-gap", "column-rule",
+		 "column-rule-color", "column-rule-style", "column-rule-width", "column-span", "column-width", "columns", "content", "counter-increment",
+		 "counter-reset", "crop", "cue", "cue-after", "cue-before", "cursor", "direction", "display", "dominant-baseline",
+		 "drop-initial-after-adjust", "drop-initial-after-align", "drop-initial-before-adjust", "drop-initial-before-align", "drop-initial-size",
+		 "drop-initial-value", "elevation", "empty-cells", "fit", "fit-position", "float", "float-offset", "font", "font-family", "font-size",
+		 "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "grid-columns", "grid-rows", "hanging-punctuation",
+		 "height", "hyphenate-after", "hyphenate-before", "hyphenate-character", "hyphenate-lines", "hyphenate-resource", "hyphens", "icon",
+		 "image-orientation", "image-rendering", "image-resolution", "inline-box-align", "left", "letter-spacing", "line-height",
+		 "line-stacking", "line-stacking-ruby", "line-stacking-shift", "line-stacking-strategy", "list-style", "list-style-image",
+		 "list-style-position", "list-style-type", "margin", "margin-bottom", "margin-left", "margin-right", "margin-top", "mark", "mark-after",
+		 "mark-before", "marks", "marquee-direction", "marquee-loop", "marquee-play-count", "marquee-speed", "marquee-style", "max-height",
+		 "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", "nav-left", "nav-right", "nav-up", "opacity", "orphans",
+		 "outline", "outline-color", "outline-offset", "outline-style", "outline-width", "overflow", "overflow-style", "overflow-x",
+		 "overflow-y", "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", "page", "page-break-after", "page-break-before",
+		 "page-break-inside", "page-policy", "pause", "pause-after", "pause-before", "perspective", "perspective-origin", "phonemes", "pitch",
+		 "pitch-range", "play-during", "position", "presentation-level", "punctuation-trim", "quotes", "rendering-intent", "resize",
+		 "rest", "rest-after", "rest-before", "richness", "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang", "ruby-position",
+		 "ruby-span", "size", "speak", "speak-header", "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", "table-layout",
+		 "target", "target-name", "target-new", "target-position", "text-align", "text-align-last", "text-decoration", "text-emphasis",
+		 "text-height", "text-indent", "text-justify", "text-outline", "text-shadow", "text-transform", "text-wrap", "top", "transform",
+		 "transform-origin", "transform-style", "transition", "transition-delay", "transition-duration", "transition-property",
+		 "transition-timing-function", "unicode-bidi", "vertical-align", "visibility", "voice-balance", "voice-duration", "voice-family",
+		 "voice-pitch", "voice-pitch-range", "voice-rate", "voice-stress", "voice-volume", "volume", "white-space", "white-space-collapse",
+		 "widows", "width", "word-break", "word-spacing", "word-wrap", "z-index"
 		];
 
 	// Scanner constants
 	var UNKOWN = 1;
 	var KEYWORD = 2;
 	var STRING = 3;
 	var SINGLELINE_COMMENT = 4;
 	var MULTILINE_COMMENT = 5;
--- a/browser/devtools/styleeditor/SplitView.jsm
+++ b/browser/devtools/styleeditor/SplitView.jsm
@@ -15,16 +15,17 @@
  * The Original Code is Style Editor code.
  *
  * The Initial Developer of the Original Code is Mozilla Foundation.
  * Portions created by the Initial Developer are Copyright (C) 2011
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
  *   Cedric Vivier <cedricv@neonux.com> (original author)
+ *   Paul Rouget <paul@mozilla.com>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either the GNU General Public License Version 2 or later (the "GPL"), or
  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the MPL, indicate your
@@ -227,55 +228,43 @@ SplitView.prototype = {
    *     - function(summary, details, data) onDestroy
    *         Called when the item has been removed.
    *     - function(summary, details, data, query) onFilterBy
    *         Called when the user performs a filtering search.
    *         If the function returns false, the item does not match query
    *         string and will be hidden.
    *     - object data
    *         Object to pass to the callbacks above.
-   *     - boolean disableAnimations
-   *         If true there is no animation or scrolling when this item is
-   *         appended. Set this when batch appending (eg. initial population).
    *     - number ordinal
    *         Items with a lower ordinal are displayed before those with a
    *         higher ordinal.
    */
   appendItem: function ASV_appendItem(aSummary, aDetails, aOptions)
   {
     let binding = aOptions || {};
 
     binding._summary = aSummary;
     binding._details = aDetails;
     aSummary.setUserData(BINDING_USERDATA, binding, null);
 
-    if (!binding.disableAnimations) {
-      aSummary.classList.add("splitview-slide");
-      aSummary.classList.add("splitview-flash");
-    }
     this._nav.appendChild(aSummary);
 
     aSummary.addEventListener("click", function onSummaryClick(aEvent) {
       aEvent.stopPropagation();
       this.activeSummary = aSummary;
     }.bind(this), false);
 
     this._side.appendChild(aDetails);
 
     if (binding.onCreate) {
       // queue onCreate handler
       this._root.ownerDocument.defaultView.setTimeout(function () {
         binding.onCreate(aSummary, aDetails, binding.data);
       }, 0);
     }
-
-    if (!binding.disableAnimations) {
-      scheduleAnimation(aSummary, "splitview-slide", "splitview-flash");
-      aSummary.scrollIntoView();
-    }
   },
 
   /**
    * Append an item to the split view according to two template elements
    * (one for the item's summary and the other for the item's details).
    *
    * @param string aName
    *        Name of the template elements to instantiate.
@@ -457,33 +446,8 @@ SplitView.prototype = {
     }.bind(this), false);
 
     let clearButtons = this._root.querySelectorAll(".splitview-filter-clearButton");
     for (let i = 0; i < clearButtons.length; ++i) {
       clearButtons[i].addEventListener("click", clearFilter, false);
     }
   }
 };
-
-//
-// private helpers
-
-/**
- * Schedule one or multiple CSS animation(s) on an element.
- *
- * @param DOMElement aElement
- * @param string ...
- *        One or multiple animation class name(s).
- */
-function scheduleAnimation(aElement)
-{
-  let classes = Array.prototype.slice.call(arguments, 1);
-  for each (let klass in classes) {
-    aElement.classList.add(klass);
-  }
-
-  let window = aElement.ownerDocument.defaultView;
-  window.mozRequestAnimationFrame(function triggerAnimation() {
-    for each (let klass in classes) {
-      aElement.classList.remove(klass);
-    }
-  });
-}
--- a/browser/devtools/styleeditor/StyleEditorChrome.jsm
+++ b/browser/devtools/styleeditor/StyleEditorChrome.jsm
@@ -346,17 +346,17 @@ StyleEditorChrome.prototype = {
   /**
    * Disable all UI, effectively making editors read-only.
    * This is automatically called when no content window is attached.
    *
    * @see contentWindow
    */
   _disableChrome: function SEC__disableChrome()
   {
-    let matches = this._root.querySelectorAll("button,input,select");
+    let matches = this._root.querySelectorAll("button,toolbarbutton,textbox");
     for (let i = 0; i < matches.length; ++i) {
       matches[i].setAttribute("disabled", "disabled");
     }
 
     this.editors.forEach(function onEnterReadOnlyMode(aEditor) {
       aEditor.readOnly = true;
     });
 
--- a/browser/devtools/styleeditor/splitview.css
+++ b/browser/devtools/styleeditor/splitview.css
@@ -15,16 +15,17 @@
  * The Original Code is Style Editor code.
  *
  * The Initial Developer of the Original Code is Mozilla Foundation.
  * Portions created by the Initial Developer are Copyright (C) 2011
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
  *   Cedric Vivier <cedricv@neonux.com> (original author)
+ *   Paul Rouget <paul@mozilla.com>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either the GNU General Public License Version 2 or later (the "GPL"), or
  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the MPL, indicate your
@@ -36,44 +37,54 @@
  * ***** END LICENSE BLOCK ***** */
 
 box,
 .splitview-nav {
   -moz-box-flex: 1;
   -moz-box-orient: vertical;
 }
 
+.splitview-nav-container {
+  -moz-box-pack: center;
+}
+
+.splitview-controller,
 .splitview-main {
   -moz-box-flex: 0;
 }
 
 .splitview-controller {
-  min-height: 8em;
+  min-height: 3em;
   max-height: 14em;
 }
 
 .splitview-nav {
   display: -moz-box;
+  overflow-x: hidden;
+  overflow-y: auto;
 }
 
 /* only the active details pane is shown */
 .splitview-side-details > * {
   display: none;
 }
 .splitview-side-details > .splitview-active {
   display: -moz-box;
 }
 
+.splitview-landscape-resizer {
+  cursor: ew-resize;
+}
+
 /* this is to keep in sync with SplitView.jsm's LANDSCAPE_MEDIA_QUERY */
 @media (min-aspect-ratio: 5/3) {
   .splitview-root {
     -moz-box-orient: horizontal;
   }
   .splitview-controller {
-    -moz-box-flex: 0;
     max-height: none;
   }
   .splitview-details {
     display: none;
   }
   .splitview-details.splitview-active {
     display: -moz-box;
   }
@@ -89,8 +100,23 @@ ol.splitview-nav > li.splitview-filtered
 .splitview-nav.splitview-all-filtered,
 .splitview-nav + .splitview-nav.placeholder {
   display: none;
 }
 .splitview-nav.splitview-all-filtered ~ .splitview-nav.placeholder.all-filtered,
 .splitview-nav:empty ~ .splitview-nav.placeholder.empty {
   display: -moz-box;
 }
+
+.splitview-portrait-resizer {
+  display: none;
+}
+
+/* portrait mode */
+@media (max-aspect-ratio: 5/3) {
+  #splitview-details-toolbar {
+    display: none;
+  }
+
+  .splitview-portrait-resizer {
+    display: -moz-box;
+  }
+}
--- a/browser/devtools/styleeditor/styleeditor.css
+++ b/browser/devtools/styleeditor/styleeditor.css
@@ -30,14 +30,90 @@
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-.splitview-nav > li hgroup > .stylesheet-error-message {
+.stylesheet-error-message {
   display: none;
 }
-.splitview-nav > li.error hgroup > .stylesheet-error-message {
+
+li.error > .stylesheet-info > .stylesheet-more  > .stylesheet-error-message {
   display: block;
 }
+
+.splitview-nav > li,
+.stylesheet-info,
+.stylesheet-more {
+  display: -moz-box;
+}
+
+.splitview-nav > li {
+  -moz-box-orient: horizontal;
+}
+
+.splitview-nav > li > hgroup {
+  display: -moz-box;
+  -moz-box-orient: vertical;
+  -moz-box-flex: 1;
+}
+
+.stylesheet-info > h1 {
+  -moz-box-flex: 1;
+}
+
+.stylesheet-name {
+  /* clip the text at the beginning */
+  display: -moz-box;
+  direction: rtl;
+  text-align: left;
+  overflow: hidden;
+}
+
+.splitview-nav > li > hgroup.stylesheet-info {
+  -moz-box-pack: center;
+}
+
+.splitview-nav:-moz-locale-dir(ltr) > li.unsaved > hgroup .stylesheet-name:before,
+.splitview-nav:-moz-locale-dir(rtl) > li.unsaved > hgroup .stylesheet-name:after {
+  content: "* ";
+}
+
+.stylesheet-enabled {
+  display: -moz-box;
+}
+
+.stylesheet-saveButton {
+  display: none;
+}
+
+.stylesheet-rule-count,
+li:hover > hgroup > .stylesheet-more > h3 >  .stylesheet-saveButton {
+  display: -moz-box;
+}
+
+.stylesheet-more > spacer {
+  -moz-box-flex: 1;
+}
+
+/* portrait mode */
+@media (max-aspect-ratio: 5/3) {
+  li:hover > hgroup > .stylesheet-more > .stylesheet-rule-count {
+    display: none;
+  }
+
+  .stylesheet-more {
+    -moz-box-flex: 1;
+    -moz-box-direction: reverse;
+  }
+
+  .splitview-nav > li > hgroup.stylesheet-info {
+    -moz-box-orient: horizontal;
+    -moz-box-flex: 1;
+  }
+
+  .stylesheet-more > spacer {
+    -moz-box-flex: 0;
+  }
+}
--- a/browser/devtools/styleeditor/styleeditor.xul
+++ b/browser/devtools/styleeditor/styleeditor.xul
@@ -15,16 +15,17 @@
    - The Original Code is Style Editor code.
    -
    - The Initial Developer of the Original Code is The Mozilla Foundation.
    - Portions created by the Initial Developer are Copyright (C) 2011
    - the Initial Developer. All Rights Reserved.
    -
    - Contributor(s):
    -   Cedric Vivier <cedricv@neonux.com> (original author)
+   -   Paul Rouget <paul@mozilla.com>
    -
    - Alternatively, the contents of this file may be used under the terms of
    - either the GNU General Public License Version 2 or later (the "GPL"), or
    - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
    - in which case the provisions of the GPL or the LGPL are applicable instead
    - of those above. If you wish to allow use of your version of this file only
    - under the terms of either the GPL or the LGPL, and not to allow others to
    - use your version of this file under the terms of the MPL, indicate your
@@ -35,47 +36,47 @@
    -
    - ***** END LICENSE BLOCK ***** -->
 <!DOCTYPE window [
 <!ENTITY % styleEditorDTD SYSTEM "chrome://browser/locale/devtools/styleeditor.dtd" >
  %styleEditorDTD;
 ]>
 <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
 <?xml-stylesheet href="chrome://browser/content/splitview.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/devtools/common.css" type="text/css"?>
 <?xml-stylesheet href="chrome://browser/skin/devtools/splitview.css" type="text/css"?>
 <?xml-stylesheet href="chrome://browser/content/styleeditor.css" type="text/css"?>
 <?xml-stylesheet href="chrome://browser/skin/devtools/styleeditor.css" type="text/css"?>
 <xul:window xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         xmlns="http://www.w3.org/1999/xhtml"
         id="style-editor-chrome-window"
         title="&window.title;"
         windowtype="Tools:StyleEditor"
         width="800" height="280"
         persist="screenX screenY width height sizemode">
 <xul:script type="application/javascript" src="chrome://global/content/globalOverlay.js"/>
 
 <xul:box id="style-editor-chrome" class="splitview-root">
-  <xul:box class="splitview-side-details"></xul:box>
-  <xul:box class="splitview-controller">
+  <xul:box class="splitview-controller" id="stylesheets-controller" persist="width height">
     <xul:box class="splitview-main">
-      <xul:box class="toolbar">
-        <xul:button class="style-editor-newButton"
+      <xul:toolbar class="devtools-toolbar">
+        <xul:toolbarbutton class="style-editor-newButton devtools-toolbarbutton"
                     accesskey="&newButton.accesskey;"
                     tooltiptext="&newButton.tooltip;"
-                    label="&newButton.label;"></xul:button>
-        <xul:button class="style-editor-importButton"
+                    label="&newButton.label;"/>
+        <xul:toolbarbutton class="style-editor-importButton devtools-toolbarbutton"
                     accesskey="&importButton.accesskey;"
                     tooltiptext="&importButton.tooltip;"
-                    label="&importButton.label;"></xul:button>
-        <xul:box class="spacer" flex="1"></xul:box>
-        <xul:textbox class="splitview-filter"
-                     type="search"
+                    label="&importButton.label;"/>
+        <xul:spacer flex="1"/>
+        <xul:textbox class="splitview-filter devtools-searchinput"
+                     type="search" flex="1"
                      tooltiptext="&searchInput.tooltip;"
                      placeholder="&searchInput.placeholder;"/>
-      </xul:box>
+      </xul:toolbar>
     </xul:box>
     <xul:box class="splitview-nav-container">
       <ol class="splitview-nav" tabindex="0"></ol>
       <div class="splitview-nav placeholder empty">
         <p><strong>&noStyleSheet.label;</strong></p>
         <p>&noStyleSheet-tip-start.label;
           <a href="#"
              class="style-editor-newButton">&noStyleSheet-tip-action.label;</a>
@@ -85,42 +86,48 @@
         <p><strong>&searchNoResults.label;</strong></p>
         <p>
           <a href="#"
              class="splitview-filter-clearButton">&searchClearButton.label;</a>
         </p>
       </div>
     </xul:box> <!-- .splitview-nav-container -->
   </xul:box>   <!-- .splitview-controller -->
+  <xul:box class="splitview-side-details"/>
 
   <div id="splitview-templates" hidden="true">
     <li id="splitview-tpl-summary-stylesheet" tabindex="0">
       <a class="stylesheet-enabled" tabindex="0" href="#"
          title="&visibilityToggle.tooltip;"
          accesskey="&saveButton.accesskey;"></a>
       <hgroup class="stylesheet-info">
         <h1><a class="stylesheet-name" href="#"></a></h1>
-        <h2 class="stylesheet-title"></h2>
-        <h3 class="stylesheet-error-message"></h3>
-      </hgroup>
-      <div class="stylesheet-more">
-        <hgroup class="stylesheet-stats">
+        <div class="stylesheet-more">
+          <h3 class="stylesheet-title"></h3>
           <h3 class="stylesheet-rule-count"></h3>
-        </hgroup>
-        <hgroup class="stylesheet-actions">
-          <h1><a class="stylesheet-saveButton" href="#"
+          <h3 class="stylesheet-error-message"></h3>
+          <xul:spacer/>
+          <h3><a class="stylesheet-saveButton" href="#"
                  title="&saveButton.tooltip;"
-                 accesskey="&saveButton.accesskey;">&saveButton.label;</a></h1>
-        </hgroup>
-      </div>
+                 accesskey="&saveButton.accesskey;">&saveButton.label;</a></h3>
+        </div>
+      </hgroup>
     </li>
 
     <xul:box id="splitview-tpl-details-stylesheet" class="splitview-details">
-      <div class="stylesheet-editor-input textbox"
-           data-placeholder="&editorTextbox.placeholder;"></div>
+      <xul:resizer class="splitview-portrait-resizer"
+               dir="bottom"
+               element="stylesheets-controller"/>
+      <xul:toolbar id="splitview-details-toolbar" class="devtools-toolbar">
+        <xul:resizer class="splitview-landscape-resizer"
+                     dir="bottomend"
+                     element="stylesheets-controller"/>
+      </xul:toolbar>
+      <xul:box class="stylesheet-editor-input textbox"
+               data-placeholder="&editorTextbox.placeholder;"/>
     </xul:box>
   </div> <!-- #splitview-templates -->
 </xul:box>   <!-- .splitview-root -->
 
 <xul:script type="application/javascript"><![CDATA[
 Components.utils.import("resource:///modules/devtools/StyleEditorChrome.jsm");
 let chromeRoot = document.getElementById("style-editor-chrome");
 let contentWindow = window.arguments[0];
--- a/browser/devtools/styleeditor/test/browser_styleeditor_readonly.js
+++ b/browser/devtools/styleeditor/test/browser_styleeditor_readonly.js
@@ -46,17 +46,17 @@ function test()
 
 function run(aChrome)
 {
   let document = gChromeWindow.document;
   let disabledCount;
   let elements;
 
   disabledCount = 0;
-  elements = document.querySelectorAll("button,input,select");
+  elements = document.querySelectorAll("button,toolbarbutton,textbox");
   for (let i = 0; i < elements.length; ++i) {
     if (elements[i].hasAttribute("disabled")) {
       disabledCount++;
     }
   }
   ok(elements.length && disabledCount == elements.length,
      "all buttons, input and select elements are disabled");
 
--- a/browser/devtools/styleinspector/test/browser_ruleview_editor.js
+++ b/browser/devtools/styleinspector/test/browser_ruleview_editor.js
@@ -36,17 +36,17 @@ function testReturnCommit()
   clearBody();
   let span = createSpan();
   _editableField({
     element: span,
     initial: "explicit initial",
     start: function() {
       is(span.inplaceEditor.input.value, "explicit initial", "Explicit initial value should be used.");
       span.inplaceEditor.input.value = "Test Value";
-      EventUtils.sendKey("return", span.inplaceEditor.input);
+      EventUtils.sendKey("return");
     },
     done: expectDone("Test Value", true, testBlurCommit)
   });
   span.focus();
 }
 
 function testBlurCommit()
 {
@@ -69,34 +69,34 @@ function testAdvanceCharCommit()
   clearBody();
   let span = createSpan();
   _editableField({
     element: span,
     advanceChars: ":",
     start: function() {
       let input = span.inplaceEditor.input;
       for each (let ch in "Test:") {
-        EventUtils.sendChar(ch, input);
+        EventUtils.sendChar(ch);
       }
     },
     done: expectDone("Test", true, testEscapeCancel)
   });
   span.focus();
 }
 
 function testEscapeCancel()
 {
   clearBody();
   let span = createSpan();
   _editableField({
     element: span,
     initial: "initial text",
     start: function() {
       span.inplaceEditor.input.value = "Test Value";
-      EventUtils.sendKey("escape", span.inplaceEditor.input);
+      EventUtils.sendKey("escape");
     },
     done: expectDone("initial text", false, finishTest)
   });
   span.focus();
 }
 
 
 function finishTest()
--- a/browser/devtools/styleinspector/test/browser_ruleview_ui.js
+++ b/browser/devtools/styleinspector/test/browser_ruleview_ui.js
@@ -115,17 +115,17 @@ function testCreateNew()
       waitForEditorBlur(aEditor, function() {
         expectChange();
         is(textProp.value, "purple", "Text prop should have been changed.");
         testEditProperty();
       });
 
       aEditor.input.blur();
     });
-    EventUtils.sendKey("return", input);
+    EventUtils.sendKey("return", ruleDialog);
   });
 
   EventUtils.synthesizeMouse(elementRuleEditor.closeBrace, 1, 1,
                              { },
                              ruleDialog);
 }
 
 function testEditProperty()
@@ -143,21 +143,21 @@ function testEditProperty()
       waitForEditorBlur(aEditor, function() {
         expectChange();
         is(idRuleEditor.rule.style.getPropertyValue("border-color"), "red",
            "border-color should have been set.");
         testDisableProperty();
       });
 
       for each (let ch in "red;") {
-        EventUtils.sendChar(ch, input);
+        EventUtils.sendChar(ch, ruleDialog);
       }
     });
     for each (let ch in "border-color:") {
-      EventUtils.sendChar(ch, input);
+      EventUtils.sendChar(ch, ruleDialog);
     }
   });
 
   EventUtils.synthesizeMouse(propEditor.nameSpan, 1, 1,
                              { },
                              ruleDialog);
 }
 
--- a/browser/devtools/webconsole/test/test-bug-603750-websocket.js
+++ b/browser/devtools/webconsole/test/test-bug-603750-websocket.js
@@ -1,18 +1,18 @@
 /*
  * Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/
  */
 
 window.addEventListener("load", function () {
-  var ws1 = new MozWebSocket("ws://0.0.0.0:81");
+  var ws1 = new WebSocket("ws://0.0.0.0:81");
   ws1.onopen = function() {
     ws1.send("test 1");
     ws1.close();
   };
 
-  var ws2 = new window.frames[0].MozWebSocket("ws://0.0.0.0:82");
+  var ws2 = new window.frames[0].WebSocket("ws://0.0.0.0:82");
   ws2.onopen = function() {
     ws2.send("test 2");
     ws2.close();
   };
 }, false);
--- a/browser/installer/removed-files.in
+++ b/browser/installer/removed-files.in
@@ -228,17 +228,16 @@ extensions/testpilot@labs.mozilla.com/sk
 extensions/testpilot@labs.mozilla.com/skin/win/feedback.css
 extensions/testpilot@labs.mozilla.com/skin/win/notification-tail-down.png
 extensions/testpilot@labs.mozilla.com/skin/win/notification-tail-up.png
 extensions/testpilot@labs.mozilla.com/tests/test_data_store.js
 greprefs/all.js
 greprefs/security-prefs.js
 greprefs/xpinstall.js
 install.rdf
-modules/ISO8601DateUtils.jsm
 modules/JSON.jsm
 modules/SpatialNavigation.js
 modules/utils.js
 mozilla-runtime@BIN_SUFFIX@
 old-homepage-default.properties
 README.txt
 res/arrow.gif
 res/arrowd.gif
@@ -991,16 +990,17 @@ xpicleanup@BIN_SUFFIX@
   #ifdef XP_WIN
     modules/DownloadTaskbarProgress.jsm
   #endif
   modules/DownloadUtils.jsm
   modules/FileUtils.jsm
   modules/Geometry.jsm
   modules/HUDService.jsm
   modules/InlineSpellChecker.jsm
+  modules/ISO8601DateUtils.jsm
   modules/LightweightThemeConsumer.jsm
   modules/LightweightThemeManager.jsm
   modules/Microformats.js
   modules/NetUtil.jsm
   modules/NetworkPrioritizer.jsm
   modules/openLocationLastURL.jsm
   modules/PerfMeasurement.jsm
   modules/PlacesDBUtils.jsm
--- a/browser/locales/en-US/chrome/browser/aboutDialog.dtd
+++ b/browser/locales/en-US/chrome/browser/aboutDialog.dtd
@@ -1,17 +1,31 @@
 <!ENTITY aboutDialog.title          "About &brandFullName;">
 
+<!-- LOCALIZATION NOTE (warningDesc.version): This is a warning about the experimental nature of Nightly and Aurora builds. It is only shown in those versions. -->
+<!ENTITY warningDesc.version        "&brandShortName; is experimental and may be unstable.">
+<!-- LOCALIZATION NOTE (warningDesc.telemetry): This is a notification that Nightly/Aurora builds automatically send Telemetry data back to Mozilla. It is only shown in those versions. "It" refers to brandShortName. -->
+<!ENTITY warningDesc.telemetry      "It automatically sends test information back to &vendorShortName; to help make &brandShortName; better.">
+
+<!-- LOCALIZATION NOTE (community.exp.*) This paragraph is shown in "experimental" builds, i.e. Nightly and Aurora builds, instead of the other "community.*" strings below. -->
+<!ENTITY community.exp.start        "">
+<!-- LOCALIZATION NOTE (community.exp.mozillaLink): This is a link title that links to http://www.mozilla.org/. -->
+<!ENTITY community.exp.mozillaLink  "&vendorShortName;">
+<!ENTITY community.exp.middle       " is a ">
+<!-- LOCALIZATION NOTE (community.exp.creditslink): This is a link title that links to about:credits. -->
+<!ENTITY community.exp.creditsLink  "global community">
+<!ENTITY community.exp.end          " working together to keep the Web open, public and accessible to all.">
+
 <!ENTITY community.start2           "&brandShortName; is designed by ">
 <!-- LOCALIZATION NOTE (community.mozillaLink): This is a link title that links to http://www.mozilla.org/. -->
 <!ENTITY community.mozillaLink      "&vendorShortName;">
 <!ENTITY community.middle2          ", a ">
 <!-- LOCALIZATION NOTE (community.creditsLink): This is a link title that links to about:credits. -->
 <!ENTITY community.creditsLink      "global community">
-<!ENTITY community.end2             " working together to make the Internet better. We believe that the Internet should be open, public, and accessible to everyone without any restrictions.">
+<!ENTITY community.end3             " working together to keep the Web open, public and accessible to all.">
 
 <!ENTITY contribute.start           "Sound interesting? ">
 <!-- LOCALIZATION NOTE (contribute.getInvolvedLink): This is a link title that links to http://www.mozilla.org/contribute/. -->
 <!ENTITY contribute.getInvolvedLink "Get involved!">
 <!ENTITY contribute.end             "">
 
 <!-- LOCALIZATION NOTE (bottomLinks.license): This is a link title that links to about:license. -->
 <!ENTITY bottomLinks.license        "Licensing Information">
--- a/browser/locales/en-US/chrome/browser/preferences/advanced.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/advanced.dtd
@@ -35,29 +35,33 @@
 <!ENTITY networkTab.label                "Network">
 
 <!ENTITY connection.label                "Connection">
 
 <!ENTITY connectionDesc.label            "Configure how &brandShortName; connects to the Internet">
 <!ENTITY connectionSettings.label        "Settings…">
 <!ENTITY connectionSettings.accesskey    "e">
 
-<!ENTITY offlineStorage.label            "Offline Storage">
+<!ENTITY httpCache.label                 "Cached Web Content">
+
+<!ENTITY offlineStorage2.label           "Offline Web Content and User Data">
 
 <!-- LOCALIZATION NOTE:
   The entities limitCacheSizeBefore.label and limitCacheSizeAfter.label appear on a single
   line in preferences as follows:
 
   &limitCacheSizeBefore.label [textbox for cache size in MB] &limitCacheSizeAfter.label;
 -->
 <!ENTITY limitCacheSizeBefore.label      "Limit cache to">
 <!ENTITY limitCacheSizeBefore.accesskey  "L">
 <!ENTITY limitCacheSizeAfter.label       "MB of space">
 <!ENTITY clearCacheNow.label             "Clear Now">
 <!ENTITY clearCacheNow.accesskey         "C">
+<!ENTITY clearOfflineAppCacheNow.label   "Clear Now">
+<!ENTITY clearOfflineAppCacheNow.accesskey "N">
 <!ENTITY overrideSmartCacheSize.label    "Override automatic cache management">
 <!ENTITY overrideSmartCacheSize.accesskey "O">
 
 <!ENTITY updateTab.label                 "Update">
 
 <!ENTITY updateApp.label                 "&brandShortName; updates:">
 <!ENTITY updateAuto.label                "Automatically install updates (recommended: improved security)">
 <!ENTITY updateAuto.accesskey            "A">
@@ -79,17 +83,17 @@
 <!ENTITY enableSearchUpdate.label        "Search Engines">
 <!ENTITY enableSearchUpdate.accesskey    "E">
 
 <!ENTITY offlineNotify.label             "Tell me when a website asks to store data for offline use">
 <!ENTITY offlineNotify.accesskey         "T">
 <!ENTITY offlineNotifyExceptions.label   "Exceptions…">
 <!ENTITY offlineNotifyExceptions.accesskey "x">
 
-<!ENTITY offlineAppsList.label           "The following websites have stored data for offline use:">
+<!ENTITY offlineAppsList2.label          "The following websites are allowed to store data for offline use:">
 <!ENTITY offlineAppsList.height          "7em">
 <!ENTITY offlineAppsListRemove.label     "Remove…">
 <!ENTITY offlineAppsListRemove.accesskey "R">
 <!ENTITY offlineAppRemove.confirm        "Remove offline data">
 
 <!ENTITY encryptionTab.label             "Encryption">
 
 <!ENTITY protocols.label                 "Protocols">
--- a/browser/locales/en-US/chrome/browser/preferences/preferences.properties
+++ b/browser/locales/en-US/chrome/browser/preferences/preferences.properties
@@ -100,17 +100,24 @@ offlineAppRemoveConfirm=Remove offline d
 #   %1$S = size (in bytes or megabytes, ...)
 #   %2$S = unit of measure (bytes, KB, MB, ...)
 offlineAppUsage=%1$S %2$S
 
 offlinepermissionstext=The following websites are not allowed to store data for offline use:
 offlinepermissionstitle=Offline Data
 
 ####Preferences::Advanced::Network
-#LOCALIZATION NOTE: The next string is for the disk usage of the http cache.
-#   e.g., "Your cache is currently using 200 MB"
+#LOCALIZATION NOTE: The next string is for the disk usage of the web content cache.
+#   e.g., "Your web content cache is currently using 200 MB"
 #   %1$S = size
 #   %2$S = unit (MB, KB, etc.)
-actualCacheSize=Your cache is currently using %1$S %2$S of disk space
+actualDiskCacheSize=Your web content cache is currently using %1$S %2$S of disk space
+
+####Preferences::Advanced::Network
+#LOCALIZATION NOTE: The next string is for the disk usage of the application cache.
+#   e.g., "Your application cache is currently using 200 MB"
+#   %1$S = size
+#   %2$S = unit (MB, KB, etc.)
+actualAppCacheSize=Your application cache is currently using %1$S %2$S of disk space
 
 syncUnlink.title=Do you want to unlink your device?
 syncUnlink.label=This device will no longer be associated with your Sync account. All of your personal data, both on this device and in your Sync account, will remain intact.
 syncUnlinkConfirm.label=Unlink
--- a/browser/locales/en-US/chrome/browser/preferences/sync.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/sync.dtd
@@ -25,16 +25,18 @@
 <!ENTITY engine.tabs.label          "Tabs">
 <!ENTITY engine.tabs.accesskey      "T">
 <!ENTITY engine.history.label       "History">
 <!ENTITY engine.history.accesskey   "r">
 <!ENTITY engine.passwords.label     "Passwords">
 <!ENTITY engine.passwords.accesskey "P">
 <!ENTITY engine.prefs.label         "Preferences">
 <!ENTITY engine.prefs.accesskey     "S">
+<!ENTITY engine.addons.label        "Add-ons">
+<!ENTITY engine.addons.accesskey    "A">
 
 <!-- Device Settings -->
 <!ENTITY syncComputerName.label       "Computer Name:">
 <!ENTITY syncComputerName.accesskey   "c">
 <!ENTITY unlinkDevice.label           "Unlink This Device">
 
 <!-- Footer stuff -->
 <!ENTITY prefs.tosLink.label        "Terms of Service">
--- a/browser/locales/en-US/chrome/browser/syncSetup.dtd
+++ b/browser/locales/en-US/chrome/browser/syncSetup.dtd
@@ -1,13 +1,13 @@
 <!ENTITY accountSetupTitle.label    "&syncBrand.fullName.label; Setup">
 
 <!-- First page of the wizard -->
 
-<!ENTITY setup.pickSetupType.description "Welcome, if you've never used &syncBrand.fullName.label; before, you will need to create a new account.">
+<!ENTITY setup.pickSetupType.description2 "Welcome! If you've never used &syncBrand.fullName.label; before, you will need to create a new account.">
 <!ENTITY button.createNewAccount.label "Create a New Account">
 <!ENTITY button.haveAccount.label      "I Have an Account">
 
 <!ENTITY setup.choicePage.title.label     "Have you used &syncBrand.fullName.label; before?">
 <!ENTITY setup.choicePage.new.label       "I've never used &syncBrand.shortName.label; before">
 <!ENTITY setup.choicePage.existing.label  "I'm already using &syncBrand.shortName.label; on another computer">
 
 <!-- New Account AND Existing Account -->
@@ -83,16 +83,18 @@
 <!ENTITY engine.tabs.label          "Tabs">
 <!ENTITY engine.tabs.accesskey      "T">
 <!ENTITY engine.history.label       "History">
 <!ENTITY engine.history.accesskey   "r">
 <!ENTITY engine.passwords.label     "Passwords">
 <!ENTITY engine.passwords.accesskey "P">
 <!ENTITY engine.prefs.label         "Preferences">
 <!ENTITY engine.prefs.accesskey     "S">
+<!ENTITY engine.addons.label        "Add-ons">
+<!ENTITY engine.addons.accesskey    "A">
 
 <!ENTITY choice2.merge.main.label      "Merge this computer's data with my &syncBrand.shortName.label; data">
 <!ENTITY choice2.merge.recommended.label "Recommended:">
 <!ENTITY choice2.client.main.label     "Replace all data on this computer with my &syncBrand.shortName.label; data">
 <!ENTITY choice2.server.main.label     "Replace all other devices with this computer's data">
 
 <!-- Confirm Merge Options -->
 <!ENTITY setup.optionsConfirmPage.title "Confirm">
--- a/browser/modules/Makefile.in
+++ b/browser/modules/Makefile.in
@@ -46,16 +46,17 @@ include $(topsrcdir)/config/config.mk
 
 ifdef ENABLE_TESTS
 DIRS += test
 endif
 
 EXTRA_JS_MODULES = \
 	openLocationLastURL.jsm \
 	NetworkPrioritizer.jsm \
+	offlineAppCache.jsm \
 	$(NULL)
 
 ifeq ($(MOZ_WIDGET_TOOLKIT),windows) 
 EXTRA_JS_MODULES += \
 	WindowsPreviewPerTab.jsm \
 	WindowsJumpLists.jsm \
 	$(NULL)
 endif
new file mode 100644
--- /dev/null
+++ b/browser/modules/offlineAppCache.jsm
@@ -0,0 +1,54 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Honza Bambas <honzab.moz@firemni.cz>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+ 
+let EXPORTED_SYMBOLS = ["OfflineAppCacheHelper"];
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+let OfflineAppCacheHelper = {
+  clear: function() {
+    var cacheService = Cc["@mozilla.org/network/cache-service;1"].
+                       getService(Ci.nsICacheService);
+    try {
+      cacheService.evictEntries(Ci.nsICache.STORE_OFFLINE);
+    } catch(er) {}
+
+    var storageManagerService = Cc["@mozilla.org/dom/storagemanager;1"].
+                                getService(Ci.nsIDOMStorageManager);
+    storageManagerService.clearOfflineApps();
+  }
+};
--- a/browser/themes/gnomestripe/browser.css
+++ b/browser/themes/gnomestripe/browser.css
@@ -1978,90 +1978,35 @@ panel[dimmed="true"] {
 #highlighter-veil-container[locked] > #highlighter-veil-middlebox > #highlighter-veil-transparentbox {
   box-shadow: 0 0 0 1px black;
   outline-color: white;
 }
 
 /* Highlighter toolbar */
 
 #inspector-toolbar {
-  -moz-appearance: none;
-  padding: 4px 3px;
   border-top: 1px solid hsla(210, 8%, 5%, .65);
-  box-shadow: 0 1px 0 0 hsla(210, 16%, 76%, .2) inset;
-  background-image: -moz-linear-gradient(top, hsl(210,11%,36%), hsl(210,11%,18%));
 }
 
 #inspector-toolbar[treepanel-open] {
   padding-top: 0;
   -moz-padding-end: 0;
 }
 
-#devtools-sidebar-toolbar {
-  -moz-appearance: none;
-  padding: 4px 3px;
-  box-shadow: 0 1px 0 0 hsla(210, 16%, 76%, .2) inset;
-  background-image: -moz-linear-gradient(top, hsl(210,11%,36%), hsl(210,11%,18%));
-}
-
 #devtools-side-splitter {
   -moz-appearance: none;
   border: 0;
   -moz-border-start: 1px solid #242b33;
   min-width: 0;
   width: 3px;
   background-color: transparent;
   -moz-margin-end: -3px;
   position: relative;
 }
 
-#inspector-inspect-toolbutton,
-#inspector-tools > toolbarbutton,
-#devtools-sidebar-toolbar > toolbarbutton {
-  -moz-appearance: none;
-  min-width: 78px;
-  min-height: 22px;
-  color: hsl(210,30%,85%);
-  text-shadow: 0 -1px 0 hsla(210,8%,5%,.45);
-  border: 1px solid hsla(210,8%,5%,.45);
-  border-radius: 3px;
-  background: -moz-linear-gradient(hsla(212,7%,57%,.35), hsla(212,7%,57%,.1)) padding-box;
-  box-shadow: 0 1px 0 hsla(210,16%,76%,.15) inset, 0 0 0 1px hsla(210,16%,76%,.15) inset, 0 1px 0 hsla(210,16%,76%,.15);
-  margin: 0 3px;
-}
-
-#inspector-inspect-toolbutton:not([checked]):hover:active,
-#inspector-tools > toolbarbutton:not([checked]):hover:active,
-#devtools-sidebar-toolbar > toolbarbutton:not([checked]):hover:active {
-  border-color: hsla(210,8%,5%,.6);
-  background: -moz-linear-gradient(hsla(220,6%,10%,.3), hsla(212,7%,57%,.15) 65%, hsla(212,7%,57%,.3));
-  box-shadow: 0 0 3px hsla(210,8%,5%,.25) inset, 0 1px 3px hsla(210,8%,5%,.25) inset, 0 1px 0 hsla(210,16%,76%,.15);
-}
-
-#inspector-inspect-toolbutton[checked],
-#inspector-tools > toolbarbutton[checked],
-#devtools-sidebar-toolbar > toolbarbutton[checked] {
-  color: hsl(208,100%,60%) !important;
-  border-color: hsla(210,8%,5%,.6) !important;
-  background: -moz-linear-gradient(hsla(220,6%,10%,.6), hsla(210,11%,18%,.45) 75%, hsla(210,11%,30%,.4));
-  box-shadow: 0 1px 3px hsla(210,8%,5%,.25) inset, 0 1px 3px hsla(210,8%,5%,.25) inset, 0 1px 0 hsla(210,16%,76%,.15);
-}
-
-#inspector-inspect-toolbutton[checked]:hover,
-#inspector-tools > toolbarbutton[checked]:hover,
-#devtools-sidebar-toolbar > toolbarbutton[checked]:hover {
-  background-color: transparent !important;
-}
-
-#inspector-inspect-toolbutton[checked]:hover:active,
-#inspector-tools > toolbarbutton[checked]:hover:active,
-#devtools-sidebar-toolbar > toolbarbutton[checked]:hover:active {
-  background-color: hsla(210,8%,5%,.2) !important;
-}
-
 /* Highlighter - toolbar resizers */
 
 .inspector-resizer {
   -moz-appearance: none;
   cursor: n-resize;
 }
 
 #inspector-top-resizer {
new file mode 100644
--- /dev/null
+++ b/browser/themes/gnomestripe/devtools/common.css
@@ -0,0 +1,112 @@
+/* vim:set ts=2 sw=2 sts=2 et: */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is DevTools code.
+ *
+ * The Initial Developer of the Original Code is Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Paul Rouget <paul@mozilla.com> (original author)
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Toolbar and Toolbar items */
+
+.devtools-toolbar {
+  -moz-appearance: none;
+  padding: 4px 3px;
+  box-shadow: 0 1px 0 0 hsla(210, 16%, 76%, .2) inset;
+  background: -moz-linear-gradient(top, hsl(210,11%,36%), hsl(210,11%,18%));
+}
+
+.devtools-toolbarbutton {
+  -moz-appearance: none;
+  min-width: 78px;
+  min-height: 22px;
+  color: hsl(210,30%,85%);
+  text-shadow: 0 -1px 0 hsla(210,8%,5%,.45);
+  border: 1px solid hsla(210,8%,5%,.45);
+  border-radius: 3px;
+  background: -moz-linear-gradient(hsla(212,7%,57%,.35), hsla(212,7%,57%,.1)) padding-box;
+  box-shadow: 0 1px 0 hsla(210,16%,76%,.15) inset, 0 0 0 1px hsla(210,16%,76%,.15) inset, 0 1px 0 hsla(210,16%,76%,.15);
+  margin: 0 3px;
+}
+
+.devtools-toolbarbutton:not([checked]):hover:active {
+  border-color: hsla(210,8%,5%,.6);
+  background: -moz-linear-gradient(hsla(220,6%,10%,.3), hsla(212,7%,57%,.15) 65%, hsla(212,7%,57%,.3));
+  box-shadow: 0 0 3px hsla(210,8%,5%,.25) inset, 0 1px 3px hsla(210,8%,5%,.25) inset, 0 1px 0 hsla(210,16%,76%,.15);
+}
+
+.devtools-toolbarbutton[checked] {
+  color: hsl(208,100%,60%) !important;
+  border-color: hsla(210,8%,5%,.6) !important;
+  background: -moz-linear-gradient(hsla(220,6%,10%,.6), hsla(210,11%,18%,.45) 75%, hsla(210,11%,30%,.4));
+  box-shadow: 0 1px 3px hsla(210,8%,5%,.25) inset, 0 1px 3px hsla(210,8%,5%,.25) inset, 0 1px 0 hsla(210,16%,76%,.15);
+}
+
+.devtools-toolbarbutton[checked]:hover {
+  background-color: transparent !important;
+}
+
+.devtools-toolbarbutton[checked]:hover:active {
+  background-color: hsla(210,8%,5%,.2) !important;
+}
+
+/* Search input */
+
+.devtools-searchinput {
+  -moz-appearance: none;
+  margin: 0 3px;
+  background-color: transparent;
+  border: 1px solid hsla(210,8%,5%,.6);
+  border-radius: 20px;
+  background-image: url(magnifying-glass.png), -moz-linear-gradient(hsla(210,16%,76%,.15), hsla(210,16%,76%,.35));
+  background-repeat: no-repeat;
+  background-position: 4px 3px, top left, top left;
+  padding-top: 0;
+  padding-bottom: 0;
+  -moz-padding-start: 18px;
+  -moz-padding-end: 12px;
+  box-shadow: 0 1px 1px hsla(210,8%,5%,.3) inset,
+              0 0 0 1px hsla(210,16%,76%,.1) inset,
+              0 1px 0 hsla(210,16%,76%,.15);
+  color: hsl(210,30%,85%);
+}
+
+.devtools-searchinput:-moz-locale-dir(rtl) {
+  background-position: -moz-calc(100% - 4px) 3px, top left, top left;
+}
+
+.devtools-searchinput > .textbox-input-box > .textbox-search-icons {
+  display: none;
+}
+
+.devtools-searchinput > .textbox-input-box > .textbox-input:-moz-placeholder {
+  color: hsl(208,10%,66%);
+}
deleted file mode 100644
index 4ad3c219c6493fdfbe3152b206a9052288dee505..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6cc3e984b62fefeba1b6a22f7129bc23d3e9ddc1
GIT binary patch
literal 2908
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
GLSTaT2WY(j
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0f8f4b1b0b6a6776d1aac85209e2374cb9bbffba
GIT binary patch
literal 2912
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
KMNUMnLSTZ7y=cw=
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cf70394e6a1c4fae7c8aa60266063d417740798a
GIT binary patch
literal 1103
zc$@)G1hD&wP)<h;3K|Lk000e1NJLTq001xm000;W1^@s6y#0RM0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#@kvBMRCwC#S6yfvRTQ3kXLoj!?6_@H
zv%5{ENow;`TPuiIL&ZK+6cO6uLks$%NU2YyQ1GE3^r_-g3s!;wn-_)J)}J+4MJ%WY
zMX3)>2>Gk2yVGQMlBVfoce}HhnL9nFo-M;RyTKPFuoph&&b{Z}d%p8`XPD=C(pqj@
zTH~!wpiZDpV2!uH!%npIk;y-={v1ujTV9tK>y^3O&6pJ9oHHTBg5$cQo)CH_Ykbk!
z(LP_fHrf<k_3+F>PKHM_pn(tsFn|rX2Pgq<104UlM6<f82e^J?<c+r0#1Daha@?`q
z?ytZ7?xPm1`{2gbtp_iCGj!Tsc6wm$-F8j8lFt_oH*b34UwIRhN5!86v;mN98ZZJF
z2Bc_g6JQ6RrP@BMe3AJ)AkR#Xekcc(y}}WtTp_PN+qdULE|)jSB4{B+RU^@BSARLx
z)D&q8$UMAUvMz1zdg_CP*}ueU9suRr;jw{U(bAKE${Q8W=>{~?`y60qH4kuoYUCsj
z1b5rEYkEv_&R_U)5R||3`>#K0MrxveUZ3p8K91oWgq3SMuBn7V`%)9vkD@17ZOfy@
z*OS5sot~&@7oo9Y4)Hi3UdsbKJvn?_35WODjws?HPq^;pt=r#$zM1)Ze9)74>>twz
zBhk_OHX1s8WAszTWsGH}1muWSym!96=jpSKIU`n3K3)+HE?|`UU6cpd@cb$2Z^x+c
ztuep@#v@6L36w7sB2gujr=;;1<H*iJ<%-3U6$*#Z-I8UMEON00GB(LG7qYu(SsQ5I
z<tkOrA1eO7@V$!)8NZxdwT$-ddF9-kF*nH>!wqbRZJxaNIa)^gDmnC-Y2KX$WU-H9
zIEOMQi)*r(?D+F9zI=|ztr$V*O;S*hT-oZgfIMNA#u`YbEPt2wSTTf<StK5dB`zl~
z9Eru_8t@j9=PvDib^o#Pi7Cv=D6KPld%CPE-zU#VOnwZG;Mq(j_1b|$16jk!q7o27
zZj~HhRC!cixZJElxYI{42e^ga@F#I)6+#j!kcbTqe0*T%&K=LlvaEQXdt29Uee&E3
zFO8wlAHV&yP1D+rFeW!c)Hq{f6T@%5b@(DEkFl9s%uKs#W2jalBZ-Yvi5P{cL1fC7
zk5MVbb_XzD4y9TI$|RbwQta;Am3aTed%L!Dc4$#m)q+8J{e#SN#nPg=luD)bnX~-^
z*OEh*({xAyl}DLc1S&4Fb)>N3%So4Vs7N7aSG&koB2dna5S6n=x*<JZa&fYpLv{SY
zt+|+;ei$}tL+HQ#l&ENe*e_F31;{hZR~ZBmK<fxl{(t$kWA$IkI)OTYwcYLuFaR=9
VtWP9k_G|zE002ovPDHLkV1jva5dZ)H
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..673c32810029e3121cbbe386b108a2951520783b
GIT binary patch
literal 275
zc%17D@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhk|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5XwtBiahE&{2x>NXqhgskQ<3?$L(}oTQlojr=9+@vOfq`3~
zo1xH1pjfH%HN!?Df%D9dt{XV2DU>y7)i4~{yzmEO$QjO?DHD=ZHL7_9>{}n11{kK6
z9BsLw(e!;`j=jRO#w7a{H)2cp-!Uh#DugjU5;8f=(l|r9WB(x^wx4BI0`bg`^aFU3
z_Om2$D)hBxG0Z;0z<WM4V_B2P5yi}io~z0M44bM1C-Lsm;rYSn(`+U%pNYeOAx2GU
V`l@q2u|N+nc)I$ztaD0e0su94U2OmW
--- a/browser/themes/gnomestripe/devtools/splitview.css
+++ b/browser/themes/gnomestripe/devtools/splitview.css
@@ -15,123 +15,156 @@
  * The Original Code is Style Editor code.
  *
  * The Initial Developer of the Original Code is Mozilla Foundation.
  * Portions created by the Initial Developer are Copyright (C) 2011
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
  *   Cedric Vivier <cedricv@neonux.com> (original author)
+ *   Paul Rouget <paul@mozilla.com>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either the GNU General Public License Version 2 or later (the "GPL"), or
  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-.splitview-root {
-  margin-top: 4px;
+.splitview-nav-container {
+  background-color: hsl(208,11%,27%);
+  color: white;
 }
 
-.splitview-filter {
-  -moz-box-flex: 1;
-  -moz-margin-start: 1ex;
-  max-width: 25ex;
+.splitview-nav {
+  -moz-appearance: none;
+  margin: 0;
+  box-shadow: inset -1px 0 0 #222426;
 }
 
-.splitview-nav-container {
-  -moz-box-pack: center;
-  margin: 4px;
-  border: 1px inset WindowFrame;
-  border-radius: 4px;
-  background-color: -moz-default-background-color;
-  color: -moz-default-color;
+.splitview-nav > li {
+  color: white;
+  background-clip: padding-box;
+  border-bottom: 1px solid hsla(210,16%,76%,.1);
+  box-shadow: inset 0 -1px 0 hsla(210,8%,5%,.25);
+  -moz-padding-end: 8px;
+  -moz-box-align: center;
 }
 
-ol.splitview-nav {
-  overflow-x: hidden;
-  overflow-y: auto;
+.splitview-nav {
   list-style-image: none;
   list-style: none;
   padding: 0;
   margin: 0;
 }
 
-ol.splitview-nav > li {
-  display: -moz-box;
-  -moz-box-orient: vertical;
+.splitview-nav > li {
   outline: 0;
-  border-bottom: 1px solid ThreeDShadow;
-  padding: 2px;
-  padding-top: 4px;
   vertical-align: bottom;
-  color: black;
-  -moz-transition-property: background-color, max-height;
-  -moz-transition-duration: 1s;
-  max-height: 2048px; /* for slide transition */
-}
-ol.splitview-nav > li.splitview-active {
-  background-color: #eaf2fe;   /* same as orion.css's .line_caret */
-}
-ol.splitview-nav > li:hover,
-ol.splitview-nav > li:focus {
-  background-color: #f0f5fd;   /* slightly lighter .line_caret */
 }
 
-ol.splitview-nav > li.splitview-flash {
-  background-color: #faf0e1;   /* complement of .line_caret */
-}
-ol.splitview-nav > li.splitview-slide {
-  max-height: 0;
-  overflow: hidden;
-}
-
-.splitview-side-details {
-  margin: 2px;
-}
-
-.splitview-nav.splitview-all-filtered ~ .splitview-nav.placeholder.all-filtered,
-.splitview-nav:empty ~ .splitview-nav.placeholder.empty {
-  -moz-box-flex: 0;
+.placeholder {
+  -moz-box-flex: 1;
+  -moz-box-back: center;
   text-align: center;
 }
 
-.splitview-main .toolbar,
-.splitview-main .toolbar > * {
-  display: -moz-box;
+.splitview-nav > li.splitview-active {
+  background-image: url(itemArrow-ltr.png),
+                    -moz-linear-gradient(left, black, black),
+                    -moz-linear-gradient(hsl(206,61%,40%), hsl(206,61%,31%));
+  background-repeat: no-repeat, no-repeat, repeat-x;
+  background-position: center right, top right, top left;
+  background-size: auto, 1px 100%, auto;
+  border-bottom: 1px solid hsla(210,8%,5%,.25);
+  box-shadow: inset 0 1px 0 hsla(210,40%,83%,.15),
+              inset 0 -1px 0 hsla(210,40%,83%,.05);
+}
+
+.splitview-nav > li.splitview-active:-moz-locale-dir(rtl) {
+  background-image: url(itemArrow-rtl.png),
+                    -moz-linear-gradient(left, black, black),
+                    -moz-linear-gradient(hsl(206,61%,40%), hsl(206,61%,31%));
+  background-repeat: no-repeat, no-repeat, repeat-x;
+  background-position: center left, top left, top right;
 }
-.splitview-main .toolbar {
-  -moz-box-flex: 1;
-  -moz-box-orient: horizontal;
-  -moz-padding-start: 3px;
+
+/* Toolbars */
+
+.devtools-toolbar {
+  height: 26px;
+  background-origin: border-box;
+  background-clip: border-box;
+  border-top: 1px solid hsla(210,8%,5%,.5);
+  border-bottom: 1px solid hsla(210,8%,5%,.65);
+  padding: 3px;
+}
+
+.splitview-main > toolbar:-moz-locale-dir(ltr) {
+  border-right: 1px solid hsla(210,8%,5%,.5);
+}
+
+.splitview-main > toolbar:-moz-locale-dir(rtl) {
+  border-left: 1px solid hsla(210,8%,5%,.5);
 }
 
-a {
-  color: -moz-hyperlinktext;
-  text-decoration: underline;
+.devtools-toolbarbutton {
+  font-size: 11px;
+  padding: 0 8px;
+  width: auto;
+  min-width: 48px;
+  min-height: 0;
 }
 
-button {
-  margin: 0;
+
+/* Resizers */
+
+.splitview-landscape-resizer {
+  -moz-appearance: none;
+  width: 7px;
+  background-image: -moz-linear-gradient(left, black 1px, rgba(255,255,255,0.2) 1px);
+  background-size: 2px 10px;
+  background-clip: padding-box;
+  background-repeat: repeat-x;
+  border-width: 1px;
+  border-style: solid;
+  border-color: rgba(255, 255, 255, 0.05);
+  margin: 5px 0;
+  -moz-transform: translateX(-7px);
+}
+
+.splitview-landscape-resizer:-moz-locale-dir(rtl) {
+  -moz-transform: translateX(7px);
+}
+
+.splitview-portrait-resizer {
+  -moz-appearance: none;
+  background: -moz-linear-gradient(top, black 1px, rgba(255,255,255,0.2) 1px),
+              -moz-linear-gradient(top, hsl(210,11%,36%), hsl(210,11%,18%));
+  height: 12px;
+  background-size: 10px 2px, 100% 12px;
+  background-clip: content-box, border-box;
+  background-repeat: repeat-y, no-repeat;
+  background-position: center center;
+  padding: 2px 0;
+  border-top: 1px solid hsla(210,8%,5%,.5);
+  border-bottom: 1px solid hsla(210,8%,5%,.5);
 }
 
 /* limited width mode (hide search unless it has focus [search-on-type]) */
 @media (max-width: 250px) {
   .splitview-filter {
     max-width: none;
     position: fixed;
     margin: 0;
     bottom: -4em;
-    -moz-transition-property: bottom;
-    -moz-transition-duration: 0.2s;
   }
   .splitview-filter[focused="true"] {
     bottom: 0;
   }
 }
--- a/browser/themes/gnomestripe/devtools/styleeditor.css
+++ b/browser/themes/gnomestripe/devtools/styleeditor.css
@@ -15,163 +15,142 @@
  * The Original Code is Style Editor code.
  *
  * The Initial Developer of the Original Code is Mozilla Foundation.
  * Portions created by the Initial Developer are Copyright (C) 2011
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
  *   Cedric Vivier <cedricv@neonux.com> (original author)
+ *   Paul Rouget <paul@mozilla.com>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either the GNU General Public License Version 2 or later (the "GPL"), or
  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-ol.splitview-nav:focus {
+.stylesheet-title,
+.stylesheet-name {
+  text-decoration: none;
+  color: hsl(207,17%,88%);
+}
+
+.stylesheet-name {
+  font-size: 13px;
+}
+
+.stylesheet-rule-count,
+.stylesheet-saveButton {
+  color: hsl(211,12%,60%);
+}
+
+.stylesheet-saveButton {
+  text-decoration: underline;
+  cursor: pointer;
+}
+
+.splitview-active .stylesheet-title,
+.splitview-active .stylesheet-name {
+  color: hsl(0,0%,100%);
+}
+
+.splitview-active .stylesheet-rule-count,
+.splitview-active .stylesheet-saveButton {
+  color: hsl(200,66%,70%);
+}
+
+.splitview-nav:focus {
   outline: 0; /* focus ring is on the stylesheet name */
 }
 
-.splitview-nav > li:-moz-locale-dir(ltr),
-.splitview-nav > li hgroup:-moz-locale-dir(ltr) {
-  float: left;
-}
-.splitview-nav > li:-moz-locale-dir(rtl),
-.splitview-nav > li hgroup:-moz-locale-dir(rtl) {
-  float: right;
-}
-.splitview-nav > li > hgroup.stylesheet-info {
-  max-width: 66%;
-}
-.splitview-nav > li > hgroup .stylesheet-name {
-  display: inline-block;
-  width: 100%;
-  max-width: 34ex;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
 .splitview-nav > li.unsaved > hgroup .stylesheet-name {
   font-style: italic;
 }
-.splitview-nav > li.unsaved > hgroup .stylesheet-name:before:-moz-locale-dir(ltr),
-.splitview-nav > li.unsaved > hgroup .stylesheet-name:after:-moz-locale-dir(rtl) {
+
+.splitview-nav:-moz-locale-dir(ltr) > li.unsaved > hgroup .stylesheet-name:before,
+.splitview-nav:-moz-locale-dir(rtl) > li.unsaved > hgroup .stylesheet-name:after {
   font-style: italic;
-  content: "* ";
 }
 
-.splitview-nav > li > .stylesheet-enabled {
-  float: left;
-  width: 20px;
-  height: 20px;
-  -moz-margin-end: 6px;
-  border: 1px solid transparent;
-  background-image: url(eye-toggle.png);
-  background-position: center center;
+.stylesheet-enabled {
+  padding: 8px 0;
+  margin: 0 8px;
+  background-image: url(itemToggle.png);
   background-repeat: no-repeat;
-}
-.splitview-nav > li > .stylesheet-enabled:-moz-locale-dir(rtl) {
-  float: right;
+  background-clip: content-box;
+  background-position: 0 8px;
+  width: 24px;
+  height: 40px;
 }
-.splitview-nav > li.disabled > .stylesheet-enabled {
-  background-image: none;
+
+.disabled > .stylesheet-enabled {
+  background-position: -24px 8px;
 }
+
 .splitview-nav > li > .stylesheet-enabled:focus,
 .splitview-nav > li:hover > .stylesheet-enabled {
   outline: 0;
-  border: 1px inset WindowFrame;
-  -moz-margin-end: 6px;
-}
-
-.splitview-nav > li hgroup .stylesheet-title {
-  color: GrayText;
-  font-size: 0.8em;
-}
-.splitview-nav > li.error hgroup > .stylesheet-error-message {
-  color: red;
-  font-size: 0.8em;
 }
 
-.splitview-nav > li > .stylesheet-more {
-  position: relative;
-  right: 0;
-}
-.splitview-nav > li > .stylesheet-more:-moz-locale-dir(rtl) {
-  left: 0;
+.stylesheet-error-message {
+  color: red;
 }
 
-.splitview-nav > li hgroup.stylesheet-stats,
-.splitview-nav > li hgroup.stylesheet-actions {
-  position: absolute;
-  z-index: 2;
-  -moz-transition-property: left, right;
-  -moz-transition-duration: 0.2s;
-  -moz-transition-delay: 0.2s;
-  -moz-transition-timing-function: ease-in-out;
+.stylesheet-more > h3 {
+  font-size: 11px;
+  -moz-margin-end: 2px;
 }
 
-.splitview-nav > li hgroup.stylesheet-stats {
-  z-index: 1;
-  -moz-transition-delay: 0.4s;
-  color: GrayText;
-  padding-left: 6px; /* Fitts */
-  padding-right: 6px;
-}
-.splitview-nav > li hgroup.stylesheet-actions a {
-  color: ButtonText;
-  padding-left: 6px; /* Fitts */
-  padding-right: 6px;
+.devtools-searchinput {
+  max-width: 25ex;
+  font-size: 11px;
 }
 
-.splitview-nav > li hgroup.stylesheet-actions:-moz-locale-dir(ltr),
-.splitview-nav > li:hover hgroup.stylesheet-stats:-moz-locale-dir(ltr),
-.splitview-nav > li:focus hgroup.stylesheet-stats:-moz-locale-dir(ltr),
-.splitview-nav > li.splitview-active hgroup.stylesheet-stats:-moz-locale-dir(ltr) {
-  right: -50ex;
-}
-.splitview-nav > li hgroup.stylesheet-actions:-moz-locale-dir(rtl),
-.splitview-nav > li:hover hgroup.stylesheet-stats:-moz-locale-dir(rtl),
-.splitview-nav > li:focus hgroup.stylesheet-stats:-moz-locale-dir(rtl),
-.splitview-nav > li.splitview-active hgroup.stylesheet-stats:-moz-locale-dir(rtl) {
-  left: -50ex;
-}
-.splitview-nav > li hgroup.stylesheet-stats:-moz-locale-dir(ltr),
-.splitview-nav > li:hover hgroup.stylesheet-actions:-moz-locale-dir(ltr),
-.splitview-nav > li:focus hgroup.stylesheet-actions:-moz-locale-dir(ltr),
-.splitview-nav > li.splitview-active hgroup.stylesheet-actions:-moz-locale-dir(ltr) {
-  right: 0;
-}
-.splitview-nav > li hgroup.stylesheet-stats:-moz-locale-dir(rtl),
-.splitview-nav > li:hover hgroup.stylesheet-actions:-moz-locale-dir(rtl),
-.splitview-nav > li:focus hgroup.stylesheet-actions:-moz-locale-dir(rtl),
-.splitview-nav > li.splitview-active hgroup.stylesheet-actions:-moz-locale-dir(rtl) {
-  left: 0;
+.placeholder {
+  color: white;
 }
 
-.stylesheet-editor-input {
-  display: -moz-box;
-  -moz-box-flex: 1;
-  overflow: hidden;
-  min-height: 8em;
-  margin: 3px;
-  margin-top: 0;
-  border: 1px inset WindowFrame;
-  border-radius: 4px;
-  background-color: -moz-default-background-color;
+.placeholder a {
+  text-decoration: underline;
 }
 
 h1,
 h2,
 h3 {
   font-size: inherit;
   font-weight: normal;
   margin: 0;
   padding: 0;
 }
+
+/* portrait mode */
+@media (max-aspect-ratio: 5/3) {
+  .splitview-nav {
+    box-shadow: none;
+  }
+
+  .splitview-nav > li.splitview-active {
+    background-size: 0 0, 0 0, auto;
+  }
+
+  .stylesheet-enabled {
+    padding: 0;
+    background-position: 0 0;
+    height: 24px;
+  }
+
+  .disabled > .stylesheet-enabled {
+    background-position: -24px 0;
+  }
+
+  .splitview-nav > li > hgroup.stylesheet-info {
+    -moz-box-align: baseline;
+  }
+}
--- a/browser/themes/gnomestripe/jar.mn
+++ b/browser/themes/gnomestripe/jar.mn
@@ -77,16 +77,17 @@ browser.jar:
   skin/classic/browser/tabbrowser/tab.png             (tabbrowser/tab.png)
   skin/classic/browser/tabbrowser/tab-overflow-border.png (tabbrowser/tab-overflow-border.png)
   skin/classic/browser/tabbrowser/tabDragIndicator.png (tabbrowser/tabDragIndicator.png)
   skin/classic/browser/tabview/edit-light.png         (tabview/edit-light.png)
   skin/classic/browser/tabview/search.png             (tabview/search.png)
   skin/classic/browser/tabview/stack-expander.png     (tabview/stack-expander.png)
   skin/classic/browser/tabview/tabview.png            (tabview/tabview.png)
   skin/classic/browser/tabview/tabview.css            (tabview/tabview.css)
+  skin/classic/browser/devtools/common.css            (devtools/common.css)
   skin/classic/browser/devtools/arrows.png            (devtools/arrows.png)
   skin/classic/browser/devtools/goto-mdn.png          (devtools/goto-mdn.png)
   skin/classic/browser/devtools/csshtmltree.css       (devtools/csshtmltree.css)
   skin/classic/browser/devtools/webconsole.css                  (devtools/webconsole.css)
   skin/classic/browser/devtools/webconsole_networkpanel.css     (devtools/webconsole_networkpanel.css)
   skin/classic/browser/devtools/webconsole.png                  (devtools/webconsole.png)
   skin/classic/browser/devtools/gcli.css              (devtools/gcli.css)
   skin/classic/browser/devtools/breadcrumbs/ltr-end-pressed.png              (devtools/breadcrumbs/ltr-end-pressed.png)
@@ -110,17 +111,20 @@ browser.jar:
   skin/classic/browser/devtools/breadcrumbs/rtl-middle-selected.png          (devtools/breadcrumbs/rtl-middle-selected.png)
   skin/classic/browser/devtools/breadcrumbs/rtl-middle.png                   (devtools/breadcrumbs/rtl-middle.png)
   skin/classic/browser/devtools/breadcrumbs/rtl-start-pressed.png            (devtools/breadcrumbs/rtl-start-pressed.png)
   skin/classic/browser/devtools/breadcrumbs/rtl-start-selected-pressed.png   (devtools/breadcrumbs/rtl-start-selected-pressed.png)
   skin/classic/browser/devtools/breadcrumbs/rtl-start.png                    (devtools/breadcrumbs/rtl-start.png)
   skin/classic/browser/devtools/breadcrumbs/rtl-start-selected.png           (devtools/breadcrumbs/rtl-start-selected.png)
   skin/classic/browser/devtools/splitview.css         (devtools/splitview.css)
   skin/classic/browser/devtools/styleeditor.css       (devtools/styleeditor.css)
-  skin/classic/browser/devtools/eye-toggle.png        (devtools/eye-toggle.png)
+  skin/classic/browser/devtools/magnifying-glass.png  (devtools/magnifying-glass.png)
+  skin/classic/browser/devtools/itemToggle.png        (devtools/itemToggle.png)
+  skin/classic/browser/devtools/itemArrow-rtl.png     (devtools/itemArrow-rtl.png)
+  skin/classic/browser/devtools/itemArrow-ltr.png     (devtools/itemArrow-ltr.png)
 #ifdef MOZ_SERVICES_SYNC
   skin/classic/browser/sync-16-throbber.png
   skin/classic/browser/sync-16.png
   skin/classic/browser/sync-24-throbber.png
   skin/classic/browser/sync-32.png
   skin/classic/browser/sync-bg.png
   skin/classic/browser/sync-128.png
   skin/classic/browser/sync-desktopIcon.png
--- a/browser/themes/pinstripe/browser.css
+++ b/browser/themes/pinstripe/browser.css
@@ -2717,88 +2717,35 @@ panel[dimmed="true"] {
 #highlighter-veil-container[locked] > #highlighter-veil-middlebox > #highlighter-veil-transparentbox {
   box-shadow: 0 0 0 1px black;
   outline-color: white;
 }
 
 /* Highlighter toolbar */
 
 #inspector-toolbar {
-  -moz-appearance: none;
   border-top: 1px solid hsla(210, 8%, 5%, .65);
-  box-shadow: 0 1px 0 0 hsla(210, 16%, 76%, .2) inset;
-  background-image: -moz-linear-gradient(top, hsl(210,11%,36%), hsl(210,11%,18%));
   padding: 4px 16px 4px 0; /* use -moz-padding-end: 16px when/if bug 631729 gets fixed */
 }
 
 #inspector-toolbar[treepanel-open] {
   padding: 0 0 4px;
 }
 
-#devtools-sidebar-toolbar {
-  -moz-appearance: none;
-  padding: 4px 3px;
-  box-shadow: 0 1px 0 0 hsla(210, 16%, 76%, .2) inset;
-  background-image: -moz-linear-gradient(top, hsl(210,11%,36%), hsl(210,11%,18%));
-}
-
 #devtools-side-splitter {
   background-image: none !important;
   border: 0;
   -moz-border-start: 1px solid #242b33;
   min-width: 0;
   width: 3px;
   background-color: transparent;
   -moz-margin-end: -3px;
   position: relative;
 }
 
-#inspector-inspect-toolbutton,
-#inspector-tools > toolbarbutton,
-#devtools-sidebar-toolbar > toolbarbutton {
-  -moz-appearance: none;
-  min-width: 78px;
-  min-height: 22px;
-  color: hsl(210,30%,85%);
-  text-shadow: 0 -1px 0 hsla(210,8%,5%,.45);
-  border: 1px solid hsla(210,8%,5%,.45);
-  border-radius: @toolbarbuttonCornerRadius@;
-  background: -moz-linear-gradient(hsla(212,7%,57%,.35), hsla(212,7%,57%,.1)) padding-box;
-  box-shadow: 0 1px 0 hsla(210,16%,76%,.15) inset, 0 0 0 1px hsla(210,16%,76%,.15) inset, 0 1px 0 hsla(210,16%,76%,.15);
-}
-
-#inspector-inspect-toolbutton > .toolbarbutton-text ,
-#inspector-tools > toolbarbutton  > .toolbarbutton-text,
-#devtools-sidebar-toolbar > toolbarbutton > .toolbarbutton-text {
-  margin: 1px 6px;
-}
-
-#inspector-inspect-toolbutton:not([checked]):hover:active,
-#inspector-tools > toolbarbutton:not([checked]):hover:active,
-#devtools-sidebar-toolbar > toolbarbutton:not([checked]):hover:active {
-  border-color: hsla(210,8%,5%,.6);
-  background: -moz-linear-gradient(hsla(220,6%,10%,.3), hsla(212,7%,57%,.15) 65%, hsla(212,7%,57%,.3));
-  box-shadow: 0 0 3px hsla(210,8%,5%,.25) inset, 0 1px 3px hsla(210,8%,5%,.25) inset, 0 1px 0 hsla(210,16%,76%,.15);
-}
-
-#inspector-inspect-toolbutton[checked],
-#inspector-tools > toolbarbutton[checked],
-#devtools-sidebar-toolbar > toolbarbutton[checked] {
-  color: hsl(208,100%,60%) !important;
-  border-color: hsla(210,8%,5%,.6);
-  background: -moz-linear-gradient(hsla(220,6%,10%,.6), hsla(210,11%,18%,.45) 75%, hsla(210,11%,30%,.4));
-  box-shadow: 0 1px 3px hsla(210,8%,5%,.25) inset, 0 1px 3px hsla(210,8%,5%,.25) inset, 0 1px 0 hsla(210,16%,76%,.15);
-}
-
-#inspector-inspect-toolbutton[checked]:hover:active,
-#inspector-tools > toolbarbutton[checked]:hover:active,
-#devtools-sidebar-toolbar > toolbarbutton[checked]:hover:active {
-  background-color: hsla(210,8%,5%,.2);
-}
-
 /* Highlighter - toolbar resizers */
 
 .inspector-resizer {
   -moz-appearance: none;
   cursor: n-resize;
 }
 
 #inspector-top-resizer {
new file mode 100644
--- /dev/null
+++ b/browser/themes/pinstripe/devtools/common.css
@@ -0,0 +1,113 @@
+/* vim:set ts=2 sw=2 sts=2 et: */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is DevTools code.
+ *
+ * The Initial Developer of the Original Code is Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Paul Rouget <paul@mozilla.com> (original author)
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+%include ../shared.inc
+
+/* Toolbar and Toolbar items */
+
+.devtools-toolbar {
+  -moz-appearance: none;
+  padding: 4px 3px;
+  box-shadow: 0 1px 0 0 hsla(210, 16%, 76%, .2) inset;
+  background-image: -moz-linear-gradient(top, hsl(210,11%,36%), hsl(210,11%,18%));
+}
+
+.devtools-toolbarbutton {
+  -moz-appearance: none;
+  min-width: 78px;
+  min-height: 22px;
+  color: hsl(210,30%,85%);
+  text-shadow: 0 -1px 0 hsla(210,8%,5%,.45);
+  border: 1px solid hsla(210,8%,5%,.45);
+  border-radius: @toolbarbuttonCornerRadius@;
+  background: -moz-linear-gradient(hsla(212,7%,57%,.35), hsla(212,7%,57%,.1)) padding-box;
+  box-shadow: 0 1px 0 hsla(210,16%,76%,.15) inset, 0 0 0 1px hsla(210,16%,76%,.15) inset, 0 1px 0 hsla(210,16%,76%,.15);
+}
+
+.devtools-toolbarbutton > .toolbarbutton-text {
+  margin: 1px 6px;
+}
+
+.devtools-toolbarbutton:not([checked]):hover:active {
+  border-color: hsla(210,8%,5%,.6);
+  background: -moz-linear-gradient(hsla(220,6%,10%,.3), hsla(212,7%,57%,.15) 65%, hsla(212,7%,57%,.3));
+  box-shadow: 0 0 3px hsla(210,8%,5%,.25) inset, 0 1px 3px hsla(210,8%,5%,.25) inset, 0 1px 0 hsla(210,16%,76%,.15);
+}
+
+.devtools-toolbarbutton[checked] {
+  color: hsl(208,100%,60%) !important;
+  border-color: hsla(210,8%,5%,.6);
+  background: -moz-linear-gradient(hsla(220,6%,10%,.6), hsla(210,11%,18%,.45) 75%, hsla(210,11%,30%,.4));
+  box-shadow: 0 1px 3px hsla(210,8%,5%,.25) inset, 0 1px 3px hsla(210,8%,5%,.25) inset, 0 1px 0 hsla(210,16%,76%,.15);
+}
+
+.devtools-toolbarbutton[checked]:hover:active {
+  background-color: hsla(210,8%,5%,.2);
+}
+
+/* Search input */
+
+.devtools-searchinput {
+  -moz-appearance: none;
+  margin: 0 3px;
+  background-color: transparent;
+  border: 1px solid hsla(210,8%,5%,.6);
+  border-radius: 20px;
+  background-image: url(magnifying-glass.png), -moz-linear-gradient(hsla(210,16%,76%,.15), hsla(210,16%,76%,.35));
+  background-repeat: no-repeat;
+  background-position: 4px 3px, top left, top left;
+  padding-top: 0;
+  padding-bottom: 0;
+  -moz-padding-start: 18px;
+  -moz-padding-end: 12px;
+  box-shadow: 0 1px 1px hsla(210,8%,5%,.3) inset,
+              0 0 0 1px hsla(210,16%,76%,.1) inset,
+              0 1px 0 hsla(210,16%,76%,.15);
+  color: hsl(210,30%,85%);
+}
+
+.devtools-searchinput:-moz-locale-dir(rtl) {
+  background-position: -moz-calc(100% - 4px) 3px, top left, top left;
+}
+
+.devtools-searchinput > .textbox-input-box > .textbox-search-icons {
+  display: none;
+}
+
+.devtools-searchinput > .textbox-input-box > .textbox-input:-moz-placeholder {
+  color: hsl(208,10%,66%);
+}
deleted file mode 100644
index 4ad3c219c6493fdfbe3152b206a9052288dee505..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6cc3e984b62fefeba1b6a22f7129bc23d3e9ddc1
GIT binary patch
literal 2908
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
GLSTaT2WY(j
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0f8f4b1b0b6a6776d1aac85209e2374cb9bbffba
GIT binary patch
literal 2912
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
KMNUMnLSTZ7y=cw=
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cf70394e6a1c4fae7c8aa60266063d417740798a
GIT binary patch
literal 1103
zc$@)G1hD&wP)<h;3K|Lk000e1NJLTq001xm000;W1^@s6y#0RM0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#@kvBMRCwC#S6yfvRTQ3kXLoj!?6_@H
zv%5{ENow;`TPuiIL&ZK+6cO6uLks$%NU2YyQ1GE3^r_-g3s!;wn-_)J)}J+4MJ%WY
zMX3)>2>Gk2yVGQMlBVfoce}HhnL9nFo-M;RyTKPFuoph&&b{Z}d%p8`XPD=C(pqj@
zTH~!wpiZDpV2!uH!%npIk;y-={v1ujTV9tK>y^3O&6pJ9oHHTBg5$cQo)CH_Ykbk!
z(LP_fHrf<k_3+F>PKHM_pn(tsFn|rX2Pgq<104UlM6<f82e^J?<c+r0#1Daha@?`q
z?ytZ7?xPm1`{2gbtp_iCGj!Tsc6wm$-F8j8lFt_oH*b34UwIRhN5!86v;mN98ZZJF
z2Bc_g6JQ6RrP@BMe3AJ)AkR#Xekcc(y}}WtTp_PN+qdULE|)jSB4{B+RU^@BSARLx
z)D&q8$UMAUvMz1zdg_CP*}ueU9suRr;jw{U(bAKE${Q8W=>{~?`y60qH4kuoYUCsj
z1b5rEYkEv_&R_U)5R||3`>#K0MrxveUZ3p8K91oWgq3SMuBn7V`%)9vkD@17ZOfy@
z*OS5sot~&@7oo9Y4)Hi3UdsbKJvn?_35WODjws?HPq^;pt=r#$zM1)Ze9)74>>twz
zBhk_OHX1s8WAszTWsGH}1muWSym!96=jpSKIU`n3K3)+HE?|`UU6cpd@cb$2Z^x+c
ztuep@#v@6L36w7sB2gujr=;;1<H*iJ<%-3U6$*#Z-I8UMEON00GB(LG7qYu(SsQ5I
z<tkOrA1eO7@V$!)8NZxdwT$-ddF9-kF*nH>!wqbRZJxaNIa)^gDmnC-Y2KX$WU-H9
zIEOMQi)*r(?D+F9zI=|ztr$V*O;S*hT-oZgfIMNA#u`YbEPt2wSTTf<StK5dB`zl~
z9Eru_8t@j9=PvDib^o#Pi7Cv=D6KPld%CPE-zU#VOnwZG;Mq(j_1b|$16jk!q7o27
zZj~HhRC!cixZJElxYI{42e^ga@F#I)6+#j!kcbTqe0*T%&K=LlvaEQXdt29Uee&E3
zFO8wlAHV&yP1D+rFeW!c)Hq{f6T@%5b@(DEkFl9s%uKs#W2jalBZ-Yvi5P{cL1fC7
zk5MVbb_XzD4y9TI$|RbwQta;Am3aTed%L!Dc4$#m)q+8J{e#SN#nPg=luD)bnX~-^
z*OEh*({xAyl}DLc1S&4Fb)>N3%So4Vs7N7aSG&koB2dna5S6n=x*<JZa&fYpLv{SY
zt+|+;ei$}tL+HQ#l&ENe*e_F31;{hZR~ZBmK<fxl{(t$kWA$IkI)OTYwcYLuFaR=9
VtWP9k_G|zE002ovPDHLkV1jva5dZ)H
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..673c32810029e3121cbbe386b108a2951520783b
GIT binary patch
literal 275
zc%17D@N?(olHy`uVBq!ia0vp^+#t-s1|(OmDOUqhk|nMYCBgY=CFO}lsSJ)O`AMk?
zp1FzXsX?iUDV2pMQ*D5XwtBiahE&{2x>NXqhgskQ<3?$L(}oTQlojr=9+@vOfq`3~
zo1xH1pjfH%HN!?Df%D9dt{XV2DU>y7)i4~{yzmEO$QjO?DHD=ZHL7_9>{}n11{kK6
z9BsLw(e!;`j=jRO#w7a{H)2cp-!Uh#DugjU5;8f=(l|r9WB(x^wx4BI0`bg`^aFU3
z_Om2$D)hBxG0Z;0z<WM4V_B2P5yi}io~z0M44bM1C-Lsm;rYSn(`+U%pNYeOAx2GU
V`l@q2u|N+nc)I$ztaD0e0su94U2OmW
--- a/browser/themes/pinstripe/devtools/splitview.css
+++ b/browser/themes/pinstripe/devtools/splitview.css
@@ -15,123 +15,156 @@
  * The Original Code is Style Editor code.
  *
  * The Initial Developer of the Original Code is Mozilla Foundation.
  * Portions created by the Initial Developer are Copyright (C) 2011
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
  *   Cedric Vivier <cedricv@neonux.com> (original author)
+ *   Paul Rouget <paul@mozilla.com>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either the GNU General Public License Version 2 or later (the "GPL"), or
  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-.splitview-root {
-  margin-top: 4px;
+.splitview-nav-container {
+  background-color: hsl(208,11%,27%);
+  color: white;
 }
 
-.splitview-filter {
-  -moz-box-flex: 1;
-  -moz-margin-start: 1ex;
-  max-width: 25ex;
+.splitview-nav {
+  -moz-appearance: none;
+  margin: 0;
+  box-shadow: inset -1px 0 0 #222426;
 }
 
-.splitview-nav-container {
-  -moz-box-pack: center;
-  margin: 4px;
-  border: 1px inset WindowFrame;
-  border-radius: 4px;
-  background-color: -moz-default-background-color;
-  color: -moz-default-color;
+.splitview-nav > li {
+  color: white;
+  background-clip: padding-box;
+  border-bottom: 1px solid hsla(210,16%,76%,.1);
+  box-shadow: inset 0 -1px 0 hsla(210,8%,5%,.25);
+  -moz-padding-end: 8px;
+  -moz-box-align: center;
 }
 
-ol.splitview-nav {
-  overflow-x: hidden;
-  overflow-y: auto;
+.splitview-nav {
   list-style-image: none;
   list-style: none;
   padding: 0;
   margin: 0;
 }
 
-ol.splitview-nav > li {
-  display: -moz-box;
-  -moz-box-orient: vertical;
+.splitview-nav > li {
   outline: 0;
-  border-bottom: 1px solid ThreeDShadow;
-  padding: 2px;
-  padding-top: 4px;
   vertical-align: bottom;
-  color: black;
-  -moz-transition-property: background-color, max-height;
-  -moz-transition-duration: 1s;
-  max-height: 2048px; /* for slide transition */
-}
-ol.splitview-nav > li.splitview-active {
-  background-color: #eaf2fe;   /* same as orion.css's .line_caret */
-}
-ol.splitview-nav > li:hover,
-ol.splitview-nav > li:focus {
-  background-color: #f0f5fd;   /* slightly lighter .line_caret */
 }
 
-ol.splitview-nav > li.splitview-flash {
-  background-color: #faf0e1;   /* complement of .line_caret */
-}
-ol.splitview-nav > li.splitview-slide {
-  max-height: 0;
-  overflow: hidden;
-}
-
-.splitview-side-details {
-  margin: 2px;
-}
-
-.splitview-nav.splitview-all-filtered ~ .splitview-nav.placeholder.all-filtered,
-.splitview-nav:empty ~ .splitview-nav.placeholder.empty {
-  -moz-box-flex: 0;
+.placeholder {
+  -moz-box-flex: 1;
+  -moz-box-back: center;
   text-align: center;
 }
 
-.splitview-main .toolbar,
-.splitview-main .toolbar > * {
-  display: -moz-box;
+.splitview-nav > li.splitview-active {
+  background-image: url(itemArrow-ltr.png),
+                    -moz-linear-gradient(left, black, black),
+                    -moz-linear-gradient(hsl(206,61%,40%), hsl(206,61%,31%));
+  background-repeat: no-repeat, no-repeat, repeat-x;
+  background-position: center right, top right, top left;
+  background-size: auto, 1px 100%, auto;
+  border-bottom: 1px solid hsla(210,8%,5%,.25);
+  box-shadow: inset 0 1px 0 hsla(210,40%,83%,.15),
+              inset 0 -1px 0 hsla(210,40%,83%,.05);
+}
+
+.splitview-nav > li.splitview-active:-moz-locale-dir(rtl) {
+  background-image: url(itemArrow-rtl.png),
+                    -moz-linear-gradient(left, black, black),
+                    -moz-linear-gradient(hsl(206,61%,40%), hsl(206,61%,31%));
+  background-repeat: no-repeat, no-repeat, repeat-x;
+  background-position: center left, top left, top right;
 }
-.splitview-main .toolbar {
-  -moz-box-flex: 1;
-  -moz-box-orient: horizontal;
-  -moz-padding-start: 3px;
+
+/* Toolbars */
+
+.devtools-toolbar {
+  height: 26px;
+  background-origin: border-box;
+  background-clip: border-box;
+  border-top: 1px solid hsla(210,8%,5%,.5);
+  border-bottom: 1px solid hsla(210,8%,5%,.65);
+  padding: 3px;
+}
+
+.splitview-main > toolbar:-moz-locale-dir(ltr) {
+  border-right: 1px solid hsla(210,8%,5%,.5);
+}
+
+.splitview-main > toolbar:-moz-locale-dir(rtl) {
+  border-left: 1px solid hsla(210,8%,5%,.5);
 }
 
-a {
-  color: -moz-hyperlinktext;
-  text-decoration: underline;
+.devtools-toolbarbutton {
+  font-size: 11px;
+  padding: 0 8px;
+  width: auto;
+  min-width: 48px;
+  min-height: 0;
 }
 
-button {
-  margin: 0;
+
+/* Resizers */
+
+.splitview-landscape-resizer {
+  -moz-appearance: none;
+  width: 7px;
+  background-image: -moz-linear-gradient(left, black 1px, rgba(255,255,255,0.2) 1px);
+  background-size: 2px 10px;
+  background-clip: padding-box;
+  background-repeat: repeat-x;
+  border-width: 1px;
+  border-style: solid;
+  border-color: rgba(255, 255, 255, 0.05);
+  margin: 5px 0;
+  -moz-transform: translateX(-7px);
+}
+
+.splitview-landscape-resizer:-moz-locale-dir(rtl) {
+  -moz-transform: translateX(7px);
+}
+
+.splitview-portrait-resizer {
+  -moz-appearance: none;
+  background: -moz-linear-gradient(top, black 1px, rgba(255,255,255,0.2) 1px),
+              -moz-linear-gradient(top, hsl(210,11%,36%), hsl(210,11%,18%));
+  height: 12px;
+  background-size: 10px 2px, 100% 12px;
+  background-clip: content-box, border-box;
+  background-repeat: repeat-y, no-repeat;
+  background-position: center center;
+  padding: 2px 0;
+  border-top: 1px solid hsla(210,8%,5%,.5);
+  border-bottom: 1px solid hsla(210,8%,5%,.5);
 }
 
 /* limited width mode (hide search unless it has focus [search-on-type]) */
 @media (max-width: 250px) {
   .splitview-filter {
     max-width: none;
     position: fixed;
     margin: 0;
     bottom: -4em;
-    -moz-transition-property: bottom;
-    -moz-transition-duration: 0.2s;
   }
   .splitview-filter[focused="true"] {
     bottom: 0;
   }
 }
--- a/browser/themes/pinstripe/devtools/styleeditor.css
+++ b/browser/themes/pinstripe/devtools/styleeditor.css
@@ -15,163 +15,142 @@
  * The Original Code is Style Editor code.
  *
  * The Initial Developer of the Original Code is Mozilla Foundation.
  * Portions created by the Initial Developer are Copyright (C) 2011
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
  *   Cedric Vivier <cedricv@neonux.com> (original author)
+ *   Paul Rouget <paul@mozilla.com>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either the GNU General Public License Version 2 or later (the "GPL"), or
  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-ol.splitview-nav:focus {
+.stylesheet-title,
+.stylesheet-name {
+  text-decoration: none;
+  color: hsl(207,17%,88%);
+}
+
+.stylesheet-name {
+  font-size: 13px;
+}
+
+.stylesheet-rule-count,
+.stylesheet-saveButton {
+  color: hsl(211,12%,60%);
+}
+
+.stylesheet-saveButton {
+  text-decoration: underline;
+  cursor: pointer;
+}
+
+.splitview-active .stylesheet-title,
+.splitview-active .stylesheet-name {
+  color: hsl(0,0%,100%);
+}
+
+.splitview-active .stylesheet-rule-count,
+.splitview-active .stylesheet-saveButton {
+  color: hsl(200,66%,70%);
+}
+
+.splitview-nav:focus {
   outline: 0; /* focus ring is on the stylesheet name */
 }
 
-.splitview-nav > li:-moz-locale-dir(ltr),
-.splitview-nav > li hgroup:-moz-locale-dir(ltr) {
-  float: left;
-}
-.splitview-nav > li:-moz-locale-dir(rtl),
-.splitview-nav > li hgroup:-moz-locale-dir(rtl) {
-  float: right;
-}
-.splitview-nav > li > hgroup.stylesheet-info {
-  max-width: 66%;
-}
-.splitview-nav > li > hgroup .stylesheet-name {
-  display: inline-block;
-  width: 100%;
-  max-width: 34ex;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
 .splitview-nav > li.unsaved > hgroup .stylesheet-name {
   font-style: italic;
 }
-.splitview-nav > li.unsaved > hgroup .stylesheet-name:before:-moz-locale-dir(ltr),
-.splitview-nav > li.unsaved > hgroup .stylesheet-name:after:-moz-locale-dir(rtl) {
+
+.splitview-nav:-moz-locale-dir(ltr) > li.unsaved > hgroup .stylesheet-name:before,
+.splitview-nav:-moz-locale-dir(rtl) > li.unsaved > hgroup .stylesheet-name:after {
   font-style: italic;
-  content: "* ";
 }
 
-.splitview-nav > li > .stylesheet-enabled {
-  float: left;
-  width: 20px;
-  height: 20px;
-  -moz-margin-end: 6px;
-  border: 1px solid transparent;
-  background-image: url(eye-toggle.png);
-  background-position: center center;
+.stylesheet-enabled {
+  padding: 8px 0;
+  margin: 0 8px;
+  background-image: url(itemToggle.png);
   background-repeat: no-repeat;
-}
-.splitview-nav > li > .stylesheet-enabled:-moz-locale-dir(rtl) {
-  float: right;
+  background-clip: content-box;
+  background-position: 0 8px;
+  width: 24px;
+  height: 40px;
 }
-.splitview-nav > li.disabled > .stylesheet-enabled {
-  background-image: none;
+
+.disabled > .stylesheet-enabled {
+  background-position: -24px 8px;
 }
+
 .splitview-nav > li > .stylesheet-enabled:focus,
 .splitview-nav > li:hover > .stylesheet-enabled {
   outline: 0;
-  border: 1px inset WindowFrame;
-  -moz-margin-end: 6px;
-}
-
-.splitview-nav > li hgroup .stylesheet-title {
-  color: GrayText;
-  font-size: 0.8em;
-}
-.splitview-nav > li.error hgroup > .stylesheet-error-message {
-  color: red;
-  font-size: 0.8em;
 }
 
-.splitview-nav > li > .stylesheet-more {
-  position: relative;
-  right: 0;
-}
-.splitview-nav > li > .stylesheet-more:-moz-locale-dir(rtl) {
-  left: 0;
+.stylesheet-error-message {
+  color: red;
 }
 
-.splitview-nav > li hgroup.stylesheet-stats,
-.splitview-nav > li hgroup.stylesheet-actions {
-  position: absolute;
-  z-index: 2;
-  -moz-transition-property: left, right;
-  -moz-transition-duration: 0.2s;
-  -moz-transition-delay: 0.2s;
-  -moz-transition-timing-function: ease-in-out;
+.stylesheet-more > h3 {
+  font-size: 11px;
+  -moz-margin-end: 2px;
 }
 
-.splitview-nav > li hgroup.stylesheet-stats {
-  z-index: 1;
-  -moz-transition-delay: 0.4s;
-  color: GrayText;
-  padding-left: 6px; /* Fitts */
-  padding-right: 6px;
-}
-.splitview-nav > li hgroup.stylesheet-actions a {
-  color: ButtonText;
-  padding-left: 6px; /* Fitts */
-  padding-right: 6px;
+.devtools-searchinput {
+  max-width: 25ex;
+  font-size: 11px;
 }
 
-.splitview-nav > li hgroup.stylesheet-actions:-moz-locale-dir(ltr),
-.splitview-nav > li:hover hgroup.stylesheet-stats:-moz-locale-dir(ltr),
-.splitview-nav > li:focus hgroup.stylesheet-stats:-moz-locale-dir(ltr),
-.splitview-nav > li.splitview-active hgroup.stylesheet-stats:-moz-locale-dir(ltr) {
-  right: -50ex;
-}
-.splitview-nav > li hgroup.stylesheet-actions:-moz-locale-dir(rtl),
-.splitview-nav > li:hover hgroup.stylesheet-stats:-moz-locale-dir(rtl),
-.splitview-nav > li:focus hgroup.stylesheet-stats:-moz-locale-dir(rtl),
-.splitview-nav > li.splitview-active hgroup.stylesheet-stats:-moz-locale-dir(rtl) {
-  left: -50ex;
-}
-.splitview-nav > li hgroup.stylesheet-stats:-moz-locale-dir(ltr),
-.splitview-nav > li:hover hgroup.stylesheet-actions:-moz-locale-dir(ltr),
-.splitview-nav > li:focus hgroup.stylesheet-actions:-moz-locale-dir(ltr),
-.splitview-nav > li.splitview-active hgroup.stylesheet-actions:-moz-locale-dir(ltr) {
-  right: 0;
-}
-.splitview-nav > li hgroup.stylesheet-stats:-moz-locale-dir(rtl),
-.splitview-nav > li:hover hgroup.stylesheet-actions:-moz-locale-dir(rtl),
-.splitview-nav > li:focus hgroup.stylesheet-actions:-moz-locale-dir(rtl),
-.splitview-nav > li.splitview-active hgroup.stylesheet-actions:-moz-locale-dir(rtl) {
-  left: 0;
+.placeholder {
+  color: white;
 }
 
-.stylesheet-editor-input {
-  display: -moz-box;
-  -moz-box-flex: 1;
-  overflow: hidden;
-  min-height: 8em;
-  margin: 3px;
-  margin-top: 0;
-  border: 1px inset WindowFrame;
-  border-radius: 4px;
-  background-color: -moz-default-background-color;
+.placeholder a {
+  text-decoration: underline;
 }
 
 h1,
 h2,
 h3 {
   font-size: inherit;
   font-weight: normal;
   margin: 0;
   padding: 0;
 }
+
+/* portrait mode */
+@media (max-aspect-ratio: 5/3) {
+  .splitview-nav {
+    box-shadow: none;
+  }
+
+  .splitview-nav > li.splitview-active {
+    background-size: 0 0, 0 0, auto;
+  }
+
+  .stylesheet-enabled {
+    padding: 0;
+    background-position: 0 0;
+    height: 24px;
+  }
+
+  .disabled > .stylesheet-enabled {
+    background-position: -24px 0;
+  }
+
+  .splitview-nav > li > hgroup.stylesheet-info {
+    -moz-box-align: baseline;
+  }
+}
--- a/browser/themes/pinstripe/jar.mn
+++ b/browser/themes/pinstripe/jar.mn
@@ -116,16 +116,17 @@ browser.jar:
   skin/classic/browser/tabbrowser/tab-overflow-border.png                (tabbrowser/tab-overflow-border.png)
   skin/classic/browser/tabbrowser/tabDragIndicator.png                   (tabbrowser/tabDragIndicator.png)
   skin/classic/browser/tabview/close.png                    (tabview/close.png)
   skin/classic/browser/tabview/edit-light.png               (tabview/edit-light.png)
   skin/classic/browser/tabview/search.png                   (tabview/search.png)
   skin/classic/browser/tabview/stack-expander.png           (tabview/stack-expander.png)
   skin/classic/browser/tabview/tabview.png                  (tabview/tabview.png)
   skin/classic/browser/tabview/tabview.css                  (tabview/tabview.css)
+* skin/classic/browser/devtools/common.css                  (devtools/common.css)
   skin/classic/browser/devtools/arrows.png                  (devtools/arrows.png)
   skin/classic/browser/devtools/goto-mdn.png                (devtools/goto-mdn.png)
   skin/classic/browser/devtools/csshtmltree.css             (devtools/csshtmltree.css)
   skin/classic/browser/devtools/gcli.css                    (devtools/gcli.css)
   skin/classic/browser/devtools/toolbarbutton-close.png     (devtools/toolbarbutton-close.png)
 * skin/classic/browser/devtools/webconsole.css                  (devtools/webconsole.css)
   skin/classic/browser/devtools/webconsole_networkpanel.css     (devtools/webconsole_networkpanel.css)
   skin/classic/browser/devtools/webconsole.png                  (devtools/webconsole.png)
@@ -150,17 +151,20 @@ browser.jar:
   skin/classic/browser/devtools/breadcrumbs/rtl-middle-selected.png          (devtools/breadcrumbs/rtl-middle-selected.png)
   skin/classic/browser/devtools/breadcrumbs/rtl-middle.png                   (devtools/breadcrumbs/rtl-middle.png)
   skin/classic/browser/devtools/breadcrumbs/rtl-start-pressed.png            (devtools/breadcrumbs/rtl-start-pressed.png)
   skin/classic/browser/devtools/breadcrumbs/rtl-start-selected-pressed.png   (devtools/breadcrumbs/rtl-start-selected-pressed.png)
   skin/classic/browser/devtools/breadcrumbs/rtl-start.png                    (devtools/breadcrumbs/rtl-start.png)
   skin/classic/browser/devtools/breadcrumbs/rtl-start-selected.png           (devtools/breadcrumbs/rtl-start-selected.png)
   skin/classic/browser/devtools/splitview.css               (devtools/splitview.css)
   skin/classic/browser/devtools/styleeditor.css             (devtools/styleeditor.css)
-  skin/classic/browser/devtools/eye-toggle.png              (devtools/eye-toggle.png)
+  skin/classic/browser/devtools/magnifying-glass.png	    (devtools/magnifying-glass.png)
+  skin/classic/browser/devtools/itemToggle.png		    (devtools/itemToggle.png)
+  skin/classic/browser/devtools/itemArrow-rtl.png	    (devtools/itemArrow-rtl.png)
+  skin/classic/browser/devtools/itemArrow-ltr.png	    (devtools/itemArrow-ltr.png)
 #ifdef MOZ_SERVICES_SYNC
   skin/classic/browser/sync-throbber.png
   skin/classic/browser/sync-16.png
   skin/classic/browser/sync-32.png
   skin/classic/browser/sync-bg.png
   skin/classic/browser/sync-128.png
   skin/classic/browser/sync-desktopIcon.png
   skin/classic/browser/sync-mobileIcon.png
--- a/browser/themes/winstripe/browser.css
+++ b/browser/themes/winstripe/browser.css
@@ -1709,25 +1709,31 @@ richlistitem[type~="action"][actiontype=
 }
 
 /* Implements editBookmarkPanel resizing on folderTree un-collapse. */
 #editBMPanel_folderTree {
   min-width: 27em;
 }
 
 .panel-promo-box {
-  margin: 8px -16px -16px -16px;
-  padding: 8px 16px;
-  background-color: #f1f5fb;
-  color: GrayText;
+  margin: 16px 0 -2px;
+}
+
+@media all and (-moz-windows-default-theme) {
+  .panel-promo-box {
+    margin: 8px -16px -16px;
+    padding: 8px 16px;
 %ifndef WINSTRIPE_AERO
-  border-bottom-left-radius: 6px;
-  border-bottom-right-radius: 6px;
+    border-bottom-left-radius: 6px;
+    border-bottom-right-radius: 6px;
 %endif
-  box-shadow: 0px 1px 2px rgb(204,214,234) inset;
+    background-color: #f1f5fb;
+    color: GrayText;
+    box-shadow: 0px 1px 2px rgb(204,214,234) inset;
+  }
 }
 
 .panel-promo-icon {
   list-style-image: url("chrome://browser/skin/sync-notification-24.png");
   -moz-margin-end: 10px;
   vertical-align: middle;
 }
 
@@ -2649,88 +2655,34 @@ panel[dimmed="true"] {
 #highlighter-veil-container[locked] > #highlighter-veil-middlebox > #highlighter-veil-transparentbox {
   box-shadow: 0 0 0 1px black;
   outline-color: white;
 }
 
 /* Highlighter toolbar */
 
 #inspector-toolbar {
-  -moz-appearance: none;
-  padding: 4px 3px;
   border-top: 1px solid hsla(211,68%,6%,.65) !important;
-  box-shadow: 0 1px 0 hsla(209,29%,72%,.25) inset;
-  background-image: -moz-linear-gradient(top, hsl(209,18%,34%), hsl(210,24%,16%));
 }
 
 #inspector-toolbar[treepanel-open] {
   padding-top: 0;
   -moz-padding-end: 0;
 }
 
-#devtools-sidebar-toolbar {
-  -moz-appearance: none;
-  padding: 4px 3px;
-  box-shadow: 0 1px 0 hsla(209,29%,72%,.25) inset;
-  background-image: -moz-linear-gradient(top, hsl(209,18%,34%), hsl(210,24%,16%));
-}
-
 #devtools-side-splitter {
   border: 0;
   -moz-border-start: 1px solid #242b33;
   min-width: 0;
   width: 3px;
   background-color: transparent;
   -moz-margin-end: -3px;
   position: relative;
 }
 
-#inspector-inspect-toolbutton,
-#inspector-tools > toolbarbutton,
-#devtools-sidebar-toolbar > toolbarbutton {
-  -moz-appearance: none;
-  min-width: 78px;
-  min-height: 22px;
-  color: hsl(210,30%,85%);
-  text-shadow: 0 -1px 0 hsla(210,8%,5%,.45);
-  border: 1px solid hsla(211,68%,6%,.5);
-  border-radius: 3px;
-  background: -moz-linear-gradient(hsla(209,13%,54%,.35), hsla(209,13%,54%,.1) 85%, hsla(209,13%,54%,.2)) padding-box;
-  box-shadow: 0 1px 0 hsla(209,29%,72%,.15) inset, 0 0 0 1px hsla(209,29%,72%,.1) inset, 0 0 0 1px hsla(209,29%,72%,.1), 0 1px 0 hsla(210,16%,76%,.1);
-}
-
-#inspector-inspect-toolbutton > .toolbarbutton-icon,
-#inspector-tools > toolbarbutton  > .toolbarbutton-icon,
-#devtools-sidebar-toolbar > toolbarbutton > .toolbarbutton-icon {
-  margin: 0;
-}
-
-#inspector-inspect-toolbutton:not([checked]):hover:active,
-#inspector-tools > toolbarbutton:not([checked]):hover:active,
-#devtools-sidebar-toolbar > toolbarbutton:not([checked]):hover:active {
-  background-color: hsla(210,18%,9%,.1);
-  background-image: -moz-linear-gradient(hsla(209,13%,54%,.35), hsla(209,13%,54%,.1) 85%, hsla(209,13%,54%,.2));
-  box-shadow: 0 1px 3px hsla(211,68%,6%,.5) inset, 0 0 0 1px hsla(209,29%,72%,.1), 0 1px 0 hsla(210,16%,76%,.1);
-}
-
-#inspector-inspect-toolbutton[checked],
-#inspector-tools > toolbarbutton[checked],
-#devtools-sidebar-toolbar > toolbarbutton[checked] {
-  border-color: hsla(211,68%,6%,.6);
-  background: -moz-linear-gradient(hsla(211,68%,6%,.1), hsla(211,68%,6%,.2));
-  box-shadow: 0 1px 3px hsla(211,68%,6%,.5) inset, 0 0 0 1px hsla(209,29%,72%,.1), 0 1px 0 hsla(210,16%,76%,.1);
-  color: hsl(200,100%,60%) !important;
-}
-
-#inspector-inspect-toolbutton[checked]:hover:active,
-#inspector-tools > toolbarbutton[checked]:hover:active,
-#devtools-sidebar-toolbar > toolbarbutton[checked]:hover:active {
-  background-color: hsla(211,68%,6%,.2);
-}
-
 /* Highlighter - toolbar resizers */
 
 .inspector-resizer {
   -moz-appearance: none;
   cursor: n-resize;
 }
 
 #inspector-top-resizer {
new file mode 100644
--- /dev/null
+++ b/browser/themes/winstripe/devtools/common.css
@@ -0,0 +1,120 @@
+/* vim:set ts=2 sw=2 sts=2 et: */
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is DevTools code.
+ *
+ * The Initial Developer of the Original Code is Mozilla Foundation.
+ * Portions created by the Initial Developer are Copyright (C) 2011
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *   Paul Rouget <paul@mozilla.com> (original author)
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* Toolbar and Toolbar items */
+
+.devtools-toolbar {
+  -moz-appearance: none;
+  padding: 4px 3px;
+  box-shadow: 0 1px 0 hsla(209,29%,72%,.25) inset;
+  background-image: -moz-linear-gradient(top, hsl(209,18%,34%), hsl(210,24%,16%));
+}
+
+.devtools-toolbarbutton {
+  -moz-appearance: none;
+  min-width: 78px;
+  min-height: 22px;
+  color: hsl(210,30%,85%);
+  text-shadow: 0 -1px 0 hsla(210,8%,5%,.45);
+  border: 1px solid hsla(211,68%,6%,.5);
+  border-radius: 3px;
+  background: -moz-linear-gradient(hsla(209,13%,54%,.35), hsla(209,13%,54%,.1) 85%, hsla(209,13%,54%,.2)) padding-box;
+  box-shadow: 0 1px 0 hsla(209,29%,72%,.15) inset, 0 0 0 1px hsla(209,29%,72%,.1) inset, 0 0 0 1px hsla(209,29%,72%,.1), 0 1px 0 hsla(210,16%,76%,.1);
+  -moz-margin-end: 3px;
+}
+
+.devtools-toolbarbutton > .toolbarbutton-icon {
+  margin: 0;
+}
+
+.devtools-toolbarbutton:not([checked]):hover:active {
+  background-color: hsla(210,18%,9%,.1);
+  background-image: -moz-linear-gradient(hsla(209,13%,54%,.35), hsla(209,13%,54%,.1) 85%, hsla(209,13%,54%,.2));
+  box-shadow: 0 1px 3px hsla(211,68%,6%,.5) inset, 0 0 0 1px hsla(209,29%,72%,.1), 0 1px 0 hsla(210,16%,76%,.1);
+}
+
+.devtools-toolbarbutton[checked] {
+  border-color: hsla(211,68%,6%,.6);
+  background: -moz-linear-gradient(hsla(211,68%,6%,.1), hsla(211,68%,6%,.2));
+  box-shadow: 0 1px 3px hsla(211,68%,6%,.5) inset, 0 0 0 1px hsla(209,29%,72%,.1), 0 1px 0 hsla(210,16%,76%,.1);
+  color: hsl(200,100%,60%) !important;
+}
+
+.devtools-toolbarbutton:[checked]:hover:active {
+  background-color: hsla(211,68%,6%,.2);
+}
+
+/* Search input */
+
+.devtools-searchinput {
+  -moz-appearance: none;
+  margin: 0 3px;
+  border: 1px solid hsla(211,68%,6%,.6);
+  box-shadow: inset 0 1px 0 hsla(211,68%,6%,.05), 0 0 0 1px hsla(210,40%,83%,.1);
+  border-radius: 2px;
+  background-color: transparent;
+  background-image: url(magnifying-glass.png), -moz-linear-gradient(hsla(210,16%,76%,.15), hsla(210,16%,76%,.35));
+  background-repeat: no-repeat;
+  background-position: 4px 3px, top left, top left;
+  padding-top: 0;
+  padding-bottom: 0;
+  -moz-padding-start: 18px;
+  -moz-padding-end: 12px;
+  color: hsl(210,30%,85%);
+  -moz-transition-property: background-color, border-color, box-shadow;
+  -moz-transition-duration: 150ms;
+  -moz-transition-timing-function: ease;
+}
+
+.devtools-searchinput[focused] {
+  border-color: hsl(200,70%,40%) hsl(200,75%,37%) hsl(200,80%,35%);
+  background-origin: padding-box;
+  background-clip: padding-box;
+  box-shadow: inset 0 0 0 1px hsla(211,68%,6%,.1);
+}
+
+.devtools-searchinput:-moz-locale-dir(rtl) {
+  background-position: -moz-calc(100% - 4px) 3px, top left, top left;
+}
+
+.devtools-searchinput > .textbox-input-box > .textbox-search-icons {
+  display: none;
+}
+
+.devtools-searchinput > .textbox-input-box > .textbox-input:-moz-placeholder {
+  color: hsl(208,10%,66%);
+}
deleted file mode 100644
index 4ad3c219c6493fdfbe3152b206a9052288dee505..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..6cc3e984b62fefeba1b6a22f7129bc23d3e9ddc1
GIT binary patch
literal 2908
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
GLSTaT2WY(j
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0f8f4b1b0b6a6776d1aac85209e2374cb9bbffba
GIT binary patch
literal 2912
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
KMNUMnLSTZ7y=cw=
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..cf70394e6a1c4fae7c8aa60266063d417740798a
GIT binary patch
literal 1103
zc$@)G1hD&wP)<h;3K|Lk000e1NJLTq001xm000;W1^@s6y#0RM0000PbVXQnQ*UN;
zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#@kvBMRCwC#S6yfvRTQ3kXLoj!?6_@H
zv%5{ENow;`TPuiIL&ZK+6cO6uLks$%NU2YyQ1GE3^r_-g3s!;wn-_)J)}J+4MJ%WY
zMX3)>2>Gk2yVGQMlBVfoce}HhnL9nFo-M;RyTKPFuoph&&b{Z}d%p8`XPD=C(pqj@
zTH~!wpiZDpV2!uH!%npIk;y-={v1ujTV9tK>y^3O&6pJ9oHHTBg5$cQo)CH_Ykbk!
z(LP_fHrf<k_3+F>PKHM_pn(tsFn|rX2Pgq<104UlM6<f82e^J?<c+r0#1Daha@?`q
z?ytZ7?xPm1`{2gbtp_iCGj!Tsc6wm$-F8j8lFt_oH*b34UwIRhN5!86v;mN98ZZJF
z2Bc_g6JQ6RrP@BMe3AJ)AkR#Xekcc(y}}WtTp_PN+qdULE|)jSB4{B+RU^@BSARLx
z)D&q8$UMAUvMz1zdg_CP*}ueU9suRr;jw{U(bAKE${Q8W=>{~?`y60qH4kuoYUCsj
z1b5rEYkEv_&R_U)5R||3`>#K0MrxveUZ3p8K91oWgq3SMuBn7V`%)9vkD@17ZOfy@
z*OS5sot~&@7oo9Y4)Hi3UdsbKJvn?_35WODjws?HPq^;pt=r#$zM1)Ze9)74>>twz
zBhk_OHX1s8WAszTWsGH}1muWSym!96=jpSKIU`n3K3)+HE?|`UU6cpd@cb$2Z^x+c
ztuep@#v@6L36w7sB2gujr=;;1<H*iJ<%-3U6$*#Z-I8UMEON00GB(LG7qYu(SsQ5I
z<tkOrA1eO7@V$!)8NZxdwT$-ddF9-kF*nH>!wqbRZJxaNIa)^gDmnC-Y2KX$WU-H9
zIEOMQi)*r(?D+F9zI=|ztr$V*O;S*hT-oZgfIMNA#u`YbEPt2wSTTf<StK5dB`zl~
z9Eru_8t@j9=PvDib^o#Pi7Cv=D6KPld%CPE-zU#VOnwZG;Mq(j_1b|$16jk!q7o27
zZj~HhRC!cixZJElxYI{42e^ga@F#I)6+#j!kcbTqe0*T%&K=LlvaEQXdt29Uee&E3
zFO8wlAHV&yP1D+rFeW!c)Hq{f6T@%5b@(DEkFl9s%uKs#W2jalBZ-Yvi5P{cL1fC7
zk5MVbb_XzD4y9TI$|RbwQta;Am3aTed%L!Dc4$#m)q+8J{e#SN#nPg=luD)bnX~-^
z*OEh*({xAyl}DLc1S&4Fb)>N3%So4Vs7N7aSG&koB2dna5S6n=x*<JZa&fYpLv{SY
zt+|+;ei$}tL+HQ#l&ENe*e_F31;{hZR~ZBmK<fxl{(t$kWA$IkI)OTYwcYLuFaR=9
VtWP9k_G|zE002ovPDHLkV1jva5dZ)H
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..236d93d49b03455585d2e76b44d1210ea8ab09a7
GIT binary patch
literal 1111
zc$|GxS!mQi7>*~}T9k?w^}&!TDs*#fcWV<Hb(`$!qN#Pe=z5^0$!s^Q$)w4wo2?)o
zpa|ah;)|ey4}yxvn_ye-)rxpLc=SmNf(k`Myk4BN-73O5kj(r)-}lcq|9o?>wPi(B
z#q0`#Agbak<piFm_}`?7_`fc<`8}Ryp=b)V!8FRN4j>{rYzJiAR69TdsCuEZ2$~3D
z+&m+hLMdgnph1&XeGKiHHsOz^WuC2SS%AoP&|z32HF%?&A`M-n)`t~Vu_cf(R(3g{
zt*a%eb!9bPr<N@xn>+y*Fac6Y&)jagf+tc#bp^ck(+oupK~PqthDD{6R#JivAj32p
z(AWl!YzWa@h~-0k9T{Xfmf?a7yEwqHLU^&ja^%RM@NSNt77}u7WG@_vR0bhiV3>S9
zPv`4t=yWg~&+`l$WP-r}Mg-h~g;XzKxwWMVGH^A=u#o{R(vQ`4m_s5(m5yNAqh&33
zq)oVCjHlWRN3+adKt=gK)HFxYE=qv(|Iu!;U;`!rT$pn-d~xYopKJ?~15^Z^B!t^b
zU2M%j1l<g@NvSPNbEKkbhUI657>XjqEf=Yl2I8_v;S6mUy1+L}^$mO^91Atd92aFH
zTr3!E3`!CgjfTRUT;j@5%bCDJC9eL5+fbJ4n_-v@9AgL2V-7UQp+gHsc`fzjwG4Ch
z@>)V=xeOM={BzZ%6!wq595pTuMy(Gl>~{wnyYoP@8$XI-T#h8Y*N2Wju8gdmc6YA$
z;b&^CSJ?FGLGy-(4{zO@`w3|GV}(`m6GyL}t*I=Y5-y)#6#SaCzMX#Ff2!E`?py~o
z^(RS8uqSXYi|62-`RtfzuIAW`RO<Hbx8v)2tFA{XQSX*H^2-5!Y|ZH>J$qXFHh_io
z-6tClPrvqj|B`FTi?gMDKh9K5ezfY)_d(%TMWOqt_+oif$!0D*$V|OieKd09%P!~S
zk)5fJV&?PAzMeO~s-H=NTRS(Z6+-{Onk#o!>>fi{7Z>cRO-~X0ryh^C$d{V8?fnh6
Cc69~-
--- a/browser/themes/winstripe/devtools/splitview.css
+++ b/browser/themes/winstripe/devtools/splitview.css
@@ -15,123 +15,156 @@
  * The Original Code is Style Editor code.
  *
  * The Initial Developer of the Original Code is Mozilla Foundation.
  * Portions created by the Initial Developer are Copyright (C) 2011
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
  *   Cedric Vivier <cedricv@neonux.com> (original author)
+ *   Paul Rouget <paul@mozilla.com>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either the GNU General Public License Version 2 or later (the "GPL"), or
  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-.splitview-root {
-  margin-top: 4px;
+.splitview-nav-container {
+  background-color: hsl(211,21%,26%);
+  color: white;
 }
 
-.splitview-filter {
-  -moz-box-flex: 1;
-  -moz-margin-start: 1ex;
-  max-width: 25ex;
+.splitview-nav {
+  -moz-appearance: none;
+  margin: 0;
+  box-shadow: inset -1px 0 0 #222426;
 }
 
-.splitview-nav-container {
-  -moz-box-pack: center;
-  margin: 4px;
-  border: 1px inset WindowFrame;
-  border-radius: 4px;
-  background-color: -moz-default-background-color;
-  color: -moz-default-color;
+.splitview-nav > li {
+  color: white;
+  background-clip: padding-box;
+  border-bottom: 1px solid hsla(210,40%,83%,.1);
+  box-shadow: inset 0 -1px 0 hsla(211,68%,6%,.3);
+  -moz-padding-end: 8px;
+  -moz-box-align: center;
 }
 
-ol.splitview-nav {
-  overflow-x: hidden;
-  overflow-y: auto;
+.splitview-nav {
   list-style-image: none;
   list-style: none;
   padding: 0;
   margin: 0;
 }
 
-ol.splitview-nav > li {
-  display: -moz-box;
-  -moz-box-orient: vertical;
+.splitview-nav > li {
   outline: 0;
-  border-bottom: 1px solid ThreeDShadow;
-  padding: 2px;
-  padding-top: 4px;
   vertical-align: bottom;
-  color: black;
-  -moz-transition-property: background-color, max-height;
-  -moz-transition-duration: 1s;
-  max-height: 2048px; /* for slide transition */
-}
-ol.splitview-nav > li.splitview-active {
-  background-color: #eaf2fe;   /* same as orion.css's .line_caret */
-}
-ol.splitview-nav > li:hover,
-ol.splitview-nav > li:focus {
-  background-color: #f0f5fd;   /* slightly lighter .line_caret */
 }
 
-ol.splitview-nav > li.splitview-flash {
-  background-color: #faf0e1;   /* complement of .line_caret */
-}
-ol.splitview-nav > li.splitview-slide {
-  max-height: 0;
-  overflow: hidden;
-}
-
-.splitview-side-details {
-  margin: 2px;
-}
-
-.splitview-nav.splitview-all-filtered ~ .splitview-nav.placeholder.all-filtered,
-.splitview-nav:empty ~ .splitview-nav.placeholder.empty {
-  -moz-box-flex: 0;
+.placeholder {
+  -moz-box-flex: 1;
+  -moz-box-back: center;
   text-align: center;
 }
 
-.splitview-main .toolbar,
-.splitview-main .toolbar > * {
-  display: -moz-box;
+.splitview-nav > li.splitview-active {
+  background-image: url(itemArrow-ltr.png),
+                    -moz-linear-gradient(left, black, black),
+                    -moz-linear-gradient(hsl(200,100%,33%), hsl(200,100%,25%));
+  background-repeat: no-repeat, no-repeat, repeat-x;
+  background-position: center right, top right, top left;
+  background-size: auto, 1px 100%, auto;
+  border-bottom: 1px solid hsla(210,8%,5%,.25);
+  box-shadow: inset 0 1px 0 hsla(210,40%,83%,.15),
+              inset 0 -1px 0 hsla(210,40%,83%,.05);
+}
+
+.splitview-nav > li.splitview-active:-moz-locale-dir(rtl) {
+  background-image: url(itemArrow-rtl.png),
+                    -moz-linear-gradient(left, black, black),
+                    -moz-linear-gradient(hsl(200,100%,33%), hsl(200,100%,25%));
+  background-repeat: no-repeat, no-repeat, repeat-x;
+  background-position: center left, top left, top right;
 }
-.splitview-main .toolbar {
-  -moz-box-flex: 1;
-  -moz-box-orient: horizontal;
-  -moz-padding-start: 3px;
+
+/* Toolbars */
+
+.devtools-toolbar {
+  height: 26px;
+  background-origin: border-box;
+  background-clip: border-box;
+  border-top: 1px solid hsla(210,8%,5%,.5);
+  border-bottom: 1px solid hsla(210,8%,5%,.65);
+  padding: 3px;
+}
+
+.splitview-main > toolbar:-moz-locale-dir(ltr) {
+  border-right: 1px solid hsla(210,8%,5%,.5);
+}
+
+.splitview-main > toolbar:-moz-locale-dir(rtl) {
+  border-left: 1px solid hsla(210,8%,5%,.5);
 }
 
-a {
-  color: -moz-hyperlinktext;
-  text-decoration: underline;
+.devtools-toolbarbutton {
+  font-size: 11px;
+  padding: 0 8px;
+  width: auto;
+  min-width: 48px;
+  min-height: 0;
 }
 
-button {
-  margin: 0;
+
+/* Resizers */
+
+.splitview-landscape-resizer {
+  -moz-appearance: none;
+  width: 7px;
+  background-image: -moz-linear-gradient(left, black 1px, rgba(255,255,255,0.2) 1px);
+  background-size: 2px 10px;
+  background-clip: padding-box;
+  background-repeat: repeat-x;
+  border-width: 1px;
+  border-style: solid;
+  border-color: rgba(255, 255, 255, 0.05);
+  margin: 5px 0;
+  -moz-transform: translateX(-7px);
+}
+
+.splitview-landscape-resizer:-moz-locale-dir(rtl) {
+  -moz-transform: translateX(7px);
+}
+
+.splitview-portrait-resizer {
+  -moz-appearance: none;
+  background: -moz-linear-gradient(top, black 1px, rgba(255,255,255,0.2) 1px),
+              -moz-linear-gradient(top, hsl(209,18%,34%), hsl(210,24%,16%));
+  height: 12px;
+  background-size: 10px 2px, 100% 12px;
+  background-clip: content-box, border-box;
+  background-repeat: repeat-y, no-repeat;
+  background-position: center center;
+  padding: 2px 0;
+  border-top: 1px solid hsla(210,8%,5%,.5);
+  border-bottom: 1px solid hsla(210,8%,5%,.5);
 }
 
 /* limited width mode (hide search unless it has focus [search-on-type]) */
 @media (max-width: 250px) {
   .splitview-filter {
     max-width: none;
     position: fixed;
     margin: 0;
     bottom: -4em;
-    -moz-transition-property: bottom;
-    -moz-transition-duration: 0.2s;
   }
   .splitview-filter[focused="true"] {
     bottom: 0;
   }
 }
--- a/browser/themes/winstripe/devtools/styleeditor.css
+++ b/browser/themes/winstripe/devtools/styleeditor.css
@@ -15,163 +15,142 @@
  * The Original Code is Style Editor code.
  *
  * The Initial Developer of the Original Code is Mozilla Foundation.
  * Portions created by the Initial Developer are Copyright (C) 2011
  * the Initial Developer. All Rights Reserved.
  *
  * Contributor(s):
  *   Cedric Vivier <cedricv@neonux.com> (original author)
+ *   Paul Rouget <paul@mozilla.com>
  *
  * Alternatively, the contents of this file may be used under the terms of
  * either the GNU General Public License Version 2 or later (the "GPL"), or
  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  * in which case the provisions of the GPL or the LGPL are applicable instead
  * of those above. If you wish to allow use of your version of this file only
  * under the terms of either the GPL or the LGPL, and not to allow others to
  * use your version of this file under the terms of the MPL, indicate your
  * decision by deleting the provisions above and replace them with the notice
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
-ol.splitview-nav:focus {
+.stylesheet-title,
+.stylesheet-name {
+  text-decoration: none;
+  color: hsl(210,30%,85%);
+}
+
+.stylesheet-name {
+  font-size: 13px;
+}
+
+.stylesheet-rule-count,
+.stylesheet-saveButton {
+  color: hsl(210,16%,53%);
+}
+
+.stylesheet-saveButton {
+  text-decoration: underline;
+  cursor: pointer;
+}
+
+.splitview-active .stylesheet-title,
+.splitview-active .stylesheet-name {
+  color: hsl(0,0%,100%);
+}
+
+.splitview-active .stylesheet-rule-count,
+.splitview-active .stylesheet-saveButton {
+  color: hsl(205,50%,70%);
+}
+
+.splitview-nav:focus {
   outline: 0; /* focus ring is on the stylesheet name */
 }
 
-.splitview-nav > li:-moz-locale-dir(ltr),
-.splitview-nav > li hgroup:-moz-locale-dir(ltr) {
-  float: left;
-}
-.splitview-nav > li:-moz-locale-dir(rtl),
-.splitview-nav > li hgroup:-moz-locale-dir(rtl) {
-  float: right;
-}
-.splitview-nav > li > hgroup.stylesheet-info {
-  max-width: 66%;
-}
-.splitview-nav > li > hgroup .stylesheet-name {
-  display: inline-block;
-  width: 100%;
-  max-width: 34ex;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  white-space: nowrap;
-}
 .splitview-nav > li.unsaved > hgroup .stylesheet-name {
   font-style: italic;
 }
-.splitview-nav > li.unsaved > hgroup .stylesheet-name:before:-moz-locale-dir(ltr),
-.splitview-nav > li.unsaved > hgroup .stylesheet-name:after:-moz-locale-dir(rtl) {
+
+.splitview-nav:-moz-locale-dir(ltr) > li.unsaved > hgroup .stylesheet-name:before,
+.splitview-nav:-moz-locale-dir(rtl) > li.unsaved > hgroup .stylesheet-name:after {
   font-style: italic;
-  content: "* ";
 }
 
-.splitview-nav > li > .stylesheet-enabled {
-  float: left;
-  width: 20px;
-  height: 20px;
-  -moz-margin-end: 6px;
-  border: 1px solid transparent;
-  background-image: url(eye-toggle.png);
-  background-position: center center;
+.stylesheet-enabled {
+  padding: 8px 0;
+  margin: 0 8px;
+  background-image: url(itemToggle.png);
   background-repeat: no-repeat;
-}
-.splitview-nav > li > .stylesheet-enabled:-moz-locale-dir(rtl) {
-  float: right;
+  background-clip: content-box;
+  background-position: 0 8px;
+  width: 24px;
+  height: 40px;
 }
-.splitview-nav > li.disabled > .stylesheet-enabled {
-  background-image: none;
+
+.disabled > .stylesheet-enabled {
+  background-position: -24px 8px;
 }
+
 .splitview-nav > li > .stylesheet-enabled:focus,
 .splitview-nav > li:hover > .stylesheet-enabled {
   outline: 0;
-  border: 1px inset WindowFrame;
-  -moz-margin-end: 6px;
-}
-
-.splitview-nav > li hgroup .stylesheet-title {
-  color: GrayText;
-  font-size: 0.8em;
-}
-.splitview-nav > li.error hgroup > .stylesheet-error-message {
-  color: red;
-  font-size: 0.8em;
 }
 
-.splitview-nav > li > .stylesheet-more {
-  position: relative;
-  right: 0;
-}
-.splitview-nav > li > .stylesheet-more:-moz-locale-dir(rtl) {
-  left: 0;
+.stylesheet-error-message {
+  color: red;
 }
 
-.splitview-nav > li hgroup.stylesheet-stats,
-.splitview-nav > li hgroup.stylesheet-actions {
-  position: absolute;
-  z-index: 2;
-  -moz-transition-property: left, right;
-  -moz-transition-duration: 0.2s;
-  -moz-transition-delay: 0.2s;
-  -moz-transition-timing-function: ease-in-out;
+.stylesheet-more > h3 {
+  font-size: 11px;
+  -moz-margin-end: 2px;
 }
 
-.splitview-nav > li hgroup.stylesheet-stats {
-  z-index: 1;
-  -moz-transition-delay: 0.4s;
-  color: GrayText;
-  padding-left: 6px; /* Fitts */
-  padding-right: 6px;
-}
-.splitview-nav > li hgroup.stylesheet-actions a {
-  color: ButtonText;
-  padding-left: 6px; /* Fitts */
-  padding-right: 6px;
+.devtools-searchinput {
+  max-width: 25ex;
+  font-size: 11px;
 }
 
-.splitview-nav > li hgroup.stylesheet-actions:-moz-locale-dir(ltr),
-.splitview-nav > li:hover hgroup.stylesheet-stats:-moz-locale-dir(ltr),
-.splitview-nav > li:focus hgroup.stylesheet-stats:-moz-locale-dir(ltr),
-.splitview-nav > li.splitview-active hgroup.stylesheet-stats:-moz-locale-dir(ltr) {
-  right: -50ex;
-}
-.splitview-nav > li hgroup.stylesheet-actions:-moz-locale-dir(rtl),
-.splitview-nav > li:hover hgroup.stylesheet-stats:-moz-locale-dir(rtl),
-.splitview-nav > li:focus hgroup.stylesheet-stats:-moz-locale-dir(rtl),
-.splitview-nav > li.splitview-active hgroup.stylesheet-stats:-moz-locale-dir(rtl) {
-  left: -50ex;
-}
-.splitview-nav > li hgroup.stylesheet-stats:-moz-locale-dir(ltr),
-.splitview-nav > li:hover hgroup.stylesheet-actions:-moz-locale-dir(ltr),
-.splitview-nav > li:focus hgroup.stylesheet-actions:-moz-locale-dir(ltr),
-.splitview-nav > li.splitview-active hgroup.stylesheet-actions:-moz-locale-dir(ltr) {
-  right: 0;
-}
-.splitview-nav > li hgroup.stylesheet-stats:-moz-locale-dir(rtl),
-.splitview-nav > li:hover hgroup.stylesheet-actions:-moz-locale-dir(rtl),
-.splitview-nav > li:focus hgroup.stylesheet-actions:-moz-locale-dir(rtl),
-.splitview-nav > li.splitview-active hgroup.stylesheet-actions:-moz-locale-dir(rtl) {
-  left: 0;
+.placeholder {
+  color: white;
 }
 
-.stylesheet-editor-input {
-  display: -moz-box;
-  -moz-box-flex: 1;
-  overflow: hidden;
-  min-height: 8em;
-  margin: 3px;
-  margin-top: 0;
-  border: 1px inset WindowFrame;
-  border-radius: 4px;
-  background-color: -moz-default-background-color;
+.placeholder a {
+  text-decoration: underline;
 }
 
 h1,
 h2,
 h3 {
   font-size: inherit;
   font-weight: normal;
   margin: 0;
   padding: 0;
 }
+
+/* portrait mode */
+@media (max-aspect-ratio: 5/3) {
+  .splitview-nav {
+    box-shadow: none;
+  }
+
+  .splitview-nav > li.splitview-active {
+    background-size: 0 0, 0 0, auto;
+  }
+
+  .stylesheet-enabled {
+    padding: 0;
+    background-position: 0 0;
+    height: 24px;
+  }
+
+  .disabled > .stylesheet-enabled {
+    background-position: -24px 0;
+  }
+
+  .splitview-nav > li > hgroup.stylesheet-info {
+    -moz-box-align: baseline;
+  }
+}
--- a/browser/themes/winstripe/jar.mn
+++ b/browser/themes/winstripe/jar.mn
@@ -100,16 +100,17 @@ browser.jar:
         skin/classic/browser/tabview/close.png                      (tabview/close.png)
         skin/classic/browser/tabview/edit-light.png                 (tabview/edit-light.png)
         skin/classic/browser/tabview/grain.png                      (tabview/grain.png)
         skin/classic/browser/tabview/search.png                     (tabview/search.png)
         skin/classic/browser/tabview/stack-expander.png             (tabview/stack-expander.png)
         skin/classic/browser/tabview/tabview.png                    (tabview/tabview.png)
         skin/classic/browser/tabview/tabview-inverted.png           (tabview/tabview-inverted.png)
         skin/classic/browser/tabview/tabview.css                    (tabview/tabview.css)
+        skin/classic/browser/devtools/common.css                    (devtools/common.css)
         skin/classic/browser/devtools/arrows.png                    (devtools/arrows.png)
         skin/classic/browser/devtools/goto-mdn.png                  (devtools/goto-mdn.png)
         skin/classic/browser/devtools/csshtmltree.css               (devtools/csshtmltree.css)
         skin/classic/browser/devtools/gcli.css                      (devtools/gcli.css)
         skin/classic/browser/devtools/toolbarbutton-close.png       (devtools/toolbarbutton-close.png)
         skin/classic/browser/devtools/webconsole.css                  (devtools/webconsole.css)
         skin/classic/browser/devtools/webconsole_networkpanel.css     (devtools/webconsole_networkpanel.css)
         skin/classic/browser/devtools/webconsole.png                  (devtools/webconsole.png)
@@ -134,17 +135,20 @@ browser.jar:
         skin/classic/browser/devtools/breadcrumbs/rtl-middle-selected.png          (devtools/breadcrumbs/rtl-middle-selected.png)
         skin/classic/browser/devtools/breadcrumbs/rtl-middle.png                   (devtools/breadcrumbs/rtl-middle.png)
         skin/classic/browser/devtools/breadcrumbs/rtl-start-pressed.png            (devtools/breadcrumbs/rtl-start-pressed.png)
         skin/classic/browser/devtools/breadcrumbs/rtl-start-selected-pressed.png   (devtools/breadcrumbs/rtl-start-selected-pressed.png)
         skin/classic/browser/devtools/breadcrumbs/rtl-start.png                    (devtools/breadcrumbs/rtl-start.png)
         skin/classic/browser/devtools/breadcrumbs/rtl-start-selected.png           (devtools/breadcrumbs/rtl-start-selected.png)
         skin/classic/browser/devtools/splitview.css                 (devtools/splitview.css)
         skin/classic/browser/devtools/styleeditor.css               (devtools/styleeditor.css)
-        skin/classic/browser/devtools/eye-toggle.png                (devtools/eye-toggle.png)
+        skin/classic/browser/devtools/magnifying-glass.png          (devtools/magnifying-glass.png)
+        skin/classic/browser/devtools/itemToggle.png                (devtools/itemToggle.png)
+        skin/classic/browser/devtools/itemArrow-rtl.png             (devtools/itemArrow-rtl.png)
+        skin/classic/browser/devtools/itemArrow-ltr.png             (devtools/itemArrow-ltr.png)
 #ifdef MOZ_SERVICES_SYNC
         skin/classic/browser/sync-throbber.png
         skin/classic/browser/sync-16.png
         skin/classic/browser/sync-32.png
         skin/classic/browser/sync-128.png
         skin/classic/browser/sync-bg.png
         skin/classic/browser/sync-desktopIcon.png
         skin/classic/browser/sync-mobileIcon.png
@@ -255,16 +259,17 @@ browser.jar:
         skin/classic/aero/browser/tabview/close.png                  (tabview/close.png)
         skin/classic/aero/browser/tabview/edit-light.png             (tabview/edit-light.png)
         skin/classic/aero/browser/tabview/grain.png                  (tabview/grain.png)
         skin/classic/aero/browser/tabview/search.png                 (tabview/search.png)
         skin/classic/aero/browser/tabview/stack-expander.png         (tabview/stack-expander.png)
         skin/classic/aero/browser/tabview/tabview.png                (tabview/tabview.png)
         skin/classic/aero/browser/tabview/tabview-inverted.png       (tabview/tabview-inverted.png)
         skin/classic/aero/browser/tabview/tabview.css                (tabview/tabview.css)
+        skin/classic/aero/browser/devtools/common.css                (devtools/common.css)
         skin/classic/aero/browser/devtools/arrows.png                (devtools/arrows.png)
         skin/classic/aero/browser/devtools/goto-mdn.png              (devtools/goto-mdn.png)
         skin/classic/aero/browser/devtools/csshtmltree.css           (devtools/csshtmltree.css)
         skin/classic/aero/browser/devtools/gcli.css                  (devtools/gcli.css)
         skin/classic/aero/browser/devtools/toolbarbutton-close.png   (devtools/toolbarbutton-close.png)
         skin/classic/aero/browser/devtools/webconsole.css                  (devtools/webconsole.css)
         skin/classic/aero/browser/devtools/webconsole_networkpanel.css     (devtools/webconsole_networkpanel.css)
         skin/classic/aero/browser/devtools/webconsole.png                  (devtools/webconsole.png)
@@ -289,17 +294,20 @@ browser.jar:
         skin/classic/aero/browser/devtools/breadcrumbs/rtl-middle-selected.png          (devtools/breadcrumbs/rtl-middle-selected.png)
         skin/classic/aero/browser/devtools/breadcrumbs/rtl-middle.png                   (devtools/breadcrumbs/rtl-middle.png)
         skin/classic/aero/browser/devtools/breadcrumbs/rtl-start-pressed.png            (devtools/breadcrumbs/rtl-start-pressed.png)
         skin/classic/aero/browser/devtools/breadcrumbs/rtl-start-selected-pressed.png   (devtools/breadcrumbs/rtl-start-selected-pressed.png)
         skin/classic/aero/browser/devtools/breadcrumbs/rtl-start.png                    (devtools/breadcrumbs/rtl-start.png)
         skin/classic/aero/browser/devtools/breadcrumbs/rtl-start-selected.png           (devtools/breadcrumbs/rtl-start-selected.png)
         skin/classic/aero/browser/devtools/splitview.css             (devtools/splitview.css)
         skin/classic/aero/browser/devtools/styleeditor.css           (devtools/styleeditor.css)
-        skin/classic/aero/browser/devtools/eye-toggle.png            (devtools/eye-toggle.png)
+        skin/classic/aero/browser/devtools/magnifying-glass.png      (devtools/magnifying-glass.png)
+        skin/classic/aero/browser/devtools/itemToggle.png            (devtools/itemToggle.png)
+        skin/classic/aero/browser/devtools/itemArrow-rtl.png         (devtools/itemArrow-rtl.png)
+        skin/classic/aero/browser/devtools/itemArrow-ltr.png         (devtools/itemArrow-ltr.png)
 #ifdef MOZ_SERVICES_SYNC
         skin/classic/aero/browser/sync-throbber.png
         skin/classic/aero/browser/sync-16.png
         skin/classic/aero/browser/sync-32.png
         skin/classic/aero/browser/sync-128.png
         skin/classic/aero/browser/sync-bg.png
         skin/classic/aero/browser/sync-desktopIcon.png
         skin/classic/aero/browser/sync-mobileIcon.png
--- a/build/automation.py.in
+++ b/build/automation.py.in
@@ -391,16 +391,17 @@ user_pref("camino.warn_when_closing", fa
 user_pref("urlclassifier.updateinterval", 172800);
 // Point the url-classifier to the local testing server for fast failures
 user_pref("browser.safebrowsing.provider.0.gethashURL", "http://%(server)s/safebrowsing-dummy/gethash");
 user_pref("browser.safebrowsing.provider.0.keyURL", "http://%(server)s/safebrowsing-dummy/newkey");
 user_pref("browser.safebrowsing.provider.0.updateURL", "http://%(server)s/safebrowsing-dummy/update");
 // Point update checks to the local testing server for fast failures
 user_pref("extensions.update.url", "http://%(server)s/extensions-dummy/updateURL");
 user_pref("extensions.blocklist.url", "http://%(server)s/extensions-dummy/blocklistURL");
+user_pref("extensions.hotfix.url", "http://%(server)s/extensions-dummy/hotfixURL");
 // Make sure opening about:addons won't hit the network
 user_pref("extensions.webservice.discoverURL", "http://%(server)s/extensions-dummy/discoveryURL");
 // Make sure AddonRepository won't hit the network
 user_pref("extensions.getAddons.maxResults", 0);
 user_pref("extensions.getAddons.get.url", "http://%(server)s/extensions-dummy/repositoryGetURL");
 user_pref("extensions.getAddons.search.browseURL", "http://%(server)s/extensions-dummy/repositoryBrowseURL");
 user_pref("extensions.getAddons.search.url", "http://%(server)s/extensions-dummy/repositorySearchURL");
 """ % { "server" : self.webServer + ":" + str(self.httpPort) }
new file mode 100644
--- /dev/null
+++ b/build/mobile/robocop/README
@@ -0,0 +1,9 @@
+Robocop is a Mozilla project which uses Robotium to test Firefox on Android devices.
+
+Robotium is an open source tool licensed under the Apache 2.0 license and the original 
+source can be found here:
+http://code.google.com/p/robotium/
+
+We are including robotium-solo-3.0.jar as a binary and are not modifying it in anyway 
+from the original download found at: 
+http://code.google.com/p/robotium/
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3305251f61d61702e0f3dd61f67eb11e984ac587
GIT binary patch
literal 49323
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
--- a/build/mobile/sutagent/android/Makefile.in
+++ b/build/mobile/sutagent/android/Makefile.in
@@ -99,17 +99,17 @@ sutAgentAndroid.ap_: $(srcdir)/AndroidMa
 	$(AAPT) package -f -M $(srcdir)/AndroidManifest.xml -I $(ANDROID_SDK)/android.jar  -S res -F $@
 
 sutAgentAndroid-unsigned-unaligned.apk: sutAgentAndroid.ap_ classes.dex
 	$(APKBUILDER) $@ -v $(APKBUILDER_FLAGS) -z sutAgentAndroid.ap_ -f classes.dex
 
 sutAgentAndroid-unaligned.apk: sutAgentAndroid-unsigned-unaligned.apk
 	cp  sutAgentAndroid-unsigned-unaligned.apk $@
 ifdef JARSIGNER
-  $(JARSIGNER) $@
+	$(JARSIGNER) $@
 endif
 
 sutAgentAndroid.apk: sutAgentAndroid-unaligned.apk
 	$(ZIPALIGN) -f -v 4 sutAgentAndroid-unaligned.apk $@
 
 export::
 	$(NSINSTALL) -D res
 	@(cd $(srcdir)/res && tar $(TAR_CREATE_FLAGS) - *) | (cd $(DEPTH)/build/mobile/sutagent/android/res && tar -xf -)
deleted file mode 100644
--- a/build/unix/gnu-ld-scripts/jemalloc-standalone-linkage-version-script
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-   global:
-		_malloc_postfork;
-		_malloc_prefork;
-		jemalloc_stats;
-		malloc_usable_size;
-		je_malloc_usable_size_in_advance;
-		posix_memalign;
-		free;
-		realloc;
-		calloc;
-		malloc;
-		memalign;
-		valloc;
-		__free_hook;
-		__malloc_hook;
-		__realloc_hook;
-		__memalign_hook;
-		_IO_stdin_used;
-   local: *;
-};
--- a/client.mk
+++ b/client.mk
@@ -166,16 +166,19 @@ OBJDIR = $(MOZ_OBJDIR)
 MOZ_MAKE = $(MAKE) $(MOZ_MAKE_FLAGS) -C $(OBJDIR)
 
 endif # MOZ_BUILD_PROJECTS
 
 # 'configure' scripts generated by autoconf.
 CONFIGURES := $(TOPSRCDIR)/configure
 CONFIGURES += $(TOPSRCDIR)/js/src/configure
 
+# Make targets that are going to be passed to the real build system
+OBJDIR_TARGETS = install export libs clean realclean distclean alldep maybe_clobber_profiledbuild upload sdk installer package package-compare stage-package source-package l10n-check
+
 #######################################################################
 # Rules
 
 # The default rule is build
 build::
 	$(MAKE) -f $(TOPSRCDIR)/client.mk $(if $(MOZ_PGO),profiledbuild,realbuild)
 
 
@@ -254,17 +257,17 @@ else
 	done
 endif
 endif
 
 # If we're building multiple projects, but haven't specified which project,
 # loop through them.
 
 ifeq (,$(MOZ_CURRENT_PROJECT)$(if $(MOZ_BUILD_PROJECTS),,1))
-configure depend realbuild install export libs clean realclean distclean alldep preflight postflight maybe_clobber_profiledbuild upload sdk::
+configure depend realbuild preflight postflight $(OBJDIR_TARGETS)::
 	set -e; \
 	for app in $(MOZ_BUILD_PROJECTS); do \
 	  $(MAKE) -f $(TOPSRCDIR)/client.mk $@ MOZ_CURRENT_PROJECT=$$app; \
 	done
 
 else
 
 # MOZ_CURRENT_PROJECT: either doing a single-project build, or building an
@@ -365,17 +368,17 @@ endif
 realbuild::  $(OBJDIR)/Makefile $(OBJDIR)/config.status
 	@$(PYTHON) $(TOPSRCDIR)/js/src/config/check-sync-dirs.py $(TOPSRCDIR)/js/src/config $(TOPSRCDIR)/config
 	$(MOZ_MAKE)
 
 ####################################
 # Other targets
 
 # Pass these target onto the real build system
-install export libs clean realclean distclean alldep maybe_clobber_profiledbuild upload sdk:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
+$(OBJDIR_TARGETS):: $(OBJDIR)/Makefile $(OBJDIR)/config.status
 	$(MOZ_MAKE) $@
 
 ####################################
 # Postflight
 
 realbuild alldep postflight::
 ifdef MOZ_POSTFLIGHT
 	set -e; \
@@ -424,9 +427,9 @@ cleansrcdir:
 echo-variable-%:
 	@echo $($*)
 
 # This makefile doesn't support parallel execution. It does pass
 # MOZ_MAKE_FLAGS to sub-make processes, so they will correctly execute
 # in parallel.
 .NOTPARALLEL:
 
-.PHONY: checkout real_checkout depend realbuild build profiledbuild maybe_clobber_profiledbuild export libs alldep install clean realclean distclean cleansrcdir pull_all build_all clobber clobber_all pull_and_build_all everything configure preflight_all preflight postflight postflight_all upload sdk
+.PHONY: checkout real_checkout depend realbuild build profiledbuild cleansrcdir pull_all build_all clobber clobber_all pull_and_build_all everything configure preflight_all preflight postflight postflight_all $(OBJDIR_TARGETS)
--- a/config/milestone.txt
+++ b/config/milestone.txt
@@ -5,9 +5,9 @@
 #    x.x.x.x
 #    x.x.x+
 #
 # Referenced by milestone.pl.
 # Hopefully I'll be able to automate replacement of *all*
 # hardcoded milestones in the tree from these two files.
 #--------------------------------------------------------
 
-11.0a1
+12.0a1
--- a/configure.in
+++ b/configure.in
@@ -175,17 +175,17 @@ then
 	***
 	EOF
     exit 1
     break
   fi
 fi
 MOZ_BUILD_ROOT=`pwd`
 
-dnl Default to MSVC for win32 and gcc-4.2 for darwin
+dnl Default to MSVC for win32 and gcc for darwin
 dnl ==============================================================
 if test -z "$CROSS_COMPILE"; then
 case "$target" in
 *-mingw*)
     if test -z "$CC"; then CC=cl; fi
     if test -z "$CXX"; then CXX=cl; fi
     if test -z "$CPP"; then CPP="cl -E -nologo"; fi
     if test -z "$CXXCPP"; then CXXCPP="cl -TP -E -nologo"; ac_cv_prog_CXXCPP="$CXXCPP"; fi
@@ -198,18 +198,20 @@ case "$target" in
         x86_64)
             AS=ml64;
             ;;
         esac
     fi
     if test -z "$MIDL"; then MIDL=midl; fi
     ;;
 *-darwin*)
-    if test -z "$CC"; then CC=gcc-4.2; fi
-    if test -z "$CXX"; then CXX=g++-4.2; fi
+    # we prefer gcc-4.2 over gcc on older darwin, so
+    # use that specific version if it's available.
+    MOZ_PATH_PROGS(CC, $CC gcc-4.2 gcc)
+    MOZ_PATH_PROGS(CXX, $CXX g++-4.2 g++)
     ;;
 esac
 fi
 
 COMPILE_ENVIRONMENT=1
 MOZ_ARG_DISABLE_BOOL(compile-environment,
 [  --disable-compile-environment
                           Disable compiler/library checks.],
@@ -4134,23 +4136,16 @@ AC_CACHE_CHECK(for __attribute__((malloc
 
 AC_CACHE_CHECK(for __attribute__((warn_unused_result)),
                ac_cv_attribute_warn_unused,
                [AC_TRY_COMPILE([int f(void) __attribute__((warn_unused_result));],
                                [],
                                ac_cv_attribute_warn_unused=yes,
                                ac_cv_attribute_warn_unused=no)])
 
-AC_CACHE_CHECK(for __attribute__((noreturn)),
-               ac_cv_attribute_noreturn,
-               [AC_TRY_COMPILE([void f(void) __attribute__((noreturn));],
-                               [],
-                               ac_cv_attribute_noreturn=yes,
-                               ac_cv_attribute_noreturn=no)])
-
 dnl End of C++ language/feature checks
 AC_LANG_C
 
 dnl ========================================================
 dnl =  Internationalization checks
 dnl ========================================================
 dnl
 dnl Internationalization and Locale support is different
@@ -4196,22 +4191,16 @@ else
 fi
 
 if test "$ac_cv_attribute_warn_unused" = yes ; then
   AC_DEFINE(NS_WARN_UNUSED_RESULT, [__attribute__((warn_unused_result))])
 else
   AC_DEFINE(NS_WARN_UNUSED_RESULT,)
 fi
 
-if test "$ac_cv_attribute_noreturn" = yes ; then
-  AC_DEFINE(NS_NORETURN, [__attribute__((noreturn))])
-else
-  AC_DEFINE(NS_NORETURN,)
-fi
-
 dnl We can't run TRY_COMPILE tests on Windows, so hard-code some
 dnl features that Windows actually does support.
 
 if test -n "$SKIP_COMPILER_CHECKS"; then
    dnl Windows has malloc.h
    AC_DEFINE(MALLOC_H, [<malloc.h>])
    AC_DEFINE(HAVE_FORCEINLINE)
    AC_DEFINE(HAVE_LOCALECONV)
@@ -4647,17 +4636,17 @@ MOZ_DISABLE_DOMCRYPTO=
 NSS_DISABLE_DBM=
 NECKO_WIFI=1
 NECKO_COOKIES=1
 NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource websocket wyciwyg device"
 USE_ARM_KUSER=
 BUILD_CTYPES=1
 MOZ_USE_NATIVE_POPUP_WINDOWS=
 MOZ_ANDROID_HISTORY=
-MOZ_GRAPHITE=
+MOZ_GRAPHITE=1
 
 case "${target}" in
 *darwin*)
     ACCESSIBILITY=
     ;;
 *)