--- a/firefox-kde.patch Sat Jan 26 22:42:57 2019 +0100
+++ b/firefox-kde.patch Thu Jan 31 11:21:22 2019 +0100
@@ -1,11 +1,11 @@
# HG changeset patch
-# Parent f2429084f187d5758508ae547c411943cba60fcf
+# Parent 693f0baece29cc958a7d91b89fd12e3b89a502e3
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,1384 @@
+@@ -0,0 +1,1395 @@
+#filter substitution
+<?xml version="1.0"?>
+# -*- Mode: HTML -*-
@@ -81,6 +81,7 @@
+ persist="screenX screenY width height sizemode"
+#ifdef BROWSER_XHTML
+ hidden="true"
++ mozpersist=""
+#endif
+ >
+
@@ -95,7 +96,22 @@
+#endif
+>
+ Services.scriptloader.loadSubScript("chrome://global/content/contentAreaUtils.js", this);
++ Services.scriptloader.loadSubScript("chrome://browser/content/browser-captivePortal.js", this);
++ Services.scriptloader.loadSubScript("chrome://browser/content/browser-compacttheme.js", this);
++ Services.scriptloader.loadSubScript("chrome://browser/content/browser-contentblocking.js", this);
++#ifdef MOZ_DATA_REPORTING
++ Services.scriptloader.loadSubScript("chrome://browser/content/browser-data-submission-info-bar.js", this);
++#endif
++#ifndef MOZILLA_OFFICIAL
++ Services.scriptloader.loadSubScript("chrome://browser/content/browser-development-helpers.js", this);
++#endif
++ Services.scriptloader.loadSubScript("chrome://browser/content/browser-media.js", this);
++ Services.scriptloader.loadSubScript("chrome://browser/content/browser-pageActions.js", this);
++ Services.scriptloader.loadSubScript("chrome://browser/content/browser-plugins.js", this);
++ Services.scriptloader.loadSubScript("chrome://browser/content/browser-sidebar.js", this);
++ Services.scriptloader.loadSubScript("chrome://browser/content/browser-tabsintitlebar.js", this);
+ Services.scriptloader.loadSubScript("chrome://browser/content/tabbrowser.js", this);
++ Services.scriptloader.loadSubScript("chrome://browser/content/search/searchbar.js", this);
+
+ window.onload = gBrowserInit.onLoad.bind(gBrowserInit);
+ window.onunload = gBrowserInit.onUnload.bind(gBrowserInit);
@@ -152,6 +168,9 @@
+ <menuitem id="context_duplicateTab" label="&duplicateTab.label;"
+ accesskey="&duplicateTab.accesskey;"
+ oncommand="duplicateTabIn(TabContextMenu.contextTab, 'tab');"/>
++ <menuitem id="context_duplicateTabs" label="&duplicateTabs.label;"
++ accesskey="&duplicateTabs.accesskey;"
++ oncommand="TabContextMenu.duplicateSelectedTabs();"/>
+ <menuseparator/>
+ <menuitem id="context_selectAllTabs" label="&selectAllTabs.label;" accesskey="&selectAllTabs.accesskey;"
+ oncommand="gBrowser.selectAllTabs();"/>
@@ -262,13 +281,16 @@
+ <html:div class="urlbarView-body-inner">
+ <!-- TODO: add search suggestions notification -->
+ <html:div class="urlbarView-results"/>
-+ <!-- TODO: add footer -->
+ </html:div>
+ </html:div>
++ <hbox class="search-one-offs"
++ compact="true"
++ includecurrentengine="true"
++ disabletab="true"/>
+ </panel>
+
-+ <!-- for date/time picker. consumeoutsideclicks is set to never, so that
-+ clicks on the anchored input box are never consumed. -->
++ <!-- for date/time picker. consumeoutsideclicks is set to never, so that
++ clicks on the anchored input box are never consumed. -->
+ <panel id="DateTimePickerPanel"
+ type="arrow"
+ hidden="true"
@@ -322,6 +344,7 @@
+ oncommand="StarUI.onShowForNewBookmarksCheckboxCommand();"/>
+ </vbox>
+ <hbox id="editBookmarkPanelBottomButtons"
++ class="panel-footer"
+ style="min-width: &editBookmark.panel.width;;">
+#ifdef XP_UNIX
+ <button id="editBookmarkPanelDoneButton"
@@ -436,49 +459,43 @@
+ label="&customizeMenu.pinToOverflowMenu.label;"
+ contexttype="toolbaritem"
+ class="customize-context-moveToPanel"/>
-+ <menuitem oncommand="ToolbarContextMenu.onDownloadsAutoHideChange(event)"
++ <menuitem id="toolbar-context-autohide-downloads-button"
++ oncommand="ToolbarContextMenu.onDownloadsAutoHideChange(event);"
+ type="checkbox"
+ accesskey="&customizeMenu.autoHideDownloadsButton.accesskey;"
+ label="&customizeMenu.autoHideDownloadsButton.label;"
-+ contexttype="toolbaritem"
-+ class="customize-context-autoHide"/>
++ contexttype="toolbaritem"/>
+ <menuitem oncommand="gCustomizeMode.removeFromArea(document.popupNode)"
+ accesskey="&customizeMenu.removeFromToolbar.accesskey;"
+ label="&customizeMenu.removeFromToolbar.label;"
+ contexttype="toolbaritem"
+ class="customize-context-removeFromToolbar"/>
+ <menuitem id="toolbar-context-reloadSelectedTab"
-+ class="toolbaritem-tabsmenu"
+ contexttype="tabbar"
+ oncommand="gBrowser.reloadMultiSelectedTabs();"
+ label="&toolbarContextMenu.reloadSelectedTab.label;"
+ accesskey="&toolbarContextMenu.reloadSelectedTab.accesskey;"/>
+ <menuitem id="toolbar-context-reloadSelectedTabs"
-+ class="toolbaritem-tabsmenu"
+ contexttype="tabbar"
+ oncommand="gBrowser.reloadMultiSelectedTabs();"
+ label="&toolbarContextMenu.reloadSelectedTabs.label;"
+ accesskey="&toolbarContextMenu.reloadSelectedTabs.accesskey;"/>
+ <menuitem id="toolbar-context-bookmarkSelectedTab"
-+ class="toolbaritem-tabsmenu"
+ contexttype="tabbar"
+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"
+ label="&toolbarContextMenu.bookmarkSelectedTab.label;"
+ accesskey="&toolbarContextMenu.bookmarkSelectedTab.accesskey;"/>
+ <menuitem id="toolbar-context-bookmarkSelectedTabs"
-+ class="toolbaritem-tabsmenu"
+ contexttype="tabbar"
+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"
+ label="&toolbarContextMenu.bookmarkSelectedTabs.label;"
+ accesskey="&toolbarContextMenu.bookmarkSelectedTabs.accesskey;"/>
+ <menuitem id="toolbar-context-selectAllTabs"
-+ class="toolbaritem-tabsmenu"
+ contexttype="tabbar"
+ oncommand="gBrowser.selectAllTabs();"
+ label="&toolbarContextMenu.selectAllTabs.label;"
+ accesskey="&toolbarContextMenu.selectAllTabs.accesskey;"/>
+ <menuitem id="toolbar-context-undoCloseTab"
-+ class="toolbaritem-tabsmenu"
+ contexttype="tabbar"
+ label="&toolbarContextMenu.undoCloseTab.label;"
+ accesskey="&toolbarContextMenu.undoCloseTab.accesskey;"
@@ -722,110 +739,101 @@
+ </popupset>
+ <box id="appMenu-viewCache" hidden="true"/>
+
-+<vbox id="titlebar">
-+ <hbox id="titlebar-content">
-+ <spacer id="titlebar-spacer" flex="1"/>
-+ <hbox id="titlebar-buttonbox-container">
-+ <hbox id="titlebar-buttonbox" class="titlebar-color">
-+ <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>
-+#ifdef XP_MACOSX
-+ <!-- OS X does not natively support RTL for its titlebar items, so we prevent this secondary
-+ buttonbox from reversing order in RTL by forcing an LTR direction. -->
-+ <hbox id="titlebar-secondary-buttonbox" dir="ltr">
-+ <button class="accessibility-indicator" tooltiptext="&accessibilityIndicator.tooltip;" aria-live="polite"/>
-+ <hbox class="private-browsing-indicator"/>
-+ <hbox id="titlebar-fullscreen-button"/>
-+ </hbox>
++ <toolbox id="navigator-toolbox">
++
++ <vbox id="titlebar">
++ <!-- Menu -->
++ <toolbar type="menubar" id="toolbar-menubar"
++ class="browser-toolbar chromeclass-menubar titlebar-color"
++ customizable="true"
++ mode="icons"
++#ifdef MENUBAR_CAN_AUTOHIDE
++ toolbarname="&menubarCmd.label;"
++ accesskey="&menubarCmd.accesskey;"
++ autohide="true"
+#endif
-+ </hbox>
-+</vbox>
-+
-+ <toolbox id="navigator-toolbox">
-+ <!-- Menu -->
-+ <toolbar type="menubar" id="toolbar-menubar"
-+ class="browser-toolbar chromeclass-menubar titlebar-color"
-+ customizable="true"
-+ mode="icons"
-+#ifdef MENUBAR_CAN_AUTOHIDE
-+ toolbarname="&menubarCmd.label;"
-+ accesskey="&menubarCmd.accesskey;"
-+ autohide="true"
-+#endif
-+ context="toolbar-context-menu">
-+ <toolbaritem id="menubar-items" align="center">
++ 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 with other top level windows in macWindow.inc.xul.
+#include browser-menubar.inc
-+ </toolbaritem>
++ </toolbaritem>
++ <spacer flex="1" skipintoolbarset="true" ordinal="1000"/>
++#include titlebar-items.inc.xul
++ </toolbar>
++
++ <toolbar id="TabsToolbar"
++ class="browser-toolbar titlebar-color"
++ fullscreentoolbar="true"
++ customizable="true"
++ customizationtarget="TabsToolbar-customization-target"
++ mode="icons"
++ aria-label="&tabsToolbar.label;"
++ context="toolbar-context-menu"
++ flex="1">
++ <vbox flex="1" class="toolbar-items">
++ <spacer flex="1000"/>
++
++ <hbox id="TabsToolbar-customization-target" flex="1">
++ <hbox class="titlebar-spacer" type="pre-tabs"
++ skipintoolbarset="true"/>
++
++ <tabs id="tabbrowser-tabs"
++ flex="1"
++ setfocus="false"
++ tooltip="tabbrowser-tab-tooltip"
++ stopwatchid="FX_TAB_CLICK_MS">
++ <tab class="tabbrowser-tab" selected="true" visuallyselected="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);"
++ tooltip="dynamic-shortcut-tooltip"
++ ondrop="newTabButtonObserver.onDrop(event)"
++ ondragover="newTabButtonObserver.onDragOver(event)"
++ ondragenter="newTabButtonObserver.onDragOver(event)"
++ ondragexit="newTabButtonObserver.onDragExit(event)"
++ cui-areatype="toolbar"
++ removable="true"/>
++
++ <toolbarbutton id="alltabs-button"
++ class="toolbarbutton-1 chromeclass-toolbar-additional tabs-alltabs-button badged-button"
++ oncommand="gTabsPanel.showAllTabsPanel();"
++ label="&listAllTabs.label;"
++ tooltiptext="&listAllTabs.label;"
++ removable="false"/>
++
++ <hbox class="titlebar-spacer" type="post-tabs"
++ ordinal="1000"
++ skipintoolbarset="true"/>
++ </hbox>
++ </vbox>
+
+#ifndef XP_MACOSX
-+ <hbox class="titlebar-placeholder" type="caption-buttons" ordinal="1000"
-+ skipintoolbarset="true"/>
++ <button class="accessibility-indicator" tooltiptext="&accessibilityIndicator.tooltip;"
++ ordinal="1000"
++ aria-live="polite" skipintoolbarset="true"/>
++ <hbox class="private-browsing-indicator" skipintoolbarset="true"
++ ordinal="1000"/>
+#endif
-+ </toolbar>
-+
-+ <toolbar id="TabsToolbar"
-+ class="browser-toolbar titlebar-color"
-+ fullscreentoolbar="true"
-+ customizable="true"
-+ mode="icons"
-+ aria-label="&tabsToolbar.label;"
-+ context="toolbar-context-menu">
-+ <hbox class="titlebar-placeholder" type="pre-tabs"
-+ skipintoolbarset="true"/>
-+
-+ <tabs id="tabbrowser-tabs"
-+ flex="1"
-+ setfocus="false"
-+ tooltip="tabbrowser-tab-tooltip"
-+ stopwatchid="FX_TAB_CLICK_MS">
-+ <tab class="tabbrowser-tab" selected="true" visuallyselected="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);"
-+ tooltip="dynamic-shortcut-tooltip"
-+ ondrop="newTabButtonObserver.onDrop(event)"
-+ ondragover="newTabButtonObserver.onDragOver(event)"
-+ ondragenter="newTabButtonObserver.onDragOver(event)"
-+ ondragexit="newTabButtonObserver.onDragExit(event)"
-+ cui-areatype="toolbar"
-+ removable="true"/>
-+
-+ <toolbarbutton id="alltabs-button"
-+ class="toolbarbutton-1 chromeclass-toolbar-additional tabs-alltabs-button badged-button"
-+ oncommand="gTabsPanel.showAllTabsPanel();"
-+ label="&listAllTabs.label;"
-+ tooltiptext="&listAllTabs.label;"
-+ removable="false"/>
-+
-+ <hbox class="titlebar-placeholder" type="post-tabs"
-+ ordinal="1000"
-+ skipintoolbarset="true"/>
-+
-+ <button class="accessibility-indicator" tooltiptext="&accessibilityIndicator.tooltip;"
-+ ordinal="1000"
-+ aria-live="polite" skipintoolbarset="true"/>
-+ <hbox class="private-browsing-indicator" skipintoolbarset="true"
-+ ordinal="1000"/>
-+ <hbox class="titlebar-placeholder" type="caption-buttons"
-+#ifndef XP_MACOSX
-+ ordinal="1000"
-+#endif
-+ skipintoolbarset="true"/>
++#include titlebar-items.inc.xul
+
+#ifdef XP_MACOSX
-+ <hbox class="titlebar-placeholder" type="fullscreen-button"
-+ skipintoolbarset="true"/>
++ <!-- OS X does not natively support RTL for its titlebar items, so we prevent this secondary
++ buttonbox from reversing order in RTL by forcing an LTR direction. -->
++ <hbox id="titlebar-secondary-buttonbox" dir="ltr">
++ <button class="accessibility-indicator" tooltiptext="&accessibilityIndicator.tooltip;" aria-live="polite"/>
++ <hbox class="private-browsing-indicator"/>
++ <hbox id="titlebar-fullscreen-button"/>
++ </hbox>
+#endif
-+ </toolbar>
++ </toolbar>
++
++ </vbox>
+
+ <toolbar id="nav-bar"
+ class="browser-toolbar"
@@ -993,6 +1001,8 @@
+ tooltiptext="&urlbar.midiNotificationAnchor.tooltip;"/>
+ <image id="webauthn-notification-icon" class="notification-anchor-icon" role="button"
+ tooltiptext="&urlbar.webAuthnAnchor.tooltip;"/>
++ <image id="storage-access-notification-icon" class="notification-anchor-icon storage-access-icon" role="button"
++ tooltiptext="&urlbar.storageAccessAnchor.tooltip;"/>
+ </box>
+ <image id="connection-icon"/>
+ <image id="extension-icon"/>
@@ -1131,6 +1141,10 @@
+ tooltiptext="&fullScreenClose.tooltip;"
+ oncommand="BrowserTryToCloseWindow();"/>
+ </hbox>
++
++ <box id="library-animatable-box" class="toolbarbutton-animatable-box">
++ <image class="toolbarbutton-animatable-image"/>
++ </box>
+ </toolbar>
+
+ <toolbar id="PersonalToolbar"
@@ -1312,9 +1326,6 @@
+ <searchbar id="searchbar" flex="1"/>
+ </toolbaritem>
+ </toolbarpalette>
-+ <box id="library-animatable-box" class="toolbarbutton-animatable-box">
-+ <image class="toolbarbutton-animatable-image"/>
-+ </box>
+ </toolbox>
+
+ <hbox id="fullscr-toggler" hidden="true"/>
@@ -1343,7 +1354,7 @@
+
+ <splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" hidden="true"/>
+ <vbox id="appcontent" flex="1">
-+ <notificationbox id="high-priority-global-notificationbox" notificationside="top"/>
++ <!-- gHighPriorityNotificationBox will be added here lazily. -->
+ <tabbox id="tabbrowser-tabbox"
+ flex="1" tabcontainer="tabbrowser-tabs">
+ <tabpanels id="tabbrowser-tabpanels"
@@ -1386,7 +1397,7 @@
+ </html:div>
+
+ <vbox id="browser-bottombox" layer="true">
-+ <notificationbox id="global-notificationbox" notificationside="bottom"/>
++ <!-- gNotificationBox will be added here lazily. -->
+ </vbox>
+
+</window>
@@ -1475,7 +1486,7 @@
diff --git a/browser/components/preferences/in-content/main.js b/browser/components/preferences/in-content/main.js
--- a/browser/components/preferences/in-content/main.js
+++ b/browser/components/preferences/in-content/main.js
-@@ -283,16 +283,23 @@ var gMainPane = {
+@@ -289,16 +289,23 @@ var gMainPane = {
this._backoffIndex++ : backoffTimes.length - 1]);
};
@@ -1499,7 +1510,7 @@
performanceSettingsLink.setAttribute("href", performanceSettingsUrl);
this.updateDefaultPerformanceSettingsPref();
-@@ -938,16 +945,27 @@ var gMainPane = {
+@@ -1012,16 +1019,27 @@ var gMainPane = {
// Reset exponential backoff delay time in order to do visual update in pollForDefaultBrowser.
this._backoffIndex = 0;
@@ -1792,7 +1803,7 @@
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
-@@ -458,16 +458,18 @@
+@@ -451,16 +451,18 @@
@RESPATH@/browser/defaults/settings/pinning
@RESPATH@/browser/defaults/settings/main
--- a/mozilla-kde.patch Sat Jan 26 22:42:57 2019 +0100
+++ b/mozilla-kde.patch Thu Jan 31 11:21:22 2019 +0100
@@ -1,5 +1,5 @@
# HG changeset patch
-# Parent d685597ba96ea004052e40ec0c80f422ea0e365c
+# Parent ff3da33eabc1d8760ec41a87afbaf44ded300ede
Description: Add KDE integration to Firefox (toolkit parts)
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
Author: Lubos Lunak <lunak@suse.com>
@@ -27,7 +27,7 @@
#ifdef XP_WIN
#include "windows.h"
#endif
-@@ -4908,25 +4909,37 @@ Preferences::InitInitialObjects(bool aIs
+@@ -4466,25 +4467,37 @@ float MOZ_MAYBE_UNUSED GetPref<float>(co
// application pref files for backwards compatibility.
static const char* specialFiles[] = {
#if defined(XP_MACOSX)
@@ -57,15 +57,15 @@
+ }
+ }
+
- rv = pref_LoadPrefsInDir(
- defaultPrefDir, specialFiles, ArrayLength(specialFiles));
+ rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles,
+ ArrayLength(specialFiles));
if (NS_FAILED(rv)) {
NS_WARNING("Error parsing application default preferences.");
}
// Load jar:$app/omni.jar!/defaults/preferences/*.js
// or jar:$gre/omni.jar!/defaults/preferences/*.js.
-@@ -4975,17 +4988,17 @@ Preferences::InitInitialObjects(bool aIs
+@@ -4532,17 +4545,17 @@ float MOZ_MAYBE_UNUSED GetPref<float>(co
}
nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
@@ -83,7 +83,7 @@
SetupTelemetryPref();
}
- NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID,
+ NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID, nullptr,
diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
--- a/modules/libpref/moz.build
+++ b/modules/libpref/moz.build
@@ -171,7 +171,7 @@
diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
--- a/toolkit/content/jar.mn
+++ b/toolkit/content/jar.mn
-@@ -68,16 +68,18 @@ toolkit.jar:
+@@ -67,16 +67,18 @@ toolkit.jar:
content/global/bindings/calendar.js (widgets/calendar.js)
content/global/bindings/checkbox.xml (widgets/checkbox.xml)
content/global/bindings/datekeeper.js (widgets/datekeeper.js)
@@ -183,18 +183,18 @@
+* content/global/bindings/dialog-kde.xml (widgets/dialog-kde.xml)
+% override chrome://global/content/bindings/dialog.xml chrome://global/content/bindings/dialog-kde.xml desktop=kde
content/global/bindings/general.xml (widgets/general.xml)
- content/global/bindings/groupbox.xml (widgets/groupbox.xml)
content/global/bindings/menu.xml (widgets/menu.xml)
content/global/bindings/menulist.xml (widgets/menulist.xml)
content/global/bindings/notification.xml (widgets/notification.xml)
content/global/bindings/numberbox.xml (widgets/numberbox.xml)
content/global/bindings/popup.xml (widgets/popup.xml)
content/global/bindings/radio.xml (widgets/radio.xml)
+ content/global/bindings/richlistbox.xml (widgets/richlistbox.xml)
diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/dialog-kde.xml
new file mode 100644
--- /dev/null
+++ b/toolkit/content/widgets/dialog-kde.xml
-@@ -0,0 +1,475 @@
+@@ -0,0 +1,477 @@
+<?xml version="1.0"?>
+<!-- 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
@@ -495,6 +495,8 @@
+ var accessKey = this.mStrBundle.GetStringFromName("accesskey-" + dlgtype);
+ if (accessKey)
+ button.setAttribute("accesskey", accessKey);
++ } else if (this.hasAttribute("buttonid" + dlgtype)) {
++ document.l10n.setAttributes(button, this.getAttribute("buttonid" + dlgtype));
+ }
+ }
+ // allow specifying alternate icons in the dialog header
@@ -673,7 +675,7 @@
diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downloads/nsHelperAppDlg.js
--- a/toolkit/mozapps/downloads/nsHelperAppDlg.js
+++ b/toolkit/mozapps/downloads/nsHelperAppDlg.js
-@@ -1031,30 +1031,60 @@ nsUnknownContentTypeDialog.prototype = {
+@@ -1030,30 +1030,60 @@ nsUnknownContentTypeDialog.prototype = {
if (params.handlerApp &&
params.handlerApp.executable &&
@@ -763,57 +765,58 @@
+#include "nsKDEUtils.h"
class nsUnixSystemProxySettings final : public nsISystemProxySettings {
- public:
+ public:
NS_DECL_ISUPPORTS
NS_DECL_NSISYSTEMPROXYSETTINGS
- nsUnixSystemProxySettings()
- : mSchemeProxySettings(4)
-@@ -39,16 +40,17 @@ private:
- nsCOMPtr<nsIGSettingsService> mGSettings;
- nsCOMPtr<nsIGSettingsCollection> mProxySettings;
- nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection> mSchemeProxySettings;
- bool IsProxyMode(const char* aMode);
- nsresult SetProxyResultFromGConf(const char* aKeyBase, const char* aType, nsACString& aResult);
- nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost, int32_t aPort, nsACString& aResult);
- nsresult GetProxyFromGSettings(const nsACString& aScheme, const nsACString& aHost, int32_t aPort, nsACString& aResult);
- nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType, nsACString& aResult);
-+ nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost, PRInt32 aPort, nsACString& aResult);
+ nsUnixSystemProxySettings() : mSchemeProxySettings(4) {}
+ nsresult Init();
+@@ -42,16 +43,18 @@ class nsUnixSystemProxySettings final :
+ nsACString& aResult);
+ nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost,
+ int32_t aPort, nsACString& aResult);
+ nsresult GetProxyFromGSettings(const nsACString& aScheme,
+ const nsACString& aHost, int32_t aPort,
+ nsACString& aResult);
+ nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType,
+ nsACString& aResult);
++ nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost,
++ PRInt32 aPort, nsACString& aResult);
};
NS_IMPL_ISUPPORTS(nsUnixSystemProxySettings, nsISystemProxySettings)
NS_IMETHODIMP
- nsUnixSystemProxySettings::GetMainThreadOnly(bool *aMainThreadOnly)
- {
- // dbus prevents us from being threadsafe, but this routine should not block anyhow
-@@ -505,16 +507,19 @@ nsUnixSystemProxySettings::GetProxyFromG
+ nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
+ // dbus prevents us from being threadsafe, but this routine should not block
+ // anyhow
+@@ -488,16 +491,19 @@ nsresult nsUnixSystemProxySettings::GetP
+ return NS_OK;
+ }
- nsresult
- nsUnixSystemProxySettings::GetProxyForURI(const nsACString & aSpec,
- const nsACString & aScheme,
- const nsACString & aHost,
- const int32_t aPort,
- nsACString & aResult)
- {
+ nsresult nsUnixSystemProxySettings::GetProxyForURI(const nsACString& aSpec,
+ const nsACString& aScheme,
+ const nsACString& aHost,
+ const int32_t aPort,
+ nsACString& aResult) {
+ if (nsKDEUtils::kdeSupport())
+ return GetProxyFromKDE(aScheme, aHost, aPort, aResult);
+
if (mProxySettings) {
nsresult rv = GetProxyFromGSettings(aScheme, aHost, aPort, aResult);
- if (NS_SUCCEEDED(rv))
- return rv;
+ if (NS_SUCCEEDED(rv)) return rv;
}
- if (mGConf)
- return GetProxyFromGConf(aScheme, aHost, aPort, aResult);
+ if (mGConf) return GetProxyFromGConf(aScheme, aHost, aPort, aResult);
-@@ -540,8 +545,34 @@ static const mozilla::Module::ContractID
+ return GetProxyFromEnvironment(aScheme, aHost, aPort, aResult);
+ }
+@@ -521,8 +527,34 @@ static const mozilla::Module::CIDEntry k
+ static const mozilla::Module::ContractIDEntry kUnixProxyContracts[] = {
+ {NS_SYSTEMPROXYSETTINGS_CONTRACTID, &kNS_UNIXSYSTEMPROXYSERVICE_CID},
+ {nullptr}};
static const mozilla::Module kUnixProxyModule = {
- mozilla::Module::kVersion,
- kUnixProxyCIDs,
- kUnixProxyContracts
- };
+ mozilla::Module::kVersion, kUnixProxyCIDs, kUnixProxyContracts};
NSMODULE_DEFN(nsUnixProxyModule) = &kUnixProxyModule;
+
@@ -845,7 +848,7 @@
diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
--- a/toolkit/xre/moz.build
+++ b/toolkit/xre/moz.build
-@@ -68,17 +68,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
+@@ -73,17 +73,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
'../components/printingui',
]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
@@ -1282,19 +1285,19 @@
+#include "unix/nsCommonRegistry.h"
#endif
- using mozilla::dom::HandlerInfo;
+ using mozilla::dom::ContentHandlerService;
using mozilla::dom::HandlerApp;
- using mozilla::dom::ContentHandlerService;
+ using mozilla::dom::HandlerInfo;
using mozilla::dom::RemoteHandlerApp;
namespace {
-@@ -265,17 +265,17 @@ HandlerServiceParent::RecvExists(const H
+@@ -246,17 +246,17 @@ mozilla::ipc::IPCResult HandlerServicePa
+ handlerSvc->Exists(info, exists);
+ return IPC_OK();
}
- mozilla::ipc::IPCResult
- HandlerServiceParent::RecvExistsForProtocol(const nsCString& aProtocolScheme,
- bool* aHandlerExists)
- {
+ mozilla::ipc::IPCResult HandlerServiceParent::RecvExistsForProtocol(
+ const nsCString& aProtocolScheme, bool* aHandlerExists) {
#ifdef MOZ_WIDGET_GTK
// Check the GNOME registry for a protocol handler
- *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme.get());
@@ -1305,8 +1308,8 @@
return IPC_OK();
}
- mozilla::ipc::IPCResult
- HandlerServiceParent::RecvGetTypeFromExtension(const nsCString& aFileExtension,
+ mozilla::ipc::IPCResult HandlerServiceParent::RecvGetTypeFromExtension(
+ const nsCString& aFileExtension, nsCString* type) {
diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
--- a/uriloader/exthandler/moz.build
+++ b/uriloader/exthandler/moz.build
@@ -1573,7 +1576,7 @@
diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
--- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
+++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
-@@ -1,50 +1,53 @@
+@@ -1,47 +1,50 @@
/* -*- Mode: C++; tab-width: 3; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* This Source Code Form is subject to the terms of the Mozilla Public
@@ -1594,21 +1597,17 @@
+#include "nsKDEUtils.h"
+#endif
- nsresult
- nsMIMEInfoUnix::LoadUriInternal(nsIURI * aURI)
- {
+ nsresult nsMIMEInfoUnix::LoadUriInternal(nsIURI *aURI) {
- return nsGNOMERegistry::LoadURL(aURI);
+ return nsCommonRegistry::LoadURL(aURI);
}
NS_IMETHODIMP
- nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval)
- {
+ nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval) {
// if mDefaultApplication is set, it means the application has been set from
// either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
// give the GNOME answer.
- if (mDefaultApplication)
- return nsMIMEInfoImpl::GetHasDefaultHandler(_retval);
+ if (mDefaultApplication) return nsMIMEInfoImpl::GetHasDefaultHandler(_retval);
*_retval = false;
@@ -1616,8 +1615,9 @@
- *_retval = nsGNOMERegistry::HandlerExists(mSchemeOrType.get());
+ *_retval = nsCommonRegistry::HandlerExists(mSchemeOrType.get());
} else {
-- RefPtr<nsMIMEInfoBase> mimeInfo = nsGNOMERegistry::GetFromType(mSchemeOrType);
-+ RefPtr<nsMIMEInfoBase> mimeInfo = nsCommonRegistry::GetFromType(mSchemeOrType);
+ RefPtr<nsMIMEInfoBase> mimeInfo =
+- nsGNOMERegistry::GetFromType(mSchemeOrType);
++ nsCommonRegistry::GetFromType(mSchemeOrType);
if (!mimeInfo) {
nsAutoCString ext;
nsresult rv = GetPrimaryExtension(ext);
@@ -1626,17 +1626,17 @@
+ mimeInfo = nsCommonRegistry::GetFromExtension(ext);
}
}
- if (mimeInfo)
- *_retval = true;
+ if (mimeInfo) *_retval = true;
}
- if (*_retval)
- return NS_OK;
-@@ -59,16 +62,33 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
+ if (*_retval) return NS_OK;
+
+ return NS_OK;
+@@ -51,16 +54,33 @@ nsresult nsMIMEInfoUnix::LaunchDefaultWi
+ // if mDefaultApplication is set, it means the application has been set from
// either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
// give the GNOME answer.
- if (mDefaultApplication)
- return nsMIMEInfoImpl::LaunchDefaultWithFile(aFile);
+ if (mDefaultApplication) return nsMIMEInfoImpl::LaunchDefaultWithFile(aFile);
nsAutoCString nativePath;
aFile->GetNativePath(nativePath);
@@ -1665,7 +1665,7 @@
// nsGIOMimeApp->Launch wants a URI string instead of local file
nsresult rv;
- nsCOMPtr<nsIIOService> ioservice = do_GetService(NS_IOSERVICE_CONTRACTID, &rv);
+ nsCOMPtr<nsIIOService> ioservice =
diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
--- a/uriloader/exthandler/unix/nsOSHelperAppService.cpp
+++ b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
@@ -1688,10 +1688,10 @@
#include "nsIURL.h"
#include "nsIFileStreams.h"
#include "nsILineInputStream.h"
-@@ -1122,17 +1122,17 @@ nsOSHelperAppService::GetHandlerAndDescr
+@@ -1031,17 +1031,17 @@ nsresult nsOSHelperAppService::GetHandle
- nsresult nsOSHelperAppService::OSProtocolHandlerExists(const char * aProtocolScheme, bool * aHandlerExists)
- {
+ nsresult nsOSHelperAppService::OSProtocolHandlerExists(
+ const char* aProtocolScheme, bool* aHandlerExists) {
nsresult rv = NS_OK;
if (!XRE_IsContentProcess()) {
@@ -1704,17 +1704,17 @@
#endif
} else {
*aHandlerExists = false;
- nsCOMPtr<nsIHandlerService> handlerSvc = do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
+ nsCOMPtr<nsIHandlerService> handlerSvc =
+ do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
if (NS_SUCCEEDED(rv) && handlerSvc) {
- rv = handlerSvc->ExistsForProtocol(nsCString(aProtocolScheme), aHandlerExists);
-@@ -1140,17 +1140,17 @@ nsresult nsOSHelperAppService::OSProtoco
+@@ -1051,17 +1051,17 @@ nsresult nsOSHelperAppService::OSProtoco
}
return rv;
}
- NS_IMETHODIMP nsOSHelperAppService::GetApplicationDescription(const nsACString& aScheme, nsAString& _retval)
- {
+ NS_IMETHODIMP nsOSHelperAppService::GetApplicationDescription(
+ const nsACString& aScheme, nsAString& _retval) {
#ifdef MOZ_WIDGET_GTK
- nsGNOMERegistry::GetAppDescForScheme(aScheme, _retval);
+ nsCommonRegistry::GetAppDescForScheme(aScheme, _retval);
@@ -1724,32 +1724,32 @@
#endif
}
- nsresult nsOSHelperAppService::GetFileTokenForPath(const char16_t * platformAppPath, nsIFile ** aFile)
- {
-@@ -1237,17 +1237,17 @@ nsOSHelperAppService::GetFromExtension(c
- mime_types_description,
- true);
+ nsresult nsOSHelperAppService::GetFileTokenForPath(
+ const char16_t* platformAppPath, nsIFile** aFile) {
+@@ -1142,17 +1142,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
+ nsresult rv =
+ LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
+ minorType, mime_types_description, true);
if (NS_FAILED(rv) || majorType.IsEmpty()) {
-
#ifdef MOZ_WIDGET_GTK
LOG(("Looking in GNOME registry\n"));
RefPtr<nsMIMEInfoBase> gnomeInfo =
-- nsGNOMERegistry::GetFromExtension(aFileExt);
-+ nsCommonRegistry::GetFromExtension(aFileExt);
+- nsGNOMERegistry::GetFromExtension(aFileExt);
++ nsCommonRegistry::GetFromExtension(aFileExt);
if (gnomeInfo) {
LOG(("Got MIMEInfo from GNOME registry\n"));
return gnomeInfo.forget();
}
#endif
- rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt),
- majorType,
-@@ -1358,17 +1358,17 @@ nsOSHelperAppService::GetFromType(const
+ rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
+ minorType, mime_types_description, false);
+@@ -1254,17 +1254,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
+
+ // Now look up our extensions
nsAutoString extensions, mime_types_description;
- LookUpExtensionsAndDescription(majorType,
- minorType,
- extensions,
+ LookUpExtensionsAndDescription(majorType, minorType, extensions,
mime_types_description);
#ifdef MOZ_WIDGET_GTK
@@ -1757,17 +1757,17 @@
- RefPtr<nsMIMEInfoBase> gnomeInfo = nsGNOMERegistry::GetFromType(aMIMEType);
+ RefPtr<nsMIMEInfoBase> gnomeInfo = nsCommonRegistry::GetFromType(aMIMEType);
if (gnomeInfo) {
- LOG(("Got MIMEInfo from GNOME registry without extensions; setting them "
- "to %s\n", NS_LossyConvertUTF16toASCII(extensions).get()));
+ LOG(
+ ("Got MIMEInfo from GNOME registry without extensions; setting them "
+ "to %s\n",
+ NS_LossyConvertUTF16toASCII(extensions).get()));
NS_ASSERTION(!gnomeInfo->HasExtensions(), "How'd that happen?");
gnomeInfo->SetFileExtensions(NS_ConvertUTF16toUTF8(extensions));
- return gnomeInfo.forget();
- }
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
--- a/widget/gtk/moz.build
+++ b/widget/gtk/moz.build
-@@ -123,16 +123,17 @@ include('/ipc/chromium/chromium-config.m
+@@ -116,16 +116,17 @@ include('/ipc/chromium/chromium-config.m
FINAL_LIBRARY = 'xul'
@@ -1823,13 +1823,13 @@
#define MAX_PREVIEW_SOURCE_SIZE 4096
nsIFile *nsFilePicker::mPrevDisplayDirectory = nullptr;
-@@ -246,17 +248,19 @@ nsFilePicker::AppendFilters(int32_t aFil
+@@ -227,17 +229,19 @@ nsFilePicker::AppendFilters(int32_t aFil
+ mAllowURLs = !!(aFilterMask & filterAllowURLs);
return nsBaseFilePicker::AppendFilters(aFilterMask);
}
NS_IMETHODIMP
- nsFilePicker::AppendFilter(const nsAString& aTitle, const nsAString& aFilter)
- {
+ nsFilePicker::AppendFilter(const nsAString &aTitle, const nsAString &aFilter) {
if (aFilter.EqualsLiteral("..apps")) {
// No platform specific thing we can do here, really....
- return NS_OK;
@@ -1844,14 +1844,14 @@
mFilters.AppendElement(filter);
mFilterNames.AppendElement(name);
-@@ -371,16 +375,39 @@ nsFilePicker::Show(int16_t *aReturn)
+@@ -337,16 +341,39 @@ nsresult nsFilePicker::Show(int16_t *aRe
+ return NS_OK;
+ }
NS_IMETHODIMP
- nsFilePicker::Open(nsIFilePickerShownCallback *aCallback)
- {
+ nsFilePicker::Open(nsIFilePickerShownCallback *aCallback) {
// Can't show two dialogs concurrently with the same filepicker
- if (mRunning)
- return NS_ERROR_NOT_AVAILABLE;
+ if (mRunning) return NS_ERROR_NOT_AVAILABLE;
+ // KDE file picker is not handled via callback
+ if( nsKDEUtils::kdeSupport()) {
@@ -1880,11 +1880,11 @@
title.Adopt(ToNewUTF8String(mTitle));
GtkWindow *parent_widget =
- GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
+ GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
-@@ -600,16 +627,241 @@ nsFilePicker::Done(void* file_chooser, g
+@@ -571,16 +598,240 @@ void nsFilePicker::Done(void *file_choos
mCallback->Done(result);
mCallback = nullptr;
} else {
@@ -2117,25 +2117,24 @@
+ return NS_OK;
+ }
+
-+
// All below functions available as of GTK 3.20+
-
- void *
- nsFilePicker::GtkFileChooserNew(
- const gchar *title, GtkWindow *parent,
- GtkFileChooserAction action,
- const gchar *accept_label)
- {
+ void *nsFilePicker::GtkFileChooserNew(const gchar *title, GtkWindow *parent,
+ GtkFileChooserAction action,
+ const gchar *accept_label) {
+ static auto sGtkFileChooserNativeNewPtr =
+ (void *(*)(const gchar *, GtkWindow *, GtkFileChooserAction,
+ const gchar *,
+ const gchar *))dlsym(RTLD_DEFAULT,
diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
--- a/widget/gtk/nsFilePicker.h
+++ b/widget/gtk/nsFilePicker.h
-@@ -69,16 +69,22 @@ protected:
- nsString mDefaultExtension;
+@@ -67,16 +67,22 @@ class nsFilePicker : public nsBaseFilePi
+ nsString mDefaultExtension;
nsTArray<nsCString> mFilters;
nsTArray<nsCString> mFilterNames;
- private:
+ private:
static nsIFile *mPrevDisplayDirectory;
+ bool kdeRunning();
@@ -2144,14 +2143,14 @@
+ NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn);
+ nsCString kdeMakeFilter( int index );
+
- void *GtkFileChooserNew(
- const gchar *title, GtkWindow *parent,
- GtkFileChooserAction action,
- const gchar *accept_label);
+ void *GtkFileChooserNew(const gchar *title, GtkWindow *parent,
+ GtkFileChooserAction action,
+ const gchar *accept_label);
void GtkFileChooserShow(void *file_chooser);
void GtkFileChooserDestroy(void *file_chooser);
- void GtkFileChooserSetModal(void *file_chooser, GtkWindow* parent_widget,
- gboolean modal);
+ void GtkFileChooserSetModal(void *file_chooser, GtkWindow *parent_widget,
+ gboolean modal);
+
diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
--- a/xpcom/components/ManifestParser.cpp
+++ b/xpcom/components/ManifestParser.cpp
@@ -2168,12 +2167,12 @@
using namespace mozilla;
- struct ManifestDirective
- {
+ struct ManifestDirective {
const char* directive;
int argc;
-@@ -421,16 +422,17 @@ ParseManifest(NSLocationType aType, File
+ bool ischrome;
+@@ -392,16 +393,17 @@ void ParseManifest(NSLocationType aType,
NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
NS_NAMED_LITERAL_STRING(kApplication, "application");
@@ -2191,7 +2190,7 @@
NS_NAMED_LITERAL_STRING(kMain, "main");
NS_NAMED_LITERAL_STRING(kContent, "content");
-@@ -476,44 +478,49 @@ ParseManifest(NSLocationType aType, File
+@@ -447,39 +449,44 @@ void ParseManifest(NSLocationType aType,
CopyUTF8toUTF16(s, abi);
abi.Insert(char16_t('_'), 0);
abi.Insert(osTarget, 0);
@@ -2203,11 +2202,10 @@
+ nsAutoString desktop;
#if defined(XP_WIN)
#pragma warning(push)
- #pragma warning(disable:4996) // VC12+ deprecates GetVersionEx
- OSVERSIONINFO info = { sizeof(OSVERSIONINFO) };
+ #pragma warning(disable : 4996) // VC12+ deprecates GetVersionEx
+ OSVERSIONINFO info = {sizeof(OSVERSIONINFO)};
if (GetVersionEx(&info)) {
- nsTextFormatter::ssprintf(osVersion, u"%ld.%ld",
- info.dwMajorVersion,
+ nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", info.dwMajorVersion,
info.dwMinorVersion);
}
+ desktop = NS_LITERAL_STRING("win");
@@ -2215,21 +2213,17 @@
#elif defined(MOZ_WIDGET_COCOA)
SInt32 majorVersion = nsCocoaFeatures::OSXVersionMajor();
SInt32 minorVersion = nsCocoaFeatures::OSXVersionMinor();
- nsTextFormatter::ssprintf(osVersion, u"%ld.%ld",
- majorVersion,
- minorVersion);
+ nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", majorVersion, minorVersion);
+ desktop = NS_LITERAL_STRING("macosx");
#elif defined(MOZ_WIDGET_GTK)
- nsTextFormatter::ssprintf(osVersion, u"%ld.%ld",
- gtk_major_version,
+ nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", gtk_major_version,
gtk_minor_version);
+ desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome");
#elif defined(MOZ_WIDGET_ANDROID)
bool isTablet = false;
if (mozilla::AndroidBridge::Bridge()) {
- mozilla::AndroidBridge::Bridge()->GetStaticStringField("android/os/Build$VERSION",
- "RELEASE",
- osVersion);
+ mozilla::AndroidBridge::Bridge()->GetStaticStringField(
+ "android/os/Build$VERSION", "RELEASE", osVersion);
isTablet = java::GeckoAppShell::IsTablet();
}
+ desktop = NS_LITERAL_STRING("android");
@@ -2241,7 +2235,7 @@
process = kMain;
}
-@@ -600,25 +607,27 @@ ParseManifest(NSLocationType aType, File
+@@ -566,25 +573,27 @@ void ParseManifest(NSLocationType aType,
TriState stOsVersion = eUnspecified;
TriState stOs = eUnspecified;
TriState stABI = eUnspecified;
@@ -2264,40 +2258,41 @@
CheckStringFlag(kProcess, wtoken, process, stProcess) ||
CheckVersionFlag(kOsVersion, wtoken, osVersion, stOsVersion) ||
CheckVersionFlag(kAppVersion, wtoken, appVersion, stAppVersion) ||
- CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion, stGeckoVersion)) {
+ CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion,
+ stGeckoVersion)) {
continue;
}
- #if defined(MOZ_WIDGET_ANDROID)
-@@ -663,16 +672,17 @@ ParseManifest(NSLocationType aType, File
+@@ -621,17 +630,17 @@ void ParseManifest(NSLocationType aType,
+ }
+
+ LogMessageWithContext(
+ aFile, line, "Unrecognized chrome manifest modifier '%s'.", token);
+ ok = false;
}
- if (!ok ||
- stApp == eBad ||
- stAppVersion == eBad ||
- stGeckoVersion == eBad ||
- stOs == eBad ||
- stOsVersion == eBad ||
-+ stDesktop == eBad ||
+ if (!ok || stApp == eBad || stAppVersion == eBad ||
+- stGeckoVersion == eBad || stOs == eBad || stOsVersion == eBad ||
++ stGeckoVersion == eBad || stOs == eBad || stOsVersion == eBad || stDesktop == eBad ||
#ifdef MOZ_WIDGET_ANDROID
stTablet == eBad ||
#endif
- stABI == eBad ||
- stProcess == eBad) {
+ stABI == eBad || stProcess == eBad) {
continue;
}
+ if (directive->regfunc) {
diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
--- a/xpcom/components/moz.build
+++ b/xpcom/components/moz.build
-@@ -43,12 +43,13 @@ FINAL_LIBRARY = 'xul'
-
- LOCAL_INCLUDES += [
+@@ -44,12 +44,13 @@ LOCAL_INCLUDES += [
'!..',
'../base',
'../build',
'../ds',
'/chrome',
+ '/js/xpconnect/loader',
+ '/layout/build',
'/modules/libjar',
+ '/toolkit/xre',
]
@@ -2325,10 +2320,10 @@
#include "prmem.h"
#include "plbase64.h"
-@@ -2007,63 +2008,78 @@ nsLocalFile::SetPersistentDescriptor(con
+@@ -1902,62 +1903,77 @@ nsLocalFile::SetPersistentDescriptor(con
+
NS_IMETHODIMP
- nsLocalFile::Reveal()
- {
+ nsLocalFile::Reveal() {
if (!FilePreferences::IsAllowedPath(mPath)) {
return NS_ERROR_FILE_ACCESS_DENIED;
}
@@ -2389,8 +2384,7 @@
}
NS_IMETHODIMP
- nsLocalFile::Launch()
- {
+ nsLocalFile::Launch() {
if (!FilePreferences::IsAllowedPath(mPath)) {
return NS_ERROR_FILE_ACCESS_DENIED;
}