Merge.
authorDavid Anderson <danderson@mozilla.com>
Tue, 20 Dec 2011 13:42:14 -0800
changeset 105448 dee50ee8534e2380cd5093915626fbe8f58ffbb5
parent 105447 bf524b56351f62174a34e1038ff9123f7e2d0335 (current diff)
parent 83138 a0d32d0353e1bdadf0090c89ad2ec795133619cf (diff)
child 105449 817ac4d9daf21f741ce86dd53d926698e05c1204
push id1075
push uservporof@mozilla.com
push dateThu, 13 Sep 2012 10:46:49 +0000
treeherderfx-team@f39786e8364d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone12.0a1
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
zc$@)X3!n6fP)<h;3K|Lk000e1NJLTq000L7002A)1^@s6s_&q^000V4X+uL$P-t&-
zZ*ypGa3D!TLm+T+Z)Rz1WdHzp+MQEpR8#2|J@?-9LQ9B%luK_?6$l_wLW_VDktQl3
z2@pz%A)(n7QNa;KMFbnjpojyGj)066Q7jCK3fKqaA)=0hqlk*i`{8?|Yu3E?=FR@K
z*FNX0^PRKL2fzpnmPj*EHGmAMLLL#|gU7_i;p8qrfeIvW01ybXWFd3?BLM*Temp!Y
zBESc}00DT@3kU$fO`E_l9Ebl8>Oz@Z0f2-7z;ux~O9+4z06=<<LZ$#fMgf4Gm?l#I
zpacM5%VT2W08lLeU?+d((*S^-_?deF09%wH6#<};03Z`(h(rKrI{>WDR*FRcSTFz-
zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8
z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc-
z5#WRK{dmp}uFlRjj<yb8E$Y7p{~}^y<NoE(t8hR70O53g(f%wivl@Uq27qn;q9yJG
zXkH7Tb@z*AvJXJD0HEpGSMzZAemp!yp^&-R+2!Qq*h<7gTVcvqeg0>{U%*%WZ25jX
z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq
zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S
z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG
z3;bX<ghC|5!a@*23S@vBa$qT}f<h>U&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU
zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3
zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q
zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF
zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}*
z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C
z$c5yc<iq4M<QwE6@>>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C
zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c
z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWw<V8OKyGH!<s&=a~<gZ&g?-wkmuTk;)2{N|h#+
z8!9hUsj8-`-l_{#^Hs}KkEvc$eXd4TGgITK3DlOWRjQp(>r)$3XQ?}=hpK0&Z&W{|
zep&sA23f;Q!%st`QJ}G3<GjWo3u76xcq}1n4XcKAfi=V?vCY|hb}GA={T;iDJ*ugp
zIYTo_Ggq@x^OR;k2jiG=_?&c33Fj!Mm-Bv#-W2aC;wc-ZG)%cMWn62jmY0@Tt4OO+
zt4Hg-Hm>cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP
zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By
zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>=<rYWX7
zOgl`+&CJcB&DNPUn>{htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2
zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd
zlf9FDx_yoPJqHbk*$%56S{;6Kv~m<WRyy9A&YbQ)eZ};a=`Uwk&k)bpGvl@s%PGWZ
zol~3BM`ssjxpRZ_h>M9!g3B(KJ}#RZ#@)!h<Vtk)ab4kh()FF2vzx;0sN1jZHtuQe
zhuojcG@mJ+Su=Cc!^lJ6QRUG;3!jxRYu~JXPeV_EXSL@eFJmu}SFP8ux21Qg_hIiB
zKK4FxpW{B`JU8Al-dSJFH^8^Zx64n%Z=PR;-$Q>R|78Dq|Iq-afF%KE1Brn_fm;Im
z_<DRHzm7jT+hz8$+3i7$pt(U6L63s1g5|-jA!x|#kgXy2=a|ls&S?&XP=4sv&<A1W
zVT;3l3@3$$g;$0@j&O)r8qqPAHFwe6Lv!Cm`b3sQ-kWDJPdTqGN;N7zsxE3g+Bdp1
zx<AG)W?9VDSe;l&Y)c$DE-J1zZfw5a{O$9H;+^6P<9ipFFUVbRd7;k2^o6GusV)*M
zI+j38h)y_^@IeqNs1}SR@)LI@jtY6g9l~cKFVQy9h}c71DjrVqNGeTwlI)SZHF+e(
zGo>u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x
zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote
z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA
zUct(O!L<Qv>kCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti
zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B
zJh;4Nr^(LEJ3myURP<E(R5tF?-L+xY_-@he8+*L=H0;&eTfF!EKFPk@RRL8^)n?UY
z`$_w=_dl+Qs_FQa`)ysVPHl1R#{<#>{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o
z4K@u`jhx2fBXC4{<mvYb-}fF3I@)%Od#vFH(;s#nXB{tULYnfLMw?Tb`&(jLx=+kL
z(bnqTdi+P*9}k=~JXv{4^Hj-c+UbJRlV|eJjGdL8eSR+a++f?HwtMGe&fjVeZ|}Mg
zbm7uP|BL54ygSZZ^0;*JvfJeoSGZT2uR33C>U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0
z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ?
z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd
z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P`
z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60
z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RW3=t9m3V#$d_5c6?l1W5C
zR5;6HP*PF*|NsAg25gv#0S_3J9F-hkNo7@aV{DR)=WjjzAMEAGz`(#@BCV)?mVtqR
z;n1#42%T%U?Pp+MU^w&i{!L@7c4AY2;vkp;m>U?+-+KBV-61eHkmgUAE(QjMvrM=o
zP;{dE_3rJP5J_wj3=9kmj7lnM|B;P?NiZ-lFffdk38RujP!a$MK~>KOP$0el0000<
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
zc$@)X3!n6fP)<h;3K|Lk000e1NJLTq000L7002A)1^@s6s_&q^000V4X+uL$P-t&-
zZ*ypGa3D!TLm+T+Z)Rz1WdHzp+MQEpR8#2|J@?-9LQ9B%luK_?6$l_wLW_VDktQl3
z2@pz%A)(n7QNa;KMFbnjpojyGj)066Q7jCK3fKqaA)=0hqlk*i`{8?|Yu3E?=FR@K
z*FNX0^PRKL2fzpnmPj*EHGmAMLLL#|gU7_i;p8qrfeIvW01ybXWFd3?BLM*Temp!Y
zBESc}00DT@3kU$fO`E_l9Ebl8>Oz@Z0f2-7z;ux~O9+4z06=<<LZ$#fMgf4Gm?l#I
zpacM5%VT2W08lLeU?+d((*S^-_?deF09%wH6#<};03Z`(h(rKrI{>WDR*FRcSTFz-
zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8
z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc-
z5#WRK{dmp}uFlRjj<yb8E$Y7p{~}^y<NoE(t8hR70O53g(f%wivl@Uq27qn;q9yJG
zXkH7Tb@z*AvJXJD0HEpGSMzZAemp!yp^&-R+2!Qq*h<7gTVcvqeg0>{U%*%WZ25jX
z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq
zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S
z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG
z3;bX<ghC|5!a@*23S@vBa$qT}f<h>U&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU
zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3
zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q
zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF
zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}*
z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C
z$c5yc<iq4M<QwE6@>>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C
zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c
z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWw<V8OKyGH!<s&=a~<gZ&g?-wkmuTk;)2{N|h#+
z8!9hUsj8-`-l_{#^Hs}KkEvc$eXd4TGgITK3DlOWRjQp(>r)$3XQ?}=hpK0&Z&W{|
zep&sA23f;Q!%st`QJ}G3<GjWo3u76xcq}1n4XcKAfi=V?vCY|hb}GA={T;iDJ*ugp
zIYTo_Ggq@x^OR;k2jiG=_?&c33Fj!Mm-Bv#-W2aC;wc-ZG)%cMWn62jmY0@Tt4OO+
zt4Hg-Hm>cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP
zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By
zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>=<rYWX7
zOgl`+&CJcB&DNPUn>{htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2
zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd
zlf9FDx_yoPJqHbk*$%56S{;6Kv~m<WRyy9A&YbQ)eZ};a=`Uwk&k)bpGvl@s%PGWZ
zol~3BM`ssjxpRZ_h>M9!g3B(KJ}#RZ#@)!h<Vtk)ab4kh()FF2vzx;0sN1jZHtuQe
zhuojcG@mJ+Su=Cc!^lJ6QRUG;3!jxRYu~JXPeV_EXSL@eFJmu}SFP8ux21Qg_hIiB
zKK4FxpW{B`JU8Al-dSJFH^8^Zx64n%Z=PR;-$Q>R|78Dq|Iq-afF%KE1Brn_fm;Im
z_<DRHzm7jT+hz8$+3i7$pt(U6L63s1g5|-jA!x|#kgXy2=a|ls&S?&XP=4sv&<A1W
zVT;3l3@3$$g;$0@j&O)r8qqPAHFwe6Lv!Cm`b3sQ-kWDJPdTqGN;N7zsxE3g+Bdp1
zx<AG)W?9VDSe;l&Y)c$DE-J1zZfw5a{O$9H;+^6P<9ipFFUVbRd7;k2^o6GusV)*M
zI+j38h)y_^@IeqNs1}SR@)LI@jtY6g9l~cKFVQy9h}c71DjrVqNGeTwlI)SZHF+e(
zGo>u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x
zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote
z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA
zUct(O!L<Qv>kCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti
zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B
zJh;4Nr^(LEJ3myURP<E(R5tF?-L+xY_-@he8+*L=H0;&eTfF!EKFPk@RRL8^)n?UY
z`$_w=_dl+Qs_FQa`)ysVPHl1R#{<#>{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o
z4K@u`jhx2fBXC4{<mvYb-}fF3I@)%Od#vFH(;s#nXB{tULYnfLMw?Tb`&(jLx=+kL
z(bnqTdi+P*9}k=~JXv{4^Hj-c+UbJRlV|eJjGdL8eSR+a++f?HwtMGe&fjVeZ|}Mg
zbm7uP|BL54ygSZZ^0;*JvfJeoSGZT2uR33C>U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0
z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ?
z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd
z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P`
z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60
z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RW3=t9m3V#$d_5c6?l1W5C
zR5;6HP*PF*|NsAg25gv#0S_3J9F-hkNo7@aV{DR)=WjjzAMEAGz`(#@BCV)?mVtqR
z;n1#42%T%U?Pp+MU^w&i{!L@7c4AY2;vkp;m>U?+-+KBV-61eHkmgUAE(QjMvrM=o
zP;{dE_3rJP5J_wj3=9kmj7lnM|B;P?NiZ-lFffdk38RujP!a$MK~>KOP$0el0000<
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=
     ;;
 *)
     ACCESSIBILITY=1
     ;;
@@ -5489,16 +5478,25 @@ then
 fi
 AC_SUBST(MOZ_ENABLE_DBUS)
 AC_SUBST(MOZ_DBUS_CFLAGS)
 AC_SUBST(MOZ_DBUS_LIBS)
 AC_SUBST(MOZ_DBUS_GLIB_CFLAGS)
 AC_SUBST(MOZ_DBUS_GLIB_LIBS)
 
 dnl ========================================================
+dnl = Enable Android History instead of Places
+dnl ========================================================
+if test -n "$MOZ_ANDROID_HISTORY"; then
+     dnl Do this if defined in confvars.sh
+     AC_DEFINE(MOZ_ANDROID_HISTORY)
+fi
+
+
+dnl ========================================================
 dnl = Build Personal Security Manager
 dnl ========================================================
 MOZ_ARG_DISABLE_BOOL(crypto,
 [  --disable-crypto        Disable crypto support (Personal Security Manager)],
     MOZ_PSM=,
     MOZ_PSM=1 )
 
 dnl ========================================================
@@ -5700,16 +5698,17 @@ if test -n "$MOZ_WEBM"; then
                 #include <vpx/vpx_decoder.h>
                 #if !defined(VPX_CODEC_USE_INPUT_PARTITION)
                     #error "test failed."
                 #endif
                 ],
                 [return 0;],
                 [AC_MSG_RESULT([yes])
                  MOZ_NATIVE_LIBVPX=1
+                 AC_DEFINE(MOZ_NATIVE_LIBVPX)
                  MOZ_LIBVPX_INCLUDES="-I${LIBVPX_DIR}/include"
                  MOZ_LIBVPX_LIBS="-L${LIBVPX_DIR}/lib -lvpx"],
                 [AC_MSG_RESULT([no])
                  AC_MSG_ERROR([--with-system-libvpx requested but it is not v0.9.7 or later])])
         fi
         CFLAGS=$_SAVE_CFLAGS
         LDFLAGS=$_SAVE_LDFLAGS
         LIBS=$_SAVE_LIBS
