commit Aurora 13 state
authorWolfgang Rosenauer <wr@rosenauer.org>
Sat, 31 Mar 2012 22:19:28 +0200
changeset 419 f6b055dd94bc
parent 418 ecd5bb5744dc
child 423 f036c316fb68
commit Aurora 13 state
MozillaFirefox/MozillaFirefox.spec
MozillaFirefox/create-tar.sh
MozillaFirefox/mozilla-system-nspr.patch
firefox-branded-icons.patch
firefox-cross-desktop.patch
firefox-kde.patch
firefox-libxulsdk-locales.patch
firefox-no-default-ualocale.patch
mozilla-arm-cpu-detection.patch
mozilla-kde.patch
mozilla-nongnome-proxies.patch
mozilla-repo.patch
mozilla-system-nspr.patch
series
xulrunner/mozilla-arm-cpu-detection.patch
xulrunner/xulrunner.spec
--- a/MozillaFirefox/MozillaFirefox.spec	Sat Mar 31 09:26:42 2012 +0200
+++ b/MozillaFirefox/MozillaFirefox.spec	Sat Mar 31 22:19:28 2012 +0200
@@ -17,9 +17,9 @@
 #
 
 
-%define major 11
+%define major 12
 %define mainver %major.99
-%define update_channel beta
+%define update_channel aurora
 
 Name:           MozillaFirefox
 BuildRequires:  Mesa-devel
@@ -91,8 +91,9 @@
 Patch12:        mozilla-linux3.patch
 Patch14:        mozilla-disable-neon-option.patch
 Patch15:        mozilla-yarr-pcre.patch
-Patch16:        mozilla-revert_621446.patch
-Patch17:        mozilla-libnotify.patch
+Patch16:        mozilla-system-nspr.patch
+Patch17:        mozilla-revert_621446.patch
+Patch18:        mozilla-libnotify.patch
 # Firefox/browser
 Patch31:        firefox-browser-css.patch
 Patch32:        firefox-cross-desktop.patch
@@ -122,7 +123,7 @@
 %define desktop_file_name %{name}
 %endif
 ### build options
-%define branding 1
+%define branding 0
 %define localize 1
 %ifarch ppc ppc64 s390 s390x ia64 %arm
 %define crashreporter    0
@@ -224,6 +225,7 @@
 #%patch15 -p1
 %patch16 -p1
 %patch17 -p1
+%patch18 -p1
 #
 %patch31 -p1
 %patch32 -p1
@@ -535,6 +537,7 @@
 %{progdir}/distribution/extensions/
 %{progdir}/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
 %{progdir}/icons/
+%{progdir}/jssubloader/
 %{progdir}/searchplugins/
 %attr(755,root,root) %{progdir}/%{progname}.sh
 %{progdir}/firefox-bin
--- a/MozillaFirefox/create-tar.sh	Sat Mar 31 09:26:42 2012 +0200
+++ b/MozillaFirefox/create-tar.sh	Sat Mar 31 22:19:28 2012 +0200
@@ -1,9 +1,9 @@
 #!/bin/bash
 
-CHANNEL="beta"
+CHANNEL="aurora"
 BRANCH="releases/mozilla-$CHANNEL"
-RELEASE_TAG="FIREFOX_12_0b3_RELEASE"
-VERSION="11.99"
+RELEASE_TAG="default"
+VERSION="12.99"
 
 # mozilla
 echo "cloning $BRANCH..."
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla-system-nspr.patch	Sat Mar 31 22:19:28 2012 +0200
@@ -0,0 +1,1 @@
+../mozilla-system-nspr.patch
\ No newline at end of file
--- a/firefox-branded-icons.patch	Sat Mar 31 09:26:42 2012 +0200
+++ b/firefox-branded-icons.patch	Sat Mar 31 22:19:28 2012 +0200
@@ -1,11 +1,11 @@
 # HG changeset patch
-# Parent d6bb5c163142d233d00e739e21aa9df16077873e
+# Parent 4a29f791f190ebb5de41590d70d52c7510d9477c
 
 diff --git a/browser/app/Makefile.in b/browser/app/Makefile.in
 --- a/browser/app/Makefile.in
 +++ b/browser/app/Makefile.in
-@@ -164,16 +164,21 @@ endif # LIBXUL_SDK
- DEFINES += -DFIREFOX_ICO=\"$(DIST)/branding/firefox.ico\" -DDOCUMENT_ICO=\"$(DIST)/branding/document.ico\"
+@@ -160,16 +160,21 @@ endif
+ endif # LIBXUL_SDK
  
  ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
  libs::
@@ -54,7 +54,7 @@
 diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
 --- a/browser/installer/package-manifest.in
 +++ b/browser/installer/package-manifest.in
-@@ -432,18 +432,21 @@
+@@ -450,18 +450,21 @@
  @BINPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/preview.png
  #ifdef SHIP_FEEDBACK
  @BINPATH@/distribution/extensions/testpilot@labs.mozilla.com.xpi
--- a/firefox-cross-desktop.patch	Sat Mar 31 09:26:42 2012 +0200
+++ b/firefox-cross-desktop.patch	Sat Mar 31 22:19:28 2012 +0200
@@ -1,14 +1,12 @@
-From: Wolfgang Rosenauer
-NonGnome/KDE integration
-
-References:
-https://bugzilla.novell.com/show_bug.cgi?id=170055
+# HG changeset patch
+# Parent fd2da289a3c15b8c96c248df2710d879793f22c9
+# User Wolfgang Rosenauer <wr@rosenauer.org>
+Bug 526717 - remove non-working "Set as desktop background" from the UI for unsupported desktops
 
 diff --git a/browser/base/content/nsContextMenu.js b/browser/base/content/nsContextMenu.js
 --- a/browser/base/content/nsContextMenu.js
 +++ b/browser/base/content/nsContextMenu.js
