Reenabling KDE integration patches (part 1: rebase and reenable; might need post-fixes)
authorWolfgang Rosenauer <wr@rosenauer.org>
Thu, 12 Aug 2010 08:55:47 +0200
changeset 127 4c86470ed796
parent 126 7b356805729c
child 128 dca77f2bed05
Reenabling KDE integration patches (part 1: rebase and reenable; might need post-fixes)
MozillaFirefox/MozillaFirefox.spec
firefox-kde.patch
mozilla-kde.patch
mozilla-xulrunner20/mozilla-xulrunner20.spec
series
--- a/MozillaFirefox/MozillaFirefox.spec	Wed Aug 11 12:17:17 2010 +0200
+++ b/MozillaFirefox/MozillaFirefox.spec	Thu Aug 12 08:55:47 2010 +0200
@@ -164,9 +164,9 @@
 %patch6 -p1
 %patch8 -p1
 %if %suse_version >= 1110
-#%patch9 -p1
+%patch9 -p1
 # install kde.js
-#install -m 644 %{SOURCE6} browser/app/profile/kde.js
+install -m 644 %{SOURCE6} browser/app/profile/kde.js
 %endif
 #%patch10 -p1
 %patch11 -p1
--- a/firefox-kde.patch	Wed Aug 11 12:17:17 2010 +0200
+++ b/firefox-kde.patch	Thu Aug 12 08:55:47 2010 +0200
@@ -17,13 +17,13 @@
  # hardcode en-US for the moment
  AB_CD = en-US
  
- DEFINES += \
-   -DAB_CD=$(AB_CD) \
+ DEFINES += -DAB_CD=$(AB_CD)
+ 
 diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul
 new file mode 100644
 --- /dev/null
 +++ b/browser/base/content/browser-kde.xul
-@@ -0,0 +1,643 @@
+@@ -0,0 +1,1094 @@
 +#filter substitution
 +<?xml version="1.0"?>
 +# -*- Mode: HTML -*-
@@ -59,6 +59,8 @@
 +#   Dão Gottwald <dao@mozilla.com>
 +#   Ehsan Akhgari <ehsan.akhgari@gmail.com>
 +#   Robert Strong <robert.bugzilla@gmail.com>
++#   Rob Campbell <rcampbell@mozilla.com>
++#   Patrick Walton <pcwalton@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
@@ -111,19 +113,18 @@
 +        windowtype="navigator:browser"
 +        screenX="4" screenY="4"
 +        browsingmode="normal"
-+        toggletoolbar="true"
 +        persist="screenX screenY width height sizemode"> 
 +
 +# All JS files which are not content (only) dependent that browser.xul
 +# wishes to include *must* go into the global-scripts.inc file
 +# so that they can be shared by macBrowserOverlay.xul.
 +#include global-scripts.inc
-+<script type="application/x-javascript" src="chrome://browser/content/nsContextMenu.js"/>
++<script type="application/javascript" src="chrome://browser/content/nsContextMenu.js"/>
 +
 +#ifdef MOZ_SAFE_BROWSING
-+<script type="application/x-javascript" src="chrome://browser/content/safebrowsing/sb-loader.js"/>
++<script type="application/javascript" src="chrome://browser/content/safebrowsing/sb-loader.js"/>
 +#endif
-+<script type="application/x-javascript" src="chrome://global/content/contentAreaUtils.js"/>
++<script type="application/javascript" src="chrome://global/content/contentAreaUtils.js"/>
 +
 +<script type="application/javascript" src="chrome://browser/content/places/editBookmarkOverlay.js"/>
 +
@@ -132,6 +133,45 @@
 +#include browser-sets.inc
 +
 +  <popupset id="mainPopupSet">
++    <menupopup id="tabContextMenu"
++               onpopupshowing="if (event.target == this) TabContextMenu.updateContextMenu(this);"
++               onpopuphidden="if (event.target == this) TabContextMenu.contextTab = null;">
++      <menuitem id="context_reloadTab" label="&reloadTab.label;" accesskey="&reloadTab.accesskey;"
++                oncommand="gBrowser.reloadTab(TabContextMenu.contextTab);"/>
++      <menuitem id="context_reloadAllTabs" label="&reloadAllTabs.label;" accesskey="&reloadAllTabs.accesskey;"
++                tbattr="tabbrowser-multiple"
++                oncommand="gBrowser.reloadAllTabs();"/>
++      <menuseparator/>
++      <menuitem id="context_openTabInWindow" label="&openTabInNewWindow.label;"
++                accesskey="&openTabInNewWindow.accesskey;"
++                tbattr="tabbrowser-multiple"
++                oncommand="gBrowser.replaceTabWithWindow(TabContextMenu.contextTab);"/>
++      <menuitem id="context_pinTab" label="&pinTab.label;"
++                accesskey="&pinTab.accesskey;"
++                oncommand="gBrowser.pinTab(TabContextMenu.contextTab);"/>
++      <menuitem id="context_unpinTab" label="&unpinTab.label;" hidden="true"
++                accesskey="&unpinTab.accesskey;"
++                oncommand="gBrowser.unpinTab(TabContextMenu.contextTab);"/>
++      <menuseparator/>
++      <menuitem id="context_bookmarkTab"
++                label="&bookmarkThisTab.label;"
++                accesskey="&bookmarkThisTab.accesskey;"
++                oncommand="BookmarkThisTab(TabContextMenu.contextTab);"/>
++      <menuitem id="context_bookmarkAllTabs"
++                label="&bookmarkAllTabs.label;"
++                accesskey="&bookmarkAllTabs.accesskey;"
++                command="Browser:BookmarkAllTabs"/>
++      <menuseparator/>
++      <menuitem id="context_closeOtherTabs" label="&closeOtherTabs.label;" accesskey="&closeOtherTabs.accesskey;"
++                oncommand="gBrowser.removeAllTabsBut(TabContextMenu.contextTab);"/>
++      <menuitem id="context_undoCloseTab"
++                label="&undoCloseTab.label;"
++                accesskey="&undoCloseTab.accesskey;"
++                observes="History:UndoCloseTab"/>
++      <menuitem id="context_closeTab" label="&closeTab.label;" accesskey="&closeTab.accesskey;"
++                oncommand="gBrowser.removeTab(TabContextMenu.contextTab, { animate: true });"/>
++    </menupopup>
++
 +    <menupopup id="backForwardMenu"
 +               onpopupshowing="return FillHistoryMenu(event.target);"
 +               oncommand="gotoHistoryIndex(event);"
@@ -200,31 +240,115 @@
 +                oncommand="StarUI.panel.hidePopup();"/>
 +#else
 +        <button id="editBookmarkPanelDoneButton"
++                class="editBookmarkPanelBottomButton"
 +                label="&editBookmark.done.label;"
 +                default="true"
 +                oncommand="StarUI.panel.hidePopup();"/>
 +        <button id="editBookmarkPanelDeleteButton"
++                class="editBookmarkPanelBottomButton"
 +                label="&editBookmark.cancel.label;"
 +                oncommand="StarUI.cancelButtonOnCommand();"/>
 +#endif
 +      </hbox>
 +    </panel>
 +
-+    <popup id="toolbar-context-menu"
-+           onpopupshowing="onViewToolbarsPopupShowing(event);">
++    <panel id="highlighter-panel"
++           hidden="true"
++           ignorekeys="true"
++           noautofocus="true"
++           noautohide="true"
++           onclick="InspectorUI.stopInspecting();"
++           onmousemove="InspectorUI.highlighter.handleMouseMove(event);"
++           onMozMousePixelScroll="InspectorUI.highlighter.handlePixelScroll(event);"/>
++
++    <panel id="inspector-panel"
++           orient="vertical"
++           hidden="true"
++           ignorekeys="true"
++           noautofocus="true"
++           noautohide="true"
++           level="top"
++           titlebar="normal"
++           label="&inspectPanelTitle.label;">
++      <toolbar id="inspector-toolbar"
++               nowindowdrag="true">
++        <toolbarbutton id="inspector-inspect-toolbutton"
++                       label="&inspectButton.label;"
++                       accesskey="&inspectButton.accesskey;"
++                       class="toolbarbutton-text"
++                       command="Inspector:Inspect"/>
++        <toolbarbutton id="inspector-previous-toolbutton"
++                       label="&inspectPreviousButton.label;"
++                       accesskey="&inspectPreviousButton.accesskey;"
++                       class="toolbarbutton-text"
++                       command="Inspector:Previous"/>
++        <toolbarbutton id="inspector-next-toolbutton"
++                       label="&inspectNextButton.label;"
++                       accesskey="&inspectNextButton.accesskey;"
++                       class="toolbarbutton-text"
++                       command="Inspector:Next"/>
++        <toolbarbutton id="inspector-style-toolbutton"
++                       label="&inspectStyleButton.label;"
++                       accesskey="&inspectStyleButton.accesskey;"
++                       class="toolbarbutton-text"
++                       command="Inspector:Style"/>
++      </toolbar>
++      <tree id="inspector-tree" class="plain"
++            seltype="single"
++            treelines="true"
++            onselect="InspectorUI.onTreeSelected()"
++            flex="1">
++        <treecols>
++          <treecol id="colNodeName" label="nodeName" primary="true"
++                   persist="width,hidden,ordinal" flex="1"/>
++          <splitter class="tree-splitter"/>
++          <treecol id="colNodeValue" label="nodeValue"
++                   persist="width,hidden,ordinal" flex="1"/>
++        </treecols>
++        <treechildren id="inspector-tree-body"/>
++      </tree>
++      <hbox align="end">
++        <spacer flex="1" />
++        <resizer dir="bottomend" />
++      </hbox>
++    </panel>
++
++    <panel id="inspector-style-panel"
++           hidden="true"
++           orient="vertical"
++           ignorekeys="true"
++           noautofocus="true"
++           noautohide="true"
++           level="top"
++           titlebar="normal"
++           label="&inspectStylePanelTitle.label;">
++        <listbox id="inspector-style-listbox" flex="1"/>
++        <hbox align="end">
++          <spacer flex="1" />
++          <resizer dir="bottomend" />
++        </hbox>
++    </panel>
++
++    <menupopup id="toolbar-context-menu"
++               onpopupshowing="onViewToolbarsPopupShowing(event);">
++      <menuseparator/>
++      <menuitem command="cmd_ToggleTabsOnTop"
++                type="checkbox"
++                label="&viewTabsOnTop.label;"
++                accesskey="&viewTabsOnTop.accesskey;"/>
 +      <menuseparator/>
 +      <menuitem command="cmd_CustomizeToolbars"
 +                label="&viewCustomizeToolbar.label;"
 +                accesskey="&viewCustomizeToolbar.accesskey;"/>
-+    </popup>
++    </menupopup>
 +
-+    <popup id="blockedPopupOptions" 
-+           onpopupshowing="gPopupBlockerObserver.fillPopupList(event);">
++    <menupopup id="blockedPopupOptions" 
++               onpopupshowing="gPopupBlockerObserver.fillPopupList(event);">
 +      <menuitem observes="blockedPopupAllowSite"/>
 +      <menuitem observes="blockedPopupEditSettings"/>
 +      <menuitem observes="blockedPopupDontShowMessage"/>
 +      <menuseparator observes="blockedPopupsSeparator"/>
-+    </popup>
++    </menupopup>
 +
 +    <menupopup id="autohide-context"
 +           onpopupshowing="FullScreen.getAutohide(this.firstChild);">
@@ -237,13 +361,20 @@
 +                oncommand="BrowserFullScreen();"/>
 +    </menupopup>
 +
-+    <popup id="contentAreaContextMenu"
-+           onpopupshowing="if (event.target != this) return true; updateEditUIVisibility(); gContextMenu = new nsContextMenu(this, window.getBrowser()); return gContextMenu.shouldDisplay;"
-+           onpopuphiding="if (event.target == this) { gContextMenu = null; updateEditUIVisibility(); }">
++    <menupopup id="contentAreaContextMenu"
++               onpopupshowing="if (event.target != this)
++                                 return true;
++                               gContextMenu = new nsContextMenu(this, gBrowser);
++                               if (gContextMenu.shouldDisplay)
++                                 updateEditUIVisibility();
++                               return gContextMenu.shouldDisplay;"
++               onpopuphiding="if (event.target == this) { gContextMenu = null; updateEditUIVisibility(); }">
 +#include browser-context.inc
-+    </popup>
++    </menupopup>
 +
-+    <popup id="placesContext"/>
++    <menupopup id="placesContext"/>
++
++    <panel id="notification-popup" position="after_start" noautofocus="true" hidden="true"/>
 +
 +    <!-- Popup for site identity information -->
 +    <panel id="identity-popup" position="after_start" hidden="true" noautofocus="true"
@@ -306,9 +437,6 @@
 +    </panel>
 +
 +    <panel id="allTabs-panel" hidden="true" norestorefocus="true" ignorekeys="true"
-+# XXX: KUI style disabled, because the transparent background slows down
-+#      interacting with the panel, esp. the search field.
-+#           class="KUI-panel"
 +           onmouseover="allTabs._updateTabCloseButton(event);">
 +      <hbox id="allTabs-meta" align="center">
 +        <spacer flex="1"/>
@@ -322,7 +450,7 @@
 +                       tooltiptext="&closeCmd.label;"/>
 +      </hbox>
 +      <stack id="allTabs-stack">
-+        <box id="allTabs-container"/>
++        <vbox id="allTabs-container"><hbox/></vbox>
 +        <toolbarbutton id="allTabs-tab-close-button"
 +                       class="tab-close-button"
 +                       oncommand="allTabs.closeTab(event);"
@@ -330,21 +458,182 @@
 +                       style="visibility:hidden"/>
 +      </stack>
 +    </panel>
++
++    <!-- Bookmarks and history tooltip -->
++    <tooltip id="bhTooltip"/>
++
++    <panel id="customizeToolbarSheetPopup"
++           noautohide="true">
++      <iframe id="customizeToolbarSheetIFrame"
++              style="&dialog.style;"
++              hidden="true"/>
++    </panel>
++
++    <tooltip id="tabbrowser-tab-tooltip" onpopupshowing="gBrowser.createTooltip(event);"/>
 +  </popupset>
 +
