7613454d51
* MFSA 2013-21/CVE-2013-0783/2013-0784 Miscellaneous memory safety hazards * MFSA 2013-22/CVE-2013-0772 (bmo#801366) Out-of-bounds read in image rendering * MFSA 2013-23/CVE-2013-0765 (bmo#830614) Wrapped WebIDL objects can be wrapped again * MFSA 2013-24/CVE-2013-0773 (bmo#809652) Web content bypass of COW and SOW security wrappers * MFSA 2013-25/CVE-2013-0774 (bmo#827193) Privacy leak in JavaScript Workers * MFSA 2013-26/CVE-2013-0775 (bmo#831095) Use-after-free in nsImageLoadingContent * MFSA 2013-27/CVE-2013-0776 (bmo#796475) Phishing on HTTPS connection through malicious proxy * MFSA 2013-28/CVE-2013-0780/CVE-2013-0782/CVE-2013-0777/ CVE-2013-0778/CVE-2013-0779/CVE-2013-0781 Use-after-free, out of bounds read, and buffer overflow issues found using Address Sanitizer - removed obsolete patches * mozilla-webrtc.patch * mozilla-gstreamer-803287.patch - added patch to fix session restore window order (bmo#712763) OBS-URL: https://build.opensuse.org/package/show/mozilla:Factory/MozillaFirefox?expand=0&rev=319
1873 lines
82 KiB
Diff
1873 lines
82 KiB
Diff
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,1276 @@
|
|
+#filter substitution
|
|
+<?xml version="1.0"?>
|
|
+# -*- Mode: HTML -*-
|
|
+#
|
|
+# This Source Code Form is subject to the terms of the Mozilla Public
|
|
+# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
+
|
|
+<?xml-stylesheet href="chrome://browser/content/browser.css" type="text/css"?>
|
|
+<?xml-stylesheet href="chrome://browser/content/places/places.css" type="text/css"?>
|
|
+<?xml-stylesheet href="chrome://browser/skin/devtools/common.css" type="text/css"?>
|
|
+<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
|
+
|
|
+<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
|
|
+<?xul-overlay href="chrome://browser/content/baseMenuOverlay.xul"?>
|
|
+<?xul-overlay href="chrome://browser/content/places/placesOverlay.xul"?>
|
|
+
|
|
+# All DTD information is stored in a separate file so that it can be shared by
|
|
+# hiddenWindow.xul.
|
|
+#include browser-doctype.inc
|
|
+
|
|
+<window id="main-window"
|
|
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
+ xmlns:svg="http://www.w3.org/2000/svg"
|
|
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
|
+ onload="gBrowserInit.onLoad()" onunload="gBrowserInit.onUnload()" onclose="return WindowIsClosing();"
|
|
+ title="&mainWindow.title;@PRE_RELEASE_SUFFIX@"
|
|
+ title_normal="&mainWindow.title;@PRE_RELEASE_SUFFIX@"
|
|
+#ifdef XP_MACOSX
|
|
+ title_privatebrowsing="&mainWindow.title;@PRE_RELEASE_SUFFIX@&mainWindow.titlemodifiermenuseparator;&mainWindow.titlePrivateBrowsingSuffix;"
|
|
+ titledefault="&mainWindow.title;@PRE_RELEASE_SUFFIX@"
|
|
+ titlemodifier=""
|
|
+ titlemodifier_normal=""
|
|
+ titlemodifier_privatebrowsing="&mainWindow.titlePrivateBrowsingSuffix;"
|
|
+#else
|
|
+ title_privatebrowsing="&mainWindow.titlemodifier;@PRE_RELEASE_SUFFIX@ &mainWindow.titlePrivateBrowsingSuffix;"
|
|
+ titlemodifier="&mainWindow.titlemodifier;@PRE_RELEASE_SUFFIX@"
|
|
+ titlemodifier_normal="&mainWindow.titlemodifier;@PRE_RELEASE_SUFFIX@"
|
|
+ titlemodifier_privatebrowsing="&mainWindow.titlemodifier;@PRE_RELEASE_SUFFIX@ &mainWindow.titlePrivateBrowsingSuffix;"
|
|
+#endif
|
|
+ titlemenuseparator="&mainWindow.titlemodifiermenuseparator;"
|
|
+ lightweightthemes="true"
|
|
+ lightweightthemesfooter="browser-bottombox"
|
|
+ windowtype="navigator:browser"
|
|
+ macanimationtype="document"
|
|
+ screenX="4" screenY="4"
|
|
+ browsingmode="normal"
|
|
+ fullscreenbutton="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/javascript" src="chrome://browser/content/nsContextMenu.js"/>
|
|
+
|
|
+<script type="application/javascript" src="chrome://global/content/contentAreaUtils.js"/>
|
|
+
|
|
+<script type="application/javascript" src="chrome://browser/content/places/editBookmarkOverlay.js"/>
|
|
+
|
|
+# All sets except for popupsets (commands, keys, stringbundles and broadcasters) *must* go into the
|
|
+# browser-sets.inc file for sharing with hiddenWindow.xul.
|
|
+#define FULL_BROWSER_WINDOW
|
|
+#include browser-sets.inc
|
|
+#undef FULL_BROWSER_WINDOW
|
|
+
|
|
+ <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);"/>
|
|
+ <menuseparator/>
|
|
+ <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);"/>
|
|
+ <menu id="context_tabViewMenu" label="&moveToGroup.label;"
|
|
+ accesskey="&moveToGroup.accesskey;">
|
|
+ <menupopup id="context_tabViewMenuPopup"
|
|
+ onpopupshowing="if (event.target == this) TabView.moveToGroupPopupShowing(event);">
|
|
+ <menuseparator id="context_tabViewNamedGroups" hidden="true"/>
|
|
+ <menuitem id="context_tabViewNewGroup" label="&moveToNewGroup.label;"
|
|
+ oncommand="TabView.moveTabTo(TabContextMenu.contextTab, null);"/>
|
|
+ </menupopup>
|
|
+ </menu>
|
|
+ <menuitem id="context_openTabInWindow" label="&moveToNewWindow.label;"
|
|
+ accesskey="&moveToNewWindow.accesskey;"
|
|
+ tbattr="tabbrowser-multiple"
|
|
+ oncommand="gBrowser.replaceTabWithWindow(TabContextMenu.contextTab);"/>
|
|
+ <menuseparator/>
|
|
+ <menuitem id="context_reloadAllTabs" label="&reloadAllTabs.label;" accesskey="&reloadAllTabs.accesskey;"
|
|
+ tbattr="tabbrowser-multiple-visible"
|
|
+ oncommand="gBrowser.reloadAllTabs();"/>
|
|
+ <menuitem id="context_bookmarkAllTabs"
|
|
+ label="&bookmarkAllTabs.label;"
|
|
+ accesskey="&bookmarkAllTabs.accesskey;"
|
|
+ command="Browser:BookmarkAllTabs"/>
|
|
+ <menuitem id="context_closeOtherTabs" label="&closeOtherTabs.label;" accesskey="&closeOtherTabs.accesskey;"
|
|
+ oncommand="gBrowser.removeAllTabsBut(TabContextMenu.contextTab);"/>
|
|
+ <menuseparator/>
|
|
+ <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>
|
|
+
|
|
+ <!-- bug 415444/582485: event.stopPropagation is here for the cloned version
|
|
+ of this menupopup -->
|
|
+ <menupopup id="backForwardMenu"
|
|
+ onpopupshowing="return FillHistoryMenu(event.target);"
|
|
+ oncommand="gotoHistoryIndex(event); event.stopPropagation();"
|
|
+ onclick="checkForMiddleClick(this, event);"/>
|
|
+ <tooltip id="aHTMLTooltip" onpopupshowing="return FillInHTMLTooltip(document.tooltipNode);"/>
|
|
+
|
|
+ <!-- for search and content formfill/pw manager -->
|
|
+ <panel type="autocomplete" id="PopupAutoComplete" noautofocus="true" hidden="true"/>
|
|
+
|
|
+ <!-- for url bar autocomplete -->
|
|
+ <panel type="autocomplete-richlistbox" id="PopupAutoCompleteRichResult" noautofocus="true" hidden="true"/>
|
|
+
|
|
+ <!-- for invalid form error message -->
|
|
+ <panel id="invalid-form-popup" type="arrow" orient="vertical" noautofocus="true" hidden="true" level="parent">
|
|
+ <description/>
|
|
+ </panel>
|
|
+
|
|
+ <panel id="editBookmarkPanel"
|
|
+ type="arrow"
|
|
+ footertype="promobox"
|
|
+ orient="vertical"
|
|
+ ignorekeys="true"
|
|
+ consumeoutsideclicks="true"
|
|
+ hidden="true"
|
|
+ onpopupshown="StarUI.panelShown(event);"
|
|
+ aria-labelledby="editBookmarkPanelTitle">
|
|
+ <row id="editBookmarkPanelHeader" align="center" hidden="true">
|
|
+ <vbox align="center">
|
|
+ <image id="editBookmarkPanelStarIcon"/>
|
|
+ </vbox>
|
|
+ <vbox>
|
|
+ <label id="editBookmarkPanelTitle"/>
|
|
+ <description id="editBookmarkPanelDescription"/>
|
|
+ <hbox>
|
|
+ <button id="editBookmarkPanelRemoveButton"
|
|
+ class="editBookmarkPanelHeaderButton"
|
|
+ oncommand="StarUI.removeBookmarkButtonCommand();"
|
|
+ accesskey="&editBookmark.removeBookmark.accessKey;"/>
|
|
+ </hbox>
|
|
+ </vbox>
|
|
+ </row>
|
|
+ <vbox id="editBookmarkPanelContent" flex="1" hidden="true"/>
|
|
+ <hbox id="editBookmarkPanelBottomButtons" pack="end">
|
|
+#ifdef XP_UNIX
|
|
+ <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();"/>
|
|
+#else
|
|
+ <button id="editBookmarkPanelDeleteButton"
|
|
+ class="editBookmarkPanelBottomButton"
|
|
+ label="&editBookmark.cancel.label;"
|
|
+ oncommand="StarUI.cancelButtonOnCommand();"/>
|
|
+ <button id="editBookmarkPanelDoneButton"
|
|
+ class="editBookmarkPanelBottomButton"
|
|
+ label="&editBookmark.done.label;"
|
|
+ default="true"
|
|
+ oncommand="StarUI.panel.hidePopup();"/>
|
|
+#endif
|
|
+ </hbox>
|
|
+ </panel>
|
|
+
|
|
+ <panel id="socialActivatedNotification"
|
|
+ type="arrow"
|
|
+ hidden="true"
|
|
+ consumeoutsideclicks="true"
|
|
+ align="start"
|
|
+ role="alert">
|
|
+ <hbox flex="1">
|
|
+ <image src="chrome://browser/content/social-icon.png" class="popup-notification-icon"/>
|
|
+ <vbox flex="1">
|
|
+ <description id="social-activation-message" class="popup-notification-description"/>
|
|
+ <spacer flex="1"/>
|
|
+ <hbox pack="end" align="center" class="popup-notification-button-container">
|
|
+#ifndef XP_UNIX
|
|
+ <button id="social-undoactivation-button"
|
|
+ label="&social.activated.undobutton.label;"
|
|
+ accesskey="&social.activated.undobutton.accesskey;"
|
|
+ onclick="SocialUI.undoActivation();"/>
|
|
+ <button default="true"
|
|
+ autofocus="autofocus"
|
|
+ label="&social.ok.label;"
|
|
+ accesskey="&social.ok.accesskey;"
|
|
+ oncommand="SocialUI.notificationPanel.hidePopup();"/>
|
|
+#else
|
|
+ <button default="true"
|
|
+ autofocus="autofocus"
|
|
+ label="&social.ok.label;"
|
|
+ accesskey="&social.ok.accesskey;"
|
|
+ oncommand="SocialUI.notificationPanel.hidePopup();"/>
|
|
+ <button id="social-undoactivation-button"
|
|
+ label="&social.activated.undobutton.label;"
|
|
+ accesskey="&social.activated.undobutton.accesskey;"
|
|
+ onclick="SocialUI.undoActivation();"/>
|
|
+#endif
|
|
+ </hbox>
|
|
+ </vbox>
|
|
+ </hbox>
|
|
+ </panel>
|
|
+
|
|
+ <panel id="unsharePopup"
|
|
+ type="arrow"
|
|
+ orient="vertical"
|
|
+ ignorekeys="true"
|
|
+ hidden="true"
|
|
+ onpopupshown="SocialShareButton.panelShown(event);"
|
|
+ consumeoutsideclicks="true"
|
|
+ level="top">
|
|
+ <!-- Note that 'label', 'accesskey', 'value' and 'aria-label' attributes
|
|
+ for many of these elements are supplied by the provider and filled
|
|
+ in at runtime
|
|
+ -->
|
|
+ <row id="unsharePopupHeader" align="center">
|
|
+ <vbox align="center">
|
|
+ <image id="socialUserPortrait" onclick="SocialUI.showProfile();"/>
|
|
+ </vbox>
|
|
+ <vbox id="unsharePopupText">
|
|
+ <button id="socialUserDisplayName" pack="start"
|
|
+ oncommand="SocialUI.showProfile();"/>
|
|
+ <spacer flex="1"/>
|
|
+ <label id="socialUserRecommendedText"/>
|
|
+ </vbox>
|
|
+ </row>
|
|
+ <hbox id="unsharePopupBottomButtons" pack="end">
|
|
+#ifndef XP_UNIX
|
|
+ <button id="unsharePopupStopSharingButton"
|
|
+ class="unsharePopupBottomButton"
|
|
+ command="Social:UnsharePage"/>
|
|
+ <button id="unsharePopupContinueSharingButton"
|
|
+ class="unsharePopupBottomButton"
|
|
+ default="true"
|
|
+ autofocus="autofocus"
|
|
+ oncommand="SocialShareButton.dismissUnsharePopup();"/>
|
|
+#else
|
|
+ <button id="unsharePopupContinueSharingButton"
|
|
+ class="unsharePopupBottomButton"
|
|
+ default="true"
|
|
+ autofocus="autofocus"
|
|
+ oncommand="SocialShareButton.dismissUnsharePopup();"/>
|
|
+ <button id="unsharePopupStopSharingButton"
|
|
+ class="unsharePopupBottomButton"
|
|
+ command="Social:UnsharePage"/>
|
|
+#endif
|
|
+ </hbox>
|
|
+ </panel>
|
|
+
|
|
+ <panel id="social-notification-panel"
|
|
+ class="social-panel"
|
|
+ type="arrow"
|
|
+ hidden="true"
|
|
+ consumeoutsideclicks="true"
|
|
+ noautofocus="true"/>
|
|
+ <panel id="social-flyout-panel"
|
|
+ class="social-panel"
|
|
+ onpopupshown="SocialFlyout.onShown()"
|
|
+ onpopuphidden="SocialFlyout.onHidden()"
|
|
+ side="right"
|
|
+ type="arrow"
|
|
+ hidden="true"
|
|
+ noautofocus="true"
|
|
+ position="topcenter topright"/>
|
|
+
|
|
+ <menupopup id="inspector-node-popup">
|
|
+ <menuitem id="inspectorHTMLCopyInner"
|
|
+ label="&inspectorHTMLCopyInner.label;"
|
|
+ accesskey="&inspectorHTMLCopyInner.accesskey;"
|
|
+ command="Inspector:CopyInner"/>
|
|
+ <menuitem id="inspectorHTMLCopyOuter"
|
|
+ label="&inspectorHTMLCopyOuter.label;"
|
|
+ accesskey="&inspectorHTMLCopyOuter.accesskey;"
|
|
+ command="Inspector:CopyOuter"/>
|
|
+ <menuseparator/>
|
|
+ <menuitem id="inspectorHTMLDelete"
|
|
+ label="&inspectorHTMLDelete.label;"
|
|
+ accesskey="&inspectorHTMLDelete.accesskey;"
|
|
+ command="Inspector:DeleteNode"/>
|
|
+ </menupopup>
|
|
+
|
|
+ <menupopup id="toolbar-context-menu"
|
|
+ onpopupshowing="onViewToolbarsPopupShowing(event);">
|
|
+ <menuseparator/>
|
|
+ <menuitem command="cmd_ToggleTabsOnTop"
|
|
+ type="checkbox"
|
|
+ label="&viewTabsOnTop.label;"
|
|
+ accesskey="&viewTabsOnTop.accesskey;"/>
|
|
+ <menuitem command="cmd_CustomizeToolbars"
|
|
+ label="&viewCustomizeToolbar.label;"
|
|
+ accesskey="&viewCustomizeToolbar.accesskey;"/>
|
|
+ </menupopup>
|
|
+
|
|
+ <menupopup id="blockedPopupOptions"
|
|
+ onpopupshowing="gPopupBlockerObserver.fillPopupList(event);"
|
|
+ onpopuphiding="gPopupBlockerObserver.onPopupHiding(event);">
|
|
+ <menuitem observes="blockedPopupAllowSite"/>
|
|
+ <menuitem observes="blockedPopupEditSettings"/>
|
|
+ <menuitem observes="blockedPopupDontShowMessage"/>
|
|
+ <menuseparator observes="blockedPopupsSeparator"/>
|
|
+ </menupopup>
|
|
+
|
|
+ <menupopup id="autohide-context"
|
|
+ onpopupshowing="FullScreen.getAutohide(this.firstChild);">
|
|
+ <menuitem type="checkbox" label="&fullScreenAutohide.label;"
|
|
+ accesskey="&fullScreenAutohide.accesskey;"
|
|
+ oncommand="FullScreen.setAutohide();"/>
|
|
+ <menuseparator/>
|
|
+ <menuitem label="&fullScreenExit.label;"
|
|
+ accesskey="&fullScreenExit.accesskey;"
|
|
+ oncommand="BrowserFullScreen();"/>
|
|
+ </menupopup>
|
|
+
|
|
+ <menupopup id="contentAreaContextMenu" pagemenu="start"
|
|
+ onpopupshowing="if (event.target != this)
|
|
+ return true;
|
|
+ gContextMenu = new nsContextMenu(this, gBrowser, event.shiftKey);
|
|
+ if (gContextMenu.shouldDisplay)
|
|
+ updateEditUIVisibility();
|
|
+ return gContextMenu.shouldDisplay;"
|
|
+ onpopuphiding="if (event.target != this)
|
|
+ return;
|
|
+ gContextMenu.hiding();
|
|
+ gContextMenu = null;
|
|
+ updateEditUIVisibility();">
|
|
+#include browser-context.inc
|
|
+ </menupopup>
|
|
+
|
|
+ <menupopup id="placesContext"/>
|
|
+
|
|
+ <panel id="notification-popup"
|
|
+ type="arrow"
|
|
+ footertype="promobox"
|
|
+ position="after_start"
|
|
+ hidden="true"
|
|
+ orient="vertical"
|
|
+ role="alert"/>
|
|
+
|
|
+ <!-- Popup for site identity information -->
|
|
+ <panel id="identity-popup"
|
|
+ type="arrow"
|
|
+ hidden="true"
|
|
+ noautofocus="true"
|
|
+ consumeoutsideclicks="true"
|
|
+ onpopupshown="gIdentityHandler.onPopupShown(event);"
|
|
+ level="top">
|
|
+ <hbox id="identity-popup-container" align="top">
|
|
+ <image id="identity-popup-icon"/>
|
|
+ <vbox id="identity-popup-content-box">
|
|
+ <label id="identity-popup-connectedToLabel"
|
|
+ class="identity-popup-label"
|
|
+ value="&identity.connectedTo;"/>
|
|
+ <label id="identity-popup-connectedToLabel2"
|
|
+ class="identity-popup-label"
|
|
+ value="&identity.unverifiedsite2;"/>
|
|
+ <description id="identity-popup-content-host"
|
|
+ class="identity-popup-description"/>
|
|
+ <label id="identity-popup-runByLabel"
|
|
+ class="identity-popup-label"
|
|
+ value="&identity.runBy;"/>
|
|
+ <description id="identity-popup-content-owner"
|
|
+ class="identity-popup-description"/>
|
|
+ <description id="identity-popup-content-supplemental"
|
|
+ class="identity-popup-description"/>
|
|
+ <description id="identity-popup-content-verifier"
|
|
+ class="identity-popup-description"/>
|
|
+ <hbox id="identity-popup-encryption" flex="1">
|
|
+ <vbox>
|
|
+ <image id="identity-popup-encryption-icon"/>
|
|
+ </vbox>
|
|
+ <description id="identity-popup-encryption-label" flex="1"
|
|
+ class="identity-popup-description"/>
|
|
+ </hbox>
|
|
+ <!-- Footer button to open security page info -->
|
|
+ <hbox id="identity-popup-button-container" pack="end">
|
|
+ <button id="identity-popup-more-info-button"
|
|
+ label="&identity.moreInfoLinkText;"
|
|
+ onblur="gIdentityHandler.hideIdentityPopup();"
|
|
+ oncommand="gIdentityHandler.handleMoreInfoClick(event);"/>
|
|
+ </hbox>
|
|
+ </vbox>
|
|
+ </hbox>
|
|
+ </panel>
|
|
+
|
|
+ <panel id="ctrlTab-panel" class="KUI-panel" hidden="true" norestorefocus="true" level="top">
|
|
+ <hbox>
|
|
+ <button class="ctrlTab-preview" flex="1"/>
|
|
+ <button class="ctrlTab-preview" flex="1"/>
|
|
+ <button class="ctrlTab-preview" flex="1"/>
|
|
+ <button class="ctrlTab-preview" flex="1"/>
|
|
+ <button class="ctrlTab-preview" flex="1"/>
|
|
+ <button class="ctrlTab-preview" flex="1"/>
|
|
+ </hbox>
|
|
+ <hbox pack="center">
|
|
+ <button id="ctrlTab-showAll" class="ctrlTab-preview" noicon="true"/>
|
|
+ </hbox>
|
|
+ </panel>
|
|
+
|
|
+ <panel id="allTabs-panel" hidden="true" norestorefocus="true" ignorekeys="true"
|
|
+ onmouseover="allTabs._updateTabCloseButton(event);">
|
|
+ <hbox id="allTabs-meta" align="center">
|
|
+ <spacer flex="1"/>
|
|
+ <textbox id="allTabs-filter"
|
|
+ tooltiptext="&allTabs.filter.emptyText;"
|
|
+ type="search"
|
|
+ oncommand="allTabs.filter();"/>
|
|
+ <spacer flex="1"/>
|
|
+ <toolbarbutton class="KUI-panel-closebutton"
|
|
+ oncommand="allTabs.close()"
|
|
+ tooltiptext="&closeCmd.label;"/>
|
|
+ </hbox>
|
|
+ <stack id="allTabs-stack">
|
|
+ <vbox id="allTabs-container"><hbox/></vbox>
|
|
+ <toolbarbutton id="allTabs-tab-close-button"
|
|
+ class="tabs-closebutton"
|
|
+ oncommand="allTabs.closeTab(event);"
|
|
+ tooltiptext="&closeCmd.label;"
|
|
+ style="visibility:hidden"/>
|
|
+ </stack>
|
|
+ </panel>
|
|
+
|
|
+ <!-- Bookmarks and history tooltip -->
|
|
+ <tooltip id="bhTooltip"/>
|
|
+
|
|
+ <panel id="customizeToolbarSheetPopup"
|
|
+ noautohide="true"
|
|
+ sheetstyle="&dialog.dimensions;"/>
|
|
+
|
|
+ <tooltip id="tabbrowser-tab-tooltip" onpopupshowing="gBrowser.createTooltip(event);"/>
|
|
+
|
|
+ <tooltip id="back-button-tooltip">
|
|
+ <label class="tooltip-label" value="&backButton.tooltip;"/>
|
|
+#ifdef XP_MACOSX
|
|
+ <label class="tooltip-label" value="&backForwardButtonMenuMac.tooltip;"/>
|
|
+#else
|
|
+ <label class="tooltip-label" value="&backForwardButtonMenu.tooltip;"/>
|
|
+#endif
|
|
+ </tooltip>
|
|
+
|
|
+ <tooltip id="forward-button-tooltip">
|
|
+ <label class="tooltip-label" value="&forwardButton.tooltip;"/>
|
|
+#ifdef XP_MACOSX
|
|
+ <label class="tooltip-label" value="&backForwardButtonMenuMac.tooltip;"/>
|
|
+#else
|
|
+ <label class="tooltip-label" value="&backForwardButtonMenu.tooltip;"/>
|
|
+#endif
|
|
+ </tooltip>
|
|
+ </popupset>
|
|
+
|
|
+#ifdef CAN_DRAW_IN_TITLEBAR
|
|
+<vbox id="titlebar">
|
|
+ <hbox id="titlebar-content">
|
|
+ <hbox id="appmenu-button-container">
|
|
+ <button id="appmenu-button"
|
|
+ type="menu"
|
|
+ label="&brandShortName;"
|
|
+ style="-moz-user-focus: ignore;">
|
|
+#include browser-appmenu.inc
|
|
+ </button>
|
|
+ </hbox>
|
|
+ <spacer id="titlebar-spacer" flex="1"/>
|
|
+ <hbox id="titlebar-buttonbox-container" align="start">
|
|
+ <hbox id="titlebar-buttonbox">
|
|
+ <toolbarbutton class="titlebar-button" id="titlebar-min" oncommand="window.minimize();"/>
|
|
+ <toolbarbutton class="titlebar-button" id="titlebar-max" oncommand="onTitlebarMaxClick();"/>
|
|
+ <toolbarbutton class="titlebar-button" id="titlebar-close" command="cmd_closeWindow"/>
|
|
+ </hbox>
|
|
+ </hbox>
|
|
+ </hbox>
|
|
+</vbox>
|
|
+#endif
|
|
+
|
|
+<deck flex="1" id="tab-view-deck">
|
|
+<vbox flex="1" id="browser-panel">
|
|
+
|
|
+ <toolbox id="navigator-toolbox"
|
|
+ defaultmode="icons" mode="icons"
|
|
+ iconsize="large">
|
|
+ <!-- Menu -->
|
|
+ <toolbar type="menubar" id="toolbar-menubar" class="chromeclass-menubar" customizable="true"
|
|
+ defaultset="menubar-items"
|
|
+ mode="icons" iconsize="small" defaulticonsize="small"
|
|
+ lockiconsize="true"
|
|
+#ifdef MENUBAR_CAN_AUTOHIDE
|
|
+ toolbarname="&menubarCmd.label;"
|
|
+ accesskey="&menubarCmd.accesskey;"
|
|
+#endif
|
|
+ context="toolbar-context-menu">
|
|
+ <toolbaritem id="menubar-items" align="center">
|
|
+# The entire main menubar is placed into browser-menubar.inc, so that it can be shared by
|
|
+# hiddenWindow.xul.
|
|
+#include browser-menubar.inc
|
|
+ </toolbaritem>
|
|
+
|
|
+#ifdef CAN_DRAW_IN_TITLEBAR
|
|
+ <hbox class="titlebar-placeholder" type="appmenu-button" ordinal="0"/>
|
|
+ <hbox class="titlebar-placeholder" type="caption-buttons" ordinal="1000"/>
|
|
+#endif
|
|
+ </toolbar>
|
|
+
|
|
+ <toolbar id="nav-bar" class="toolbar-primary chromeclass-toolbar"
|
|
+ toolbarname="&navbarCmd.label;" accesskey="&navbarCmd.accesskey;"
|
|
+ fullscreentoolbar="true" mode="icons" customizable="true"
|
|
+ iconsize="large"
|
|
+ defaultset="unified-back-forward-button,urlbar-container,reload-button,stop-button,search-container,home-button,bookmarks-menu-button-container,window-controls"
|
|
+ context="toolbar-context-menu">
|
|
+
|
|
+ <toolbaritem id="unified-back-forward-button" class="chromeclass-toolbar-additional"
|
|
+ context="backForwardMenu" removable="true"
|
|
+ forwarddisabled="true"
|
|
+ title="&backForwardItem.title;">
|
|
+ <toolbarbutton id="back-button" class="toolbarbutton-1"
|
|
+ label="&backCmd.label;"
|
|
+ command="Browser:BackOrBackDuplicate"
|
|
+ onclick="checkForMiddleClick(this, event);"
|
|
+ tooltip="back-button-tooltip"/>
|
|
+ <toolbarbutton id="forward-button" class="toolbarbutton-1"
|
|
+ label="&forwardCmd.label;"
|
|
+ command="Browser:ForwardOrForwardDuplicate"
|
|
+ onclick="checkForMiddleClick(this, event);"
|
|
+ tooltip="forward-button-tooltip"/>
|
|
+ <dummyobservertarget hidden="true"
|
|
+ onbroadcast="if (this.getAttribute('disabled') == 'true')
|
|
+ this.parentNode.setAttribute('forwarddisabled', 'true');
|
|
+ else
|
|
+ this.parentNode.removeAttribute('forwarddisabled');">
|
|
+ <observes element="Browser:ForwardOrForwardDuplicate" attribute="disabled"/>
|
|
+ </dummyobservertarget>
|
|
+ </toolbaritem>
|
|
+
|
|
+ <toolbaritem id="urlbar-container" align="center" flex="400" persist="width" combined="true"
|
|
+ title="&locationItem.title;" class="chromeclass-location" removable="true">
|
|
+ <textbox id="urlbar" flex="1"
|
|
+ placeholder="&urlbar.placeholder;"
|
|
+ type="autocomplete"
|
|
+ autocompletesearch="urlinline history"
|
|
+ autocompletesearchparam="enable-actions"
|
|
+ autocompletepopup="PopupAutoCompleteRichResult"
|
|
+ completeselectedindex="true"
|
|
+ tabscrolling="true"
|
|
+ showcommentcolumn="true"
|
|
+ showimagecolumn="true"
|
|
+ enablehistory="true"
|
|
+ maxrows="6"
|
|
+ newlines="stripsurroundingwhitespace"
|
|
+ oninput="gBrowser.userTypedValue = this.value;"
|
|
+ ontextentered="this.handleCommand(param);"
|
|
+ ontextreverted="return this.handleRevert();"
|
|
+ pageproxystate="invalid"
|
|
+ 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="default-notification-icon" class="notification-anchor-icon" role="button"/>
|
|
+ <image id="identity-notification-icon" class="notification-anchor-icon" role="button"/>
|
|
+ <image id="geo-notification-icon" class="notification-anchor-icon" role="button"/>
|
|
+ <image id="addons-notification-icon" class="notification-anchor-icon" role="button"/>
|
|
+ <image id="indexedDB-notification-icon" class="notification-anchor-icon" role="button"/>
|
|
+ <image id="password-notification-icon" class="notification-anchor-icon" role="button"/>
|
|
+ <image id="webapps-notification-icon" class="notification-anchor-icon" role="button"/>
|
|
+ <image id="plugins-notification-icon" class="notification-anchor-icon" role="button"/>
|
|
+ <image id="blocked-plugins-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
|
|
+ has focus, otherwise pressing F6 focuses it instead of the location bar -->
|
|
+ <box id="identity-box" role="button"
|
|
+ align="center"
|
|
+ onclick="gIdentityHandler.handleIdentityButtonEvent(event);"
|
|
+ onkeypress="gIdentityHandler.handleIdentityButtonEvent(event);"
|
|
+ ondragstart="gIdentityHandler.onDragStart(event);">
|
|
+ <image id="page-proxy-favicon"
|
|
+ onclick="PageProxyClickHandler(event);"
|
|
+ pageproxystate="invalid"/>
|
|
+ <hbox id="identity-icon-labels">
|
|
+ <label id="identity-icon-label" class="plain" flex="1"/>
|
|
+ <label id="identity-icon-country-label" class="plain"/>
|
|
+ </hbox>
|
|
+ </box>
|
|
+ <box id="urlbar-display-box" align="center">
|
|
+ <label id="urlbar-display" value="&urlbar.switchToTab.label;"/>
|
|
+ </box>
|
|
+ <hbox id="urlbar-icons">
|
|
+ <image id="page-report-button"
|
|
+ class="urlbar-icon"
|
|
+ hidden="true"
|
|
+ tooltiptext="&pageReportIcon.tooltip;"
|
|
+ onclick="gPopupBlockerObserver.onReportButtonClick(event);"/>
|
|
+
|
|
+ <label id="share-button-status" collapsed="true" role="status"/>
|
|
+ <image id="share-button"
|
|
+ class="urlbar-icon"
|
|
+ hidden="true"
|
|
+ onclick="SocialShareButton.onClick(event);"/>
|
|
+
|
|
+ <image id="star-button"
|
|
+ class="urlbar-icon"
|
|
+ onclick="PlacesStarButton.onClick(event);"/>
|
|
+ <image id="go-button"
|
|
+ class="urlbar-icon"
|
|
+ tooltiptext="&goEndCap.tooltip;"
|
|
+ onclick="gURLBar.handleCommand(event);"/>
|
|
+ </hbox>
|
|
+ <toolbarbutton id="urlbar-go-button"
|
|
+ class="chromeclass-toolbar-additional"
|
|
+ onclick="gURLBar.handleCommand(event);"
|
|
+ tooltiptext="&goEndCap.tooltip;"/>
|
|
+ <toolbarbutton id="urlbar-reload-button"
|
|
+ class="chromeclass-toolbar-additional"
|
|
+ command="Browser:ReloadOrDuplicate"
|
|
+ onclick="checkForMiddleClick(this, event);"
|
|
+ tooltiptext="&reloadButton.tooltip;"/>
|
|
+ <toolbarbutton id="urlbar-stop-button"
|
|
+ class="chromeclass-toolbar-additional"
|
|
+ command="Browser:Stop"
|
|
+ tooltiptext="&stopButton.tooltip;"/>
|
|
+ </textbox>
|
|
+ </toolbaritem>
|
|
+
|
|
+ <toolbarbutton id="reload-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
|
|
+ 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;" removable="true"
|
|
+ command="Browser:Stop"
|
|
+ tooltiptext="&stopButton.tooltip;"/>
|
|
+
|
|
+ <toolbaritem id="search-container" title="&searchItem.title;"
|
|
+ align="center" class="chromeclass-toolbar-additional"
|
|
+ flex="100" persist="width" removable="true">
|
|
+ <searchbar id="searchbar" flex="1"/>
|
|
+ </toolbaritem>
|
|
+
|
|
+ <toolbarbutton id="home-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
|
|
+ persist="class" removable="true"
|
|
+ label="&homeButton.label;"
|
|
+ ondragover="homeButtonObserver.onDragOver(event)"
|
|
+ ondragenter="homeButtonObserver.onDragOver(event)"
|
|
+ ondrop="homeButtonObserver.onDrop(event)"
|
|
+ ondragexit="homeButtonObserver.onDragExit(event)"
|
|
+ onclick="BrowserGoHome(event);"
|
|
+ aboutHomeOverrideTooltip="&abouthome.pageTitle;"/>
|
|
+
|
|
+ <toolbaritem id="social-toolbar-item"
|
|
+ class="chromeclass-toolbar-additional"
|
|
+ removable="false"
|
|
+ title="&socialToolbar.title;"
|
|
+ hidden="true"
|
|
+ observes="socialActiveBroadcaster">
|
|
+ <toolbarbutton id="social-provider-button"
|
|
+ class="toolbarbutton-1"
|
|
+ type="menu">
|
|
+ <menupopup id="social-statusarea-popup">
|
|
+ <menuitem class="social-statusarea-user menuitem-iconic" pack="start" align="center"
|
|
+ observes="socialBroadcaster_userDetails"
|
|
+ oncommand="SocialUI.showProfile(); document.getElementById('social-statusarea-popup').hidePopup();">
|
|
+ <image class="social-statusarea-user-portrait"
|
|
+ observes="socialBroadcaster_userDetails"/>
|
|
+ <vbox>
|
|
+ <label class="social-statusarea-loggedInStatus"
|
|
+ observes="socialBroadcaster_userDetails"/>
|
|
+ </vbox>
|
|
+ </menuitem>
|
|
+#ifndef XP_WIN
|
|
+ <menuseparator class="social-statusarea-separator"/>
|
|
+#endif
|
|
+ <menuitem class="social-toggle-sidebar-menuitem"
|
|
+ type="checkbox"
|
|
+ autocheck="false"
|
|
+ command="Social:ToggleSidebar"
|
|
+ label="&social.toggleSidebar.label;"
|
|
+ accesskey="&social.toggleSidebar.accesskey;"/>
|
|
+ <menuitem class="social-toggle-notifications-menuitem"
|
|
+ type="checkbox"
|
|
+ autocheck="false"
|
|
+ command="Social:ToggleNotifications"
|
|
+ label="&social.toggleNotifications.label;"
|
|
+ accesskey="&social.toggleNotifications.accesskey;"/>
|
|
+ <menuseparator class="social-statusarea-separator"/>
|
|
+ <menuitem class="social-toggle-menuitem" command="Social:Toggle"/>
|
|
+ <menuitem class="social-remove-menuitem" command="Social:Remove"/>
|
|
+ </menupopup>
|
|
+ </toolbarbutton>
|
|
+ </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);"
|
|
+ ondragexit="PlacesMenuDNDHandler.onDragExit(event);"
|
|
+ ondrop="PlacesMenuDNDHandler.onDrop(event);">
|
|
+ <menupopup id="BMB_bookmarksPopup"
|
|
+ placespopup="true"
|
|
+ context="placesContext"
|
|
+ openInTabs="children"
|
|
+ oncommand="BookmarksEventHandler.onCommand(event, this.parentNode._placesView);"
|
|
+ onclick="BookmarksEventHandler.onClick(event, this.parentNode._placesView);"
|
|
+ onpopupshowing="BookmarksMenuButton.onPopupShowing(event);
|
|
+ if (!this.parentNode._placesView)
|
|
+ new PlacesMenu(event, 'place:folder=BOOKMARKS_MENU');"
|
|
+ tooltip="bhTooltip" popupsinherittooltip="true">
|
|
+ <menuitem id="BMB_viewBookmarksToolbar"
|
|
+ placesanonid="view-toolbar"
|
|
+ toolbarId="PersonalToolbar"
|
|
+ type="checkbox"
|
|
+ oncommand="onViewToolbarCommand(event)"
|
|
+ label="&viewBookmarksToolbar.label;"/>
|
|
+ <menuseparator/>
|
|
+ <menuitem id="BMB_bookmarksShowAll"
|
|
+ label="&showAllBookmarks2.label;"
|
|
+ command="Browser:ShowAllBookmarks"
|
|
+ key="manBookmarkKb"/>
|
|
+ <menuseparator/>
|
|
+ <menuitem id="BMB_bookmarkThisPage"
|
|
+#ifndef XP_MACOSX
|
|
+ class="menuitem-iconic"
|
|
+#endif
|
|
+ label="&bookmarkThisPageCmd.label;"
|
|
+ command="Browser:AddBookmarkAs"
|
|
+ key="addBookmarkAsKb"/>
|
|
+ <menuitem id="BMB_subscribeToPageMenuitem"
|
|
+#ifndef XP_MACOSX
|
|
+ class="menuitem-iconic"
|
|
+#endif
|
|
+ label="&subscribeToPageMenuitem.label;"
|
|
+ oncommand="return FeedHandler.subscribeToFeed(null, event);"
|
|
+ onclick="checkForMiddleClick(this, event);"
|
|
+ observes="singleFeedMenuitemState"/>
|
|
+ <menu id="BMB_subscribeToPageMenupopup"
|
|
+#ifndef XP_MACOSX
|
|
+ class="menu-iconic"
|
|
+#endif
|
|
+ label="&subscribeToPageMenupopup.label;"
|
|
+ observes="multipleFeedsMenuState">
|
|
+ <menupopup id="BMB_subscribeToPageSubmenuMenupopup"
|
|
+ onpopupshowing="return FeedHandler.buildFeedList(event.target);"
|
|
+ oncommand="return FeedHandler.subscribeToFeed(null, event);"
|
|
+ onclick="checkForMiddleClick(this, event);"/>
|
|
+ </menu>
|
|
+ <menuseparator/>
|
|
+ <menu id="BMB_bookmarksToolbar"
|
|
+ placesanonid="toolbar-autohide"
|
|
+ class="menu-iconic bookmark-item"
|
|
+ label="&personalbarCmd.label;"
|
|
+ container="true">
|
|
+ <menupopup id="BMB_bookmarksToolbarPopup"
|
|
+ placespopup="true"
|
|
+ context="placesContext"
|
|
+ onpopupshowing="if (!this.parentNode._placesView)
|
|
+ new PlacesMenu(event, 'place:folder=TOOLBAR');"/>
|
|
+ </menu>
|
|
+ <menuseparator/>
|
|
+ <!-- Bookmarks menu items -->
|
|
+ <menuseparator builder="end"
|
|
+ class="hide-if-empty-places-result"/>
|
|
+ <menuitem id="BMB_unsortedBookmarks"
|
|
+ label="&bookmarksMenuButton.unsorted.label;"
|
|
+ oncommand="PlacesCommandHook.showPlacesOrganizer('UnfiledBookmarks');"
|
|
+ class="menuitem-iconic"/>
|
|
+ </menupopup>
|
|
+ </toolbarbutton>
|
|
+ </toolbaritem>
|
|
+
|
|
+ <hbox id="window-controls" hidden="true" pack="end">
|
|
+ <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, this._placesView);"
|
|
+ oncommand="BookmarksEventHandler.onCommand(event, this._placesView);"
|
|
+ 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>
|
|
+
|
|
+#ifdef MENUBAR_CAN_AUTOHIDE
|
|
+#ifndef CAN_DRAW_IN_TITLEBAR
|
|
+#define APPMENU_ON_TABBAR
|
|
+#endif
|
|
+#endif
|
|
+
|
|
+
|
|
+ <toolbar id="TabsToolbar"
|
|
+ class="toolbar-primary"
|
|
+ fullscreentoolbar="true"
|
|
+ customizable="true"
|
|
+ mode="icons" lockmode="true"
|
|
+ iconsize="small" defaulticonsize="small" lockiconsize="true"
|
|
+ aria-label="&tabsToolbar.label;"
|
|
+ context="toolbar-context-menu"
|
|
+#ifdef APPMENU_ON_TABBAR
|
|
+ defaultset="appmenu-toolbar-button,tabbrowser-tabs,new-tab-button,alltabs-button,tabs-closebutton"
|
|
+#else
|
|
+ defaultset="tabbrowser-tabs,new-tab-button,alltabs-button,tabs-closebutton"
|
|
+#endif
|
|
+ collapsed="true">
|
|
+
|
|
+#ifdef APPMENU_ON_TABBAR
|
|
+ <toolbarbutton id="appmenu-toolbar-button"
|
|
+ class="chromeclass-toolbar-additional"
|
|
+ type="menu"
|
|
+ label="&brandShortName;"
|
|
+ tooltiptext="&appMenuButton.tooltip;">
|
|
+#include browser-appmenu.inc
|
|
+ </toolbarbutton>
|
|
+#endif
|
|
+
|
|
+ <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)"
|
|
+ ondragexit="newTabButtonObserver.onDragExit(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">
|
|
+ <menuitem id="menu_tabview"
|
|
+ class="menuitem-iconic"
|
|
+ key="key_tabview"
|
|
+ label="&viewTabGroups.label;"
|
|
+ command="Browser:ToggleTabView"
|
|
+ observes="tabviewGroupsNumber"/>
|
|
+ <menuseparator id="alltabs-popup-separator"/>
|
|
+ </menupopup>
|
|
+ </toolbarbutton>
|
|
+
|
|
+ <toolbarbutton id="tabs-closebutton"
|
|
+ class="close-button tabs-closebutton"
|
|
+ command="cmd_close"
|
|
+ label="&closeTab.label;"
|
|
+ tooltiptext="&closeTab.label;"/>
|
|
+
|
|
+#ifdef CAN_DRAW_IN_TITLEBAR
|
|
+ <hbox class="titlebar-placeholder" type="appmenu-button" ordinal="0"/>
|
|
+ <hbox class="titlebar-placeholder" type="caption-buttons" ordinal="1000"/>
|
|
+#endif
|
|
+ </toolbar>
|
|
+
|
|
+ <toolbarpalette id="BrowserToolbarPalette">
|
|
+
|
|
+# Update primaryToolbarButtons in browser/themes/browserShared.inc when adding
|
|
+# or removing default items with the toolbarbutton-1 class.
|
|
+
|
|
+ <toolbarbutton id="print-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
|
|
+ label="&printButton.label;" command="cmd_print"
|
|
+ tooltiptext="&printButton.tooltip;"/>
|
|
+
|
|
+ <!-- This is a placeholder for the Downloads Indicator. It is visible
|
|
+ during the customization of the toolbar, in the palette, and before
|
|
+ the Downloads Indicator overlay is loaded. -->
|
|
+ <toolbarbutton id="downloads-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
|
|
+ oncommand="DownloadsIndicatorView.onCommand(event);"
|
|
+ ondrop="DownloadsIndicatorView.onDrop(event);"
|
|
+ ondragover="DownloadsIndicatorView.onDragOver(event);"
|
|
+ ondragenter="DownloadsIndicatorView.onDragOver(event);"
|
|
+ ondragleave="DownloadsIndicatorView.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="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)"
|
|
+ ondragexit="bookmarksButtonObserver.onDragExit(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)"
|
|
+ ondragexit="newWindowButtonObserver.onDragExit(event)"/>
|
|
+
|
|
+ <toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
|
|
+ observes="View:FullScreen"
|
|
+ type="checkbox"
|
|
+ label="&fullScreenCmd.label;"
|
|
+ tooltiptext="&fullScreenButton.tooltip;"/>
|
|
+
|
|
+ <toolbaritem id="zoom-controls" class="chromeclass-toolbar-additional"
|
|
+ title="&zoomControls.label;">
|
|
+ <toolbarbutton id="zoom-out-button" class="toolbarbutton-1"
|
|
+ label="&fullZoomReduceCmd.label;"
|
|
+ command="cmd_fullZoomReduce"
|
|
+ tooltiptext="&zoomOutButton.tooltip;"/>
|
|
+ <toolbarbutton id="zoom-in-button" class="toolbarbutton-1"
|
|
+ label="&fullZoomEnlargeCmd.label;"
|
|
+ command="cmd_fullZoomEnlarge"
|
|
+ tooltiptext="&zoomInButton.tooltip;"/>
|
|
+ </toolbaritem>
|
|
+
|
|
+ <toolbarbutton id="feed-button"
|
|
+ type="menu"
|
|
+ class="toolbarbutton-1 chromeclass-toolbar-additional"
|
|
+ disabled="true"
|
|
+ label="&feedButton.label;"
|
|
+ tooltiptext="&feedButton.tooltip;"
|
|
+ onclick="return FeedHandler.onFeedButtonClick(event);">
|
|
+ <menupopup position="after_end"
|
|
+ id="feed-menu"
|
|
+ onpopupshowing="return FeedHandler.buildFeedList(this);"
|
|
+ oncommand="return FeedHandler.subscribeToFeed(null, event);"
|
|
+ onclick="checkForMiddleClick(this, event);"/>
|
|
+ </toolbarbutton>
|
|
+
|
|
+ <toolbarbutton id="cut-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
|
|
+ label="&cutCmd.label;"
|
|
+ command="cmd_cut"
|
|
+ tooltiptext="&cutButton.tooltip;"/>
|
|
+
|
|
+ <toolbarbutton id="copy-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
|
|
+ label="©Cmd.label;"
|
|
+ command="cmd_copy"
|
|
+ tooltiptext="©Button.tooltip;"/>
|
|
+
|
|
+ <toolbarbutton id="paste-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
|
|
+ label="&pasteCmd.label;"
|
|
+ command="cmd_paste"
|
|
+ tooltiptext="&pasteButton.tooltip;"/>
|
|
+
|
|
+#ifdef MOZ_SERVICES_SYNC
|
|
+ <toolbarbutton id="sync-button"
|
|
+ class="toolbarbutton-1 chromeclass-toolbar-additional"
|
|
+ label="&syncToolbarButton.label;"
|
|
+ oncommand="gSyncUI.handleToolbarButton()"/>
|
|
+#endif
|
|
+
|
|
+ <toolbaritem id="navigator-throbber" title="&throbberItem.title;" align="center" pack="center"
|
|
+ mousethrough="always">
|
|
+ <image/>
|
|
+ </toolbaritem>
|
|
+
|
|
+ <toolbarbutton id="tabview-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
|
|
+ label="&tabGroupsButton.label;"
|
|
+ command="Browser:ToggleTabView"
|
|
+ tooltiptext="&tabGroupsButton.tooltip;"
|
|
+ observes="tabviewGroupsNumber"/>
|
|
+ </toolbarpalette>
|
|
+ </toolbox>
|
|
+
|
|
+ <hbox flex="1" id="browser">
|
|
+ <vbox id="browser-border-start" hidden="true" layer="true"/>
|
|
+ <vbox id="sidebar-box" hidden="true" class="chromeclass-extrachrome">
|
|
+ <sidebarheader id="sidebar-header" align="center">
|
|
+ <label id="sidebar-title" persist="value" flex="1" crop="end" control="sidebar"/>
|
|
+ <image id="sidebar-throbber"/>
|
|
+ <toolbarbutton class="tabs-closebutton" tooltiptext="&sidebarCloseButton.tooltip;" oncommand="toggleSidebar();"/>
|
|
+ </sidebarheader>
|
|
+ <browser id="sidebar" flex="1" autoscroll="false" disablehistory="true"
|
|
+ style="min-width: 14em; width: 18em; max-width: 36em;"/>
|
|
+ </vbox>
|
|
+
|
|
+ <splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" hidden="true"/>
|
|
+ <vbox id="appcontent" flex="1">
|
|
+ <tabbrowser id="content" disablehistory="true"
|
|
+ flex="1" contenttooltip="aHTMLTooltip"
|
|
+ tabcontainer="tabbrowser-tabs"
|
|
+ contentcontextmenu="contentAreaContextMenu"
|
|
+ autocompletepopup="PopupAutoComplete"
|
|
+ onclick="contentAreaClick(event, false);"/>
|
|
+ <chatbar id="pinnedchats" layer="true" mousethrough="always" hidden="true"/>
|
|
+ <statuspanel id="statusbar-display" inactive="true"/>
|
|
+ </vbox>
|
|
+ <splitter id="devtools-side-splitter" hidden="true"/>
|
|
+ <vbox id="devtools-sidebar-box" hidden="true"
|
|
+ style="min-width: 18em; width: 22em; max-width: 42em;" persist="width">
|
|
+ <toolbar id="devtools-sidebar-toolbar"
|
|
+ class="devtools-toolbar"
|
|
+ nowindowdrag="true">
|
|
+ <spacer flex="1"/>
|
|
+ <toolbarbutton tooltiptext="&inspectSidebarCloseButton.tooltiptext;"
|
|
+ class="devtools-closebutton"
|
|
+ command="Inspector:Sidebar"/>
|
|
+ </toolbar>
|
|
+ <deck id="devtools-sidebar-deck" flex="1"/>
|
|
+ </vbox>
|
|
+ <splitter id="social-sidebar-splitter"
|
|
+ class="chromeclass-extrachrome sidebar-splitter"
|
|
+ observes="socialSidebarBroadcaster"/>
|
|
+ <vbox id="social-sidebar-box"
|
|
+ class="chromeclass-extrachrome"
|
|
+ observes="socialSidebarBroadcaster"
|
|
+ persist="width">
|
|
+ <browser id="social-sidebar-browser"
|
|
+ type="content"
|
|
+ disableglobalhistory="true"
|
|
+ flex="1"
|
|
+ style="min-width: 14em; width: 18em; max-width: 36em;"/>
|
|
+ </vbox>
|
|
+ <vbox id="browser-border-end" hidden="true" layer="true"/>
|
|
+ </hbox>
|
|
+
|
|
+ <hbox id="full-screen-warning-container" hidden="true" fadeout="true">
|
|
+ <hbox style="width: 100%;" pack="center"> <!-- Inner hbox needed due to bug 579776. -->
|
|
+ <vbox id="full-screen-warning-message" align="center">
|
|
+ <description id="full-screen-domain-text"/>
|
|
+ <description class="full-screen-description" value="&fullscreenExitHint.value;"/>
|
|
+ <vbox id="full-screen-approval-pane" align="center">
|
|
+ <description class="full-screen-description" value="&fullscreenApproval.value;"/>
|
|
+ <hbox>
|
|
+ <button label="&fullscreenAllowButton.label;"
|
|
+ oncommand="FullScreen.setFullscreenAllowed(true);"
|
|
+ class="full-screen-approval-button"/>
|
|
+ <button label="&fullscreenExitButton.label;"
|
|
+ oncommand="FullScreen.setFullscreenAllowed(false);"
|
|
+ class="full-screen-approval-button"/>
|
|
+ </hbox>
|
|
+ <checkbox id="full-screen-remember-decision"/>
|
|
+ </vbox>
|
|
+ </vbox>
|
|
+ </hbox>
|
|
+ </hbox>
|
|
+
|
|
+ <vbox id="browser-bottombox" layer="true">
|
|
+ <toolbar id="inspector-toolbar"
|
|
+ class="devtools-toolbar"
|
|
+ nowindowdrag="true"
|
|
+ hidden="true">
|
|
+#ifdef XP_MACOSX
|
|
+ <toolbarbutton id="highlighter-closebutton"
|
|
+ class="devtools-closebutton"
|
|
+ oncommand="InspectorUI.closeInspectorUI(false);"
|
|
+ tooltiptext="&inspectCloseButton.tooltiptext;"/>
|
|
+#endif
|
|
+ <toolbarbutton id="inspector-inspect-toolbutton"
|
|
+ class="devtools-toolbarbutton"
|
|
+ command="Inspector:Inspect"/>
|
|
+ <toolbarbutton id="inspector-treepanel-toolbutton"
|
|
+ class="devtools-toolbarbutton"
|
|
+ tabindex="0"
|
|
+ aria-label="&markupButton.arialabel;"
|
|
+ accesskey="&markupButton.accesskey;"
|
|
+ command="Inspector:HTMLPanel"/>
|
|
+ <arrowscrollbox id="inspector-breadcrumbs"
|
|
+ flex="1" orient="horizontal"
|
|
+ clicktoscroll="true"/>
|
|
+ <hbox id="inspector-tools">
|
|
+ <toolbarbutton id="inspector-3D-button"
|
|
+ class="devtools-toolbarbutton"
|
|
+ hidden="true"
|
|
+ label="&inspect3DViewButton.label;"
|
|
+ accesskey="&inspect3DViewButton.accesskey;"
|
|
+ tabindex="0"
|
|
+ command="Inspector:Tilt"/>
|
|
+ <toolbarbutton id="inspector-style-button"
|
|
+ class="devtools-toolbarbutton"
|
|
+ label="&inspectStyleButton.label;"
|
|
+ accesskey="&inspectStyleButton.accesskey;"
|
|
+ tabindex="0"
|
|
+ command="Inspector:Sidebar"/>
|
|
+ <!-- registered tools go here -->
|
|
+ </hbox>
|
|
+#ifndef XP_MACOSX
|
|
+ <toolbarbutton id="highlighter-closebutton"
|
|
+ class="devtools-closebutton"
|
|
+ oncommand="InspectorUI.closeInspectorUI(false);"
|
|
+ tooltiptext="&inspectCloseButton.tooltiptext;"/>
|
|
+#endif
|
|
+ </toolbar>
|
|
+
|
|
+ <toolbar id="developer-toolbar"
|
|
+ class="devtools-toolbar"
|
|
+ hidden="true">
|
|
+#ifdef XP_MACOSX
|
|
+ <toolbarbutton id="developer-toolbar-closebutton"
|
|
+ class="devtools-closebutton"
|
|
+ oncommand="DeveloperToolbar.hide();"
|
|
+ tooltiptext="&devToolbarCloseButton.tooltiptext;"/>
|
|
+#endif
|
|
+ <stack class="gclitoolbar-stack-node" flex="1">
|
|
+ <hbox class="gclitoolbar-prompt">
|
|
+ <label class="gclitoolbar-prompt-label">»</label>
|
|
+ </hbox>
|
|
+ <hbox class="gclitoolbar-complete-node"/>
|
|
+ <textbox class="gclitoolbar-input-node" rows="1"/>
|
|
+ </stack>
|
|
+ <toolbarbutton id="developer-toolbar-webconsole"
|
|
+ class="developer-toolbar-button"
|
|
+ observes="devtoolsMenuBroadcaster_WebConsole"/>
|
|
+ <toolbarbutton id="developer-toolbar-inspector"
|
|
+ class="developer-toolbar-button"
|
|
+ observes="devtoolsMenuBroadcaster_Inspect"/>
|
|
+ <toolbarbutton id="developer-toolbar-styleeditor"
|
|
+ class="developer-toolbar-button"
|
|
+ observes="devtoolsMenuBroadcaster_StyleEditor"/>
|
|
+ <toolbarbutton id="developer-toolbar-debugger"
|
|
+ class="developer-toolbar-button"
|
|
+ observes="devtoolsMenuBroadcaster_Debugger"/>
|
|
+ <toolbarbutton id="developer-toolbar-other-tools"
|
|
+ type="menu"
|
|
+ class="developer-toolbar-button"
|
|
+ label="&devToolbarOtherToolsButton.label;">
|
|
+ <menupopup position="before_end">
|
|
+ <menuitem observes="devtoolsMenuBroadcaster_DevToolbar"/>
|
|
+ <menuitem observes="devtoolsMenuBroadcaster_ResponsiveUI"/>
|
|
+ <menuitem observes="devtoolsMenuBroadcaster_RemoteDebugger"/>
|
|
+ <menuitem observes="devtoolsMenuBroadcaster_ChromeDebugger"/>
|
|
+ <menuitem observes="devtoolsMenuBroadcaster_Scratchpad"/>
|
|
+ <menuitem observes="devtoolsMenuBroadcaster_StyleEditor"/>
|
|
+ <menuitem observes="devtoolsMenuBroadcaster_PageSource"/>
|
|
+ <menuitem observes="devtoolsMenuBroadcaster_ErrorConsole"/>
|
|
+ <menuseparator/>
|
|
+ <menuitem observes="devtoolsMenuBroadcaster_GetMoreTools"/>
|
|
+ </menupopup>
|
|
+ </toolbarbutton>
|
|
+
|
|
+#ifndef XP_MACOSX
|
|
+ <toolbarbutton id="developer-toolbar-closebutton"
|
|
+ class="devtools-closebutton"
|
|
+ oncommand="DeveloperToolbar.hide();"
|
|
+ tooltiptext="&devToolbarCloseButton.tooltiptext;"/>
|
|
+#endif
|
|
+ </toolbar>
|
|
+
|
|
+ <toolbar id="addon-bar"
|
|
+ toolbarname="&addonBarCmd.label;" accesskey="&addonBarCmd.accesskey;"
|
|
+ collapsed="true"
|
|
+ class="toolbar-primary chromeclass-toolbar"
|
|
+ context="toolbar-context-menu" toolboxid="navigator-toolbox"
|
|
+ mode="icons" iconsize="small" defaulticonsize="small"
|
|
+ lockiconsize="true"
|
|
+ defaultset="addonbar-closebutton,spring,status-bar"
|
|
+ customizable="true"
|
|
+ key="key_toggleAddonBar">
|
|
+ <toolbarbutton id="addonbar-closebutton"
|
|
+ tooltiptext="&addonBarCloseButton.tooltip;"
|
|
+ oncommand="setToolbarVisibility(this.parentNode, false);"/>
|
|
+ <statusbar id="status-bar" ordinal="1000"/>
|
|
+ </toolbar>
|
|
+ </vbox>
|
|
+
|
|
+#ifndef XP_UNIX
|
|
+ <svg:svg height="0">
|
|
+ <svg:clipPath id="winstripe-keyhole-forward-clip-path" clipPathUnits="objectBoundingBox">
|
|
+ <svg:path d="M 0,0 C 0.16,0.11 0.28,0.29 0.28,0.5 0.28,0.71 0.16,0.89 0,1 L 1,1 1,0 0,0 z"/>
|
|
+ </svg:clipPath>
|
|
+ <svg:clipPath id="winstripe-urlbar-back-button-clip-path" clipPathUnits="userSpaceOnUse">
|
|
+ <svg:path d="M 0,0 0,7.8 C 2.5,11 4,14 4,18 4,22 2.5,25 0,28 l 0,22 10000,0 0,-50 L 0,0 z"/>
|
|
+ </svg:clipPath>
|
|
+ </svg:svg>
|
|
+#endif
|
|
+#ifdef XP_MACOSX
|
|
+ <svg:svg height="0">
|
|
+ <svg:clipPath id="pinstripe-keyhole-forward-clip-path" clipPathUnits="objectBoundingBox">
|
|
+ <svg:path d="M 0,0 C 0.15,0.12 0.25,0.3 0.25,0.5 0.25,0.7 0.15,0.88 0,1 L 1,1 1,0 0,0 z"/>
|
|
+ </svg:clipPath>
|
|
+ <svg:clipPath id="pinstripe-urlbar-back-button-clip-path" clipPathUnits="userSpaceOnUse">
|
|
+ <svg:path d="m 0,-5 0,4.03 C 3.6,1.8 6,6.1 6,11 6,16 3.6,20 0,23 l 0,27 10000,0 0,-55 L 0,-5 z"/>
|
|
+ </svg:clipPath>
|
|
+ <svg:clipPath id="pinstripe-tab-ontop-left-curve-clip-path" clipPathUnits="userSpaceOnUse">
|
|
+ <svg:path d="M 9,0 C 7.3,0 6,1.3 6,3 l 0,14 c 0,3 -2.2,5 -5,5 l -1,0 0,1 12,0 0,-1 0,-19 0,-3 -3,0 z"/>
|
|
+ </svg:clipPath>
|
|
+ <svg:clipPath id="pinstripe-tab-ontop-right-curve-clip-path" clipPathUnits="userSpaceOnUse">
|
|
+ <svg:path d="m 0,0 0,3 0,19 0,1 12,0 0,-1 -1,0 C 8.2,22 6,20 6,17 L 6,3 C 6,1.3 4.7,0 3,0 L 0,0 z"/>
|
|
+ </svg:clipPath>
|
|
+ <svg:clipPath id="pinstripe-tab-onbottom-left-curve-clip-path" clipPathUnits="userSpaceOnUse">
|
|
+ <svg:path d="m 0,0 0,1 1,0 c 2.8,0 5,2.2 5,5 l 0,14 c 0,2 1.3,3 3,3 l 3,0 0,-3 L 12,1 12,0 0,0 z"/>
|
|
+ </svg:clipPath>
|
|
+ <svg:clipPath id="pinstripe-tab-onbottom-right-curve-clip-path" clipPathUnits="userSpaceOnUse">
|
|
+ <svg:path d="m 0,0 0,1 0,19 0,3 3,0 c 1.7,0 3,-1 3,-3 L 6,6 C 6,3.2 8.2,1 11,1 L 12,1 12,0 0,0 z"/>
|
|
+ </svg:clipPath>
|
|
+ </svg:svg>
|
|
+#endif
|
|
+
|
|
+</vbox>
|
|
+# <iframe id="tab-view"> is dynamically appended as the 2nd child of #tab-view-deck.
|
|
+# Introducing the iframe dynamically, as needed, was found to be better than
|
|
+# starting with an empty iframe here in browser.xul from a Ts standpoint.
|
|
+</deck>
|
|
+
|
|
+</window>
|
|
diff --git a/browser/base/jar.mn b/browser/base/jar.mn
|
|
--- a/browser/base/jar.mn
|
|
+++ b/browser/base/jar.mn
|
|
@@ -50,16 +50,18 @@ browser.jar:
|
|
content/browser/abouthome/mozilla@2x.png (content/abouthome/mozilla@2x.png)
|
|
#endif
|
|
content/browser/aboutRobots-icon.png (content/aboutRobots-icon.png)
|
|
content/browser/aboutRobots-widget-left.png (content/aboutRobots-widget-left.png)
|
|
content/browser/aboutSocialError.xhtml (content/aboutSocialError.xhtml)
|
|
* content/browser/browser.css (content/browser.css)
|
|
* content/browser/browser.js (content/browser.js)
|
|
* content/browser/browser.xul (content/browser.xul)
|
|
+* content/browser/browser-kde.xul (content/browser-kde.xul)
|
|
+% override chrome://browser/content/browser.xul chrome://browser/content/browser-kde.xul desktop=kde
|
|
* content/browser/browser-tabPreviews.xml (content/browser-tabPreviews.xml)
|
|
content/browser/content.js (content/content.js)
|
|
content/browser/newtab/newTab.xul (content/newtab/newTab.xul)
|
|
* content/browser/newtab/newTab.js (content/newtab/newTab.js)
|
|
content/browser/newtab/newTab.css (content/newtab/newTab.css)
|
|
content/browser/newtab/preload.xhtml (content/newtab/preload.xhtml)
|
|
* content/browser/pageinfo/pageInfo.xul (content/pageinfo/pageInfo.xul)
|
|
* content/browser/pageinfo/pageInfo.js (content/pageinfo/pageInfo.js)
|
|
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
|
|
@@ -8,17 +8,17 @@
|
|
#include "nsBrowserCompsCID.h"
|
|
#include "DirectoryProvider.h"
|
|
|
|
#if defined(XP_WIN)
|
|
#include "nsWindowsShellService.h"
|
|
#elif defined(XP_MACOSX)
|
|
#include "nsMacShellService.h"
|
|
#elif defined(MOZ_WIDGET_GTK2)
|
|
-#include "nsGNOMEShellService.h"
|
|
+#include "nsUnixShellService.h"
|
|
#endif
|
|
|
|
#if defined(XP_WIN)
|
|
#include "nsIEHistoryEnumerator.h"
|
|
#endif
|
|
|
|
#include "rdf.h"
|
|
#include "nsFeedSniffer.h"
|
|
@@ -32,18 +32,16 @@ using namespace mozilla::browser;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
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)
|
|
#endif
|
|
|
|
#if defined(XP_WIN)
|
|
NS_GENERIC_FACTORY_CONSTRUCTOR(nsIEHistoryEnumerator)
|
|
#endif
|
|
|
|
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFeedSniffer)
|
|
|
|
@@ -64,17 +62,17 @@ NS_DEFINE_NAMED_CID(NS_SHELLSERVICE_CID)
|
|
#endif
|
|
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)
|
|
- { &kNS_SHELLSERVICE_CID, false, NULL, nsGNOMEShellServiceConstructor },
|
|
+ { &kNS_SHELLSERVICE_CID, false, NULL, nsUnixShellServiceConstructor },
|
|
#endif
|
|
{ &kNS_FEEDSNIFFER_CID, false, NULL, nsFeedSnifferConstructor },
|
|
{ &kNS_BROWSER_ABOUT_REDIRECTOR_CID, false, NULL, AboutRedirector::Create },
|
|
#if defined(XP_WIN)
|
|
{ &kNS_WINIEHISTORYENUMERATOR_CID, false, NULL, nsIEHistoryEnumeratorConstructor },
|
|
#elif defined(XP_MACOSX)
|
|
{ &kNS_SHELLSERVICE_CID, false, NULL, nsMacShellServiceConstructor },
|
|
#endif
|
|
diff --git a/browser/components/preferences/advanced.js b/browser/components/preferences/advanced.js
|
|
--- a/browser/components/preferences/advanced.js
|
|
+++ b/browser/components/preferences/advanced.js
|
|
@@ -23,16 +23,22 @@ var gAdvancedPane = {
|
|
if (extraArgs && extraArgs["advancedTab"]){
|
|
advancedPrefs.selectedTab = document.getElementById(extraArgs["advancedTab"]);
|
|
} else {
|
|
var preference = document.getElementById("browser.preferences.advanced.selectedTabIndex");
|
|
if (preference.value !== null)
|
|
advancedPrefs.selectedIndex = preference.value;
|
|
}
|
|
|
|
+ var env = Components.classes["@mozilla.org/process/environment;1"]
|
|
+ .getService(Components.interfaces.nsIEnvironment);
|
|
+ var kde_session = 0;
|
|
+ if (env.get('KDE_FULL_SESSION') == "true")
|
|
+ kde_session = 1;
|
|
+
|
|
#ifdef HAVE_SHELL_SERVICE
|
|
this.updateSetDefaultBrowser();
|
|
#ifdef XP_WIN
|
|
// In Windows 8 we launch the control panel since it's the only
|
|
// way to get all file type association prefs. So we don't know
|
|
// when the user will select the default. We refresh here periodically
|
|
// in case the default changes. On other Windows OS's defaults can also
|
|
// be set while the prefs are open.
|
|
@@ -715,14 +721,25 @@ var gAdvancedPane = {
|
|
* Set browser as the operating system default browser.
|
|
*/
|
|
setDefaultBrowser: function()
|
|
{
|
|
let shellSvc = getShellService();
|
|
if (!shellSvc)
|
|
return;
|
|
shellSvc.setDefaultBrowser(true, false);
|
|
+ if (kde_session == 1) {
|
|
+ var shellObj = Components.classes["@mozilla.org/file/local;1"]
|
|
+ .createInstance(Components.interfaces.nsILocalFile);
|
|
+ shellObj.initWithPath("/usr/bin/kwriteconfig");
|
|
+ var process = Components.classes["@mozilla.org/process/util;1"]
|
|
+ .createInstance(Components.interfaces.nsIProcess);
|
|
+ process.init(shellObj);
|
|
+ var args = ["--file", "kdeglobals", "--group", "General", "--key",
|
|
+ "BrowserApplication", "MozillaFirefox"];
|
|
+ process.run(false, args, args.length);
|
|
+ }
|
|
let selectedIndex =
|
|
shellSvc.isDefaultBrowser(false, true) ? 1 : 0;
|
|
document.getElementById("setDefaultPane").selectedIndex = selectedIndex;
|
|
}
|
|
#endif
|
|
};
|
|
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
|
|
@@ -17,17 +17,18 @@ USE_STATIC_LIBS = 1
|
|
|
|
ifeq ($(OS_ARCH),WINNT)
|
|
CPPSRCS = nsWindowsShellService.cpp
|
|
else
|
|
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
|
|
CPPSRCS = nsMacShellService.cpp
|
|
else
|
|
ifeq ($(MOZ_WIDGET_TOOLKIT), gtk2)
|
|
-CPPSRCS = nsGNOMEShellService.cpp
|
|
+CPPSRCS = nsUnixShellService.cpp nsGNOMEShellService.cpp nsKDEShellService.cpp
|
|
+LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
ifdef CPPSRCS
|
|
LIBRARY_NAME = shellservice_s
|
|
endif
|
|
|
|
diff --git a/browser/components/shell/src/nsKDEShellService.cpp b/browser/components/shell/src/nsKDEShellService.cpp
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/browser/components/shell/src/nsKDEShellService.cpp
|
|
@@ -0,0 +1,234 @@
|
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
+/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
+
|
|
+#include "nsKDEShellService.h"
|
|
+#include "nsShellService.h"
|
|
+#include "nsKDEUtils.h"
|
|
+#include "nsCOMPtr.h"
|
|
+#include "nsIPrefService.h"
|
|
+#include "nsIProcess.h"
|
|
+#include "nsIFile.h"
|
|
+#include "nsServiceManagerUtils.h"
|
|
+#include "nsComponentManagerUtils.h"
|
|
+#include "nsIMutableArray.h"
|
|
+#include "nsISupportsPrimitives.h"
|
|
+#include "nsArrayUtils.h"
|
|
+
|
|
+nsresult
|
|
+nsKDEShellService::Init()
|
|
+ {
|
|
+ if( !nsKDEUtils::kdeSupport())
|
|
+ return NS_ERROR_NOT_AVAILABLE;
|
|
+ return NS_OK;
|
|
+ }
|
|
+
|
|
+NS_IMPL_ISUPPORTS1(nsKDEShellService, nsIShellService)
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::IsDefaultBrowser(bool aStartupCheck,
|
|
+ bool aForAllTypes,
|
|
+ bool* aIsDefaultBrowser)
|
|
+ {
|
|
+ *aIsDefaultBrowser = false;
|
|
+ if (aStartupCheck)
|
|
+ mCheckedThisSession = true;
|
|
+
|
|
+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
|
|
+ if (!command)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
|
+ if (!str)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ str->SetData( NS_LITERAL_CSTRING( "ISDEFAULTBROWSER" ));
|
|
+ command->AppendElement( str, false );
|
|
+
|
|
+ if( nsKDEUtils::command( command ))
|
|
+ *aIsDefaultBrowser = true;
|
|
+ return NS_OK;
|
|
+ }
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::SetDefaultBrowser(bool aClaimAllTypes,
|
|
+ bool aForAllUsers)
|
|
+ {
|
|
+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
|
|
+ if (!command)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ nsCOMPtr<nsISupportsCString> cmdstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
|
+ nsCOMPtr<nsISupportsCString> paramstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
|
+ if (!cmdstr || !paramstr)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ cmdstr->SetData( NS_LITERAL_CSTRING( "SETDEFAULTBROWSER" ));
|
|
+ command->AppendElement( cmdstr, false );
|
|
+
|
|
+ paramstr->SetData( aClaimAllTypes ? NS_LITERAL_CSTRING( "ALLTYPES" ) : NS_LITERAL_CSTRING( "NORMAL" ));
|
|
+ command->AppendElement( paramstr, false );
|
|
+
|
|
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::GetShouldCheckDefaultBrowser(bool* aResult)
|
|
+{
|
|
+ // If we've already checked, the browser has been started and this is a
|
|
+ // new window open, and we don't want to check again.
|
|
+ if (mCheckedThisSession) {
|
|
+ *aResult = false;
|
|
+ return NS_OK;
|
|
+ }
|
|
+
|
|
+ nsCOMPtr<nsIPrefBranch> prefs;
|
|
+ nsCOMPtr<nsIPrefService> pserve(do_GetService(NS_PREFSERVICE_CONTRACTID));
|
|
+ if (pserve)
|
|
+ pserve->GetBranch("", getter_AddRefs(prefs));
|
|
+
|
|
+ if (prefs)
|
|
+ prefs->GetBoolPref(PREF_CHECKDEFAULTBROWSER, aResult);
|
|
+
|
|
+ return NS_OK;
|
|
+}
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::SetShouldCheckDefaultBrowser(bool aShouldCheck)
|
|
+{
|
|
+ nsCOMPtr<nsIPrefBranch> prefs;
|
|
+ nsCOMPtr<nsIPrefService> pserve(do_GetService(NS_PREFSERVICE_CONTRACTID));
|
|
+ if (pserve)
|
|
+ pserve->GetBranch("", getter_AddRefs(prefs));
|
|
+
|
|
+ if (prefs)
|
|
+ prefs->SetBoolPref(PREF_CHECKDEFAULTBROWSER, aShouldCheck);
|
|
+
|
|
+ return NS_OK;
|
|
+}
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::GetCanSetDesktopBackground(bool* aResult)
|
|
+{
|
|
+ *aResult = true;
|
|
+ return NS_OK;
|
|
+}
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::SetDesktopBackground(nsIDOMElement* aElement,
|
|
+ PRInt32 aPosition)
|
|
+ {
|
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
|
+ }
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::GetDesktopBackgroundColor(PRUint32 *aColor)
|
|
+ {
|
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
|
+ }
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::SetDesktopBackgroundColor(PRUint32 aColor)
|
|
+ {
|
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
|
+ }
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::OpenApplication(PRInt32 aApplication)
|
|
+ {
|
|
+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
|
|
+ if (!command)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
|
+ if (!str)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ if( aApplication == APPLICATION_MAIL )
|
|
+ str->SetData( NS_LITERAL_CSTRING( "OPENMAIL" ));
|
|
+ else if( aApplication == APPLICATION_NEWS )
|
|
+ str->SetData( NS_LITERAL_CSTRING( "OPENNEWS" ));
|
|
+ else
|
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
|
+
|
|
+ command->AppendElement( str, false );
|
|
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::OpenApplicationWithURI(nsIFile* aApplication, const nsACString& aURI)
|
|
+ {
|
|
+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
|
|
+ if (!command)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ nsCOMPtr<nsISupportsCString> cmdstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
|
+ nsCOMPtr<nsISupportsCString> appstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
|
+ nsCOMPtr<nsISupportsCString> uristr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
|
+ if (!cmdstr || !appstr || !uristr)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ cmdstr->SetData( NS_LITERAL_CSTRING( "RUN" ));
|
|
+ command->AppendElement( cmdstr, false );
|
|
+ nsAutoCString app;
|
|
+ nsresult rv = aApplication->GetNativePath( app );
|
|
+ NS_ENSURE_SUCCESS( rv, rv );
|
|
+ appstr->SetData( app );
|
|
+ command->AppendElement( appstr, false );
|
|
+ uristr->SetData( aURI );
|
|
+ command->AppendElement( uristr, false );
|
|
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
|
|
+ }
|
|
+
|
|
+NS_IMETHODIMP
|
|
+nsKDEShellService::GetDefaultFeedReader(nsIFile** _retval)
|
|
+ {
|
|
+ *_retval = nullptr;
|
|
+
|
|
+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
|
|
+ if( !command )
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
|
|
+ if( !str )
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ str->SetData( NS_LITERAL_CSTRING( "GETDEFAULTFEEDREADER" ));
|
|
+ command->AppendElement( str, false );
|
|
+
|
|
+ nsCOMPtr<nsIArray> output;
|
|
+ if( !nsKDEUtils::command( command, getter_AddRefs( output ) ) )
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ PRUint32 length;
|
|
+ output->GetLength( &length );
|
|
+ if( length != 1 )
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ nsCOMPtr<nsISupportsCString> resstr = do_QueryElementAt( output, 0 );
|
|
+ if( !resstr )
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ nsAutoCString path;
|
|
+ resstr->GetData( path );
|
|
+ if (path.IsEmpty())
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ nsresult rv;
|
|
+ nsCOMPtr<nsIFile> defaultReader =
|
|
+ do_CreateInstance("@mozilla.org/file/local;1", &rv);
|
|
+ NS_ENSURE_SUCCESS(rv, rv);
|
|
+
|
|
+ rv = defaultReader->InitWithNativePath(path);
|
|
+ NS_ENSURE_SUCCESS(rv, rv);
|
|
+
|
|
+ bool exists;
|
|
+ rv = defaultReader->Exists(&exists);
|
|
+ NS_ENSURE_SUCCESS(rv, rv);
|
|
+ if (!exists)
|
|
+ return NS_ERROR_FAILURE;
|
|
+
|
|
+ NS_ADDREF(*_retval = defaultReader);
|
|
+ return NS_OK;
|
|
+ }
|
|
diff --git a/browser/components/shell/src/nsKDEShellService.h b/browser/components/shell/src/nsKDEShellService.h
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/browser/components/shell/src/nsKDEShellService.h
|
|
@@ -0,0 +1,59 @@
|
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
+/* ***** BEGIN LICENSE BLOCK *****
|
|
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
+ *
|
|
+ * The contents of this file are subject to the Mozilla Public License Version
|
|
+ * 1.1 (the "License"); you may not use this file except in compliance with
|
|
+ * the License. You may obtain a copy of the License at
|
|
+ * http://www.mozilla.org/MPL/
|
|
+ *
|
|
+ * Software distributed under the License is distributed on an "AS IS" basis,
|
|
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
+ * for the specific language governing rights and limitations under the
|
|
+ * License.
|
|
+ *
|
|
+ * The Original Code is Shell Service.
|
|
+ *
|
|
+ * The Initial Developer of the Original Code is mozilla.org.
|
|
+ * Portions created by the Initial Developer are Copyright (C) 2004
|
|
+ * the Initial Developer. All Rights Reserved.
|
|
+ *
|
|
+ * Contributor(s):
|
|
+ *
|
|
+ * Alternatively, the contents of this file may be used under the terms of
|
|
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
+ * in which case the provisions of the GPL or the LGPL are applicable instead
|
|
+ * of those above. If you wish to allow use of your version of this file only
|
|
+ * under the terms of either the GPL or the LGPL, and not to allow others to
|
|
+ * use your version of this file under the terms of the MPL, indicate your
|
|
+ * decision by deleting the provisions above and replace them with the notice
|
|
+ * and other provisions required by the GPL or the LGPL. If you do not delete
|
|
+ * the provisions above, a recipient may use your version of this file under
|
|
+ * the terms of any one of the MPL, the GPL or the LGPL.
|
|
+ *
|
|
+ * ***** END LICENSE BLOCK ***** */
|
|
+
|
|
+#ifndef nskdeshellservice_h____
|
|
+#define nskdeshellservice_h____
|
|
+
|
|
+#include "nsIShellService.h"
|
|
+#include "nsStringAPI.h"
|
|
+
|
|
+class nsKDEShellService : public nsIShellService
|
|
+{
|
|
+public:
|
|
+ nsKDEShellService() : mCheckedThisSession(PR_FALSE) { }
|
|
+
|
|
+ NS_DECL_ISUPPORTS
|
|
+ NS_DECL_NSISHELLSERVICE
|
|
+
|
|
+ nsresult Init() NS_HIDDEN;
|
|
+
|
|
+private:
|
|
+ ~nsKDEShellService() {}
|
|
+
|
|
+ PRPackedBool mCheckedThisSession;
|
|
+};
|
|
+
|
|
+#endif // nskdeshellservice_h____
|
|
diff --git a/browser/components/shell/src/nsUnixShellService.cpp b/browser/components/shell/src/nsUnixShellService.cpp
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/browser/components/shell/src/nsUnixShellService.cpp
|
|
@@ -0,0 +1,52 @@
|
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
+/* ***** BEGIN LICENSE BLOCK *****
|
|
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
+ *
|
|
+ * The contents of this file are subject to the Mozilla Public License Version
|
|
+ * 1.1 (the "License"); you may not use this file except in compliance with
|
|
+ * the License. You may obtain a copy of the License at
|
|
+ * http://www.mozilla.org/MPL/
|
|
+ *
|
|
+ * Software distributed under the License is distributed on an "AS IS" basis,
|
|
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
+ * for the specific language governing rights and limitations under the
|
|
+ * License.
|
|
+ *
|
|
+ * The Original Code is Shell Service.
|
|
+ *
|
|
+ * The Initial Developer of the Original Code is mozilla.org.
|
|
+ * Portions created by the Initial Developer are Copyright (C) 2004
|
|
+ * the Initial Developer. All Rights Reserved.
|
|
+ *
|
|
+ * Contributor(s):
|
|
+ *
|
|
+ * Alternatively, the contents of this file may be used under the terms of
|
|
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
+ * in which case the provisions of the GPL or the LGPL are applicable instead
|
|
+ * of those above. If you wish to allow use of your version of this file only
|
|
+ * under the terms of either the GPL or the LGPL, and not to allow others to
|
|
+ * use your version of this file under the terms of the MPL, indicate your
|
|
+ * decision by deleting the provisions above and replace them with the notice
|
|
+ * and other provisions required by the GPL or the LGPL. If you do not delete
|
|
+ * the provisions above, a recipient may use your version of this file under
|
|
+ * the terms of any one of the MPL, the GPL or the LGPL.
|
|
+ *
|
|
+ * ***** END LICENSE BLOCK ***** */
|
|
+
|
|
+#include "nsUnixShellService.h"
|
|
+#include "nsGNOMEShellService.h"
|
|
+#include "nsKDEShellService.h"
|
|
+#include "nsKDEUtils.h"
|
|
+#include "mozilla/ModuleUtils.h"
|
|
+
|
|
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init)
|
|
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsKDEShellService, Init)
|
|
+
|
|
+NS_METHOD
|
|
+nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult)
|
|
+{
|
|
+ if( nsKDEUtils::kdeSupport())
|
|
+ return nsKDEShellServiceConstructor( aOuter, aIID, aResult );
|
|
+ return nsGNOMEShellServiceConstructor( aOuter, aIID, aResult );
|
|
+}
|
|
diff --git a/browser/components/shell/src/nsUnixShellService.h b/browser/components/shell/src/nsUnixShellService.h
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/browser/components/shell/src/nsUnixShellService.h
|
|
@@ -0,0 +1,45 @@
|
|
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
+/* ***** BEGIN LICENSE BLOCK *****
|
|
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
+ *
|
|
+ * The contents of this file are subject to the Mozilla Public License Version
|
|
+ * 1.1 (the "License"); you may not use this file except in compliance with
|
|
+ * the License. You may obtain a copy of the License at
|
|
+ * http://www.mozilla.org/MPL/
|
|
+ *
|
|
+ * Software distributed under the License is distributed on an "AS IS" basis,
|
|
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
+ * for the specific language governing rights and limitations under the
|
|
+ * License.
|
|
+ *
|
|
+ * The Original Code is Shell Service.
|
|
+ *
|
|
+ * The Initial Developer of the Original Code is mozilla.org.
|
|
+ * Portions created by the Initial Developer are Copyright (C) 2004
|
|
+ * the Initial Developer. All Rights Reserved.
|
|
+ *
|
|
+ * Contributor(s):
|
|
+ *
|
|
+ * Alternatively, the contents of this file may be used under the terms of
|
|
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
+ * in which case the provisions of the GPL or the LGPL are applicable instead
|
|
+ * of those above. If you wish to allow use of your version of this file only
|
|
+ * under the terms of either the GPL or the LGPL, and not to allow others to
|
|
+ * use your version of this file under the terms of the MPL, indicate your
|
|
+ * decision by deleting the provisions above and replace them with the notice
|
|
+ * and other provisions required by the GPL or the LGPL. If you do not delete
|
|
+ * the provisions above, a recipient may use your version of this file under
|
|
+ * the terms of any one of the MPL, the GPL or the LGPL.
|
|
+ *
|
|
+ * ***** END LICENSE BLOCK ***** */
|
|
+
|
|
+#ifndef nsunixshellservice_h____
|
|
+#define nsunixshellservice_h____
|
|
+
|
|
+#include "nsIShellService.h"
|
|
+
|
|
+NS_METHOD
|
|
+nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult);
|
|
+
|
|
+#endif // nsunixshellservice_h____
|
|
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
|
|
@@ -578,18 +578,20 @@
|
|
@BINPATH@/@PREF_DIR@/healthreport-prefs.js
|
|
#endif
|
|
@BINPATH@/greprefs.js
|
|
@BINPATH@/defaults/autoconfig/platform.js
|
|
@BINPATH@/defaults/autoconfig/prefcalls.js
|
|
#ifndef LIBXUL_SDK
|
|
; Warning: changing the path to channel-prefs.js can cause bugs (Bug 756325)
|
|
@BINPATH@/defaults/pref/channel-prefs.js
|
|
+@BINPATH@/defaults/pref/kde.js
|
|
#else
|
|
@BINPATH@/@PREF_DIR@/channel-prefs.js
|
|
+@BINPATH@/@PREF_DIR@/kde.js
|
|
#endif
|
|
@BINPATH@/defaults/profile/prefs.js
|
|
|
|
; [Layout Engine Resources]
|
|
; Style Sheets, Graphics and other Resources used by the layout engine.
|
|
@BINPATH@/res/EditorOverride.css
|
|
@BINPATH@/res/contenteditable.css
|
|
@BINPATH@/res/designmode.css
|