-@@ -237,17 +237,19 @@ nsContextMenu.prototype = {
-     this.showItem("context-sep-viewsource", shouldShow);
+@@ -262,17 +262,17 @@ nsContextMenu.prototype = {
  
      // Set as Desktop background depends on whether an image was clicked on,
      // and only works if we have a shell service.
@@ -16,11 +14,9 @@
  #ifdef HAVE_SHELL_SERVICE
      // Only enable Set as Desktop Background if we can get the shell service.
      var shell = getShellService();
--    if (shell)
-+    var env = Components.classes["@mozilla.org/process/environment;1"]
-+                        .getService(Components.interfaces.nsIEnvironment);
-+    if (shell && env.get('DESKTOP_SESSION') == "gnome")
-       haveSetDesktopBackground = true;
+     if (shell)
+-      haveSetDesktopBackground = true;
++      haveSetDesktopBackground = shell.canSetDesktopBackground;
  #endif
      this.showItem("context-setDesktopBackground",
                    haveSetDesktopBackground && this.onLoadedImage);
@@ -28,3 +24,68 @@
      if (haveSetDesktopBackground && this.onLoadedImage) {
        document.getElementById("context-setDesktopBackground")
                .disabled = this.disableSetDesktopBackground();
+     }
+diff --git a/browser/components/shell/public/nsIShellService.idl b/browser/components/shell/public/nsIShellService.idl
+--- a/browser/components/shell/public/nsIShellService.idl
++++ b/browser/components/shell/public/nsIShellService.idl
+@@ -69,16 +69,25 @@ interface nsIShellService : nsISupports
+   /** 
+    * Used to determine whether or not to show a "Set Default Browser"
+    * query dialog. This attribute is true if the application is starting
+    * up and "browser.shell.checkDefaultBrowser" is true, otherwise it
+    * is false.
+    */
+   attribute boolean shouldCheckDefaultBrowser;
+ 
++  /**
++   * Used to determine whether or not to offer "Set as desktop background"
++   * context menu item. Even if shell service is available it is not
++   * guaranteed that it is able to set the background for every desktop
++   * which is especially true for Linux with its many different desktop
++   * environments.
++   */
++  readonly attribute boolean canSetDesktopBackground;
++
+   /** 
+    * Flags for positioning/sizing of the Desktop Background image.
+    */
+   const long BACKGROUND_TILE      = 1;
+   const long BACKGROUND_STRETCH   = 2;
+   const long BACKGROUND_CENTER    = 3;
+   const long BACKGROUND_FILL      = 4;
+   const long BACKGROUND_FIT       = 5;
+diff --git a/browser/components/shell/src/nsGNOMEShellService.cpp b/browser/components/shell/src/nsGNOMEShellService.cpp
+--- a/browser/components/shell/src/nsGNOMEShellService.cpp
++++ b/browser/components/shell/src/nsGNOMEShellService.cpp
+@@ -377,16 +377,31 @@ nsGNOMEShellService::SetShouldCheckDefau
+     pserve->GetBranch("", getter_AddRefs(prefs));
+ 
+   if (prefs)
+     prefs->SetBoolPref(PREF_CHECKDEFAULTBROWSER, aShouldCheck);
+ 
+   return NS_OK;
+ }
+ 
++NS_IMETHODIMP
++nsGNOMEShellService::GetCanSetDesktopBackground(bool* aResult)
++{
++  // setting desktop background is currently only supported
++  // for Gnome or desktops using the same GSettings and GConf keys
++  const char* gnomeSession = getenv("GNOME_DESKTOP_SESSION_ID");
++  if (gnomeSession) {
++    *aResult = true;
++  } else {
++    *aResult = false;
++  }
++
++  return NS_OK;
++}
++
+ static nsresult
+ WriteImage(const nsCString& aPath, imgIContainer* aImage)
+ {
+ #ifndef MOZ_WIDGET_GTK2
+   return NS_ERROR_NOT_AVAILABLE;
+ #else
+   nsCOMPtr<nsIImageToPixbuf> imgToPixbuf =
+     do_GetService("@mozilla.org/widget/image-to-gdk-pixbuf;1");
--- a/firefox-kde.patch	Sat Mar 31 09:26:42 2012 +0200
+++ b/firefox-kde.patch	Sat Mar 31 22:19:28 2012 +0200
@@ -2,7 +2,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/browser/base/content/browser-kde.xul
-@@ -0,0 +1,1118 @@
+@@ -0,0 +1,1117 @@
 +#filter substitution
 +<?xml version="1.0"?>
 +# -*- Mode: HTML -*-
@@ -43,6 +43,7 @@
 +#   David Dahl <ddahl@mozilla.com>
 +#   Frank Yan <fyan@mozilla.com>
 +#   Victor Porof <vporof@mozilla.com>
++#   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
@@ -95,6 +96,7 @@
 +        lightweightthemes="true"
 +        lightweightthemesfooter="browser-bottombox"
 +        windowtype="navigator:browser"
++        macanimationtype="document"
 +        screenX="4" screenY="4"
 +        browsingmode="normal"
 +        persist="screenX screenY width height sizemode">
@@ -231,20 +233,21 @@
 +      </hbox>
 +    </panel>
 +
-+    <panel id="inspector-tree-panel"
-+           orient="vertical"
-+           hidden="true"
-+           ignorekeys="true"
-+           noautofocus="true"
-+           noautohide="true"
-+           titlebar="normal"
-+           close="true"
-+           label="&inspectPanelTitle.label;">
-+      <hbox id="tree-panel-resizer-box" align="end">
-+        <spacer flex="1" />
-+        <resizer dir="bottomend" />
-+      </hbox>
-+    </panel>
++    <menupopup id="inspector-node-popup">
++      <menuitem id="inspectorHTMLCopyInner"
++                label="&inspectorHTMLCopyInner.label;"
++                accesskey="&inspectorHTMLCopyInner.accesskey;"
++                command="Inspector:CopyInner"/>
++      <menuitem id="inspectorHTMLCopyOuter"
++                label="&inspectorHTMLCopyOuter.label;"
++                accesskey="&inspectorHTMLCopyOuter.accesskey;"
++                command="Inspector:CopyOuter"/>
++      <menuseparator/>
++      <menuitem id="inspectorHTMLDelete"
++                label="&inspectorHTMLDelete.label;"
++                accesskey="&inspectorHTMLDelete.accesskey;"
++                command="Inspector:DeleteNode"/>
++    </menupopup>
 +
 +    <menupopup id="toolbar-context-menu"
 +               onpopupshowing="onViewToolbarsPopupShowing(event);">
@@ -309,7 +312,7 @@
 +           type="arrow"
 +           hidden="true"
 +           noautofocus="true"
-+           onpopupshown="document.getElementById('identity-popup-more-info-button').focus();"
++           onpopupshown="gIdentityHandler.onPopupShown(event);"
 +           level="top">
 +      <hbox id="identity-popup-container" align="top">
 +        <image id="identity-popup-icon"/>
@@ -529,6 +532,7 @@
 +            <image id="addons-notification-icon" class="notification-anchor-icon" role="button"/>
 +            <image id="indexedDB-notification-icon" class="notification-anchor-icon" role="button"/>
 +            <image id="password-notification-icon" class="notification-anchor-icon" role="button"/>
++            <image id="webapps-notification-icon" class="notification-anchor-icon" role="button"/>
 +          </box>
 +          <!-- Use onclick instead of normal popup= syntax since the popup
 +               code fires onmousedown, and hence eats our favicon drag events.
@@ -855,11 +859,6 @@
 +                     label="&printButton.label;" command="cmd_print"
 +                     tooltiptext="&printButton.tooltip;"/>
 +
-+      <toolbaritem id="navigator-throbber" title="&throbberItem.title;" align="center" pack="center"
-+                   mousethrough="always">
-+        <image/>
-+      </toolbaritem>
-+
 +      <toolbarbutton id="downloads-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
 +                     observes="Tools:Downloads"
 +                     ondrop="DownloadsButtonDNDObserver.onDrop(event)"
@@ -890,21 +889,6 @@
 +                     ondragenter="newWindowButtonObserver.onDragOver(event)"
 +                     ondragexit="newWindowButtonObserver.onDragExit(event)"/>
 +
-+      <toolbarbutton id="cut-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                     label="&cutCmd.label;"
-+                     command="cmd_cut"
-+                     tooltiptext="&cutButton.tooltip;"/>
-+
-+      <toolbarbutton id="copy-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                     label="&copyCmd.label;"
-+                     command="cmd_copy"
-+                     tooltiptext="&copyButton.tooltip;"/>
-+
-+      <toolbarbutton id="paste-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                     label="&pasteCmd.label;"
-+                     command="cmd_paste"
-+                     tooltiptext="&pasteButton.tooltip;"/>
-+
 +      <toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
 +                     observes="View:FullScreen"
 +                     type="checkbox"
@@ -922,12 +906,7 @@
 +                       command="cmd_fullZoomEnlarge"
 +                       tooltiptext="&zoomInButton.tooltip;"/>
 +      </toolbaritem>
-+#ifdef MOZ_SERVICES_SYNC
-+      <toolbarbutton id="sync-button"
-+                     class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                     label="&syncToolbarButton.label;"
-+                     oncommand="gSyncUI.handleToolbarButton()"/>
-+#endif
++
 +      <toolbarbutton id="feed-button"
 +                     type="menu"
 +                     class="toolbarbutton-1 chromeclass-toolbar-additional"
@@ -942,6 +921,33 @@
 +                   onclick="checkForMiddleClick(this, event);"/>
 +      </toolbarbutton>
 +
++      <toolbarbutton id="cut-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     label="&cutCmd.label;"
++                     command="cmd_cut"
++                     tooltiptext="&cutButton.tooltip;"/>
++
++      <toolbarbutton id="copy-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     label="&copyCmd.label;"
++                     command="cmd_copy"
++                     tooltiptext="&copyButton.tooltip;"/>
++
++      <toolbarbutton id="paste-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     label="&pasteCmd.label;"
++                     command="cmd_paste"
++                     tooltiptext="&pasteButton.tooltip;"/>
++
++#ifdef MOZ_SERVICES_SYNC
++      <toolbarbutton id="sync-button"
++                     class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     label="&syncToolbarButton.label;"
++                     oncommand="gSyncUI.handleToolbarButton()"/>
++#endif
++
++      <toolbaritem id="navigator-throbber" title="&throbberItem.title;" align="center" pack="center"
++                   mousethrough="always">
++        <image/>
++      </toolbaritem>
++
 +      <toolbarbutton id="tabview-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
 +                     label="&tabGroupsButton.label;"
 +                     command="Browser:ToggleTabView"
@@ -969,7 +975,7 @@
 +                  tabcontainer="tabbrowser-tabs"
 +                  contentcontextmenu="contentAreaContextMenu"
 +                  autocompletepopup="PopupAutoComplete"
-+                  onclick="return contentAreaClick(event, false);"/>
++                  onclick="contentAreaClick(event, false);"/>
 +      <statuspanel id="statusbar-display" inactive="true"/>
 +    </vbox>
 +    <splitter id="devtools-side-splitter" hidden="true"/>
@@ -996,45 +1002,42 @@
 +             class="devtools-toolbar"
 +             nowindowdrag="true"
 +             hidden="true">
-+      <vbox flex="1">
-+        <resizer id="inspector-top-resizer" flex="1" 
-+                 dir="top" disabled="true"
-+                 element="inspector-tree-box"/>
-+        <hbox>
 +#ifdef XP_MACOSX
-+          <toolbarbutton id="highlighter-closebutton"
-+                         oncommand="InspectorUI.closeInspectorUI(false);"
-+                         tooltiptext="&inspectCloseButton.tooltiptext;"/>
++      <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="&inspect3DViewButton.label;"
-+                           accesskey="&inspect3DViewButton.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>
++      <toolbarbutton id="inspector-inspect-toolbutton"
++                     class="devtools-toolbarbutton"
++                     command="Inspector:Inspect"/>
++      <toolbarbutton id="inspector-treepanel-toolbutton"
++                     class="devtools-toolbarbutton"
++                     label="&htmlPanel.label;"
++                     accesskey="&htmlPanel.accesskey;"
++                     tooltiptext="&htmlPanel.tooltiptext;"
++                     command="Inspector:HTMLPanel"/>
++      <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="&inspect3DViewButton.label;"
++                       accesskey="&inspect3DViewButton.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);"
-+                         tooltiptext="&inspectCloseButton.tooltiptext;"/>
++      <toolbarbutton id="highlighter-closebutton"
++                     oncommand="InspectorUI.closeInspectorUI(false);"
++                     tooltiptext="&inspectCloseButton.tooltiptext;"/>
 +#endif
-+        </hbox>
-+      </vbox>
 +    </toolbar>
 +    <toolbar id="addon-bar"
 +             toolbarname="&addonBarCmd.label;" accesskey="&addonBarCmd.accesskey;"
@@ -1057,11 +1060,7 @@
 +  <svg:svg height="0">
 +    <svg:mask id="winstripe-keyhole-forward-mask" maskContentUnits="objectBoundingBox">
 +      <svg:rect x="0" y="0" width="1" height="1" fill="white"/>
-+      <svg:circle cx="-0.46" cy="0.5" r="0.63"/>
-+    </svg:mask>
-+    <svg:mask id="winstripe-keyhole-forward-mask-hover" maskContentUnits="objectBoundingBox">
-+      <svg:rect x="0" y="0" width="1" height="1" fill="white"/>
-+      <svg:circle cx="-0.35" cy="0.5" r="0.58"/>
++      <svg:circle cx="-0.34" cy="0.5" r="0.61"/>
 +    </svg:mask>
 +    <svg:mask id="winstripe-urlbar-back-button-mask" maskContentUnits="userSpaceOnUse">
 +      <svg:rect x="0" y="0" width="10000" height="50" fill="white"/>
@@ -1124,10 +1123,10 @@
 diff --git a/browser/base/jar.mn b/browser/base/jar.mn
 --- a/browser/base/jar.mn
 +++ b/browser/base/jar.mn
-@@ -23,16 +23,18 @@ browser.jar:
-         content/browser/aboutHome-restore-icon-small.png    (content/aboutHome-restore-icon-small.png)
-         content/browser/aboutHome-snippet1.png        (content/aboutHome-snippet1.png)
-         content/browser/aboutHome-snippet2.png        (content/aboutHome-snippet2.png)
+@@ -32,16 +32,18 @@ browser.jar:
+         content/browser/abouthome/restore-large.png   (content/abouthome/restore-large.png)
+         content/browser/abouthome/mozilla.png         (content/abouthome/mozilla.png)
+         content/browser/abouthome/noise.png           (content/abouthome/noise.png)
          content/browser/aboutRobots-icon.png          (content/aboutRobots-icon.png)
          content/browser/aboutRobots-widget-left.png   (content/aboutRobots-widget-left.png)
  *       content/browser/browser.css                   (content/browser.css)
@@ -1137,12 +1136,12 @@
 +%       override chrome://browser/content/browser.xul chrome://browser/content/browser-kde.xul desktop=kde
  *       content/browser/browser-tabPreviews.xml       (content/browser-tabPreviews.xml)
  *       content/browser/content.js                    (content/content.js)
- *       content/browser/fullscreen-video.xhtml        (content/fullscreen-video.xhtml)
  *       content/browser/newtab/newTab.xul             (content/newtab/newTab.xul)
  *       content/browser/newtab/newTab.js              (content/newtab/newTab.js)
          content/browser/newtab/newTab.css             (content/newtab/newTab.css)
  *       content/browser/pageinfo/pageInfo.xul         (content/pageinfo/pageInfo.xul)
  *       content/browser/pageinfo/pageInfo.js          (content/pageinfo/pageInfo.js)
+ *       content/browser/pageinfo/pageInfo.css         (content/pageinfo/pageInfo.css)
 diff --git a/browser/components/build/nsModule.cpp b/browser/components/build/nsModule.cpp
 --- a/browser/components/build/nsModule.cpp
 +++ b/browser/components/build/nsModule.cpp
@@ -1277,7 +1276,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/browser/components/shell/src/nsKDEShellService.cpp
-@@ -0,0 +1,257 @@
+@@ -0,0 +1,264 @@
 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 +/* ***** BEGIN LICENSE BLOCK *****
 + * Version: MPL 1.1/GPL 2.0/LGPL 2.1
@@ -1419,6 +1418,13 @@
 +}
 +
 +NS_IMETHODIMP
++nsKDEShellService::GetCanSetDesktopBackground(bool* aResult)
++{
++  *aResult = true;
++  return NS_OK;
++}
++
++NS_IMETHODIMP
 +nsKDEShellService::SetDesktopBackground(nsIDOMElement* aElement,
 +                                          PRInt32 aPosition)
 +    {
@@ -1709,7 +1715,7 @@
 diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
 --- a/browser/installer/package-manifest.in
 +++ b/browser/installer/package-manifest.in
-@@ -450,16 +450,17 @@
+@@ -467,16 +467,17 @@
  #endif
  #endif
  
--- a/firefox-libxulsdk-locales.patch	Sat Mar 31 09:26:42 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# HG changeset patch
-# Parent f63659c5a2c060ac43bf681191d1432cbb7c3e54
-We need to package toolkit locales explicitely into firefox langpacks even in xulrunner based builds
-
-diff --git a/browser/makefiles.sh b/browser/makefiles.sh
---- a/browser/makefiles.sh
-+++ b/browser/makefiles.sh
-@@ -77,16 +77,21 @@ browser/devtools/styleinspector/Makefile
- browser/devtools/webconsole/Makefile
- browser/fuel/Makefile
- browser/fuel/public/Makefile
- browser/fuel/src/Makefile
- browser/installer/Makefile
- browser/locales/Makefile
- browser/modules/Makefile
- browser/themes/Makefile
-+netwerk/locales/Makefile
-+dom/locales/Makefile
-+security/manager/locales/Makefile
-+extensions/spellcheck/locales/Makefile
-+toolkit/locales/Makefile
- $MOZ_BRANDING_DIRECTORY/Makefile
- $MOZ_BRANDING_DIRECTORY/content/Makefile
- $MOZ_BRANDING_DIRECTORY/locales/Makefile
- "
- 
- if [ "$MOZ_SAFE_BROWSING" ]; then
-   add_makefiles "
-     browser/components/safebrowsing/Makefile
--- a/firefox-no-default-ualocale.patch	Sat Mar 31 09:26:42 2012 +0200
+++ b/firefox-no-default-ualocale.patch	Sat Mar 31 22:19:28 2012 +0200
@@ -1,12 +1,12 @@
 # HG changeset patch
 # User Wolfgang Rosenauer <wr@rosenauer.org>
-# Parent d372da4f99f10c6e76fd483abc145cfbc485c168
+# Parent be9f4eae7dc69ed989cc9f9259b3bb73d1f5dbf9
 Do not overwrite the locale dynamic pref from xulrunner's all.js with a wrong default value
 
 diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
 --- a/browser/app/profile/firefox.js
 +++ b/browser/app/profile/firefox.js
-@@ -230,17 +230,17 @@ pref("xpinstall.whitelist.add.36", "getp
+@@ -231,17 +231,17 @@ pref("xpinstall.whitelist.add.36", "getp
  
  pref("lightweightThemes.update.enabled", true);
  
@@ -19,7 +19,7 @@
 +pref("general.useragent.locale", "chrome://global/locale/intl.properties");
  pref("general.skins.selectedSkin", "classic/1.0");
  
- pref("general.smoothScroll", false);
+ pref("general.smoothScroll", true);
  #ifdef UNIX_BUT_NOT_MAC
  pref("general.autoScroll", false);
  #else
--- a/mozilla-arm-cpu-detection.patch	Sat Mar 31 09:26:42 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-# HG changeset patch
-# Parent 80b3a069c028690886ade5fdeb0f5d8b435ea368
-diff --git a/xpcom/glue/objs.mk b/xpcom/glue/objs.mk
---- a/xpcom/glue/objs.mk
-+++ b/xpcom/glue/objs.mk
-@@ -71,13 +71,13 @@ XPCOM_GLUENS_SRC_LCPPSRCS =      \
-   SSE.cpp                        \
-   unused.cpp                     \
-   nsProxyRelease.cpp             \
-   nsTextFormatter.cpp            \
-   GenericFactory.cpp             \
-   FileUtils.cpp                  \
-   $(NULL)
- 
--ifeq (arm,$(TARGET_CPU))
-+ifneq (,$(filter arm%,$(TARGET_CPU)))
- XPCOM_GLUENS_SRC_LCPPSRCS += arm.cpp
- endif
- 
- XPCOM_GLUENS_SRC_CPPSRCS = $(addprefix $(topsrcdir)/xpcom/glue/,$(XPCOM_GLUENS_SRC_LCPPSRCS))
--- a/mozilla-kde.patch	Sat Mar 31 09:26:42 2012 +0200
+++ b/mozilla-kde.patch	Sat Mar 31 22:19:28 2012 +0200
@@ -27,7 +27,7 @@
 diff --git a/modules/libpref/src/Preferences.cpp b/modules/libpref/src/Preferences.cpp
 --- a/modules/libpref/src/Preferences.cpp
 +++ b/modules/libpref/src/Preferences.cpp
-@@ -56,16 +56,17 @@
+@@ -57,16 +57,17 @@
  #include "nsIStringEnumerator.h"
  #include "nsIZipReader.h"
  #include "nsPrefBranch.h"
@@ -45,14 +45,14 @@
  #include "prefapi.h"
  #include "prefread.h"
  #include "prefapi_private_data.h"
-@@ -935,30 +936,48 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
- }
+@@ -937,16 +938,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
  
  static nsresult pref_LoadPrefsInDirList(const char *listId)
  {
    nsresult rv;
    nsCOMPtr<nsIProperties> dirSvc(do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv));
-   if (NS_FAILED(rv)) return rv;
+   if (NS_FAILED(rv))
+     return rv;
  
 +  // make sure we load these special files after all the others
 +  static const char* specialFiles[] = {
@@ -72,30 +72,34 @@
 +    }
 +  }
 +
-   nsCOMPtr<nsISimpleEnumerator> dirList;
+   nsCOMPtr<nsISimpleEnumerator> list;
    dirSvc->Get(listId,
                NS_GET_IID(nsISimpleEnumerator),
-               getter_AddRefs(dirList));
-   if (dirList) {
-     bool hasMore;
-     while (NS_SUCCEEDED(dirList->HasMoreElements(&hasMore)) && hasMore) {
-       nsCOMPtr<nsISupports> elem;
-       dirList->GetNext(getter_AddRefs(elem));
-       if (elem) {
-         nsCOMPtr<nsIFile> dir = do_QueryInterface(elem);
-         if (dir) {
-           // Do we care if a file provided by this process fails to load?
--          pref_LoadPrefsInDir(dir, nsnull, 0); 
-+          pref_LoadPrefsInDir(dir, specialFiles, NS_ARRAY_LENGTH(specialFiles));
-         }
-       }
-     }
+               getter_AddRefs(list));
+   if (!list)
+     return NS_OK;
+ 
+   bool hasMore;
+@@ -962,17 +981,17 @@ static nsresult pref_LoadPrefsInDirList(
+ 
+     nsCAutoString leaf;
+     path->GetNativeLeafName(leaf);
+ 
+     // Do we care if a file provided by this process fails to load?
+     if (Substring(leaf, leaf.Length() - 4).Equals(NS_LITERAL_CSTRING(".xpi")))
+       ReadExtensionPrefs(path);
+     else
+-      pref_LoadPrefsInDir(path, nsnull, 0);
++      pref_LoadPrefsInDir(path, specialFiles, NS_ARRAY_LENGTH(specialFiles));
    }
    return NS_OK;
  }
  
  static nsresult pref_ReadPrefFromJar(nsZipArchive* jarReader, const char *name)
-@@ -1051,28 +1070,40 @@ static nsresult pref_InitInitialObjects(
+ {
+   nsZipItemPtr<char> manifest(jarReader, name, true);
+   NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE);
+@@ -1062,28 +1081,40 @@ static nsresult pref_InitInitialObjects(
    /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
    static const char* specialFiles[] = {
  #if defined(XP_MACOSX)
@@ -139,17 +143,18 @@
 diff --git a/toolkit/components/downloads/Makefile.in b/toolkit/components/downloads/Makefile.in
 --- a/toolkit/components/downloads/Makefile.in
 +++ b/toolkit/components/downloads/Makefile.in
-@@ -75,8 +75,10 @@ EXTRA_COMPONENTS = \
+@@ -73,8 +73,11 @@ EXTRA_COMPONENTS = \
+   nsDownloadManagerUI.js \
+   nsDownloadManagerUI.manifest \
    $(NULL)
  endif
  
- ifdef ENABLE_TESTS
- DIRS += test
- endif
+ TEST_DIRS += test
  
  include $(topsrcdir)/config/rules.mk
 +
 +LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
++
 diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/components/downloads/nsDownloadManager.cpp
 --- a/toolkit/components/downloads/nsDownloadManager.cpp
 +++ b/toolkit/components/downloads/nsDownloadManager.cpp
@@ -174,7 +179,7 @@
  #include "AndroidBridge.h"
  #endif
  
-@@ -2214,16 +2218,25 @@ nsDownload::SetState(DownloadState aStat
+@@ -2221,16 +2225,25 @@ nsDownload::SetState(DownloadState aStat
        nsCOMPtr<nsIPrefBranch> pref(do_GetService(NS_PREFSERVICE_CONTRACTID));
  
        // Master pref to control this function.
@@ -200,7 +205,7 @@
          PRInt64 goat = PR_Now() - mStartTime;
          showTaskbarAlert = goat > alertIntervalUSec;
  
-@@ -2247,19 +2260,20 @@ nsDownload::SetState(DownloadState aStat
+@@ -2254,19 +2267,20 @@ nsDownload::SetState(DownloadState aStat
                // If downloads are automatically removed per the user's
                // retention policy, there's no reason to make the text clickable
                // because if it is, they'll click open the download manager and
@@ -225,7 +230,7 @@
 diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
 --- a/toolkit/content/jar.mn
 +++ b/toolkit/content/jar.mn
-@@ -40,29 +40,33 @@ toolkit.jar:
+@@ -44,29 +44,33 @@ toolkit.jar:
  *+ content/global/viewZoomOverlay.js          (viewZoomOverlay.js)
  *+ content/global/bindings/autocomplete.xml    (widgets/autocomplete.xml)
  *+ content/global/bindings/browser.xml         (widgets/browser.xml)
@@ -2092,8 +2097,7 @@
 diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
 --- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
 +++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
-@@ -45,16 +45,18 @@
- #include "nsReadableUtils.h"
+@@ -46,16 +46,18 @@
  #include "nsArrayUtils.h"
  #include "prnetdb.h"
  #include "prenv.h"
@@ -2101,6 +2105,7 @@
  #include "nsNetUtil.h"
  #include "nsISupportsPrimitives.h"
  #include "nsIGSettingsService.h"
+ #include "nsInterfaceHashtable.h"
 +#include "nsVoidArray.h"
 +#include "nsKDEUtils.h"
  
@@ -2111,10 +2116,10 @@
  
    nsUnixSystemProxySettings() {}
    nsresult Init();
-@@ -64,16 +66,17 @@ private:
-   
-   nsCOMPtr<nsIGConfService> mGConf;
+@@ -67,16 +69,17 @@ private:
    nsCOMPtr<nsIGSettingsService> mGSettings;
+   nsCOMPtr<nsIGSettingsCollection> mProxySettings;
+   nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection> mSchemeProxySettings;
    bool IsProxyMode(const char* aMode);
    nsresult SetProxyResultFromGConf(const char* aKeyBase, const char* aType, nsACString& aResult);
    nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost, PRInt32 aPort, nsACString& aResult);
@@ -2129,7 +2134,7 @@
  nsUnixSystemProxySettings::Init()
  {
    // If this is a GNOME session, load gconf and try to use its preferences.
-@@ -526,16 +529,19 @@ nsUnixSystemProxySettings::GetProxyForUR
+@@ -529,16 +532,19 @@ nsUnixSystemProxySettings::GetProxyForUR
    nsCAutoString host;
    rv = aURI->GetHost(host);
    NS_ENSURE_SUCCESS(rv, rv);
@@ -2141,7 +2146,7 @@
 +  if( nsKDEUtils::kdeSupport())
 +    return GetProxyFromKDE(scheme, host, port, aResult);
 +
-   if (mGSettings) {
+   if (mProxySettings) {
      rv = GetProxyFromGSettings(scheme, host, port, aResult);
      if (rv == NS_OK)
        return rv;
@@ -2149,7 +2154,7 @@
    if (mGConf)
      return GetProxyFromGConf(scheme, host, port, aResult);
  
-@@ -561,8 +567,34 @@ static const mozilla::Module::ContractID
+@@ -564,8 +570,34 @@ static const mozilla::Module::ContractID
  
  static const mozilla::Module kUnixProxyModule = {
    mozilla::Module::kVersion,
@@ -2673,7 +2678,7 @@
 diff --git a/uriloader/exthandler/Makefile.in b/uriloader/exthandler/Makefile.in
 --- a/uriloader/exthandler/Makefile.in
 +++ b/uriloader/exthandler/Makefile.in
-@@ -92,18 +92,19 @@ LOCAL_INCLUDES = -I$(srcdir)
+@@ -90,18 +90,19 @@ LOCAL_INCLUDES = -I$(srcdir)
  LOCAL_INCLUDES += -I$(topsrcdir)/dom/base \
              -I$(topsrcdir)/dom/ipc \
              -I$(topsrcdir)/content/base/src \
@@ -3250,7 +3255,7 @@
 diff --git a/widget/gtk2/Makefile.in b/widget/gtk2/Makefile.in
 --- a/widget/gtk2/Makefile.in
 +++ b/widget/gtk2/Makefile.in
-@@ -135,11 +135,14 @@ DEFINES		+= -DCAIRO_GFX
+@@ -135,11 +135,14 @@ DEFINES		+= -DCAIRO_GFX -DMOZ_APP_NAME='
  
  INCLUDES	+= \
  		-I$(srcdir)/../xpwidgets \
@@ -3604,7 +3609,7 @@
 diff --git a/xpcom/components/Makefile.in b/xpcom/components/Makefile.in
 --- a/xpcom/components/Makefile.in
 +++ b/xpcom/components/Makefile.in
-@@ -92,10 +92,11 @@ LOCAL_INCLUDES	= \
+@@ -91,10 +91,11 @@ LOCAL_INCLUDES	= \
  # we don't want the shared lib, but we want to force the creation of a static lib.
  FORCE_STATIC_LIB = 1
  
@@ -3619,134 +3624,134 @@
 diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
 --- a/xpcom/components/ManifestParser.cpp
 +++ b/xpcom/components/ManifestParser.cpp
-@@ -62,16 +62,17 @@
- #include "nsTextFormatter.h"
- #include "nsVersionComparator.h"
- #include "nsXPCOMCIDInternal.h"
- 
- #include "nsIConsoleService.h"
- #include "nsIScriptError.h"
- #include "nsIXULAppInfo.h"
- #include "nsIXULRuntime.h"
-+#include "nsKDEUtils.h"
- 
- using namespace mozilla;
- 
- struct ManifestDirective
- {
-   const char* directive;
-   int argc;
- 
-@@ -429,16 +430,17 @@ ParseManifest(NSLocationType type, FileL
-   NS_NAMED_LITERAL_STRING(kPlatform, "platform");
-   NS_NAMED_LITERAL_STRING(kContentAccessible, "contentaccessible");
-   NS_NAMED_LITERAL_STRING(kApplication, "application");
-   NS_NAMED_LITERAL_STRING(kAppVersion, "appversion");
-   NS_NAMED_LITERAL_STRING(kGeckoVersion, "platformversion");
-   NS_NAMED_LITERAL_STRING(kOs, "os");
-   NS_NAMED_LITERAL_STRING(kOsVersion, "osversion");
-   NS_NAMED_LITERAL_STRING(kABI, "abi");
-+  NS_NAMED_LITERAL_STRING(kDesktop, "desktop");
- #if defined(MOZ_WIDGET_ANDROID)
-   NS_NAMED_LITERAL_STRING(kTablet, "tablet");
- #endif
- 
-   // Obsolete
-   NS_NAMED_LITERAL_STRING(kXPCNativeWrappers, "xpcnativewrappers");
- 
-   nsAutoString appID;
-@@ -476,41 +478,46 @@ ParseManifest(NSLocationType type, FileL
-         CopyUTF8toUTF16(s, abi);
-         abi.Insert(PRUnichar('_'), 0);
-         abi.Insert(osTarget, 0);
-       }
-     }
-   }
- 
-   nsAutoString osVersion;
-+  nsAutoString desktop;
- #if defined(XP_WIN)
-   OSVERSIONINFO info = { sizeof(OSVERSIONINFO) };
-   if (GetVersionEx(&info)) {
-     nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(),
-                                          info.dwMajorVersion,
-                                          info.dwMinorVersion);
-   }
-+  desktop = NS_LITERAL_STRING("win");
- #elif defined(MOZ_WIDGET_COCOA)
-   SInt32 majorVersion, minorVersion;
-   if ((Gestalt(gestaltSystemVersionMajor, &majorVersion) == noErr) &&
-       (Gestalt(gestaltSystemVersionMinor, &minorVersion) == noErr)) {
-     nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(),
-                                          majorVersion,
-                                          minorVersion);
-   }
-+  desktop = NS_LITERAL_STRING("macosx");
- #elif defined(MOZ_WIDGET_GTK2)
-   nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(),
-                                        gtk_major_version,
-                                        gtk_minor_version);
-+  desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome");
- #elif defined(MOZ_WIDGET_ANDROID)
-   bool isTablet = false;
-   if (mozilla::AndroidBridge::Bridge()) {
-     mozilla::AndroidBridge::Bridge()->GetStaticStringField("android/os/Build$VERSION", "RELEASE", osVersion);
-     isTablet = mozilla::AndroidBridge::Bridge()->IsTablet();
-   }
-+  desktop = NS_LITERAL_STRING("android");
- #endif
- 
-   // Because contracts must be registered after CIDs, we save and process them
-   // at the end.
-   nsTArray<CachedDirective> contracts;
- 
-   char *token;
-   char *newline = buf;
-@@ -592,24 +599,26 @@ ParseManifest(NSLocationType type, FileL
-     TriState stOsVersion = eUnspecified;
-     TriState stOs = eUnspecified;
-     TriState stABI = eUnspecified;
- #if defined(MOZ_WIDGET_ANDROID)
-     TriState stTablet = eUnspecified;
- #endif
-     bool platform = false;
-     bool contentAccessible = false;
-+    TriState stDesktop = eUnspecified;
- 
-     while (NULL != (token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) && ok) {
-       ToLowerCase(token);
-       NS_ConvertASCIItoUTF16 wtoken(token);
- 
-       if (CheckStringFlag(kApplication, wtoken, appID, stApp) ||
-           CheckStringFlag(kOs, wtoken, osTarget, stOs) ||
-           CheckStringFlag(kABI, wtoken, abi, stABI) ||
-+          CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) ||
-           CheckVersionFlag(kOsVersion, wtoken, osVersion, stOsVersion) ||
-           CheckVersionFlag(kAppVersion, wtoken, appVersion, stAppVersion) ||
-           CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion, stGeckoVersion))
-         continue;
- 
- #if defined(MOZ_WIDGET_ANDROID)
-       bool tablet = false;
-       if (CheckFlag(kTablet, wtoken, tablet)) {
-@@ -638,16 +647,17 @@ ParseManifest(NSLocationType type, FileL
-     }
- 
-     if (!ok ||
-         stApp == eBad ||
-         stAppVersion == eBad ||
-         stGeckoVersion == eBad ||
-         stOs == eBad ||
-         stOsVersion == eBad ||
-+        stDesktop == eBad ||
- #ifdef MOZ_WIDGET_ANDROID
-         stTablet == eBad ||
- #endif
-         stABI == eBad)
-       continue;
- 
-     if (directive->regfunc) {
-       if (GeckoProcessType_Default != XRE_GetProcessType())
+@@ -63,16 +63,17 @@
+ #include "nsTextFormatter.h"
+ #include "nsVersionComparator.h"
+ #include "nsXPCOMCIDInternal.h"
+ 
+ #include "nsIConsoleService.h"
+ #include "nsIScriptError.h"
+ #include "nsIXULAppInfo.h"
+ #include "nsIXULRuntime.h"
++#include "nsKDEUtils.h"
+ 
+ using namespace mozilla;
+ 
+ struct ManifestDirective
+ {
+   const char* directive;
+   int argc;
+ 
+@@ -430,16 +431,17 @@ ParseManifest(NSLocationType type, FileL
+   NS_NAMED_LITERAL_STRING(kPlatform, "platform");
+   NS_NAMED_LITERAL_STRING(kContentAccessible, "contentaccessible");
+   NS_NAMED_LITERAL_STRING(kApplication, "application");
+   NS_NAMED_LITERAL_STRING(kAppVersion, "appversion");
+   NS_NAMED_LITERAL_STRING(kGeckoVersion, "platformversion");
+   NS_NAMED_LITERAL_STRING(kOs, "os");
+   NS_NAMED_LITERAL_STRING(kOsVersion, "osversion");
+   NS_NAMED_LITERAL_STRING(kABI, "abi");
++  NS_NAMED_LITERAL_STRING(kDesktop, "desktop");
+ #if defined(MOZ_WIDGET_ANDROID)
+   NS_NAMED_LITERAL_STRING(kTablet, "tablet");
+ #endif
+ 
+   // Obsolete
+   NS_NAMED_LITERAL_STRING(kXPCNativeWrappers, "xpcnativewrappers");
+ 
+   nsAutoString appID;
+@@ -477,41 +479,46 @@ ParseManifest(NSLocationType type, FileL
+         CopyUTF8toUTF16(s, abi);
+         abi.Insert(PRUnichar('_'), 0);
+         abi.Insert(osTarget, 0);
+       }
+     }
+   }
+ 
+   nsAutoString osVersion;
++  nsAutoString desktop;
+ #if defined(XP_WIN)
+   OSVERSIONINFO info = { sizeof(OSVERSIONINFO) };
+   if (GetVersionEx(&info)) {
+     nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(),
+                                          info.dwMajorVersion,
+                                          info.dwMinorVersion);
+   }
++  desktop = NS_LITERAL_STRING("win");
+ #elif defined(MOZ_WIDGET_COCOA)
+   SInt32 majorVersion, minorVersion;
+   if ((Gestalt(gestaltSystemVersionMajor, &majorVersion) == noErr) &&
+       (Gestalt(gestaltSystemVersionMinor, &minorVersion) == noErr)) {
+     nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(),
+                                          majorVersion,
+                                          minorVersion);
+   }
++  desktop = NS_LITERAL_STRING("macosx");
+ #elif defined(MOZ_WIDGET_GTK2)
+   nsTextFormatter::ssprintf(osVersion, NS_LITERAL_STRING("%ld.%ld").get(),
+                                        gtk_major_version,
+                                        gtk_minor_version);
++  desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome");
+ #elif defined(MOZ_WIDGET_ANDROID)
+   bool isTablet = false;
+   if (mozilla::AndroidBridge::Bridge()) {
+     mozilla::AndroidBridge::Bridge()->GetStaticStringField("android/os/Build$VERSION", "RELEASE", osVersion);
+     isTablet = mozilla::AndroidBridge::Bridge()->IsTablet();
+   }
++  desktop = NS_LITERAL_STRING("android");
+ #endif
+ 
+   // Because contracts must be registered after CIDs, we save and process them
+   // at the end.
+   nsTArray<CachedDirective> contracts;
+ 
+   char *token;
+   char *newline = buf;
+@@ -593,24 +600,26 @@ ParseManifest(NSLocationType type, FileL
+     TriState stOsVersion = eUnspecified;
+     TriState stOs = eUnspecified;
+     TriState stABI = eUnspecified;
+ #if defined(MOZ_WIDGET_ANDROID)
+     TriState stTablet = eUnspecified;
+ #endif
+     bool platform = false;
+     bool contentAccessible = false;
++    TriState stDesktop = eUnspecified;
+ 
+     while (NULL != (token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) && ok) {
+       ToLowerCase(token);
+       NS_ConvertASCIItoUTF16 wtoken(token);
+ 
+       if (CheckStringFlag(kApplication, wtoken, appID, stApp) ||
+           CheckStringFlag(kOs, wtoken, osTarget, stOs) ||
+           CheckStringFlag(kABI, wtoken, abi, stABI) ||
++          CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) ||
+           CheckVersionFlag(kOsVersion, wtoken, osVersion, stOsVersion) ||
+           CheckVersionFlag(kAppVersion, wtoken, appVersion, stAppVersion) ||
+           CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion, stGeckoVersion))
+         continue;
+ 
+ #if defined(MOZ_WIDGET_ANDROID)
+       bool tablet = false;
+       if (CheckFlag(kTablet, wtoken, tablet)) {
+@@ -639,16 +648,17 @@ ParseManifest(NSLocationType type, FileL
+     }
+ 
+     if (!ok ||
+         stApp == eBad ||
+         stAppVersion == eBad ||
+         stGeckoVersion == eBad ||
+         stOs == eBad ||
+         stOsVersion == eBad ||
++        stDesktop == eBad ||
+ #ifdef MOZ_WIDGET_ANDROID
+         stTablet == eBad ||
+ #endif
+         stABI == eBad)
+       continue;
+ 
+     if (directive->regfunc) {
+       if (GeckoProcessType_Default != XRE_GetProcessType())
 diff --git a/xpcom/io/Makefile.in b/xpcom/io/Makefile.in
 --- a/xpcom/io/Makefile.in
 +++ b/xpcom/io/Makefile.in
@@ -3790,7 +3795,7 @@
  #include "prmem.h"
  #include "plbase64.h"
  
-@@ -1795,44 +1796,51 @@ nsLocalFile::SetPersistentDescriptor(con
+@@ -1796,44 +1797,51 @@ nsLocalFile::SetPersistentDescriptor(con
      return InitWithNativePath(aPersistentDescriptor);
  #endif
  }
@@ -3856,7 +3861,7 @@
        return rv;
      }
      return NS_ERROR_FAILURE;
-@@ -1858,16 +1866,23 @@ nsLocalFile::Launch()
+@@ -1859,16 +1867,23 @@ nsLocalFile::Launch()
  
      if (nsnull == connection)
        return NS_ERROR_FAILURE;
--- a/mozilla-nongnome-proxies.patch	Sat Mar 31 09:26:42 2012 +0200
+++ b/mozilla-nongnome-proxies.patch	Sat Mar 31 22:19:28 2012 +0200
@@ -9,7 +9,7 @@
 diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
 --- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
 +++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
-@@ -71,18 +71,24 @@ private:
+@@ -74,22 +74,28 @@ private:
    nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType, nsACString& aResult);
  };
  
@@ -18,21 +18,29 @@
  nsresult
  nsUnixSystemProxySettings::Init()
  {
+-  mSchemeProxySettings.Init(5);
 -  mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
 -  mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
+-  if (mGSettings) {
+-    mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
+-                                       getter_AddRefs(mProxySettings));
 +  // If this is a GNOME session, load gconf and try to use its preferences.
 +  // If gconf is not available (which would be stupid) we'll proceed as if
 +  // this was not a GNOME session, using *_PROXY environment variables.
 +  const char* sessionType = PR_GetEnv("DESKTOP_SESSION");
 +  if (sessionType && !strcmp(sessionType, "gnome")) {
++    mSchemeProxySettings.Init(5);
 +    mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
 +    mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
-+  }
++    if (mGSettings) {
++      mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
++                                         getter_AddRefs(mProxySettings));
++    }
+   }
+ 
    return NS_OK;
  }
  
  bool
  nsUnixSystemProxySettings::IsProxyMode(const char* aMode)
  {
-   nsCAutoString mode;
-   return NS_SUCCEEDED(mGConf->GetString(NS_LITERAL_CSTRING("/system/proxy/mode"), mode)) &&
--- a/mozilla-repo.patch	Sat Mar 31 09:26:42 2012 +0200
+++ b/mozilla-repo.patch	Sat Mar 31 22:19:28 2012 +0200
@@ -1,20 +1,20 @@
 # HG changeset patch
-# Parent 8ea0f829916d7d9dc54567813367bcdfe6cee179
+# Parent 271b5143e89573cbbde51d0b830a6116756a52e6
 
 diff --git a/build/Makefile.in b/build/Makefile.in
 --- a/build/Makefile.in
 +++ b/build/Makefile.in
-@@ -91,17 +91,17 @@ DEFINES += -DMOZ_APP_VERSION="$(MOZ_APP_
+@@ -89,17 +89,17 @@ DEFINES += -DMOZ_APP_VERSION="$(MOZ_APP_
  APP_INI_DEPS += $(DEPTH)/config/autoconf.mk
  
- MOZ_SOURCE_STAMP ?= $(firstword $(shell hg -R $(topsrcdir) parent --template="{node|short}\n" 2>/dev/null))
+ MOZ_SOURCE_STAMP := $(firstword $(shell cd $(topsrcdir)/$(MOZ_BUILD_APP)/.. && hg parent --template="{node|short}\n" 2>/dev/null))
  ifdef MOZ_SOURCE_STAMP
  DEFINES += -DMOZ_SOURCE_STAMP="$(MOZ_SOURCE_STAMP)"
  endif
  
  _dollar=$$
--SOURCE_REPO := $(shell cd $(topsrcdir) && hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/" -e "s/\/$(_dollar)//" )
-+SOURCE_REPO ?= $(shell cd $(topsrcdir) && hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/" -e "s/\/$(_dollar)//" )
+-SOURCE_REPO := $(shell cd $(topsrcdir)/$(MOZ_BUILD_APP)/.. && hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/" -e "s/\/$(_dollar)//" )
++SOURCE_REPO ?= $(shell cd $(topsrcdir)/$(MOZ_BUILD_APP)/.. && hg showconfig paths.default 2>/dev/null | head -n1 | sed -e "s/^ssh:/http:/" -e "s/\/$(_dollar)//" )
  ifdef SOURCE_REPO
  DEFINES += -DMOZ_SOURCE_REPO="$(SOURCE_REPO)"
  endif
@@ -26,7 +26,7 @@
 diff --git a/toolkit/content/Makefile.in b/toolkit/content/Makefile.in
 --- a/toolkit/content/Makefile.in
 +++ b/toolkit/content/Makefile.in
-@@ -65,17 +65,17 @@ endif
+@@ -67,17 +67,17 @@ endif
  ifeq (Android,$(OS_TARGET))
  DEFINES += -DANDROID_PACKAGE_NAME=$(ANDROID_PACKAGE_NAME)
  endif
@@ -43,8 +43,8 @@
  DEFINES += -DSOURCE_REPO="$(SOURCE_REPO)"
  endif
  
- ifdef MOZ_TOOLKIT_SEARCH
- DEFINES += -DMOZ_TOOLKIT_SEARCH
+ BUILD_HOSTNAME = $(shell hostname -s || hostname)
+ DEFINES += -DBUILD_HOSTNAME="$(BUILD_HOSTNAME)"
 diff --git a/toolkit/mozapps/installer/package-name.mk b/toolkit/mozapps/installer/package-name.mk
 --- a/toolkit/mozapps/installer/package-name.mk
 +++ b/toolkit/mozapps/installer/package-name.mk
@@ -74,7 +74,7 @@
 diff --git a/toolkit/xre/Makefile.in b/toolkit/xre/Makefile.in
 --- a/toolkit/xre/Makefile.in
 +++ b/toolkit/xre/Makefile.in
-@@ -236,17 +236,17 @@ DEFINES += -DHAVE_USR_LIB64_DIR
+@@ -229,17 +229,17 @@ DEFINES += -DHAVE_USR_LIB64_DIR
  endif
  endif
  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-system-nspr.patch	Sat Mar 31 22:19:28 2012 +0200
@@ -0,0 +1,27 @@
+# HG changeset patch
+# User Wolfgang Rosenauer <wr@rosenauer.org>
+# Parent e94edfdb1f5bd5c29dc54cfb83768f9c84f3f4de
+Bug 736854 - PHal.ipdl includes NSPR incorrectly - breaking system NSPR usage
+
+diff --git a/hal/sandbox/PHal.ipdl b/hal/sandbox/PHal.ipdl
+--- a/hal/sandbox/PHal.ipdl
++++ b/hal/sandbox/PHal.ipdl
+@@ -34,17 +34,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 ***** */
+ 
+ include protocol PContent;
+ include protocol PBrowser;
+-include "nspr/prtime.h";
++include "prtime.h";
+ include "mozilla/HalSensor.h";
+ include "mozilla/HalTypes.h";
+ 
+ using PRTime;
+ using mozilla::hal::FlashMode;
+ using mozilla::hal::LightType;
+ using mozilla::hal::LightMode;
+ using mozilla::hal::SensorType;
--- a/series	Sat Mar 31 09:26:42 2012 +0200
+++ b/series	Sat Mar 31 22:19:28 2012 +0200
@@ -16,8 +16,8 @@
 mozilla-dump_syms-static.patch
 mozilla-sle11.patch
 mozilla-linux3.patch
-mozilla-arm-cpu-detection.patch
 mozilla-disable-neon-option.patch
+mozilla-system-nspr.patch
 mozilla-revert_621446.patch
 mozilla-libnotify.patch
 #mozilla-yarr-pcre.patch
@@ -28,7 +28,6 @@
 firefox-kde.patch
 firefox-kde-114.patch
 #firefox-ui-lockdown.patch
-firefox-libxulsdk-locales.patch
 firefox-no-default-ualocale.patch
 firefox-multilocale-chrome.patch
 firefox-branded-icons.patch
--- a/xulrunner/mozilla-arm-cpu-detection.patch	Sat Mar 31 09:26:42 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-../mozilla-arm-cpu-detection.patch
\ No newline at end of file
--- a/xulrunner/xulrunner.spec	Sat Mar 31 09:26:42 2012 +0200
+++ b/xulrunner/xulrunner.spec	Sat Mar 31 22:19:28 2012 +0200
@@ -44,12 +44,12 @@
 %endif
 BuildRequires:  mozilla-nspr-devel >= 4.9.0
 BuildRequires:  mozilla-nss-devel >= 3.13.3
-Version:        11.99
+Version:        12.99
 Release:        0
 %define         releasedate 2012032100
-%define         version_internal 12.0
-%define         apiversion 12
-%define         uaweight 1200000
+%define         version_internal 13.0
+%define         apiversion 13
+%define         uaweight 1300000
 Summary:        Mozilla Runtime Environment
 License:        MPL-1.1 or GPL-2.0+ or LGPL-2.1+
 Group:          Productivity/Other
@@ -79,9 +79,10 @@
 Patch13:        mozilla-sle11.patch
 Patch14:        mozilla-linux3.patch
 Patch15:        mozilla-arm-cpu-detection.patch
-Patch16:        mozilla-revert_621446.patch
-Patch17:        mozilla-yarr-pcre.patch
-Patch18:        mozilla-libnotify.patch
+Patch16:        mozilla-system-nspr.patch
+Patch17:        mozilla-revert_621446.patch
+Patch18:        mozilla-yarr-pcre.patch
+Patch19:        mozilla-libnotify.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 Requires:       mozilla-js = %{version}
 Requires(post):  update-alternatives coreutils
@@ -203,6 +204,7 @@
 %patch16 -p1
 #%patch17 -p1
 %patch18 -p1
+%patch19 -p1
 
 %build
 # no need to add build time to binaries