firefox-kde.patch
branchfirefox45
changeset 904 6a889427cd4f
parent 899 44a28160de40
child 909 c6717354928b
equal deleted inserted replaced
903:83801946c93f 904:6a889427cd4f
     1 # HG changeset patch
     1 # HG changeset patch
     2 # Parent  77c3bdc27160dfa96aa4b3288c7f12a72f273967
     2 # Parent  25d63ce139ad6e957d2565e3b83d01dfa36ea314
     3 
     3 
     4 diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul
     4 diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul
     5 new file mode 100644
     5 new file mode 100644
     6 --- /dev/null
     6 --- /dev/null
     7 +++ b/browser/base/content/browser-kde.xul
     7 +++ b/browser/base/content/browser-kde.xul
     8 @@ -0,0 +1,1250 @@
     8 @@ -0,0 +1,1181 @@
     9 +#filter substitution
     9 +#filter substitution
    10 +<?xml version="1.0"?>
    10 +<?xml version="1.0"?>
    11 +# -*- Mode: HTML -*-
    11 +# -*- Mode: HTML -*-
    12 +#
    12 +#
    13 +# This Source Code Form is subject to the terms of the Mozilla Public
    13 +# This Source Code Form is subject to the terms of the Mozilla Public
    97 +                accesskey="&pinTab.accesskey;"
    97 +                accesskey="&pinTab.accesskey;"
    98 +                oncommand="gBrowser.pinTab(TabContextMenu.contextTab);"/>
    98 +                oncommand="gBrowser.pinTab(TabContextMenu.contextTab);"/>
    99 +      <menuitem id="context_unpinTab" label="&unpinTab.label;" hidden="true"
    99 +      <menuitem id="context_unpinTab" label="&unpinTab.label;" hidden="true"
   100 +                accesskey="&unpinTab.accesskey;"
   100 +                accesskey="&unpinTab.accesskey;"
   101 +                oncommand="gBrowser.unpinTab(TabContextMenu.contextTab);"/>
   101 +                oncommand="gBrowser.unpinTab(TabContextMenu.contextTab);"/>
   102 +      <menu id="context_tabViewMenu" label="&moveToGroup.label;"
       
   103 +            accesskey="&moveToGroup.accesskey;">
       
   104 +        <menupopup id="context_tabViewMenuPopup"
       
   105 +                   onpopupshowing="if (event.target == this) TabView.moveToGroupPopupShowing(event);">
       
   106 +          <menuseparator id="context_tabViewNamedGroups" hidden="true"/>
       
   107 +          <menuitem id="context_tabViewNewGroup" label="&moveToNewGroup.label;"
       
   108 +                    oncommand="TabView.moveTabTo(TabContextMenu.contextTab, null);"/>
       
   109 +        </menupopup>
       
   110 +      </menu>
       
   111 +      <menuitem id="context_openTabInWindow" label="&moveToNewWindow.label;"
   102 +      <menuitem id="context_openTabInWindow" label="&moveToNewWindow.label;"
   112 +                accesskey="&moveToNewWindow.accesskey;"
   103 +                accesskey="&moveToNewWindow.accesskey;"
   113 +                tbattr="tabbrowser-multiple"
   104 +                tbattr="tabbrowser-multiple"
   114 +                oncommand="gBrowser.replaceTabWithWindow(TabContextMenu.contextTab);"/>
   105 +                oncommand="gBrowser.replaceTabWithWindow(TabContextMenu.contextTab);"/>
   115 +#ifdef E10S_TESTING_ONLY
   106 +#ifdef E10S_TESTING_ONLY
   125 +      <menuitem id="context_bookmarkAllTabs"
   116 +      <menuitem id="context_bookmarkAllTabs"
   126 +                label="&bookmarkAllTabs.label;"
   117 +                label="&bookmarkAllTabs.label;"
   127 +                accesskey="&bookmarkAllTabs.accesskey;"
   118 +                accesskey="&bookmarkAllTabs.accesskey;"
   128 +                command="Browser:BookmarkAllTabs"/>
   119 +                command="Browser:BookmarkAllTabs"/>
   129 +      <menuitem id="context_closeTabsToTheEnd" label="&closeTabsToTheEnd.label;" accesskey="&closeTabsToTheEnd.accesskey;"
   120 +      <menuitem id="context_closeTabsToTheEnd" label="&closeTabsToTheEnd.label;" accesskey="&closeTabsToTheEnd.accesskey;"
   130 +                oncommand="gBrowser.removeTabsToTheEndFrom(TabContextMenu.contextTab);"/>
   121 +                oncommand="gBrowser.removeTabsToTheEndFrom(TabContextMenu.contextTab, {animate: true});"/>
   131 +      <menuitem id="context_closeOtherTabs" label="&closeOtherTabs.label;" accesskey="&closeOtherTabs.accesskey;"
   122 +      <menuitem id="context_closeOtherTabs" label="&closeOtherTabs.label;" accesskey="&closeOtherTabs.accesskey;"
   132 +                oncommand="gBrowser.removeAllTabsBut(TabContextMenu.contextTab);"/>
   123 +                oncommand="gBrowser.removeAllTabsBut(TabContextMenu.contextTab);"/>
   133 +      <menuseparator/>
   124 +      <menuseparator/>
   134 +      <menuitem id="context_undoCloseTab"
   125 +      <menuitem id="context_undoCloseTab"
   135 +                label="&undoCloseTab.label;"
   126 +                label="&undoCloseTab.label;"
   267 +           consumeoutsideclicks="false"
   258 +           consumeoutsideclicks="false"
   268 +           mousethrough="always">
   259 +           mousethrough="always">
   269 +      <box id="UITourHighlight"></box>
   260 +      <box id="UITourHighlight"></box>
   270 +    </panel>
   261 +    </panel>
   271 +
   262 +
   272 +    <panel id="abouthome-search-panel" orient="vertical" type="arrow" hidden="true"
       
   273 +           onclick="this.hidePopup()">
       
   274 +      <hbox id="abouthome-search-panel-manage"
       
   275 +            onclick="openPreferences('paneSearch')">
       
   276 +        <label>&changeSearchSettings.button;</label>
       
   277 +      </hbox>
       
   278 +    </panel>
       
   279 +
       
   280 +    <panel id="social-share-panel"
   263 +    <panel id="social-share-panel"
   281 +           class="social-panel"
   264 +           class="social-panel"
   282 +           type="arrow"
   265 +           type="arrow"
   283 +           orient="vertical"
   266 +           orient="vertical"
   284 +           onpopupshowing="SocialShare.onShowing()"
   267 +           onpopupshowing="SocialShare.onShowing()"
   324 +    <panel id="loop-panel"
   307 +    <panel id="loop-panel"
   325 +           class="loop-panel social-panel"
   308 +           class="loop-panel social-panel"
   326 +           type="arrow"
   309 +           type="arrow"
   327 +           orient="horizontal"
   310 +           orient="horizontal"
   328 +           hidden="true"/>
   311 +           hidden="true"/>
   329 +
       
   330 +    <menupopup id="processHangOptions"
       
   331 +               onpopupshowing="ProcessHangMonitor.refreshMenu(window);">
       
   332 +      <menuitem id="processHangTerminateScript"
       
   333 +                oncommand="ProcessHangMonitor.terminateScript(window)"
       
   334 +                accesskey="&processHang.terminateScript.accessKey;"
       
   335 +                label="&processHang.terminateScript.label;"/>
       
   336 +      <menuitem id="processHangDebugScript"
       
   337 +                oncommand="ProcessHangMonitor.debugScript(window)"
       
   338 +                accesskey="&processHang.debugScript.accessKey;"
       
   339 +                label="&processHang.debugScript.label;"/>
       
   340 +      <menuitem id="processHangTerminatePlugin"
       
   341 +                oncommand="ProcessHangMonitor.terminatePlugin(window)"
       
   342 +                accesskey="&processHang.terminatePlugin.accessKey;"
       
   343 +                label="&processHang.terminatePlugin.label;"/>
       
   344 +      <menuitem id="processHangTerminateProcess"
       
   345 +                oncommand="ProcessHangMonitor.terminateProcess(window)"
       
   346 +                accesskey="&processHang.terminateProcess.accessKey;"
       
   347 +                label="&processHang.terminateProcess.label;"/>
       
   348 +    </menupopup>
       
   349 +
   312 +
   350 +    <menupopup id="toolbar-context-menu"
   313 +    <menupopup id="toolbar-context-menu"
   351 +               onpopupshowing="onViewToolbarsPopupShowing(event, document.getElementById('viewToolbarsMenuSeparator'));">
   314 +               onpopupshowing="onViewToolbarsPopupShowing(event, document.getElementById('viewToolbarsMenuSeparator'));">
   352 +      <menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"
   315 +      <menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"
   353 +                accesskey="&customizeMenu.moveToPanel.accesskey;"
   316 +                accesskey="&customizeMenu.moveToPanel.accesskey;"
   506 +      </vbox>
   469 +      </vbox>
   507 +    </hbox>
   470 +    </hbox>
   508 +
   471 +
   509 +    <tooltip id="dynamic-shortcut-tooltip"
   472 +    <tooltip id="dynamic-shortcut-tooltip"
   510 +             onpopupshowing="UpdateDynamicShortcutTooltipText(this);"/>
   473 +             onpopupshowing="UpdateDynamicShortcutTooltipText(this);"/>
   511 +
       
   512 +    <menupopup id="emeNotificationsPopup">
       
   513 +      <menuitem id="emeNotificationsNotNow"
       
   514 +                label="&emeNotificationsNotNow.label;"
       
   515 +                acceskey="&emeNotificationsNotNow.accesskey;"
       
   516 +                oncommand="gEMEHandler.onNotNow(this);"/>
       
   517 +      <menuitem id="emeNotificationsDontAskAgain"
       
   518 +                label="&emeNotificationsDontAskAgain.label;"
       
   519 +                acceskey="&emeNotificationsDontAskAgain.accesskey;"
       
   520 +                oncommand="gEMEHandler.onDontAskAgain(this);"/>
       
   521 +    </menupopup>
       
   522 +  </popupset>
   474 +  </popupset>
   523 +
   475 +
   524 +#ifdef CAN_DRAW_IN_TITLEBAR
   476 +#ifdef CAN_DRAW_IN_TITLEBAR
   525 +<vbox id="titlebar">
   477 +<vbox id="titlebar">
   526 +  <hbox id="titlebar-content">
   478 +  <hbox id="titlebar-content">
   624 +                     label="&listAllTabs.label;"
   576 +                     label="&listAllTabs.label;"
   625 +                     tooltiptext="&listAllTabs.label;"
   577 +                     tooltiptext="&listAllTabs.label;"
   626 +                     removable="false">
   578 +                     removable="false">
   627 +        <menupopup id="alltabs-popup"
   579 +        <menupopup id="alltabs-popup"
   628 +                   position="after_end">
   580 +                   position="after_end">
   629 +          <menuitem id="menu_tabview"
       
   630 +                    class="menuitem-iconic"
       
   631 +                    key="key_tabview"
       
   632 +                    label="&viewTabGroups.label;"
       
   633 +                    command="Browser:ToggleTabView"
       
   634 +                    observes="tabviewGroupsNumber"/>
       
   635 +          <menuitem id="alltabs_undoCloseTab"
   581 +          <menuitem id="alltabs_undoCloseTab"
   636 +                    class="menuitem-iconic"
   582 +                    class="menuitem-iconic"
   637 +                    key="key_undoCloseTab"
   583 +                    key="key_undoCloseTab"
   638 +                    label="&undoCloseTab.label;"
   584 +                    label="&undoCloseTab.label;"
   639 +                    observes="History:UndoCloseTab"/>
   585 +                    observes="History:UndoCloseTab"/>
   738 +                <image id="webapps-notification-icon" class="notification-anchor-icon" role="button"
   684 +                <image id="webapps-notification-icon" class="notification-anchor-icon" role="button"
   739 +                       aria-label="&urlbar.webappsNotificationAnchor.label;"/>
   685 +                       aria-label="&urlbar.webappsNotificationAnchor.label;"/>
   740 +                <image id="plugins-notification-icon" class="notification-anchor-icon" role="button"
   686 +                <image id="plugins-notification-icon" class="notification-anchor-icon" role="button"
   741 +                       aria-label="&urlbar.pluginsNotificationAnchor.label;"/>
   687 +                       aria-label="&urlbar.pluginsNotificationAnchor.label;"/>
   742 +                <image id="web-notifications-notification-icon" class="notification-anchor-icon" role="button"
   688 +                <image id="web-notifications-notification-icon" class="notification-anchor-icon" role="button"
   743 +                       aria-label="&urlbar.webNotsNotificationAnchor.label;"/>
   689 +                       aria-label="&urlbar.webNotsNotificationAnchor3.label;"/>
   744 +                <image id="webRTC-shareDevices-notification-icon" class="notification-anchor-icon" role="button"
   690 +                <image id="webRTC-shareDevices-notification-icon" class="notification-anchor-icon" role="button"
   745 +                       aria-label="&urlbar.webRTCShareDevicesNotificationAnchor.label;"/>
   691 +                       aria-label="&urlbar.webRTCShareDevicesNotificationAnchor.label;"/>
   746 +                <image id="webRTC-sharingDevices-notification-icon" class="notification-anchor-icon" role="button"
   692 +                <image id="webRTC-sharingDevices-notification-icon" class="notification-anchor-icon" role="button"
   747 +                       aria-label="&urlbar.webRTCSharingDevicesNotificationAnchor.label;"/>
   693 +                       aria-label="&urlbar.webRTCSharingDevicesNotificationAnchor.label;"/>
   748 +                <image id="webRTC-shareMicrophone-notification-icon" class="notification-anchor-icon" role="button"
   694 +                <image id="webRTC-shareMicrophone-notification-icon" class="notification-anchor-icon" role="button"
   772 +                   align="center"
   718 +                   align="center"
   773 +                   aria-label="&urlbar.viewSiteInfo.label;"
   719 +                   aria-label="&urlbar.viewSiteInfo.label;"
   774 +                   onclick="gIdentityHandler.handleIdentityButtonEvent(event);"
   720 +                   onclick="gIdentityHandler.handleIdentityButtonEvent(event);"
   775 +                   onkeypress="gIdentityHandler.handleIdentityButtonEvent(event);"
   721 +                   onkeypress="gIdentityHandler.handleIdentityButtonEvent(event);"
   776 +                   ondragstart="gIdentityHandler.onDragStart(event);">
   722 +                   ondragstart="gIdentityHandler.onDragStart(event);">
   777 +                <hbox id="identity-icons"
   723 +                <image id="identity-icon"
   778 +                      consumeanchor="identity-box">
   724 +                       consumeanchor="identity-box"
   779 +                  <image id="tracking-protection-icon"/>
   725 +                       onclick="PageProxyClickHandler(event);"/>
   780 +                  <image id="page-proxy-favicon"
   726 +                <image id="tracking-protection-icon"/>
   781 +                         onclick="PageProxyClickHandler(event);"
   727 +                <image id="connection-icon"/>
   782 +                         pageproxystate="invalid"/>
       
   783 +                </hbox>
       
   784 +                <hbox id="identity-icon-labels">
   728 +                <hbox id="identity-icon-labels">
   785 +                  <label id="identity-icon-label" class="plain" flex="1"/>
   729 +                  <label id="identity-icon-label" class="plain" flex="1"/>
   786 +                  <label id="identity-icon-country-label" class="plain"/>
   730 +                  <label id="identity-icon-country-label" class="plain"/>
   787 +                </hbox>
   731 +                </hbox>
   788 +              </box>
   732 +              </box>
  1089 +      <toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
  1033 +      <toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
  1090 +                     observes="View:FullScreen"
  1034 +                     observes="View:FullScreen"
  1091 +                     type="checkbox"
  1035 +                     type="checkbox"
  1092 +                     label="&fullScreenCmd.label;"
  1036 +                     label="&fullScreenCmd.label;"
  1093 +                     tooltip="dynamic-shortcut-tooltip"/>
  1037 +                     tooltip="dynamic-shortcut-tooltip"/>
  1094 +
       
  1095 +#ifdef MOZ_SERVICES_SYNC
       
  1096 +      <toolbarbutton id="sync-button"
       
  1097 +                     class="toolbarbutton-1 chromeclass-toolbar-additional"
       
  1098 +                     label="&syncToolbarButton.label;"
       
  1099 +                     oncommand="gSyncUI.handleToolbarButton()"/>
       
  1100 +#endif
       
  1101 +
       
  1102 +      <toolbarbutton id="tabview-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
       
  1103 +                     label="&tabGroupsButton.label;"
       
  1104 +                     command="Browser:ToggleTabView"
       
  1105 +                     tooltip="dynamic-shortcut-tooltip"
       
  1106 +                     observes="tabviewGroupsNumber"/>
       
  1107 +    </toolbarpalette>
  1038 +    </toolbarpalette>
  1108 +  </toolbox>
  1039 +  </toolbox>
  1109 +
  1040 +
  1110 +  <hbox id="fullscr-toggler" hidden="true"/>
  1041 +  <hbox id="fullscr-toggler" hidden="true"/>
  1111 +
  1042 +
  1257 +
  1188 +
  1258 +</window>
  1189 +</window>
  1259 diff --git a/browser/base/jar.mn b/browser/base/jar.mn
  1190 diff --git a/browser/base/jar.mn b/browser/base/jar.mn
  1260 --- a/browser/base/jar.mn
  1191 --- a/browser/base/jar.mn
  1261 +++ b/browser/base/jar.mn
  1192 +++ b/browser/base/jar.mn
  1262 @@ -70,16 +70,18 @@ browser.jar:
  1193 @@ -71,16 +71,18 @@ browser.jar:
  1263          content/browser/aboutSocialError.xhtml        (content/aboutSocialError.xhtml)
       
  1264          content/browser/aboutProviderDirectory.xhtml  (content/aboutProviderDirectory.xhtml)
       
  1265          content/browser/aboutTabCrashed.css           (content/aboutTabCrashed.css)
  1194          content/browser/aboutTabCrashed.css           (content/aboutTabCrashed.css)
  1266          content/browser/aboutTabCrashed.js            (content/aboutTabCrashed.js)
  1195          content/browser/aboutTabCrashed.js            (content/aboutTabCrashed.js)
  1267          content/browser/aboutTabCrashed.xhtml         (content/aboutTabCrashed.xhtml)
  1196          content/browser/aboutTabCrashed.xhtml         (content/aboutTabCrashed.xhtml)
       
  1197  *       content/browser/aboutTabGroupsMigration.xhtml (content/aboutTabGroupsMigration.xhtml)
       
  1198          content/browser/aboutTabGroupsMigration.js    (content/aboutTabGroupsMigration.js)
  1268  *       content/browser/browser.css                   (content/browser.css)
  1199  *       content/browser/browser.css                   (content/browser.css)
  1269  *       content/browser/browser.js                    (content/browser.js)
  1200          content/browser/browser.js                    (content/browser.js)
  1270  *       content/browser/browser.xul                   (content/browser.xul)
  1201  *       content/browser/browser.xul                   (content/browser.xul)
  1271 +*       content/browser/browser-kde.xul               (content/browser-kde.xul)
  1202 +*       content/browser/browser-kde.xul               (content/browser-kde.xul)
  1272 +%       override chrome://browser/content/browser.xul chrome://browser/content/browser-kde.xul desktop=kde
  1203 +%       override chrome://browser/content/browser.xul chrome://browser/content/browser-kde.xul desktop=kde
  1273  *       content/browser/browser-tabPreviews.xml       (content/browser-tabPreviews.xml)
  1204          content/browser/browser-addons.js             (content/browser-addons.js)
  1274  *       content/browser/chatWindow.xul                (content/chatWindow.xul)
  1205          content/browser/browser-ctrlTab.js            (content/browser-ctrlTab.js)
  1275          content/browser/tab-content.js                (content/tab-content.js)
  1206          content/browser/browser-customization.js      (content/browser-customization.js)
  1276          content/browser/content.js                    (content/content.js)
  1207          content/browser/browser-data-submission-info-bar.js (content/browser-data-submission-info-bar.js)
  1277          content/browser/social-content.js             (content/social-content.js)
  1208          content/browser/browser-devedition.js         (content/browser-devedition.js)
  1278          content/browser/defaultthemes/1.footer.jpg    (content/defaultthemes/1.footer.jpg)
  1209          content/browser/browser-eme.js                (content/browser-eme.js)
  1279          content/browser/defaultthemes/1.header.jpg    (content/defaultthemes/1.header.jpg)
  1210          content/browser/browser-feeds.js              (content/browser-feeds.js)
  1280          content/browser/defaultthemes/1.icon.jpg      (content/defaultthemes/1.icon.jpg)
  1211          content/browser/browser-fullScreen.js         (content/browser-fullScreen.js)
  1281 diff --git a/browser/components/build/nsModule.cpp b/browser/components/build/nsModule.cpp
  1212 diff --git a/browser/components/build/nsModule.cpp b/browser/components/build/nsModule.cpp
  1282 --- a/browser/components/build/nsModule.cpp
  1213 --- a/browser/components/build/nsModule.cpp
  1283 +++ b/browser/components/build/nsModule.cpp
  1214 +++ b/browser/components/build/nsModule.cpp
  1284 @@ -8,17 +8,17 @@
  1215 @@ -8,17 +8,17 @@
  1285  #include "nsBrowserCompsCID.h"
  1216  #include "nsBrowserCompsCID.h"
  1294 +#include "nsUnixShellService.h"
  1225 +#include "nsUnixShellService.h"
  1295  #endif
  1226  #endif
  1296  
  1227  
  1297  #if defined(XP_WIN)
  1228  #if defined(XP_WIN)
  1298  #include "nsIEHistoryEnumerator.h"
  1229  #include "nsIEHistoryEnumerator.h"
  1299  #include "nsEdgeReadingListExtractor.h"
       
  1300  #endif
  1230  #endif
  1301  
  1231  
  1302  #include "rdf.h"
  1232  #include "rdf.h"
  1303 @@ -32,18 +32,16 @@ using namespace mozilla::browser;
  1233  #include "nsFeedSniffer.h"
       
  1234 @@ -31,18 +31,16 @@ using namespace mozilla::browser;
  1304  
  1235  
  1305  /////////////////////////////////////////////////////////////////////////////
  1236  /////////////////////////////////////////////////////////////////////////////
  1306  
  1237  
  1307  NS_GENERIC_FACTORY_CONSTRUCTOR(DirectoryProvider)
  1238  NS_GENERIC_FACTORY_CONSTRUCTOR(DirectoryProvider)
  1308  #if defined(XP_WIN)
  1239  #if defined(XP_WIN)
  1313 -NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init)
  1244 -NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init)
  1314  #endif
  1245  #endif
  1315  
  1246  
  1316  #if defined(XP_WIN)
  1247  #if defined(XP_WIN)
  1317  NS_GENERIC_FACTORY_CONSTRUCTOR(nsIEHistoryEnumerator)
  1248  NS_GENERIC_FACTORY_CONSTRUCTOR(nsIEHistoryEnumerator)
  1318  NS_GENERIC_FACTORY_CONSTRUCTOR(nsEdgeReadingListExtractor)
       
  1319  #endif
  1249  #endif
  1320  
  1250  
  1321  NS_GENERIC_FACTORY_CONSTRUCTOR(nsFeedSniffer)
  1251  NS_GENERIC_FACTORY_CONSTRUCTOR(nsFeedSniffer)
  1322 @@ -63,17 +61,17 @@ NS_DEFINE_NAMED_CID(NS_EDGEREADINGLISTEX
  1252  
       
  1253 @@ -60,17 +58,17 @@ NS_DEFINE_NAMED_CID(NS_WINIEHISTORYENUME
  1323  NS_DEFINE_NAMED_CID(NS_SHELLSERVICE_CID);
  1254  NS_DEFINE_NAMED_CID(NS_SHELLSERVICE_CID);
  1324  #endif
  1255  #endif
  1325  
  1256  
  1326  static const mozilla::Module::CIDEntry kBrowserCIDs[] = {
  1257  static const mozilla::Module::CIDEntry kBrowserCIDs[] = {
  1327      { &kNS_BROWSERDIRECTORYPROVIDER_CID, false, nullptr, DirectoryProviderConstructor },
  1258      { &kNS_BROWSERDIRECTORYPROVIDER_CID, false, nullptr, DirectoryProviderConstructor },
  1333  #endif
  1264  #endif
  1334      { &kNS_FEEDSNIFFER_CID, false, nullptr, nsFeedSnifferConstructor },
  1265      { &kNS_FEEDSNIFFER_CID, false, nullptr, nsFeedSnifferConstructor },
  1335      { &kNS_BROWSER_ABOUT_REDIRECTOR_CID, false, nullptr, AboutRedirector::Create },
  1266      { &kNS_BROWSER_ABOUT_REDIRECTOR_CID, false, nullptr, AboutRedirector::Create },
  1336  #if defined(XP_WIN)
  1267  #if defined(XP_WIN)
  1337      { &kNS_WINIEHISTORYENUMERATOR_CID, false, nullptr, nsIEHistoryEnumeratorConstructor },
  1268      { &kNS_WINIEHISTORYENUMERATOR_CID, false, nullptr, nsIEHistoryEnumeratorConstructor },
  1338      { &kNS_EDGEREADINGLISTEXTRACTOR_CID, false, nullptr, nsEdgeReadingListExtractorConstructor },
       
  1339  #elif defined(XP_MACOSX)
  1269  #elif defined(XP_MACOSX)
  1340      { &kNS_SHELLSERVICE_CID, false, nullptr, nsMacShellServiceConstructor },
  1270      { &kNS_SHELLSERVICE_CID, false, nullptr, nsMacShellServiceConstructor },
       
  1271  #endif
  1341 diff --git a/browser/components/preferences/in-content/main.js b/browser/components/preferences/in-content/main.js
  1272 diff --git a/browser/components/preferences/in-content/main.js b/browser/components/preferences/in-content/main.js
  1342 --- a/browser/components/preferences/in-content/main.js
  1273 --- a/browser/components/preferences/in-content/main.js
  1343 +++ b/browser/components/preferences/in-content/main.js
  1274 +++ b/browser/components/preferences/in-content/main.js
  1344 @@ -14,16 +14,22 @@ var gMainPane = {
  1275 @@ -18,16 +18,22 @@ var gMainPane = {
  1345    init: function ()
  1276    init: function ()
  1346    {
  1277    {
  1347      function setEventListener(aId, aEventType, aCallback)
  1278      function setEventListener(aId, aEventType, aCallback)
  1348      {
  1279      {
  1349        document.getElementById(aId)
  1280        document.getElementById(aId)
  1362      // In Windows 8 we launch the control panel since it's the only
  1293      // In Windows 8 we launch the control panel since it's the only
  1363      // way to get all file type association prefs. So we don't know
  1294      // way to get all file type association prefs. So we don't know
  1364      // when the user will select the default.  We refresh here periodically
  1295      // when the user will select the default.  We refresh here periodically
  1365      // in case the default changes.  On other Windows OS's defaults can also
  1296      // in case the default changes.  On other Windows OS's defaults can also
  1366      // be set while the prefs are open.
  1297      // be set while the prefs are open.
  1367 @@ -711,16 +717,27 @@ var gMainPane = {
  1298 @@ -720,16 +726,27 @@ var gMainPane = {
  1368     */
  1299     */
  1369    setDefaultBrowser: function()
  1300    setDefaultBrowser: function()
  1370    {
  1301    {
  1371      let shellSvc = getShellService();
  1302      let shellSvc = getShellService();
  1372      if (!shellSvc)
  1303      if (!shellSvc)
  1416      'nsSetDefaultBrowser.manifest',
  1347      'nsSetDefaultBrowser.manifest',
  1417 diff --git a/browser/components/shell/nsKDEShellService.cpp b/browser/components/shell/nsKDEShellService.cpp
  1348 diff --git a/browser/components/shell/nsKDEShellService.cpp b/browser/components/shell/nsKDEShellService.cpp
  1418 new file mode 100644
  1349 new file mode 100644
  1419 --- /dev/null
  1350 --- /dev/null
  1420 +++ b/browser/components/shell/nsKDEShellService.cpp
  1351 +++ b/browser/components/shell/nsKDEShellService.cpp
  1421 @@ -0,0 +1,292 @@
  1352 @@ -0,0 +1,251 @@
  1422 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
  1353 +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
  1423 +/* This Source Code Form is subject to the terms of the Mozilla Public
  1354 +/* This Source Code Form is subject to the terms of the Mozilla Public
  1424 + * License, v. 2.0. If a copy of the MPL was not distributed with this
  1355 + * License, v. 2.0. If a copy of the MPL was not distributed with this
  1425 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
  1356 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
  1426 +
  1357 +
  1494 +
  1425 +
  1495 +    paramstr->SetData( aClaimAllTypes ? NS_LITERAL_CSTRING( "ALLTYPES" ) : NS_LITERAL_CSTRING( "NORMAL" ));
  1426 +    paramstr->SetData( aClaimAllTypes ? NS_LITERAL_CSTRING( "ALLTYPES" ) : NS_LITERAL_CSTRING( "NORMAL" ));
  1496 +    command->AppendElement( paramstr, false );
  1427 +    command->AppendElement( paramstr, false );
  1497 +
  1428 +
  1498 +    return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
  1429 +    return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
  1499 +}
       
  1500 +
       
  1501 +NS_IMETHODIMP
       
  1502 +nsKDEShellService::GetShouldSkipCheckDefaultBrowser(bool* aResult)
       
  1503 +{
       
  1504 +  NS_ENSURE_ARG_POINTER(aResult);
       
  1505 +
       
  1506 +  nsresult rv;
       
  1507 +  nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
       
  1508 +  if (NS_FAILED(rv)) {
       
  1509 +    return rv;
       
  1510 +  }
       
  1511 +
       
  1512 +  rv = prefs->GetBoolPref(PREF_SKIPDEFAULTBROWSERCHECK, aResult);
       
  1513 +  if (NS_FAILED(rv)) {
       
  1514 +    return rv;
       
  1515 +  }
       
  1516 +  if (*aResult) {
       
  1517 +    // Only skip the default browser check once. The next attempt in
       
  1518 +    // a new session should proceed.
       
  1519 +    return prefs->SetBoolPref(PREF_SKIPDEFAULTBROWSERCHECK, false);
       
  1520 +  }
       
  1521 +
       
  1522 +  int32_t defaultBrowserCheckCount;
       
  1523 +  rv = prefs->GetIntPref(PREF_DEFAULTBROWSERCHECKCOUNT,
       
  1524 +                         &defaultBrowserCheckCount);
       
  1525 +  if (NS_FAILED(rv)) {
       
  1526 +    return rv;
       
  1527 +  }
       
  1528 +  if (defaultBrowserCheckCount < 4) {
       
  1529 +    *aResult = false;
       
  1530 +    return prefs->SetIntPref(PREF_DEFAULTBROWSERCHECKCOUNT,
       
  1531 +                             defaultBrowserCheckCount + 1);
       
  1532 +  }
       
  1533 +
       
  1534 +  // Disable the default browser check after three attempts.
       
  1535 +  // Don't modify PREF_CHECKDEFAULTBROWSER since that is a
       
  1536 +  // user-initiated action and it shouldn't get re-enabled
       
  1537 +  // if it has been user disabled.
       
  1538 +  *aResult = true;
       
  1539 +  return rv;
       
  1540 +}
  1430 +}
  1541 +
  1431 +
  1542 +NS_IMETHODIMP
  1432 +NS_IMETHODIMP
  1543 +nsKDEShellService::GetShouldCheckDefaultBrowser(bool* aResult)
  1433 +nsKDEShellService::GetShouldCheckDefaultBrowser(bool* aResult)
  1544 +{
  1434 +{
  1793 +
  1683 +
  1794 +#endif // nsunixshellservice_h____
  1684 +#endif // nsunixshellservice_h____
  1795 diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
  1685 diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
  1796 --- a/browser/installer/package-manifest.in
  1686 --- a/browser/installer/package-manifest.in
  1797 +++ b/browser/installer/package-manifest.in
  1687 +++ b/browser/installer/package-manifest.in
  1798 @@ -709,16 +709,17 @@
  1688 @@ -705,16 +705,17 @@
  1799  @RESPATH@/defaults/autoconfig/prefcalls.js
  1689  @RESPATH@/defaults/autoconfig/prefcalls.js
  1800  @RESPATH@/browser/defaults/profile/prefs.js
  1690  @RESPATH@/browser/defaults/profile/prefs.js
  1801  @RESPATH@/browser/defaults/permissions
  1691  @RESPATH@/browser/defaults/permissions
  1802  
  1692  
  1803  ; Warning: changing the path to channel-prefs.js can cause bugs (Bug 756325)
  1693  ; Warning: changing the path to channel-prefs.js can cause bugs (Bug 756325)
  1808  
  1698  
  1809  ; Services (gre) prefs
  1699  ; Services (gre) prefs
  1810  #ifdef MOZ_SERVICES_NOTIFICATIONS
  1700  #ifdef MOZ_SERVICES_NOTIFICATIONS
  1811  @RESPATH@/defaults/pref/services-notifications.js
  1701  @RESPATH@/defaults/pref/services-notifications.js
  1812  #endif
  1702  #endif
  1813  #ifdef MOZ_SERVICES_SYNC
       
  1814  @RESPATH@/defaults/pref/services-sync.js
  1703  @RESPATH@/defaults/pref/services-sync.js
  1815  #endif
  1704  
       
  1705  ; [Layout Engine Resources]