-+  <!-- Bookmarks and history tooltip -->
-+  <tooltip id="bhTooltip"/>
++#ifdef MENUBAR_CAN_AUTOHIDE
++  <hbox id="appmenu-button-container">
++    <button id="appmenu-button"
++            type="menu"
++            label="&brandShortName;"
++            style="-moz-user-focus: ignore;">
++      <menupopup id="appmenu-popup">
++        <hbox flex="1" class="split-menuitem">
++          <menuitem id="appmenu_newTab"
++                    class="split-menuitem-item"
++                    flex="1"
++                    label="&tabCmd.label;"
++                    command="cmd_newNavigatorTab"/>
++          <menu class="split-menuitem-menu">
++            <menupopup>
++              <menuitem id="appmenu_newTab_sub"
++                        label="&tabCmd.label;"
++                        command="cmd_newNavigatorTab"/>
++              <menuitem id="appmenu_newNavigator"
++                        label="&newNavigatorCmd.label;"
++                        command="cmd_newNavigator"/>
++            </menupopup>
++          </menu>
++        </hbox>
++        <menuseparator/>
++        <menuitem id="appmenu_savePage"
++                  label="&savePageCmd.label;"
++                  command="Browser:SavePage"/>
++        <menuitem id="appmenu_sendLink"
++                  label="&sendPageCmd.label;"
++                  command="Browser:SendLink"/>
++        <hbox flex="1" class="split-menuitem">
++          <menuitem id="appmenu_print"
++                    class="split-menuitem-item"
++                    flex="1"
++                    label="&appMenuPrintCmd.label;"
++                    command="cmd_print"/>
++          <menu class="split-menuitem-menu">
++            <menupopup>
++              <menuitem id="menu_printSetup"
++                        label="&printSetupCmd.label;"
++                        command="cmd_pageSetup"/>
++              <menuitem id="menu_printPreview"
++                        label="&printPreviewCmd.label;"
++                        command="cmd_printPreview"/>
++            </menupopup>
++          </menu>
++        </hbox>
++        <menuitem id="appmenu_find"
++                  label="&findOnCmd.label;"
++                  command="cmd_find"/>
++        <menuseparator/>
++        <menu id="appmenu_history"
++              label="&historyMenu.label;">
++          <menupopup id="appmenu_history_popup"
++                     placespopup="true"
++                     oncommand="this.parentNode._placesView._onCommand(event);"
++                     onclick="checkForMiddleClick(this, event);"
++                     onpopupshowing="if (!this.parentNode._placesView)
++                                       new HistoryMenu(event);"
++                     tooltip="bhTooltip"
++                     popupsinherittooltip="true">
++            <menuitem id="appmenu_sanitizeHistory"
++                      label="&clearRecentHistory.label;"
++                      key="key_sanitize"
++                      command="Tools:Sanitize"/>
++            <menuseparator/>
++            <menuitem id="appmenu_showAllHistory"
++                      label="&showAllHistoryCmd2.label;"
++                      key="showAllHistoryKb"
++                      command="Browser:ShowAllHistory"/>
++            <menuseparator class="hide-if-empty-places-result"/>
++          </menupopup>
++        </menu>
++        <menuseparator/>
++        <menu id="appmenu_developer"
++              label="&developerMenu.label;">
++          <menupopup id="appmenu_developer_popup">
++            <menuitem id="appmenu_pageSource"
++                      label="&pageSourceCmd.label;"
++                      command="View:PageSource"/>
++            <menuseparator/>
++            <menuitem id="appmenu_pageInspect"
++                      label="&inspectMenu.label;"
++                      command="Tools:Inspect"/>
++            <menuitem id="appmenu_webConsole"
++                      label="&webConsoleCmd.label;"
++                      oncommand="HUDConsoleUI.toggleHUD();"/>
++          </menupopup>
++        </menu>
++        <menuseparator/>
++        <menu id="appmenu_customize"
++              label="&appMenuCustomize.label;">
++          <menupopup id="appmenu_customizeMenu"
++                     onpopupshowing="onViewToolbarsPopupShowing(event);">
++            <menuseparator/>
++            <menuitem command="cmd_ToggleTabsOnTop"
++                      type="checkbox"
++                      label="&viewTabsOnTop.label;"/>
++            <menuitem id="appmenu_toolbarLayout"
++                      label="&appMenuToolbarLayout.label;"
++                      command="cmd_CustomizeToolbars"/>
++            <menu id="appmenu_sidebars"
++                  label="&appMenuSidebars.label;">
++              <menupopup id="appmenu_sidebarMenu">
++                <menuitem id="appmenu_bookmarksSidebar"
++                          key="viewBookmarksSidebarKb"
++                          observes="viewBookmarksSidebar"/>
++                <menuitem id="appmenu_historySidebar"
++                          key="key_gotoHistory"
++                          observes="viewHistorySidebar"
++                          label="&historyButton.label;"/>
++              </menupopup>
++            </menu>
++            <menuseparator/>
++            <menuitem id="appmenu_openAddons"
++                      label="&addons.label;"
++                      command="Tools:Addons"/>
++          </menupopup>
++        </menu>
++        <menuitem id="appmenu_preferences"
++#ifdef XP_UNIX
++                  label="&preferencesCmdUnix.label;"
++#else
++                  label="&preferencesCmd.label;"
++#endif
++                  oncommand="openPreferences();"/>
++        <menuitem id="appmenu_openHelp"
++                  label="&appMenuHelp.label;"
++                  oncommand="openHelpLink('firefox-help')"
++                  onclick="checkForMiddleClick(this, event);"/>
++        <menuseparator/>
++        <menuitem id="appmenu_quit"
++#ifdef XP_WIN
++                  label="&quitApplicationCmdWin.label;"
++#else
++                  label="&quitApplicationCmd.label;"
++#endif
++                  command="cmd_quitApplication"/>
++      </menupopup>
++    </button>
++  </hbox>
++#endif
 +
-+  <toolbox id="navigator-toolbox" class="toolbox-top" mode="icons"
++  <toolbox id="navigator-toolbox"
++           defaultmode="icons" mode="icons"
 +#ifdef WINCE
 +           defaulticonsize="small" iconsize="small"
 +#endif
-+           defaultmode="icons">
++#ifdef XP_WIN
++           tabsontop="true"
++#endif
++#ifdef XP_MACOSX
++           tabsontop="true"
++#endif
++           persist="tabsontop">
 +    <!-- Menu -->
 +    <toolbar type="menubar" id="toolbar-menubar" class="chromeclass-menubar" customizable="true"
 +             defaultset="menubar-items"
 +             mode="icons" iconsize="small" defaulticonsize="small"
-+#ifdef XP_WIN
++             lockiconsize="true"
++#ifdef MENUBAR_CAN_AUTOHIDE
 +             toolbarname="&menubarCmd.label;"
 +             accesskey="&menubarCmd.accesskey;"
 +#endif
@@ -356,10 +645,21 @@
 +      </toolbaritem>
 +    </toolbar>
 +
-+    <toolbarpalette id="BrowserToolbarPalette">
++    <toolbar id="nav-bar" class="toolbar-primary chromeclass-toolbar"
++             toolbarname="&navbarCmd.label;" accesskey="&navbarCmd.accesskey;"
++             fullscreentoolbar="true" mode="icons" customizable="true"
++#ifdef WINCE
++             iconsize="small" defaulticonsize="small"
++             defaultset="unified-back-forward-button,reload-button,stop-button,home-button,urlbar-container,search-container,bookmarks-menu-button-container,navigator-throbber,fullscreenflex,window-controls"
++#else
++             iconsize="large"
++             defaultset="unified-back-forward-button,reload-button,stop-button,home-button,urlbar-container,search-container,bookmarks-menu-button-container,fullscreenflex,window-controls"
++#endif
++             context="toolbar-context-menu">
 +
 +      <toolbaritem id="unified-back-forward-button" class="chromeclass-toolbar-additional"
-+                   context="backForwardMenu">
++                   context="backForwardMenu" removable="true"
++                   title="&backForwardItem.title;">
 +        <toolbarbutton id="back-button" class="toolbarbutton-1"
 +                       label="&backCmd.label;"
 +                       command="Browser:BackOrBackDuplicate"
@@ -388,18 +688,18 @@
 +      </toolbaritem>
 +
 +      <toolbarbutton id="reload-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                     label="&reloadCmd.label;"
++                     label="&reloadCmd.label;" removable="true"
 +                     command="Browser:ReloadOrDuplicate"
 +                     onclick="checkForMiddleClick(this, event);"
 +                     tooltiptext="&reloadButton.tooltip;"/>
 +
 +      <toolbarbutton id="stop-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                     label="&stopCmd.label;"
++                     label="&stopCmd.label;" removable="true"
 +                     command="Browser:Stop"
 +                     tooltiptext="&stopButton.tooltip;"/>
 +
 +      <toolbarbutton id="home-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                     persist="class"
++                     persist="class" removable="true"
 +                     label="&homeButton.label;"
 +                     ondragover="homeButtonObserver.onDragOver(event)"
 +                     ondragenter="homeButtonObserver.onDragOver(event)"
@@ -408,14 +708,12 @@
 +                     onclick="BrowserGoHome(event);"/>
 +
 +      <toolbaritem id="urlbar-container" align="center" flex="400" persist="width"
-+                   title="&locationItem.title;" class="chromeclass-location">
++                   title="&locationItem.title;" class="chromeclass-location" removable="true">
 +        <textbox id="urlbar" flex="1"
-+                 bookmarkhistoryemptytext="&urlbar.bookmarkhistory.emptyText;"
-+                 bookmarkemptytext="&urlbar.bookmark.emptyText;"
-+                 historyemptytext="&urlbar.history.emptyText;"
-+                 noneemptytext="&urlbar.none.emptyText;"
++                 placeholder="&urlbar.placeholder;"
 +                 type="autocomplete"
 +                 autocompletesearch="history"
++                 autocompletesearchparam="enable-actions"
 +                 autocompletepopup="PopupAutoCompleteRichResult"
 +                 completeselectedindex="true"
 +                 tabscrolling="true"
@@ -432,6 +730,10 @@
 +                 onsearchcomplete="LocationBarHelpers._searchComplete();"
 +                 onfocus="document.getElementById('identity-box').style.MozUserFocus= 'normal'"
 +                 onblur="setTimeout(function() document.getElementById('identity-box').style.MozUserFocus = '', 0);">
++          <box id="notification-popup-box" hidden="true" align="center">
++            <image id="geo-notification-icon" class="notification-anchor-icon" role="button"/>
++            <image id="addons-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.
 +               We only add the identity-box button to the tab order when the location bar
@@ -448,9 +750,13 @@
 +                       ondragstart="proxyIconDNDObserver.onDragStart(event);"
 +                       onerror="this.removeAttribute('src');"/>
 +              </stack>
-+              <label id="identity-icon-label" crop="center" flex="1"/>
++              <hbox id="identity-icon-labels">
++                <label id="identity-icon-label" class="plain" flex="1"/>
++                <label id="identity-icon-country-label" class="plain"/>
++              </hbox>
 +            </hbox>
 +          </box>
++          <label id="urlbar-display" value="&urlbar.switchToTab.label;"/>
 +          <hbox id="urlbar-icons">
 +            <button type="menu"
 +                    style="-moz-user-focus: none"
@@ -478,10 +784,195 @@
 +
 +      <toolbaritem id="search-container" title="&searchItem.title;"
 +                   align="center" class="chromeclass-toolbar-additional"
-+                   flex="100" persist="width">
++                   flex="100" persist="width" removable="true">
 +        <searchbar id="searchbar" flex="1"/>
 +      </toolbaritem>
 +