--- a/content/base/public/Makefile.in
+++ b/content/base/public/Makefile.in
@@ -112,14 +112,14 @@ XPIDLSRCS	= \
 		nsIScriptLoaderObserver.idl  \
 		nsIDroppedLinkHandler.idl \
 		nsIImageLoadingContent.idl \
 		nsIObjectLoadingContent.idl \
 		nsIFrameLoader.idl \
 		nsIXMLHttpRequest.idl \
 		nsIContentSecurityPolicy.idl \
 		nsIFrameMessageManager.idl \
-		nsIMozWebSocket.idl \
+		nsIWebSocket.idl \
 		nsIEventSource.idl \
 		$(NULL)
 
 include $(topsrcdir)/config/rules.mk
 
--- a/content/base/public/nsDOMFile.h
+++ b/content/base/public/nsDOMFile.h
@@ -129,20 +129,16 @@ protected:
   }
 
   virtual bool IsWholeFile()
   {
     NS_NOTREACHED("Should only be called on dom blobs backed by files!");
     return false;
   }
 
-  indexedDB::FileInfo*
-  GetFileInfoInternal(indexedDB::FileManager* aFileManager,
-                      PRUint32 aStartIndex);
-
   bool mIsFile;
   bool mImmutable;
   nsString mContentType;
   nsString mName;
 
   PRUint64 mStart;
   PRUint64 mLength;
 
--- a/content/base/public/nsIContent.h
+++ b/content/base/public/nsIContent.h
@@ -897,18 +897,18 @@ public:
   /**
    * Set the SMIL override style rule for this node.  If aNotify is true, this
    * method will notify the document's pres context, so that the style changes
    * will be noticed.
    */
   virtual nsresult SetSMILOverrideStyleRule(mozilla::css::StyleRule* aStyleRule,
                                             bool aNotify) = 0;
 
-  nsresult LookupNamespaceURI(const nsAString& aNamespacePrefix,
-                              nsAString& aNamespaceURI) const;
+  nsresult LookupNamespaceURIInternal(const nsAString& aNamespacePrefix,
+                                      nsAString& aNamespaceURI) const;
 
   /**
    * If this content has independent selection, e.g., if this is input