--- 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="©Cmd.label;"
-+ command="cmd_copy"
-+ tooltiptext="©Button.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="©Cmd.label;"
++ command="cmd_copy"
++ tooltiptext="©Button.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 && 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);
+ }