++      <toolbaritem id="bookmarks-menu-button-container"
++                   class="chromeclass-toolbar-additional"
++                   removable="true"
++                   title="&bookmarksMenuButton.label;">
++        <toolbarbutton id="bookmarks-menu-button"
++                       type="menu"
++                       class="toolbarbutton-1"
++                       label="&bookmarksMenuButton.label;"
++                       tooltiptext="&bookmarksMenuButton.tooltip;"
++                       ondragenter="PlacesMenuDNDHandler.onDragEnter(event);"
++                       ondragover="PlacesMenuDNDHandler.onDragOver(event);"
++                       ondragleave="PlacesMenuDNDHandler.onDragLeave(event);"
++                       ondrop="PlacesMenuDNDHandler.onDrop(event);">
++          <menupopup id="BMB_bookmarksPopup"
++                     placespopup="true"
++                     context="placesContext"
++                     openInTabs="children"
++                     oncommand="BookmarksEventHandler.onCommand(event);"
++                     onclick="BookmarksEventHandler.onClick(event);"
++                     onpopupshowing="BookmarksMenuButton.onPopupShowing(event);
++                                     if (!this.parentNode._placesView)
++                                       new PlacesMenu(event, 'place:folder=BOOKMARKS_MENU');"
++                     tooltip="bhTooltip" popupsinherittooltip="true">
++            <menuitem id="BMB_bookmarkAllTabs"
++                      label="&addCurPagesCmd.label;"
++                      command="Browser:BookmarkAllTabs"
++                      key="bookmarkAllTabsKb"/>
++            <menuitem id="BMB_bookmarksShowAll"
++                      label="&organizeBookmarks.label;"
++                      command="Browser:ShowAllBookmarks"
++                      key="manBookmarkKb"/>
++            <menuseparator/>
++            <menuitem id="BMB_viewBookmarksToolbar"
++                      type="checkbox"
++                      oncommand="onViewToolbarCommand(event)"
++                      label="&viewBookmarksToolbar.label;"/>
++            <menuitem id="BMB_viewBookmarksSidebar"
++                      label="&viewBookmarksSidebar.label;"
++                      type="checkbox"
++                      oncommand="toggleSidebar('viewBookmarksSidebar');"
++                      key="viewBookmarksSidebarKb">
++              <observes element="viewBookmarksSidebar" attribute="checked"/>
++            </menuitem>
++            <menuseparator/>
++            <menu id="BMB_bookmarksToolbarFolderMenu"
++                  class="menu-iconic bookmark-item"
++                  label="&personalbarCmd.label;"
++                  container="true">
++              <menupopup id="BMB_bookmarksToolbarFolderPopup"
++                         placespopup="true"
++                         context="placesContext"
++                         onpopupshowing="if (!this.parentNode._placesView)
++                                           new PlacesMenu(event, 'place:folder=TOOLBAR');"/>
++            </menu>
++            <menu id="BMB_unsortedBookmarksFolderMenu"
++                  class="menu-iconic bookmark-item"
++                  container="true">
++              <menupopup id="BMB_unsortedBookmarksFolderPopup"
++                         placespopup="true"
++                         context="placesContext"
++                         onpopupshowing="if (!this.parentNode._placesView)
++                                           new PlacesMenu(event, 'place:folder=UNFILED_BOOKMARKS');"/>
++            </menu>
++            <menuseparator/>
++          </menupopup>
++        </toolbarbutton>
++      </toolbaritem>
++
++      <hbox id="fullscreenflex" flex="1" hidden="true" fullscreencontrol="true"/>
++      <hbox id="window-controls" hidden="true" fullscreencontrol="true">
++        <toolbarbutton id="minimize-button"
++                       tooltiptext="&fullScreenMinimize.tooltip;"
++                       oncommand="window.minimize();"/>
++
++        <toolbarbutton id="restore-button"
++                       tooltiptext="&fullScreenRestore.tooltip;"
++                       oncommand="BrowserFullScreen();"/>
++
++        <toolbarbutton id="close-button"
++                       tooltiptext="&fullScreenClose.tooltip;"
++                       oncommand="BrowserTryToCloseWindow();"/>
++      </hbox>
++    </toolbar>
++
++    <toolbarset id="customToolbars" context="toolbar-context-menu"/>
++
++    <toolbar id="PersonalToolbar"
++             mode="icons" iconsize="small" defaulticonsize="small"
++             lockiconsize="true"
++             class="chromeclass-directories"
++             context="toolbar-context-menu"
++             defaultset="personal-bookmarks"
++             toolbarname="&personalbarCmd.label;" accesskey="&personalbarCmd.accesskey;"
++             collapsed="true"
++             customizable="true">
++      <toolbaritem flex="1" id="personal-bookmarks" title="&bookmarksItem.title;"
++                   removable="true">
++        <hbox flex="1"
++              id="PlacesToolbar"
++              context="placesContext"
++              onclick="BookmarksEventHandler.onClick(event);"
++              oncommand="BookmarksEventHandler.onCommand(event);"
++              tooltip="bhTooltip"
++              popupsinherittooltip="true">
++          <toolbarbutton class="bookmark-item bookmarks-toolbar-customize"
++                         mousethrough="never"
++                         label="&bookmarksToolbarItem.label;"/>
++          <hbox flex="1">
++            <hbox align="center">
++              <image id="PlacesToolbarDropIndicator"
++                     mousethrough="always"
++                     collapsed="true"/>
++            </hbox>
++            <scrollbox orient="horizontal"
++                       id="PlacesToolbarItems"
++                       flex="1"/>
++            <toolbarbutton type="menu"
++                           id="PlacesChevron"
++                           class="chevron"
++                           mousethrough="never"
++                           collapsed="true"
++                           tooltiptext="&bookmarksToolbarChevron.tooltip;"
++                           onpopupshowing="document.getElementById('PlacesToolbar')
++                                                   ._placesView._onChevronPopupShowing(event);">
++              <menupopup id="PlacesChevronPopup"
++                         placespopup="true"
++                         tooltip="bhTooltip" popupsinherittooltip="true"
++                         context="placesContext"/>
++            </toolbarbutton>
++          </hbox>
++        </hbox>
++      </toolbaritem>
++    </toolbar>
++
++    <toolbar id="TabsToolbar"
++             fullscreentoolbar="true"
++             customizable="true"
++             mode="icons" lockmode="true"
++             iconsize="small" defaulticonsize="small" lockiconsize="true"
++             aria-label="&tabsToolbar.label;"
++             context="toolbar-context-menu"
++             defaultset="tabbrowser-tabs,new-tab-button,alltabs-button,tabs-closebutton"
++             collapsed="true">
++
++      <tabs id="tabbrowser-tabs"
++            class="tabbrowser-tabs"
++            tabbrowser="content"
++            flex="1"
++            setfocus="false"
++            tooltip="tabbrowser-tab-tooltip">
++        <tab class="tabbrowser-tab" selected="true" fadein="true"/>
++      </tabs>
++
++      <toolbarbutton id="new-tab-button"
++                     class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     label="&tabCmd.label;"
++                     command="cmd_newNavigatorTab"
++                     onclick="checkForMiddleClick(this, event);"
++                     tooltiptext="&newTabButton.tooltip;"
++                     ondrop="newTabButtonObserver.onDrop(event)"
++                     ondragover="newTabButtonObserver.onDragOver(event)"
++                     ondragenter="newTabButtonObserver.onDragOver(event)"
++                     ondragleave="newTabButtonObserver.onDragLeave(event)"
++                     removable="true"/>
++
++      <toolbarbutton id="alltabs-button"
++                     class="toolbarbutton-1 chromeclass-toolbar-additional tabs-alltabs-button"
++                     type="menu"
++                     label="&listAllTabs.label;"
++                     tooltiptext="&listAllTabs.label;"
++                     removable="true">
++        <menupopup id="alltabs-popup"
++                   position="after_end"/>
++      </toolbarbutton>
++
++      <toolbarbutton id="tabs-closebutton"
++                     class="close-button tabs-closebutton"
++                     command="cmd_close"
++                     label="&closeTab.label;"
++                     tooltiptext="&closeTab.label;"/>
++
++    </toolbar>
++
++    <toolbarpalette id="BrowserToolbarPalette">
++
 +      <toolbarbutton id="print-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
 +                     label="&printButton.label;" command="cmd_print"
 +                     tooltiptext="&printButton.tooltip;"/>
@@ -491,120 +982,58 @@
 +        <image/>
 +      </toolbaritem>
 +
-+      <toolbaritem flex="1" id="personal-bookmarks" title="&bookmarksItem.title;">
-+         <hbox id="bookmarksBarContent" flex="1"
-+               type="places"
-+               place="place:folder=TOOLBAR"
-+               context="placesContext"
-+               onclick="BookmarksEventHandler.onClick(event);"
-+               oncommand="BookmarksEventHandler.onCommand(event);"
-+               onpopupshowing="BookmarksEventHandler.onPopupShowing(event);"
-+               tooltip="bhTooltip" popupsinherittooltip="true"/>
-+      </toolbaritem>
-+
-+        <toolbarbutton id="downloads-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                       observes="Tools:Downloads"
-+                       ondrop="DownloadsButtonDNDObserver.onDrop(event)"
-+                       ondragover="DownloadsButtonDNDObserver.onDragOver(event)"
-+                       ondragenter="DownloadsButtonDNDObserver.onDragOver(event)"
-+                       ondragleave="DownloadsButtonDNDObserver.onDragLeave(event)"
-+                       label="&downloads.label;"
-+                       tooltiptext="&downloads.tooltip;"/>
-+
-+        <toolbarbutton id="history-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                       observes="viewHistorySidebar" label="&historyButton.label;"
-+                       tooltiptext="&historyButton.tooltip;"/>
++      <toolbarbutton id="downloads-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     observes="Tools:Downloads"
++                     ondrop="DownloadsButtonDNDObserver.onDrop(event)"
++                     ondragover="DownloadsButtonDNDObserver.onDragOver(event)"
++                     ondragenter="DownloadsButtonDNDObserver.onDragOver(event)"
++                     ondragleave="DownloadsButtonDNDObserver.onDragLeave(event)"
++                     label="&downloads.label;"
++                     tooltiptext="&downloads.tooltip;"/>
 +
-+        <toolbarbutton id="bookmarks-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                       observes="viewBookmarksSidebar"
-+                       tooltiptext="&bookmarksButton.tooltip;"
-+                       ondrop="bookmarksButtonObserver.onDrop(event)"
-+                       ondragover="bookmarksButtonObserver.onDragOver(event)"
-+                       ondragenter="bookmarksButtonObserver.onDragOver(event)"
-+                       ondragleave="bookmarksButtonObserver.onDragLeave(event)"/>
++      <toolbarbutton id="history-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     observes="viewHistorySidebar" label="&historyButton.label;"
++                     tooltiptext="&historyButton.tooltip;"/>
 +
-+        <toolbarbutton id="new-tab-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                       label="&tabCmd.label;"
-+                       command="cmd_newNavigatorTab"
-+                       tooltiptext="&newTabButton.tooltip;"
-+                       ondrop="newTabButtonObserver.onDrop(event)"
-+                       ondragover="newTabButtonObserver.onDragOver(event)"
-+                       ondragenter="newTabButtonObserver.onDragOver(event)"
-+                       ondragleave="newTabButtonObserver.onDragLeave(event)"/>
-+
-+        <toolbarbutton id="new-window-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                       label="&newNavigatorCmd.label;"
-+                       command="key_newNavigator"
-+                       tooltiptext="&newWindowButton.tooltip;"
-+                       ondrop="newWindowButtonObserver.onDrop(event)"
-+                       ondragover="newWindowButtonObserver.onDragOver(event)"
-+                       ondragenter="newWindowButtonObserver.onDragOver(event)"
-+                       ondragleave="newWindowButtonObserver.onDragLeave(event)"/>
-+
-+        <toolbarbutton id="cut-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                       label="&cutCmd.label;"
-+                       command="cmd_cut"
-+                       tooltiptext="&cutButton.tooltip;"/>
++      <toolbarbutton id="bookmarks-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     observes="viewBookmarksSidebar"
++                     tooltiptext="&bookmarksButton.tooltip;"
++                     ondrop="bookmarksButtonObserver.onDrop(event)"
++                     ondragover="bookmarksButtonObserver.onDragOver(event)"
++                     ondragenter="bookmarksButtonObserver.onDragOver(event)"
++                     ondragleave="bookmarksButtonObserver.onDragLeave(event)"/>
 +
-+        <toolbarbutton id="copy-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+                       label="&copyCmd.label;"
-+                       command="cmd_copy"
-+                       tooltiptext="&copyButton.tooltip;"/>
++      <toolbarbutton id="new-window-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     label="&newNavigatorCmd.label;"
++                     command="key_newNavigator"
++                     tooltiptext="&newWindowButton.tooltip;"
++                     ondrop="newWindowButtonObserver.onDrop(event)"
++                     ondragover="newWindowButtonObserver.onDragOver(event)"
++                     ondragenter="newWindowButtonObserver.onDragOver(event)"
++                     ondragleave="newWindowButtonObserver.onDragLeave(event)"/>
 +
-+        <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"
-+                       label="&fullScreenCmd.label;"
-+                       tooltiptext="&fullScreenButton.tooltip;"/>
-+    </toolbarpalette>
++      <toolbarbutton id="cut-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     label="&cutCmd.label;"
++                     command="cmd_cut"
++                     tooltiptext="&cutButton.tooltip;"/>
 +
-+    <toolbar id="nav-bar" class="toolbar-primary chromeclass-toolbar"
-+             toolbarname="&navbarCmd.label;" accesskey="&navbarCmd.accesskey;"
-+             fullscreentoolbar="true" mode="icons"
-+#ifdef WINCE
-+             iconsize="small" defaulticonsize="small"
-+#else
-+             iconsize="large"
-+#endif
-+             customizable="true"
-+#ifdef WINCE
-+             defaultset="unified-back-forward-button,reload-button,stop-button,home-button,urlbar-container,search-container,navigator-throbber,fullscreenflex,window-controls"
-+#else
-+             defaultset="unified-back-forward-button,reload-button,stop-button,home-button,urlbar-container,search-container,fullscreenflex,window-controls"
-+#endif
-+             context="toolbar-context-menu">
-+      <hbox id="fullscreenflex" flex="1" hidden="true" fullscreencontrol="true"/>
-+      <hbox id="window-controls" hidden="true" fullscreencontrol="true">
-+        <toolbarbutton id="minimize-button" class="toolbarbutton-1"
-+                       tooltiptext="&fullScreenMinimize.tooltip;"
-+                       oncommand="window.minimize();"/>
++      <toolbarbutton id="copy-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     label="&copyCmd.label;"
++                     command="cmd_copy"
++                     tooltiptext="&copyButton.tooltip;"/>
 +
-+        <toolbarbutton id="restore-button" class="toolbarbutton-1"
-+                       tooltiptext="&fullScreenRestore.tooltip;"
-+                       oncommand="BrowserFullScreen();"/>
-+
-+        <toolbarbutton id="close-button" class="toolbarbutton-1"
-+                       tooltiptext="&fullScreenClose.tooltip;"
-+                       oncommand="BrowserTryToCloseWindow();"/>
-+      </hbox>
-+    </toolbar>
++      <toolbarbutton id="paste-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     label="&pasteCmd.label;"
++                     command="cmd_paste"
++                     tooltiptext="&pasteButton.tooltip;"/>
 +
-+    <toolbarset id="customToolbars" context="toolbar-context-menu"/>
++      <toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
++                     observes="View:FullScreen"
++                     type="checkbox"
++                     label="&fullScreenCmd.label;"
++                     tooltiptext="&fullScreenButton.tooltip;"/>
 +
-+    <toolbar id="PersonalToolbar"
-+             mode="icons" iconsize="small" defaulticonsize="small"
-+             class="chromeclass-directories"
-+             context="toolbar-context-menu"
-+             defaultset="personal-bookmarks"
-+             toolbarname="&personalbarCmd.label;" accesskey="&personalbarCmd.accesskey;"
-+#ifdef WINCE
-+             collapsed="true"
-+#endif
-+             customizable="true"/>
++    </toolbarpalette>
 +  </toolbox>
 +
 +  <hbox flex="1" id="browser">
@@ -622,27 +1051,19 @@
 +    <vbox id="appcontent" flex="1">
 +      <tabbrowser id="content" disablehistory="true"
 +                  flex="1" contenttooltip="aHTMLTooltip"
++                  tabcontainer="tabbrowser-tabs"
 +                  contentcontextmenu="contentAreaContextMenu"
-+                  onnewtab="BrowserOpenTab();"
 +                  autocompletepopup="PopupAutoComplete"
-+                  ondrop="contentAreaDNDObserver.onDrop(event)"
 +                  onclick="return contentAreaClick(event, false);"/>
 +    </vbox>
 +  </hbox>
-+  <panel id="customizeToolbarSheetPopup" noautohide="true">
-+    <iframe id="customizeToolbarSheetIFrame"
-+            style="&dialog.style;"
-+            hidden="true"/>
-+  </panel>
 +
 +  <vbox id="browser-bottombox">
-+    <findbar browserid="content" id="FindToolbar"/>
-+  
 +    <statusbar class="chromeclass-status" id="status-bar"
 +#ifdef WINCE
 +               hidden="true"
 +#endif
-+               ondrop="contentAreaDNDObserver.onDrop(event)">
++               >
 +      <statusbarpanel id="statusbar-display" label="" flex="1"/>
 +      <statusbarpanel class="statusbarpanel-progress" collapsed="true" id="statusbar-progresspanel">
 +        <progressmeter class="progressmeter-statusbar" id="statusbar-icon" mode="normal" value="0"/>
@@ -653,6 +1074,24 @@
 +      <statusbarpanel id="security-button" class="statusbarpanel-iconic"
 +                      hidden="true"
 +                      onclick="if (event.button == 0 &amp;&amp; event.detail == 1) displaySecurityInfo();"/>
++#ifdef MOZ_SERVICES_SYNC
++      <statusbarpanel id="sync-status-button"
++                      class="statusbarpanel-iconic-text"
++                      image="chrome://browser/skin/sync-16.png"
++                      label="&syncLogInItem.label;"
++                      oncommand="gSyncUI.handleStatusbarButton();"
++                      onmousedown="event.preventDefault();">
++      </statusbarpanel>
++      <separator class="thin"/>
++      <statusbarpanel id="sync-notifications-button"
++                      class="statusbarpanel-iconic-text"
++                      hidden="true"
++                      popup="sync-notifications-panel">
++      </statusbarpanel>
++      <panel id="sync-notifications-panel" position="before_end">
++          <notificationbox id="sync-notifications-box"/>
++      </panel>
++#endif
 +      <statusbarpanel id="page-report-button" type="menu"
 +                      class="statusbarpanel-menu-iconic"
 +                      hidden="true"
@@ -666,16 +1105,28 @@
 +      </statusbarpanel>
 +    </statusbar>
 +  </vbox>
++#ifndef XP_UNIX
++  <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:mask>
++  </svg:svg>
++#endif
 +</window>
 diff --git a/browser/base/jar.mn b/browser/base/jar.mn
 --- a/browser/base/jar.mn
 +++ b/browser/base/jar.mn
-@@ -17,16 +17,18 @@ browser.jar:
+@@ -19,16 +19,18 @@ browser.jar:
+ *       content/browser/aboutRobots.xhtml             (content/aboutRobots.xhtml)
          content/browser/aboutRobots-icon.png          (content/aboutRobots-icon.png)
          content/browser/aboutRobots-icon-rtl.png      (content/aboutRobots-icon-rtl.png)
          content/browser/aboutRobots-widget-left.png   (content/aboutRobots-widget-left.png)
          content/browser/aboutRobots-widget-right.png  (content/aboutRobots-widget-right.png)
- *       content/browser/aboutSupport.xhtml            (content/aboutSupport.xhtml)
  *       content/browser/browser.css                   (content/browser.css)
  *       content/browser/browser.js                    (content/browser.js)
  *       content/browser/browser.xul                   (content/browser.xul)
@@ -687,14 +1138,14 @@
  *       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)
+ *       content/browser/pageinfo/pageInfo.xml         (content/pageinfo/pageInfo.xml)
  *       content/browser/pageinfo/feeds.js             (content/pageinfo/feeds.js)
- *       content/browser/pageinfo/feeds.xml            (content/pageinfo/feeds.xml)
 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
 @@ -41,17 +41,17 @@
  #include "nsBrowserCompsCID.h"
- #include "nsPlacesImportExportService.h"
+ #include "DirectoryProvider.h"
  
  #if defined(XP_WIN)
  #include "nsWindowsShellService.h"
@@ -711,18 +1162,17 @@
  #if !defined(XP_BEOS)
  #include "nsDogbertProfileMigrator.h"
  #endif
-@@ -85,17 +85,18 @@ using namespace mozilla::browser;
+@@ -85,17 +85,17 @@ using namespace mozilla::browser;
  /////////////////////////////////////////////////////////////////////////////
  
- NS_GENERIC_FACTORY_CONSTRUCTOR(nsPlacesImportExportService)
+ NS_GENERIC_FACTORY_CONSTRUCTOR(DirectoryProvider)
  #if defined(XP_WIN)
  NS_GENERIC_FACTORY_CONSTRUCTOR(nsWindowsShellService)
  #elif defined(XP_MACOSX)
  NS_GENERIC_FACTORY_CONSTRUCTOR(nsMacShellService)
  #elif defined(MOZ_WIDGET_GTK2)
 -NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init)
-+// in nsUnixShellService
-+//NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsUnixShellService, Init)
++NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsUnixShellService, Init)
  #endif
  
  #ifndef WINCE
@@ -731,43 +1181,39 @@
  NS_GENERIC_FACTORY_CONSTRUCTOR(nsDogbertProfileMigrator)
  #endif
  #if !defined(XP_OS2)
-@@ -129,17 +130,17 @@ static const nsModuleComponentInfo compo
-     NS_SHELLSERVICE_CID,
-     NS_SHELLSERVICE_CONTRACTID,
-     nsWindowsShellServiceConstructor},
+@@ -151,17 +151,17 @@ NS_DEFINE_NAMED_CID(NS_SEAMONKEYPROFILEM
+ #endif /* WINCE */
+ NS_DEFINE_NAMED_CID(NS_PRIVATE_BROWSING_SERVICE_WRAPPER_CID);
  
+ static const mozilla::Module::CIDEntry kBrowserCIDs[] = {
+     { &kNS_BROWSERDIRECTORYPROVIDER_CID, false, NULL, DirectoryProviderConstructor },
+ #if defined(XP_WIN)
+     { &kNS_SHELLSERVICE_CID, false, NULL, nsWindowsShellServiceConstructor },
  #elif defined(MOZ_WIDGET_GTK2)
-   { "Browser Shell Service",
-     NS_SHELLSERVICE_CID,
-     NS_SHELLSERVICE_CONTRACTID,
--    nsGNOMEShellServiceConstructor },
-+    nsUnixShellServiceConstructor },
- 
+-    { &kNS_SHELLSERVICE_CID, false, NULL, nsGNOMEShellServiceConstructor },
++    { &kNS_SHELLSERVICE_CID, false, NULL, nsUnixShellServiceConstructor },
  #endif
- 
- 
-   { "Places Import/Export Service",
-     NS_PLACESIMPORTEXPORTSERVICE_CID,
-     NS_PLACESIMPORTEXPORTSERVICE_CONTRACTID,
-     nsPlacesImportExportServiceConstructor},
+     { &kNS_FEEDSNIFFER_CID, false, NULL, nsFeedSnifferConstructor },
+     { &kNS_BROWSER_ABOUT_REDIRECTOR_CID, false, NULL, AboutRedirector::Create },
+ #ifndef WINCE
+     { &kNS_FIREFOX_PROFILEMIGRATOR_CID, false, NULL, nsProfileMigratorConstructor },
+ #if defined(XP_WIN) && !defined(__MINGW32__)
+     { &kNS_WINIEPROFILEMIGRATOR_CID, false, NULL, nsIEProfileMigratorConstructor },
+ #elif defined(XP_MACOSX)
 diff --git a/browser/components/shell/src/Makefile.in b/browser/components/shell/src/Makefile.in
 --- a/browser/components/shell/src/Makefile.in
 +++ b/browser/components/shell/src/Makefile.in
-@@ -70,21 +70,22 @@ CPPSRCS = nsWindowsShellService.cpp
- REQUIRES	+= \
- 		browsercomps \
- 		$(NULL)
+@@ -52,17 +52,18 @@ endif
+ 
+ ifneq (,$(filter WINCE WINNT,$(OS_ARCH)))
+ CPPSRCS = nsWindowsShellService.cpp
  else
- ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
+ ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
  CPPSRCS = nsMacShellService.cpp
  else
  ifeq ($(MOZ_WIDGET_TOOLKIT), gtk2)
 -CPPSRCS = nsGNOMEShellService.cpp
 +CPPSRCS = nsUnixShellService.cpp nsGNOMEShellService.cpp nsKDEShellService.cpp
- REQUIRES	+= \
- 		mozgnome \
- 		thebes \
- 		$(NULL)
 +LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
  endif
  endif
@@ -1149,8 +1595,8 @@
 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
-@@ -400,16 +400,17 @@
- @BINPATH@/icons/*.png
+@@ -429,16 +429,17 @@
+ #endif
  #endif
  
  ; [Default Preferences]
@@ -1159,11 +1605,11 @@
  @BINPATH@/@PREF_DIR@/firefox-branding.js
  @BINPATH@/@PREF_DIR@/channel-prefs.js
 +@BINPATH@/@PREF_DIR@/kde.js
- @BINPATH@/greprefs/all.js
- @BINPATH@/greprefs/security-prefs.js
- @BINPATH@/greprefs/xpinstall.js
+ #ifdef MOZ_SERVICES_SYNC
+ @BINPATH@/@PREF_DIR@/services-sync.js
+ #endif
+ @BINPATH@/greprefs.js
  @BINPATH@/defaults/autoconfig/platform.js
  @BINPATH@/defaults/autoconfig/prefcalls.js
+ @BINPATH@/defaults/profile/prefs.js
  
- ; [Layout Engine Resources]
- ; Style Sheets, Graphics and other Resources used by the layout engine. 
--- a/mozilla-kde.patch	Wed Aug 11 12:17:17 2010 +0200
+++ b/mozilla-kde.patch	Thu Aug 12 08:55:47 2010 +0200
@@ -1,405 +1,7 @@
-diff --git a/chrome/src/Makefile.in b/chrome/src/Makefile.in
---- a/chrome/src/Makefile.in
-+++ b/chrome/src/Makefile.in
-@@ -81,16 +81,17 @@ CPPSRCS		= \
- 
- EXTRA_DSO_LDOPTS = \
-                 $(MOZ_UNICHARUTIL_LIBS) \
-                 $(MOZ_COMPONENT_LIBS) \
-                 $(NULL)
- 
- ifneq (,$(filter gtk2,$(MOZ_WIDGET_TOOLKIT)))
- EXTRA_DSO_LDOPTS += $(MOZ_GTK2_LIBS)
-+LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
- endif
- 
- ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
- EXTRA_DSO_LDOPTS += $(TK_LIBS)
- endif
- 
- include $(topsrcdir)/config/rules.mk
- 
-diff --git a/chrome/src/nsChromeRegistry.cpp b/chrome/src/nsChromeRegistry.cpp
---- a/chrome/src/nsChromeRegistry.cpp
-+++ b/chrome/src/nsChromeRegistry.cpp
-@@ -109,16 +109,17 @@
- #include "nsIStyleSheet.h"
- #include "nsISupportsArray.h"
- #include "nsIVersionComparator.h"
- #include "nsIWindowMediator.h"
- #include "nsIXPConnect.h"
- #include "nsIXULAppInfo.h"
- #include "nsIXULRuntime.h"
- #include "nsPresShellIterator.h"
-+#include "nsKDEUtils.h"
- 
- #define UILOCALE_CMD_LINE_ARG "UILocale"
- 
- #define MATCH_OS_LOCALE_PREF "intl.locale.matchOS"
- #define SELECTED_LOCALE_PREF "general.useragent.locale"
- #define SELECTED_SKIN_PREF   "general.skins.selectedSkin"
- 
- static NS_DEFINE_CID(kCSSLoaderCID, NS_CSS_LOADER_CID);
-@@ -1608,16 +1609,17 @@ nsChromeRegistry::ProcessManifestBuffer(
- 
-   NS_NAMED_LITERAL_STRING(kPlatform, "platform");
-   NS_NAMED_LITERAL_STRING(kXPCNativeWrappers, "xpcnativewrappers");
-   NS_NAMED_LITERAL_STRING(kContentAccessible, "contentaccessible");
-   NS_NAMED_LITERAL_STRING(kApplication, "application");
-   NS_NAMED_LITERAL_STRING(kAppVersion, "appversion");
-   NS_NAMED_LITERAL_STRING(kOs, "os");
-   NS_NAMED_LITERAL_STRING(kOsVersion, "osversion");
-+  NS_NAMED_LITERAL_STRING(kDesktop, "desktop");
- 
-   nsCOMPtr<nsIIOService> io (do_GetIOService());
-   if (!io) return NS_ERROR_FAILURE;
- 
-   nsCOMPtr<nsIProtocolHandler> ph;
-   rv = io->GetProtocolHandler("resource", getter_AddRefs(ph));
-   NS_ENSURE_SUCCESS(rv, rv);
-   
-@@ -1651,35 +1653,39 @@ nsChromeRegistry::ProcessManifestBuffer(
-       if (NS_SUCCEEDED(rv)) {
-         CopyUTF8toUTF16(s, osTarget);
-         ToLowerCase(osTarget);
-       }
-     }
-   }
-   
-   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(XP_MACOSX)
-   long 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"); // TODO others?
- #endif
- 
-   char *token;
-   char *newline = buf;
-   PRUint32 line = 0;
- 
-   // outer loop tokenizes by newline
-   while (nsnull != (token = nsCRT::strtok(newline, kNewlines, &newline))) {
-@@ -1713,41 +1719,43 @@ nsChromeRegistry::ProcessManifestBuffer(
- 
-       PRBool platform = PR_FALSE;
-       PRBool xpcNativeWrappers = PR_TRUE;
-       PRBool contentAccessible = PR_FALSE;
-       TriState stAppVersion = eUnspecified;
-       TriState stApp = eUnspecified;
-       TriState stOsVersion = eUnspecified;
-       TriState stOs = eUnspecified;
-+      TriState stDesktop = eUnspecified;
- 
-       PRBool badFlag = PR_FALSE;
- 
-       while (nsnull != (token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) &&
-              !badFlag) {
-         NS_ConvertASCIItoUTF16 wtoken(token);
-         ToLowerCase(wtoken);
- 
-         if (CheckFlag(kPlatform, wtoken, platform) ||
-             CheckFlag(kXPCNativeWrappers, wtoken, xpcNativeWrappers) ||
-             CheckFlag(kContentAccessible, wtoken, contentAccessible) ||
-             CheckStringFlag(kApplication, wtoken, appID, stApp) ||
-             CheckStringFlag(kOs, wtoken, osTarget, stOs) ||
-+            CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) ||
-             CheckVersionFlag(kOsVersion, wtoken, osVersion, vc, stOsVersion) ||
-             CheckVersionFlag(kAppVersion, wtoken, appVersion, vc, stAppVersion))
-           continue;
- 
-         LogMessageWithContext(manifestURI, line, nsIScriptError::warningFlag,
-                               "Warning: Unrecognized chrome registration modifier '%s'.",
-                               token);
-         badFlag = PR_TRUE;
-       }
- 
-       if (badFlag || stApp == eBad || stAppVersion == eBad || 
--          stOs == eBad || stOsVersion == eBad)
-+          stOs == eBad || stOsVersion == eBad || stDesktop == eBad)
-         continue;
- 
-       nsCOMPtr<nsIURI> resolved;
-       rv = io->NewURI(nsDependentCString(uri), nsnull, manifestURI,
-                       getter_AddRefs(resolved));
-       if (NS_FAILED(rv))
-         continue;
- 
-@@ -1798,38 +1806,40 @@ nsChromeRegistry::ProcessManifestBuffer(
-       }
- 
-       EnsureLowerCase(package);
- 
-       TriState stAppVersion = eUnspecified;
-       TriState stApp = eUnspecified;
-       TriState stOs = eUnspecified;
-       TriState stOsVersion = eUnspecified;
-+      TriState stDesktop = eUnspecified;
- 
-       PRBool badFlag = PR_FALSE;
- 
-       while (nsnull != (token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) &&
-              !badFlag) {
-         NS_ConvertASCIItoUTF16 wtoken(token);
-         ToLowerCase(wtoken);
- 
-         if (CheckStringFlag(kApplication, wtoken, appID, stApp) ||
-             CheckStringFlag(kOs, wtoken, osTarget, stOs) ||
-+            CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) ||
-             CheckVersionFlag(kOsVersion, wtoken, osVersion, vc, stOsVersion) ||
-             CheckVersionFlag(kAppVersion, wtoken, appVersion, vc, stAppVersion))
-           continue;
- 
-         LogMessageWithContext(manifestURI, line, nsIScriptError::warningFlag,
-                               "Warning: Unrecognized chrome registration modifier '%s'.",
-                               token);
-         badFlag = PR_TRUE;
-       }
- 
-       if (badFlag || stApp == eBad || stAppVersion == eBad ||
--          stOs == eBad || stOsVersion == eBad)
-+          stOs == eBad || stOsVersion == eBad || stDesktop == eBad)
-         continue;
- 
-       nsCOMPtr<nsIURI> resolved;
-       rv = io->NewURI(nsDependentCString(uri), nsnull, manifestURI,
-                       getter_AddRefs(resolved));
-       if (NS_FAILED(rv))
-         continue;
- 
-@@ -1860,38 +1870,40 @@ nsChromeRegistry::ProcessManifestBuffer(
-       }
- 
-       EnsureLowerCase(package);
- 
-       TriState stAppVersion = eUnspecified;
-       TriState stApp = eUnspecified;
-       TriState stOs = eUnspecified;
-       TriState stOsVersion = eUnspecified;
-+      TriState stDesktop = eUnspecified;
- 
-       PRBool badFlag = PR_FALSE;
- 
-       while (nsnull != (token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) &&
-              !badFlag) {
-         NS_ConvertASCIItoUTF16 wtoken(token);
-         ToLowerCase(wtoken);
- 
-         if (CheckStringFlag(kApplication, wtoken, appID, stApp) ||
-             CheckStringFlag(kOs, wtoken, osTarget, stOs) ||
-+            CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) ||
-             CheckVersionFlag(kOsVersion, wtoken, osVersion, vc, stOsVersion) ||
-             CheckVersionFlag(kAppVersion, wtoken, appVersion, vc, stAppVersion))
-           continue;
- 
-         LogMessageWithContext(manifestURI, line, nsIScriptError::warningFlag,
-                               "Warning: Unrecognized chrome registration modifier '%s'.",
-                               token);
-         badFlag = PR_TRUE;
-       }
- 
-       if (badFlag || stApp == eBad || stAppVersion == eBad ||
--          stOs == eBad || stOsVersion == eBad)
-+          stOs == eBad || stOsVersion == eBad || stDesktop == eBad)
-         continue;
- 
-       nsCOMPtr<nsIURI> resolved;
-       rv = io->NewURI(nsDependentCString(uri), nsnull, manifestURI,
-                       getter_AddRefs(resolved));
-       if (NS_FAILED(rv))
-         continue;
- 
-@@ -1924,38 +1936,40 @@ nsChromeRegistry::ProcessManifestBuffer(
-                               "Warning: malformed chrome overlay instruction.");
-         continue;
-       }
- 
-       TriState stAppVersion = eUnspecified;
-       TriState stApp = eUnspecified;
-       TriState stOs = eUnspecified;
-       TriState stOsVersion = eUnspecified;
-+      TriState stDesktop = eUnspecified;
- 
-       PRBool badFlag = PR_FALSE;
- 
-       while (nsnull != (token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) &&
-              !badFlag) {
-         NS_ConvertASCIItoUTF16 wtoken(token);
-         ToLowerCase(wtoken);
- 
-         if (CheckStringFlag(kApplication, wtoken, appID, stApp) ||
-             CheckStringFlag(kOs, wtoken, osTarget, stOs) ||
-+            CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) ||
-             CheckVersionFlag(kOsVersion, wtoken, osVersion, vc, stOsVersion) ||
-             CheckVersionFlag(kAppVersion, wtoken, appVersion, vc, stAppVersion))
-           continue;
- 
-         LogMessageWithContext(manifestURI, line, nsIScriptError::warningFlag,
-                               "Warning: Unrecognized chrome registration modifier '%s'.",
-                               token);
-         badFlag = PR_TRUE;
-       }
- 
-       if (badFlag || stApp == eBad || stAppVersion == eBad ||
--          stOs == eBad || stOsVersion == eBad)
-+          stOs == eBad || stOsVersion == eBad || stDesktop == eBad)
-         continue;
- 
-       nsCOMPtr<nsIURI> baseuri, overlayuri;
-       rv  = io->NewURI(nsDependentCString(base), nsnull, nsnull,
-                        getter_AddRefs(baseuri));
-       rv |= io->NewURI(nsDependentCString(overlay), nsnull, nsnull,
-                        getter_AddRefs(overlayuri));
-       if (NS_FAILED(rv)) {
-@@ -1980,38 +1994,40 @@ nsChromeRegistry::ProcessManifestBuffer(
-                               "Warning: malformed chrome style instruction.");
-         continue;
-       }
- 
-       TriState stAppVersion = eUnspecified;
-       TriState stApp = eUnspecified;
-       TriState stOs = eUnspecified;
-       TriState stOsVersion = eUnspecified;
-+      TriState stDesktop = eUnspecified;
- 
-       PRBool badFlag = PR_FALSE;
- 
-       while (nsnull != (token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) &&
-              !badFlag) {
-         NS_ConvertASCIItoUTF16 wtoken(token);
-         ToLowerCase(wtoken);
- 
-         if (CheckStringFlag(kApplication, wtoken, appID, stApp) ||
-             CheckStringFlag(kOs, wtoken, osTarget, stOs) ||
-+            CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) ||
-             CheckVersionFlag(kOsVersion, wtoken, osVersion, vc, stOsVersion) ||
-             CheckVersionFlag(kAppVersion, wtoken, appVersion, vc, stAppVersion))
-           continue;
- 
-         LogMessageWithContext(manifestURI, line, nsIScriptError::warningFlag,
-                               "Warning: Unrecognized chrome registration modifier '%s'.",
-                               token);
-         badFlag = PR_TRUE;
-       }
- 
-       if (badFlag || stApp == eBad || stAppVersion == eBad ||
--          stOs == eBad || stOsVersion == eBad)
-+          stOs == eBad || stOsVersion == eBad || stDesktop == eBad)
-         continue;
- 
-       nsCOMPtr<nsIURI> baseuri, overlayuri;
-       rv  = io->NewURI(nsDependentCString(base), nsnull, nsnull,
-                       getter_AddRefs(baseuri));
-       rv |= io->NewURI(nsDependentCString(overlay), nsnull, nsnull,
-                        getter_AddRefs(overlayuri));
-       if (NS_FAILED(rv))
-@@ -2040,38 +2056,40 @@ nsChromeRegistry::ProcessManifestBuffer(
-                               "Warning: malformed chrome override instruction.");
-         continue;
-       }
- 
-       TriState stAppVersion = eUnspecified;
-       TriState stApp = eUnspecified;
-       TriState stOs = eUnspecified;
-       TriState stOsVersion = eUnspecified;
-+      TriState stDesktop = eUnspecified;
- 
-       PRBool badFlag = PR_FALSE;
- 
-       while (nsnull != (token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) &&
-              !badFlag) {
-         NS_ConvertASCIItoUTF16 wtoken(token);
-         ToLowerCase(wtoken);
- 
-         if (CheckStringFlag(kApplication, wtoken, appID, stApp) ||
-             CheckStringFlag(kOs, wtoken, osTarget, stOs) ||
-+            CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) ||
-             CheckVersionFlag(kOsVersion, wtoken, osVersion, vc, stOsVersion) ||
-             CheckVersionFlag(kAppVersion, wtoken, appVersion, vc, stAppVersion))
-           continue;
- 
-         LogMessageWithContext(manifestURI, line, nsIScriptError::warningFlag,
-                               "Warning: Unrecognized chrome registration modifier '%s'.",
-                               token);
-         badFlag = PR_TRUE;
-       }
- 
-       if (badFlag || stApp == eBad || stAppVersion == eBad ||
--          stOs == eBad || stOsVersion == eBad)
-+          stOs == eBad || stOsVersion == eBad || stDesktop == eBad)
-         continue;
- 
-       nsCOMPtr<nsIURI> chromeuri, resolveduri;
-       rv  = io->NewURI(nsDependentCString(chrome), nsnull, nsnull,
-                       getter_AddRefs(chromeuri));
-       rv |= io->NewURI(nsDependentCString(resolved), nsnull, manifestURI,
-                        getter_AddRefs(resolveduri));
-       if (NS_FAILED(rv))
-@@ -2102,38 +2120,40 @@ nsChromeRegistry::ProcessManifestBuffer(
-       }
- 
-       EnsureLowerCase(package);
- 
-       TriState stAppVersion = eUnspecified;
-       TriState stApp = eUnspecified;
-       TriState stOsVersion = eUnspecified;
-       TriState stOs = eUnspecified;
-+      TriState stDesktop = eUnspecified;
- 
-       PRBool badFlag = PR_FALSE;
- 
-       while (nsnull != (token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) &&
-              !badFlag) {
-         NS_ConvertASCIItoUTF16 wtoken(token);
-         ToLowerCase(wtoken);
- 
-         if (CheckStringFlag(kApplication, wtoken, appID, stApp) ||
-             CheckStringFlag(kOs, wtoken, osTarget, stOs) ||
-+            CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) ||
-             CheckVersionFlag(kOsVersion, wtoken, osVersion, vc, stOsVersion) ||
-             CheckVersionFlag(kAppVersion, wtoken, appVersion, vc, stAppVersion))
-           continue;
- 
-         LogMessageWithContext(manifestURI, line, nsIScriptError::warningFlag,
-                               "Warning: Unrecognized chrome registration modifier '%s'.",
-                               token);
-         badFlag = PR_TRUE;
-       }
- 
-       if (badFlag || stApp == eBad || stAppVersion == eBad || 
--          stOs == eBad || stOsVersion == eBad)
-+          stOs == eBad || stOsVersion == eBad || stDesktop == eBad)
-         continue;
-       
-       nsDependentCString host(package);
- 
-       PRBool exists;
-       rv = rph->HasSubstitution(host, &exists);
-       NS_ENSURE_SUCCESS(rv, rv);
-       if (exists) {
 diff --git a/modules/libpref/src/Makefile.in b/modules/libpref/src/Makefile.in
 --- a/modules/libpref/src/Makefile.in
 +++ b/modules/libpref/src/Makefile.in
-@@ -97,8 +97,10 @@ GARBAGE		+= $(addprefix $(DIST)/bin/defa
- 
+@@ -90,14 +90,16 @@ GREPREF_FILES = $(topsrcdir)/netwerk/bas
  # Optimizer bug with GCC 3.2.2 on OS/2
  ifeq ($(OS_ARCH), OS2)
  nsPrefService.$(OBJ_SUFFIX): nsPrefService.cpp
@@ -407,12 +9,19 @@
  	@$(MAKE_DEPS_AUTO_CXX)
  	$(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS:-O2=-O1) $(_VPATH_SRCS)
  endif
+ 
++LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
 +
-+LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
+ 
+ greprefs.js: $(GREPREF_FILES)
+ 	$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(PREF_PPFLAGS) $(DEFINES) $(ACDEFINES) $(XULPPFLAGS) $^ > $@
+ 
+ libs:: greprefs.js
+ 	$(INSTALL) $^ $(DIST)/bin/
 diff --git a/modules/libpref/src/nsPrefService.cpp b/modules/libpref/src/nsPrefService.cpp
 --- a/modules/libpref/src/nsPrefService.cpp
 +++ b/modules/libpref/src/nsPrefService.cpp
-@@ -47,16 +47,17 @@
+@@ -51,16 +51,17 @@
  #include "nsILocalFile.h"
  #include "nsIObserverService.h"
  #include "nsPrefBranch.h"
@@ -430,55 +39,21 @@
  #include "prefapi.h"
  #include "prefread.h"
  #include "prefapi_private_data.h"
-@@ -610,17 +611,18 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
-         rv = rv2;
-       }
-     }
-   }
- 
-   return rv;
- }
- 
--static nsresult pref_LoadPrefsInDirList(const char *listId)
-+static nsresult pref_LoadPrefsInDirList(const char *listId,
-+    char const *const *aSpecialFiles = NULL, PRUint32 aSpecialFilesCount = 0)
- {
-   nsresult rv;
-   nsCOMPtr<nsIProperties> dirSvc(do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv));
-   if (NS_FAILED(rv)) return rv;
- 
-   nsCOMPtr<nsISimpleEnumerator> dirList;
-   dirSvc->Get(listId,
-               NS_GET_IID(nsISimpleEnumerator),
-@@ -629,17 +631,17 @@ static nsresult pref_LoadPrefsInDirList(
-     PRBool 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, aSpecialFiles, aSpecialFilesCount); 
-         }
-       }
-     }
-   }
-   return NS_OK;
- }
- 
- //----------------------------------------------------------------------------------------
-@@ -680,29 +682,41 @@ static nsresult pref_InitInitialObjects(
+@@ -718,28 +719,40 @@ static nsresult pref_InitDefaults()
+   /* 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_MAC) || defined(XP_MACOSX)
+       "macprefs.js"
+ #elif defined(XP_WIN)
+       "winpref.js"
+ #elif defined(XP_UNIX)
+       "unix.js"
++      , "" // placeholder for KDE  (empty is otherwise harmless)
  #if defined(VMS)
        , "openvms.js"
  #elif defined(_AIX)
        , "aix.js"
  #endif
- #if defined(MOZ_WIDGET_PHOTON)
- 	  , "photon.js"
- #endif		 
-+      , "" // placeholder for KDE  (empty is otherwise harmless)
  #elif defined(XP_OS2)
        "os2pref.js"
  #elif defined(XP_BEOS)
@@ -486,37 +61,30 @@
  #endif
    };
  
-+  if( nsKDEUtils::kdeSession()) { // TODO what if some setup actually requires the helper?
-+      for( int i = 0;
-+           i < NS_ARRAY_LENGTH(specialFiles);
-+           ++i ) {
-+          if( *specialFiles[ i ] == '\0' ) {
-+              specialFiles[ i ] = "kde.js";
-+              break;
-+          }
++  if(nsKDEUtils::kdeSession()) { // TODO what if some setup actually requires the helper?
++    for( int i = 0;
++         i < NS_ARRAY_LENGTH(specialFiles);
++         ++i ) {
++      if( *specialFiles[ i ] == '\0' ) {
++        specialFiles[ i ] = "kde.js";
++        break;
 +      }
++    }
 +  }
-+      
++
    rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles, NS_ARRAY_LENGTH(specialFiles));
    if (NS_FAILED(rv)) {
      NS_WARNING("Error parsing application default preferences.");
    }
  
--  rv = pref_LoadPrefsInDirList(NS_APP_PREFS_DEFAULTS_DIR_LIST);
-+  rv = pref_LoadPrefsInDirList(NS_APP_PREFS_DEFAULTS_DIR_LIST, specialFiles, NS_ARRAY_LENGTH(specialFiles));
-   NS_ENSURE_SUCCESS(rv, rv);
+   return NS_OK;
+ }
  
-   NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID,
-                                 nsnull, NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID);
- 
-   nsCOMPtr<nsIObserverService> observerService = 
-     do_GetService("@mozilla.org/observer-service;1", &rv);
-   
 diff --git a/toolkit/components/downloads/src/Makefile.in b/toolkit/components/downloads/src/Makefile.in
 --- a/toolkit/components/downloads/src/Makefile.in
 +++ b/toolkit/components/downloads/src/Makefile.in
-@@ -92,8 +92,9 @@ EXTRA_COMPONENTS = \
-   nsDownloadManagerUI.js \
+@@ -71,8 +71,9 @@ EXTRA_COMPONENTS = \
+   nsDownloadManagerUI.manifest \
    $(NULL)
  endif
  
@@ -528,7 +96,7 @@
 diff --git a/toolkit/components/downloads/src/nsDownloadManager.cpp b/toolkit/components/downloads/src/nsDownloadManager.cpp
 --- a/toolkit/components/downloads/src/nsDownloadManager.cpp
 +++ b/toolkit/components/downloads/src/nsDownloadManager.cpp
-@@ -71,16 +71,20 @@
+@@ -76,16 +76,20 @@
  
  #if defined(XP_WIN) && !defined(WINCE)
  #include <shlobj.h>
@@ -541,15 +109,15 @@
 +#include "nsKDEUtils.h"
 +#endif
 +
+ #ifdef XP_MACOSX
+ #include <CoreFoundation/CoreFoundation.h>
+ #endif
+ 
  #define DOWNLOAD_MANAGER_BUNDLE "chrome://mozapps/locale/downloads/downloads.properties"
  #define DOWNLOAD_MANAGER_ALERT_ICON "chrome://mozapps/skin/downloads/downloadIcon.png"
  #define PREF_BDM_SHOWALERTONCOMPLETE "browser.download.manager.showAlertOnComplete"
  #define PREF_BDM_SHOWALERTINTERVAL "browser.download.manager.showAlertInterval"
- #define PREF_BDM_RETENTION "browser.download.manager.retention"
- #define PREF_BDM_QUITBEHAVIOR "browser.download.manager.quitBehavior"
- #define PREF_BDM_ADDTORECENTDOCS "browser.download.manager.addToRecentDocs"
- #define PREF_BDM_SCANWHENDONE "browser.download.manager.scanWhenDone"
-@@ -2158,16 +2162,25 @@ nsDownload::SetState(DownloadState aStat
+@@ -2193,16 +2197,25 @@ nsDownload::SetState(DownloadState aStat
        nsCOMPtr<nsIPrefBranch> pref(do_GetService(NS_PREFSERVICE_CONTRACTID));
  
        // Master pref to control this function.
@@ -575,7 +143,7 @@
          PRInt64 goat = PR_Now() - mStartTime;
          showTaskbarAlert = goat > alertIntervalUSec;
  
-@@ -2193,16 +2206,17 @@ nsDownload::SetState(DownloadState aStat
+@@ -2228,16 +2241,17 @@ nsDownload::SetState(DownloadState aStat
                // because if it is, they'll click open the download manager and
                // the items they downloaded will have been removed.
                alerts->ShowAlertNotification(
@@ -586,17 +154,17 @@
          }
 +        } // end non-KDE block
        }
- #if defined(XP_WIN) && !defined(WINCE)
+ 
        nsCOMPtr<nsIFileURL> fileURL = do_QueryInterface(mTarget);
-       nsCOMPtr<nsIFile> file;
-       nsAutoString path;
+       if (fileURL) {
+         nsCOMPtr<nsIFile> file;
+         if (NS_SUCCEEDED(fileURL->GetFile(getter_AddRefs(file))) && file ) {
  
-       if (fileURL &&
-           NS_SUCCEEDED(fileURL->GetFile(getter_AddRefs(file))) &&
+ #if (defined(XP_WIN) && !defined(WINCE)) || defined(XP_MACOSX)
 diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
 --- a/toolkit/content/jar.mn
 +++ b/toolkit/content/jar.mn
-@@ -44,29 +44,33 @@ toolkit.jar:
+@@ -40,29 +40,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)
@@ -634,7 +202,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/toolkit/content/widgets/dialog-kde.xml
-@@ -0,0 +1,445 @@
+@@ -0,0 +1,447 @@
 +<?xml version="1.0"?>
 +
 +<bindings id="dialogBindings"
@@ -664,13 +232,13 @@
 +        <xul:button dlgtype="accept" class="dialog-button" xbl:inherits="disabled=buttondisabledaccept"/>
 +#elif XP_UNIX
 +                pack="end">
-+        <xul:button dlgtype="help" class="dialog-button" hidden="true"/>
-+        <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
-+        <xul:spacer anonid="spacer" flex="1" hidden="true"/>
-+        <xul:button dlgtype="accept" class="dialog-button" xbl:inherits="disabled=buttondisabledaccept"/>
-+        <xul:button dlgtype="extra1" class="dialog-button" hidden="true"/>
-+        <xul:button dlgtype="cancel" class="dialog-button"/>
-+        <xul:button dlgtype="disclosure" class="dialog-button" hidden="true"/>
++	<xul:button dlgtype="help" class="dialog-button" hidden="true"/>
++	<xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
++	<xul:spacer anonid="spacer" flex="1" hidden="true"/>
++	<xul:button dlgtype="accept" class="dialog-button" xbl:inherits="disabled=buttondisabledaccept"/>
++	<xul:button dlgtype="extra1" class="dialog-button" hidden="true"/>
++	<xul:button dlgtype="cancel" class="dialog-button"/>
++	<xul:button dlgtype="disclosure" class="dialog-button" hidden="true"/>
 +#else
 +                pack="end">
 +        <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
@@ -808,27 +376,29 @@
 +              document.commandDispatcher.advanceFocusIntoSubtree(dialog);
 +
 +              var focusedElt = document.commandDispatcher.focusedElement;
-+              var initialFocusedElt = focusedElt;
-+              while (focusedElt.localName == "tab" ||
-+                     focusedElt.getAttribute("noinitialfocus") == "true") {
-+                document.commandDispatcher.advanceFocusIntoSubtree(focusedElt);
-+                focusedElt = document.commandDispatcher.focusedElement;
-+                if (focusedElt == initialFocusedElt)
-+                  break;
-+              }
++              if (focusedElt) {
++                var initialFocusedElt = focusedElt;
++                while (focusedElt.localName == "tab" ||
++                       focusedElt.getAttribute("noinitialfocus") == "true") {
++                  document.commandDispatcher.advanceFocusIntoSubtree(focusedElt);
++                  focusedElt = document.commandDispatcher.focusedElement;
++                  if (focusedElt == initialFocusedElt)
++                    break;
++                }
 +
-+              if (initialFocusedElt.localName == "tab") {
-+                if (focusedElt.hasAttribute("dlgtype")) {
-+                  // We don't want to focus on anonymous OK, Cancel, etc. buttons,
-+                  // so return focus to the tab itself
-+                  initialFocusedElt.focus();
++                if (initialFocusedElt.localName == "tab") {
++                  if (focusedElt.hasAttribute("dlgtype")) {
++                    // We don't want to focus on anonymous OK, Cancel, etc. buttons,
++                    // so return focus to the tab itself
++                    initialFocusedElt.focus();
++                  }
 +                }
++#ifndef XP_MACOSX
++                else if (focusedElt.hasAttribute("dlgtype") && focusedElt != defaultButton) {
++                  defaultButton.focus();
++                }
++#endif
 +              }
-+#ifndef XP_MACOSX
-+              else if (focusedElt.hasAttribute("dlgtype") && focusedElt != defaultButton) {
-+                defaultButton.focus();
-+              }
-+#endif
 +            }
 +
 +            try {
@@ -1671,13 +1241,13 @@
 +        <xul:button dlgtype="accept" class="dialog-button" icon="accept"/>
 +#elif XP_UNIX
 +                pack="end">
-+        <xul:button dlgtype="help" class="dialog-button" hidden="true" icon="help"/>
-+        <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
-+        <xul:spacer anonid="spacer" flex="1"/>
-+        <xul:button dlgtype="accept" class="dialog-button" icon="accept"/>
-+        <xul:button dlgtype="extra1" class="dialog-button" hidden="true"/>
-+        <xul:button dlgtype="cancel" class="dialog-button" icon="cancel"/>
-+        <xul:button dlgtype="disclosure" class="dialog-button" hidden="true"/>
++	<xul:button dlgtype="help" class="dialog-button" hidden="true" icon="help"/>
++	<xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
++	<xul:spacer anonid="spacer" flex="1"/>
++	<xul:button dlgtype="accept" class="dialog-button" icon="accept"/>
++	<xul:button dlgtype="extra1" class="dialog-button" hidden="true"/>
++	<xul:button dlgtype="cancel" class="dialog-button" icon="cancel"/>
++	<xul:button dlgtype="disclosure" class="dialog-button" hidden="true"/>
 +#else
 +                pack="end">
 +        <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
@@ -2456,28 +2026,6 @@
 +#    PrefWindow II  (???)
 +#    PrefWindow I   (June 4, 1999)
 +#
-diff --git a/toolkit/system/unixproxy/Makefile.in b/toolkit/system/unixproxy/Makefile.in
---- a/toolkit/system/unixproxy/Makefile.in
-+++ b/toolkit/system/unixproxy/Makefile.in
-@@ -54,16 +54,18 @@ LIBXUL_LIBRARY  = 1
- 
- REQUIRES = \
-         xpcom \
-         string \
-         necko \
-         mozgnome \
-         $(NULL)
- 
-+LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
-+
- EXTRA_DSO_LDOPTS += \
-                $(MOZ_LIBPROXY_LIBS) \
-                $(MOZ_COMPONENT_LIBS) \
-                $(NULL)
- 
- ifdef MOZ_ENABLE_LIBPROXY
- 
- CPPSRCS = \
 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
@@ -2537,63 +2085,10 @@
  
  #define NS_UNIXSYSTEMPROXYSERVICE_CID  /* 0fa3158c-d5a7-43de-9181-a285e74cf1d4 */\
       { 0x0fa3158c, 0xd5a7, 0x43de, \
-@@ -427,8 +433,33 @@ NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsUn
- static const nsModuleComponentInfo components[] = {
-   { "Unix System Proxy Settings Service",
-     NS_UNIXSYSTEMPROXYSERVICE_CID,
-     NS_SYSTEMPROXYSETTINGS_CONTRACTID,
-     nsUnixSystemProxySettingsConstructor }
- };
- 
- NS_IMPL_NSGETMODULE(nsUnixProxyModule, components)
-+
-+nsresult
-+nsUnixSystemProxySettings::GetProxyFromKDE(const nsACString& aScheme,
-+                                             const nsACString& aHost,
-+                                             PRInt32 aPort,
-+                                             nsACString& aResult)
-+{
-+  nsCAutoString url;
-+  url = aScheme;
-+  url += "://";
-+  url += aHost;
-+  if( aPort >= 0 )
-+      {
-+      url += ":";
-+      url += nsPrintfCString("%d", aPort);
-+      }
-+  nsCStringArray command;
-+  command.AppendCString( NS_LITERAL_CSTRING( "GETPROXY" ));
-+  command.AppendCString( url );
-+  nsCStringArray result;
-+  if( !nsKDEUtils::command( command, &result ) || result.Count() != 1 )
-+      return NS_ERROR_FAILURE;
-+  aResult = *result[ 0 ];
-+  return NS_OK;
-+}
 diff --git a/toolkit/xre/Makefile.in b/toolkit/xre/Makefile.in
 --- a/toolkit/xre/Makefile.in
 +++ b/toolkit/xre/Makefile.in
-@@ -42,16 +42,18 @@ srcdir		= @srcdir@
- VPATH		= @srcdir@
- 
- include $(DEPTH)/config/autoconf.mk
- 
- MODULE = xulapp
- LIBRARY_NAME = xulapp_s
- LIBXUL_LIBRARY = 1
- 
-+EXPORTS = nsKDEUtils.h
-+
- REQUIRES = \
- 	appcomps \
- 	toolkitcomps \
- 	appshell \
- 	chrome \
- 	content \
- 	docshell \
- 	dom \
-@@ -133,17 +135,17 @@ CMMSRCS = nsNativeAppSupportCocoa.mm
+@@ -95,17 +95,18 @@ CMMSRCS = nsNativeAppSupportCocoa.mm
  else
  ifeq ($(MOZ_WIDGET_TOOLKIT),os2)
  CPPSRCS += nsNativeAppSupportOS2.cpp
@@ -2604,14 +2099,15 @@
  ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
 -CPPSRCS += nsNativeAppSupportUnix.cpp
 +CPPSRCS += nsNativeAppSupportUnix.cpp nsKDEUtils.cpp
++EXPORTS += nsKDEUtils.h
  else
- CPPSRCS += nsNativeAppSupportDefault.cpp
- endif
- endif
- endif
- endif
- endif
- 
+ ifeq ($(MOZ_WIDGET_TOOLKIT),qt)
+ CPPSRCS += nsNativeAppSupportQt.cpp
+ CPPSRCS += nsQAppInstance.cpp
+ EXPORTS += nsQAppInstance.h
+ ifdef MOZ_ENABLE_MEEGOTOUCH
+ MOCSRCS += moc_MozMeegoAppService.cpp
+ CPPSRCS += moc_MozMeegoAppService.cpp
 diff --git a/toolkit/xre/nsKDEUtils.cpp b/toolkit/xre/nsKDEUtils.cpp
 new file mode 100644
 --- /dev/null
@@ -3036,7 +2532,7 @@
 diff --git a/uriloader/exthandler/Makefile.in b/uriloader/exthandler/Makefile.in
 --- a/uriloader/exthandler/Makefile.in
 +++ b/uriloader/exthandler/Makefile.in
-@@ -102,18 +102,19 @@ CMMSRCS	= nsOSHelperAppService.mm \
+@@ -85,18 +85,19 @@ CMMSRCS	= nsOSHelperAppService.mm \
  			$(NULL)
  else
  OSHELPER	= nsOSHelperAppService.cpp
@@ -3051,12 +2547,12 @@
 +LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
  endif
  
- ifeq ($(MOZ_WIDGET_TOOLKIT),qt)
- OSHELPER += nsGNOMERegistry.cpp
- OSHELPER += nsMIMEInfoUnix.cpp
+ ifeq ($(MOZ_WIDGET_TOOLKIT),android)
+ OSHELPER += nsMIMEInfoAndroid.cpp
+ OSHELPER += nsAndroidHandlerApp.cpp
  endif
  
- ifeq ($(MOZ_WIDGET_TOOLKIT),beos)
+ ifeq ($(MOZ_WIDGET_TOOLKIT),qt)
 diff --git a/uriloader/exthandler/unix/nsCommonRegistry.cpp b/uriloader/exthandler/unix/nsCommonRegistry.cpp
 new file mode 100644
 --- /dev/null
@@ -3403,17 +2899,18 @@
 diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
 --- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
 +++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
-@@ -40,27 +40,30 @@
- #if (MOZ_PLATFORM_MAEMO == 5) && defined (MOZ_ENABLE_GNOMEVFS)
- #include <glib.h>
- #include <hildon-uri.h>
- #include <hildon-mime.h>
- #include <libosso.h>
+@@ -48,28 +48,31 @@
+ #include <QDesktopServices>
+ #include <QUrl>
+ #include <QString>
+ #include <contentaction/contentaction.h>
+ #include "nsContentHandlerApp.h"
  #endif
  
  #include "nsMIMEInfoUnix.h"
 -#include "nsGNOMERegistry.h"
 +#include "nsCommonRegistry.h"
+ #include "nsIGIOService.h"
  #include "nsIGnomeVFSService.h"
  #include "nsAutoPtr.h"
  #ifdef MOZ_ENABLE_DBUS
@@ -3428,16 +2925,16 @@
  {
 -  nsresult rv = nsGNOMERegistry::LoadURL(aURI);
 +  nsresult rv = nsCommonRegistry::LoadURL(aURI);
+ 
  #if (MOZ_PLATFORM_MAEMO == 5) && defined (MOZ_ENABLE_GNOMEVFS)
    if (NS_FAILED(rv)){
-     HildonURIAction *action = hildon_uri_get_default_action(mType.get(), nsnull);
+     HildonURIAction *action = hildon_uri_get_default_action(mSchemeOrType.get(), nsnull);
      if (action) {
        nsCAutoString spec;
        aURI->GetAsciiSpec(spec);
        if (hildon_uri_open(spec.get(), action, nsnull))
-         rv = NS_OK;
-@@ -70,21 +73,21 @@ nsMIMEInfoUnix::LoadUriInternal(nsIURI *
- #endif
+@@ -91,22 +94,22 @@ nsMIMEInfoUnix::LoadUriInternal(nsIURI *
+ 
    return rv;
  }
  
@@ -3445,28 +2942,29 @@
  nsMIMEInfoUnix::GetHasDefaultHandler(PRBool *_retval)
  {
    *_retval = PR_FALSE;
--  nsRefPtr<nsMIMEInfoBase> mimeInfo = nsGNOMERegistry::GetFromType(mType);
-+  nsRefPtr<nsMIMEInfoBase> mimeInfo = nsCommonRegistry::GetFromType(mType);
+-  nsRefPtr<nsMIMEInfoBase> mimeInfo = nsGNOMERegistry::GetFromType(mSchemeOrType);
++  nsRefPtr<nsMIMEInfoBase> mimeInfo = nsCommonRegistry::GetFromType(mSchemeOrType);
    if (!mimeInfo) {
      nsCAutoString ext;
-     GetPrimaryExtension(ext);
--    mimeInfo = nsGNOMERegistry::GetFromExtension(ext);
-+    mimeInfo = nsCommonRegistry::GetFromExtension(ext);
+     nsresult rv = GetPrimaryExtension(ext);
+     if (NS_SUCCEEDED(rv)) {
+-      mimeInfo = nsGNOMERegistry::GetFromExtension(ext);
++      mimeInfo = nsCommonRegistry::GetFromExtension(ext);
+     }
    }
- 
    if (mimeInfo)
      *_retval = PR_TRUE;
  
    if (*_retval)
      return NS_OK;
  
-@@ -107,25 +110,42 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
-   nsCAutoString nativePath;
-   aFile->GetNativePath(nativePath);
- 
- #if (MOZ_PLATFORM_MAEMO == 5) && defined (MOZ_ENABLE_GNOMEVFS)
-   if(NS_SUCCEEDED(LaunchDefaultWithDBus(PromiseFlatCString(nativePath).get())))
+@@ -149,32 +152,49 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
+     ContentAction::Action::defaultActionForFile(uri, QString(mSchemeOrType.get()));
+   if (action.isValid()) {
+     action.trigger();
      return NS_OK;
+   }
+   return NS_ERROR_FAILURE;
  #endif
  
 +  if( nsKDEUtils::kdeSupport()) {
@@ -3476,7 +2974,7 @@
 +      command.AppendCString( NS_LITERAL_CSTRING( "OPEN" ));
 +      command.AppendCString( nativePath );
 +      command.AppendCString( NS_LITERAL_CSTRING( "MIMETYPE" ));
-+      command.AppendCString( mType );
++      command.AppendCString( mSchemeOrType );
 +      if( nsKDEUtils::command( command ))
 +        return NS_OK;
 +    }
@@ -3486,32 +2984,39 @@
 +    return LaunchWithIProcess(mDefaultApplication, nativePath);
 +  }
 +
-   nsCOMPtr<nsIGnomeVFSService> vfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
-   if (vfs) {
-     nsCOMPtr<nsIGnomeVFSMimeApp> app;
-     if (NS_SUCCEEDED(vfs->GetAppForMimeType(mType, getter_AddRefs(app))) && app)
+   nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
+   nsCOMPtr<nsIGnomeVFSService> gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
+   if (giovfs) {
+     nsCOMPtr<nsIGIOMimeApp> app;
+     if (NS_SUCCEEDED(giovfs->GetAppForMimeType(mSchemeOrType, getter_AddRefs(app))) && app)
        return app->Launch(nativePath);
- 
-     // If we haven't got an app we try to get a valid one by searching for the
-     // extension mapped type
--    nsRefPtr<nsMIMEInfoBase> mimeInfo = nsGNOMERegistry::GetFromExtension(nativePath);
-+    nsRefPtr<nsMIMEInfoBase> mimeInfo = nsCommonRegistry::GetFromExtension(nativePath);
-     if (mimeInfo) {
-       nsCAutoString type;
-       mimeInfo->GetType(type);
-       if (NS_SUCCEEDED(vfs->GetAppForMimeType(type, getter_AddRefs(app))) && app)
-         return app->Launch(nativePath);
-     }
+   } else if (gnomevfs) {
+     /* Fallback to GnomeVFS */
+     nsCOMPtr<nsIGnomeVFSMimeApp> app;
+     if (NS_SUCCEEDED(gnomevfs->GetAppForMimeType(mSchemeOrType, getter_AddRefs(app))) && app)
+       return app->Launch(nativePath);
    }
  
+   // If we haven't got an app we try to get a valid one by searching for the
+   // extension mapped type
+-  nsRefPtr<nsMIMEInfoBase> mimeInfo = nsGNOMERegistry::GetFromExtension(nativePath);
++  nsRefPtr<nsMIMEInfoBase> mimeInfo = nsCommonRegistry::GetFromExtension(nativePath);
+   if (mimeInfo) {
+     nsCAutoString type;
+     mimeInfo->GetType(type);
+     if (giovfs) {
+       nsCOMPtr<nsIGIOMimeApp> app;
+       if (NS_SUCCEEDED(giovfs->GetAppForMimeType(type, getter_AddRefs(app))) && app)
+         return app->Launch(nativePath);
+     } else if (gnomevfs) {
 diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
 --- a/uriloader/exthandler/unix/nsOSHelperAppService.cpp
 +++ b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
-@@ -39,17 +39,17 @@
-  * ***** END LICENSE BLOCK ***** */
- 
- #include <sys/types.h>
- #include <sys/stat.h>
+@@ -44,17 +44,17 @@
+ #if (MOZ_PLATFORM_MAEMO == 6)
+ #include <contentaction/contentaction.h>
+ #include <QString>
+ #endif
  
  #include "nsOSHelperAppService.h"
  #include "nsMIMEInfoUnix.h"
@@ -3526,18 +3031,18 @@
  #include "nsXPIDLString.h"
  #include "nsIURL.h"
  #include "nsIFileStreams.h"
-@@ -1205,29 +1205,29 @@ nsOSHelperAppService::GetHandlerAndDescr
- nsresult nsOSHelperAppService::OSProtocolHandlerExists(const char * aProtocolScheme, PRBool * aHandlerExists)
- {
-   LOG(("-- nsOSHelperAppService::OSProtocolHandlerExists for '%s'\n",
-        aProtocolScheme));
-   *aHandlerExists = PR_FALSE;
+@@ -1219,29 +1219,29 @@ nsresult nsOSHelperAppService::OSProtoco
+     ContentAction::Action::defaultActionForScheme(QString(aProtocolScheme) + ':');
+ 
+   if (action.isValid())
+     *aHandlerExists = PR_TRUE;
+ #endif
  
  #ifdef MOZ_WIDGET_GTK2
    // Check the GConf registry for a protocol handler
 -  *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme);
 +  *aHandlerExists = nsCommonRegistry::HandlerExists(aProtocolScheme);
- #ifdef MOZ_PLATFORM_MAEMO
+ #if (MOZ_PLATFORM_MAEMO == 5) && defined (MOZ_ENABLE_GNOMEVFS)
    *aHandlerExists = nsMIMEInfoUnix::HandlerExists(aProtocolScheme);
  #endif
  #endif
@@ -3558,7 +3063,7 @@
  
  nsresult nsOSHelperAppService::GetFileTokenForPath(const PRUnichar * platformAppPath, nsIFile ** aFile)
  {
-@@ -1313,17 +1313,17 @@ nsOSHelperAppService::GetFromExtension(c
+@@ -1327,17 +1327,17 @@ nsOSHelperAppService::GetFromExtension(c
                                           minorType,
                                           mime_types_description,
                                           PR_TRUE);
@@ -3577,7 +3082,7 @@
  
      rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt),
                                    majorType,
-@@ -1439,17 +1439,17 @@ nsOSHelperAppService::GetFromType(const 
+@@ -1453,17 +1453,17 @@ nsOSHelperAppService::GetFromType(const 
  #ifdef MOZ_WIDGET_GTK2
    nsMIMEInfoBase *gnomeInfo = nsnull;
    if (handler.IsEmpty()) {
@@ -3599,13 +3104,13 @@
 diff --git a/widget/src/gtk2/Makefile.in b/widget/src/gtk2/Makefile.in
 --- a/widget/src/gtk2/Makefile.in
 +++ b/widget/src/gtk2/Makefile.in
-@@ -185,8 +185,11 @@ EXTRA_DSO_LDOPTS += -lgfxpsshar
- endif
+@@ -156,8 +156,11 @@ endif
  
+ DEFINES		+= -DCAIRO_GFX
  
- DEFINES		+=
  INCLUDES	+= \
  		-I$(srcdir)/../xpwidgets \
+ 		-I$(srcdir)/../shared \
  		-I$(topsrcdir)/other-licenses/atk-1.0 \
  		$(NULL)
 +
@@ -3947,10 +3452,150 @@
  };
  
  #endif
+diff --git a/xpcom/components/Makefile.in b/xpcom/components/Makefile.in
+--- a/xpcom/components/Makefile.in
++++ b/xpcom/components/Makefile.in
+@@ -98,10 +98,11 @@ FORCE_STATIC_LIB = 1
+ 
+ # Force use of PIC
+ FORCE_USE_PIC	= 1
+ include $(topsrcdir)/config/rules.mk
+ 
+ DEFINES	+= -D_IMPL_NS_COM
+ 
+ ifneq (,$(filter gtk2,$(MOZ_WIDGET_TOOLKIT)))
++LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
+ CXXFLAGS += $(MOZ_GTK2_CFLAGS)
+ endif
+diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
+--- a/xpcom/components/ManifestParser.cpp
++++ b/xpcom/components/ManifestParser.cpp
+@@ -55,16 +55,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"
+ 
+ struct ManifestDirective
+ {
+   const char* directive;
+   int argc;
+ 
+   // Some directives should only be delivered for NS_COMPONENT_LOCATION
+   // manifests.
+@@ -422,16 +423,17 @@ ParseManifestCommon(NSLocationType aType
+ 
+   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(kOs, "os");
+   NS_NAMED_LITERAL_STRING(kOsVersion, "osversion");
+   NS_NAMED_LITERAL_STRING(kABI, "abi");
++  NS_NAMED_LITERAL_STRING(kDesktop, "desktop");
+ 
+   // Obsolete
+   NS_NAMED_LITERAL_STRING(kXPCNativeWrappers, "xpcnativewrappers");
+ 
+   nsAutoString appID;
+   nsAutoString appVersion;
+   nsAutoString osTarget;
+   nsAutoString abi;
+@@ -461,35 +463,39 @@ ParseManifestCommon(NSLocationType aType
+         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(XP_MACOSX)
+   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");
+ #endif
+ 
+   // Because contracts must be registered after CIDs, we save and process them
+   // at the end.
+   nsTArray<CachedDirective> contracts;
+ 
+   char *token;
+   char *newline = buf;
+@@ -558,24 +564,26 @@ ParseManifestCommon(NSLocationType aType
+     bool ok = true;
+     TriState stAppVersion = eUnspecified;
+     TriState stApp = eUnspecified;
+     TriState stOsVersion = eUnspecified;
+     TriState stOs = eUnspecified;
+     TriState stABI = eUnspecified;
+     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))
+         continue;
+ 
+       if (directive->contentflags &&
+           (CheckFlag(kPlatform, wtoken, platform) ||
+            CheckFlag(kContentAccessible, wtoken, contentAccessible)))
+         continue;
+@@ -594,16 +602,17 @@ ParseManifestCommon(NSLocationType aType
+       ok = false;
+     }
+ 
+     if (!ok ||
+         stApp == eBad ||
+         stAppVersion == eBad ||
+         stOs == eBad ||
+         stOsVersion == eBad ||
++        stDesktop == eBad ||
+         stABI == eBad)
+       continue;
+ 
+     if (directive->regfunc) {
+ #ifdef MOZ_IPC
+       if (GeckoProcessType_Default != XRE_GetProcessType())
+         continue;
+ #endif
 diff --git a/xpcom/io/Makefile.in b/xpcom/io/Makefile.in
 --- a/xpcom/io/Makefile.in
 +++ b/xpcom/io/Makefile.in
-@@ -195,14 +195,15 @@ DEFINES		+= -D_IMPL_NS_COM
+@@ -191,17 +191,17 @@ include $(topsrcdir)/config/rules.mk
+ DEFINES		+= -D_IMPL_NS_COM
  
  ifeq ($(OS_ARCH),Linux)
  ifneq (,$(findstring lib64,$(libdir)))
@@ -3958,36 +3603,38 @@
  endif
  endif
  
- LOCAL_INCLUDES	= -I..
-+LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
+-LOCAL_INCLUDES	= -I..
++LOCAL_INCLUDES	= -I.. -I$(topsrcdir)/toolkit/xre
  
- ifeq ($(MOZ_PLATFORM_MAEMO), 5)
- CFLAGS          += $(MOZ_DBUS_GLIB_CFLAGS) $(MOZ_PLATFORM_MAEMO_CFLAGS)
- CXXFLAGS        += $(MOZ_DBUS_GLIB_CFLAGS) $(MOZ_PLATFORM_MAEMO_CFLAGS)
+ ifeq ($(MOZ_PLATFORM_MAEMO),5)
+ CFLAGS          += $(MOZ_DBUS_CFLAGS)
+ CXXFLAGS        += $(MOZ_DBUS_CFLAGS)
  endif
  
+ ifdef MOZ_PLATFORM_MAEMO
+ CFLAGS          += $(MOZ_PLATFORM_MAEMO_CFLAGS)
 diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
 --- a/xpcom/io/nsLocalFileUnix.cpp
 +++ b/xpcom/io/nsLocalFileUnix.cpp
-@@ -79,16 +79,17 @@
- #include "nsXPIDLString.h"
+@@ -91,16 +91,17 @@
  #include "prproces.h"
  #include "nsIDirectoryEnumerator.h"
  #include "nsISimpleEnumerator.h"
  #include "nsITimelineService.h"
  
  #ifdef MOZ_WIDGET_GTK2
+ #include "nsIGIOService.h"
  #include "nsIGnomeVFSService.h"
 +#include "nsKDEUtils.h"
  #endif
  
- #if (MOZ_PLATFORM_MAEMO == 5)
- #include <glib.h>
- #include <hildon-uri.h>
- #include <hildon-mime.h>
- #include <libosso.h>
- #endif
-@@ -1627,36 +1628,46 @@ nsLocalFile::Launch()
+ #ifdef XP_MACOSX
+ #include <Carbon/Carbon.h>
+ #include "CocoaFileUtils.h"
+ #include "prmem.h"
+ #include "plbase64.h"
+ 
+@@ -1818,44 +1819,50 @@ nsLocalFile::Launch()
  
      return NS_OK;
  }
@@ -3996,8 +3643,9 @@
  nsLocalFile::Reveal()
  {
  #ifdef MOZ_WIDGET_GTK2
--    nsCOMPtr<nsIGnomeVFSService> vfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
--    if (!vfs)
+-    nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
+-    nsCOMPtr<nsIGnomeVFSService> gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
+-    if (!giovfs && !gnomevfs)
 -        return NS_ERROR_FAILURE;
 -
 +    nsCAutoString url;
@@ -4006,7 +3654,11 @@
          return NS_ERROR_FAILURE;
  
      if (isDirectory) {
--        return vfs->ShowURIForInput(mPath);
+-        if (giovfs)
+-            return giovfs->ShowURIForInput(mPath);
+-        else 
+-            /* Fallback to GnomeVFS */
+-            return gnomevfs->ShowURIForInput(mPath);
 +        url = mPath;
      } else {
          nsCOMPtr<nsIFile> parentDir;
@@ -4016,31 +3668,38 @@
          if (NS_FAILED(parentDir->GetNativePath(dirPath)))
              return NS_ERROR_FAILURE;
  
--        return vfs->ShowURIForInput(dirPath);
+-        if (giovfs)
+-            return giovfs->ShowURIForInput(dirPath);
+-        else 
+-            return gnomevfs->ShowURIForInput(dirPath);        
 +        url = dirPath;
      }
 +
-+    if( nsKDEUtils::kdeSupport()) {
-+        nsCStringArray command;
-+        command.AppendCString( NS_LITERAL_CSTRING( "OPEN" ));
-+        command.AppendCString( url );
-+        return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
++    if(nsKDEUtils::kdeSupport()) {
++      nsCStringArray command;
++      command.AppendCString( NS_LITERAL_CSTRING( "OPEN" ));
++      command.AppendCString( url );
++      return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
 +    }
 +
-+    nsCOMPtr<nsIGnomeVFSService> vfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
-+    if (!vfs)
-+        return NS_ERROR_FAILURE;
-+    return vfs->ShowURIForInput(url);
++    nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
++    nsCOMPtr<nsIGnomeVFSService> gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
++    if (!giovfs && !gnomevfs)
++      return NS_ERROR_FAILURE;
 +
- #else
++    if (giovfs)
++      return giovfs->ShowURIForInput(url);
++    else
++      return gnomevfs->ShowURIForInput(url);
+ #elif defined(XP_MACOSX)
+     CFURLRef url;
+     if (NS_SUCCEEDED(GetCFURL(&url))) {
+       nsresult rv = CocoaFileUtils::RevealFileInFinder(url);
+       ::CFRelease(url);
+       return rv;
+     }
      return NS_ERROR_FAILURE;
- #endif
- }
- 
- NS_IMETHODIMP
- nsLocalFile::Launch()
- {
-@@ -1674,16 +1685,23 @@ nsLocalFile::Launch()
+@@ -1881,16 +1888,23 @@ nsLocalFile::Launch()
  
      if (nsnull == connection)
        return NS_ERROR_FAILURE;
@@ -4056,11 +3715,11 @@
 +      return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
 +    }
 +
-     nsCOMPtr<nsIGnomeVFSService> vfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
-     if (!vfs)
-         return NS_ERROR_FAILURE;
- 
-     return vfs->ShowURIForInput(mPath);
- #endif
- #else
-     return NS_ERROR_FAILURE;
+     nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
+     nsCOMPtr<nsIGnomeVFSService> gnomevfs = do_GetService(NS_GNOMEVFSSERVICE_CONTRACTID);
+     if (giovfs) {
+       return giovfs->ShowURIForInput(mPath);
+     } else if (gnomevfs) {
+       /* GnomeVFS fallback */
+       return gnomevfs->ShowURIForInput(mPath);
+     }
--- a/mozilla-xulrunner20/mozilla-xulrunner20.spec	Wed Aug 11 12:17:17 2010 +0200
+++ b/mozilla-xulrunner20/mozilla-xulrunner20.spec	Thu Aug 12 08:55:47 2010 +0200
@@ -35,8 +35,8 @@
 License:        GPLv2+ ; LGPLv2.1+ ; MPLv1.1+
 Version:        2.0b
 Release:        1
-%define         releasedate 2010080300
-%define         version_internal 2.0b3
+%define         releasedate 2010081000
+%define         version_internal 2.0b4pre
 %define         apiversion 2.0
 %define         uaweight 199900
 Summary:        Mozilla Runtime Environment 2.0
@@ -47,8 +47,8 @@
 %if %suse_version >= 1110
 # this is needed to match this package with the kde4 helper package without the main package
 # having a hard requirement on the kde4 package
-#%define kde_helper_version 6
-#Provides:       mozilla-kde4-version = %{kde_helper_version}
+%define kde_helper_version 6
+Provides:       mozilla-kde4-version = %{kde_helper_version}
 %endif
 %ifarch %ix86
 Provides:       mozilla-xulrunner20-32bit = %{version}-%{release}
@@ -211,9 +211,9 @@
 %patch5 -p1
 %patch7 -p1
 %patch8 -p1
-#%if %suse_version >= 1110
-#%patch10 -p1
-#%endif
+%if %suse_version >= 1110
+%patch10 -p1
+%endif
 #%patch11 -p1
 #%patch12 -p1
 #%patch13 -p1
@@ -222,13 +222,13 @@
 %endif
 
 %build
-#%if %suse_version >= 1110
-#kdehelperversion=$(cat toolkit/xre/nsKDEUtils.cpp | grep '#define KMOZILLAHELPER_VERSION' | cut -d ' ' -f 3)
-#if test "$kdehelperversion" != %{kde_helper_version}; then
-#  echo fix kde helper version in the .spec file
-#  exit 1
-#fi
-#%endif
+%if %suse_version >= 1110
+kdehelperversion=$(cat toolkit/xre/nsKDEUtils.cpp | grep '#define KMOZILLAHELPER_VERSION' | cut -d ' ' -f 3)
+if test "$kdehelperversion" != %{kde_helper_version}; then
+  echo fix kde helper version in the .spec file
+  exit 1
+fi
+%endif
 MOZ_APP_DIR=%{_libdir}/xulrunner-%{version_internal}
 export MOZ_BUILD_DATE=%{releasedate}
 export CFLAGS="$RPM_OPT_FLAGS -Os -fno-strict-aliasing"
--- a/series	Wed Aug 11 12:17:17 2010 +0200
+++ b/series	Thu Aug 12 08:55:47 2010 +0200
@@ -5,7 +5,7 @@
 mozilla-nongnome-proxies.patch
 mozilla-prefer_plugin_pref.patch
 mozilla-shared-nss-db.patch
-#mozilla-kde.patch
+mozilla-kde.patch
 #mozilla-gconf-backend.patch
 #gecko-lockdown.patch
 #toolkit-ui-lockdown.patch
@@ -19,6 +19,6 @@
 firefox-browser-css.patch
 firefox-cross-desktop.patch
 firefox-appname.patch
-#firefox-kde.patch
+firefox-kde.patch
 #firefox-ui-lockdown.patch
 firefox-no-sync-l10n.patch