1 # HG changeset patch |
1 # HG changeset patch |
2 # Parent 1d3f5cacba056949ea9a56d4d805c3073efe403b |
2 # Parent 6ff55468281e12a84adefb46b17acb60d9cea608 |
3 Description: Add KDE integration to Firefox (toolkit parts) |
3 Description: Add KDE integration to Firefox (toolkit parts) |
4 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org> |
4 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org> |
5 Author: Lubos Lunak <lunak@suse.com> |
5 Author: Lubos Lunak <lunak@suse.com> |
6 Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751 |
6 Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751 |
7 https://bugzilla.novell.com/show_bug.cgi?id=170055 |
7 https://bugzilla.novell.com/show_bug.cgi?id=170055 |
25 |
25 |
26 #include "prefapi.h" |
26 #include "prefapi.h" |
27 #include "prefread.h" |
27 #include "prefread.h" |
28 #include "prefapi_private_data.h" |
28 #include "prefapi_private_data.h" |
29 |
29 |
30 @@ -1162,16 +1163,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char |
30 @@ -1180,16 +1181,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char |
31 |
31 |
32 static nsresult pref_LoadPrefsInDirList(const char *listId) |
32 static nsresult pref_LoadPrefsInDirList(const char *listId) |
33 { |
33 { |
34 nsresult rv; |
34 nsresult rv; |
35 nsCOMPtr<nsIProperties> dirSvc(do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv)); |
35 nsCOMPtr<nsIProperties> dirSvc(do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv)); |
79 |
79 |
80 static nsresult pref_ReadPrefFromJar(nsZipArchive* jarReader, const char *name) |
80 static nsresult pref_ReadPrefFromJar(nsZipArchive* jarReader, const char *name) |
81 { |
81 { |
82 nsZipItemPtr<char> manifest(jarReader, name, true); |
82 nsZipItemPtr<char> manifest(jarReader, name, true); |
83 NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE); |
83 NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE); |
84 @@ -1291,24 +1310,36 @@ static nsresult pref_InitInitialObjects( |
84 @@ -1309,24 +1328,36 @@ static nsresult pref_InitInitialObjects( |
85 /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */ |
85 /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */ |
86 static const char* specialFiles[] = { |
86 static const char* specialFiles[] = { |
87 #if defined(XP_MACOSX) |
87 #if defined(XP_MACOSX) |
88 "macprefs.js" |
88 "macprefs.js" |
89 #elif defined(XP_WIN) |
89 #elif defined(XP_WIN) |
226 #ifdef XP_MACOSX |
226 #ifdef XP_MACOSX |
227 #include <CoreFoundation/CoreFoundation.h> |
227 #include <CoreFoundation/CoreFoundation.h> |
228 #endif |
228 #endif |
229 |
229 |
230 #ifdef MOZ_WIDGET_ANDROID |
230 #ifdef MOZ_WIDGET_ANDROID |
231 #include "AndroidBridge.h" |
231 #include "GeneratedJNIWrappers.h" |
232 #endif |
232 #endif |
233 |
233 |
234 @@ -2719,16 +2723,25 @@ nsDownload::SetState(DownloadState aStat |
234 @@ -2719,16 +2723,25 @@ nsDownload::SetState(DownloadState aStat |
235 nsCOMPtr<nsIPrefBranch> pref(do_GetService(NS_PREFSERVICE_CONTRACTID)); |
235 nsCOMPtr<nsIPrefBranch> pref(do_GetService(NS_PREFSERVICE_CONTRACTID)); |
236 |
236 |
276 if (fileURL && |
276 if (fileURL && |
277 NS_SUCCEEDED(fileURL->GetFile(getter_AddRefs(file))) && |
277 NS_SUCCEEDED(fileURL->GetFile(getter_AddRefs(file))) && |
278 diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn |
278 diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn |
279 --- a/toolkit/content/jar.mn |
279 --- a/toolkit/content/jar.mn |
280 +++ b/toolkit/content/jar.mn |
280 +++ b/toolkit/content/jar.mn |
281 @@ -72,29 +72,33 @@ toolkit.jar: |
281 @@ -67,29 +67,33 @@ toolkit.jar: |
282 content/global/viewZoomOverlay.js |
282 content/global/viewZoomOverlay.js |
283 content/global/bindings/autocomplete.xml (widgets/autocomplete.xml) |
283 content/global/bindings/autocomplete.xml (widgets/autocomplete.xml) |
284 content/global/bindings/browser.xml (widgets/browser.xml) |
284 content/global/bindings/browser.xml (widgets/browser.xml) |
285 content/global/bindings/button.xml (widgets/button.xml) |
285 content/global/bindings/button.xml (widgets/button.xml) |
286 content/global/bindings/checkbox.xml (widgets/checkbox.xml) |
286 content/global/bindings/checkbox.xml (widgets/checkbox.xml) |
952 + .removeObserver(this.name, this.preferences); |
952 + .removeObserver(this.name, this.preferences); |
953 + </destructor> |
953 + </destructor> |
954 + <field name="_constructed">false</field> |
954 + <field name="_constructed">false</field> |
955 + <property name="instantApply"> |
955 + <property name="instantApply"> |
956 + <getter> |
956 + <getter> |
|
957 + if (this.getAttribute("instantApply") == "false") |
|
958 + return false; |
957 + return this.getAttribute("instantApply") == "true" || this.preferences.instantApply; |
959 + return this.getAttribute("instantApply") == "true" || this.preferences.instantApply; |
958 + </getter> |
960 + </getter> |
959 + </property> |
961 + </property> |
960 + |
962 + |
961 + <property name="preferences" onget="return this.parentNode"/> |
963 + <property name="preferences" onget="return this.parentNode"/> |
2288 +} |
2290 +} |
2289 + |
2291 + |
2290 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build |
2292 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build |
2291 --- a/toolkit/xre/moz.build |
2293 --- a/toolkit/xre/moz.build |
2292 +++ b/toolkit/xre/moz.build |
2294 +++ b/toolkit/xre/moz.build |
2293 @@ -47,17 +47,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'ui |
2295 @@ -39,17 +39,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co |
2294 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt': |
2296 'updaterfileutils_osx.mm', |
2295 EXPORTS += ['nsQAppInstance.h'] |
2297 ] |
2296 SOURCES += [ |
2298 elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit': |
2297 '!moc_nsNativeAppSupportQt.cpp', |
2299 UNIFIED_SOURCES += [ |
2298 'nsNativeAppSupportQt.cpp', |
2300 'nsNativeAppSupportDefault.cpp', |
2299 'nsQAppInstance.cpp', |
2301 'UIKitDirProvider.mm', |
2300 ] |
2302 ] |
2301 elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: |
2303 elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: |
2302 + EXPORTS += ['nsKDEUtils.h'] |
2304 + EXPORTS += ['nsKDEUtils.h'] |
2303 UNIFIED_SOURCES += [ |
2305 UNIFIED_SOURCES += [ |
2304 + 'nsKDEUtils.cpp', |
2306 + 'nsKDEUtils.cpp', |
2728 UNIFIED_SOURCES += [ |
2730 UNIFIED_SOURCES += [ |
2729 'android/nsAndroidHandlerApp.cpp', |
2731 'android/nsAndroidHandlerApp.cpp', |
2730 'android/nsExternalSharingAppService.cpp', |
2732 'android/nsExternalSharingAppService.cpp', |
2731 'android/nsExternalURLHandlerService.cpp', |
2733 'android/nsExternalURLHandlerService.cpp', |
2732 'android/nsMIMEInfoAndroid.cpp', |
2734 'android/nsMIMEInfoAndroid.cpp', |
2733 @@ -131,16 +133,17 @@ include('/ipc/chromium/chromium-config.m |
2735 @@ -123,16 +125,17 @@ include('/ipc/chromium/chromium-config.m |
2734 |
2736 |
2735 FINAL_LIBRARY = 'xul' |
2737 FINAL_LIBRARY = 'xul' |
2736 |
2738 |
2737 LOCAL_INCLUDES += [ |
2739 LOCAL_INCLUDES += [ |
2738 '/dom/base', |
2740 '/dom/base', |
2744 |
2746 |
2745 if CONFIG['MOZ_ENABLE_DBUS']: |
2747 if CONFIG['MOZ_ENABLE_DBUS']: |
2746 CXXFLAGS += CONFIG['TK_CFLAGS'] |
2748 CXXFLAGS += CONFIG['TK_CFLAGS'] |
2747 CXXFLAGS += CONFIG['MOZ_DBUS_CFLAGS'] |
2749 CXXFLAGS += CONFIG['MOZ_DBUS_CFLAGS'] |
2748 |
2750 |
2749 if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('qt', 'gtk2', 'gtk3'): |
2751 if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): |
2750 CXXFLAGS += CONFIG['TK_CFLAGS'] |
2752 CXXFLAGS += CONFIG['TK_CFLAGS'] |
2751 diff --git a/uriloader/exthandler/unix/nsCommonRegistry.cpp b/uriloader/exthandler/unix/nsCommonRegistry.cpp |
2753 diff --git a/uriloader/exthandler/unix/nsCommonRegistry.cpp b/uriloader/exthandler/unix/nsCommonRegistry.cpp |
2752 new file mode 100644 |
2754 new file mode 100644 |
2753 --- /dev/null |
2755 --- /dev/null |
2754 +++ b/uriloader/exthandler/unix/nsCommonRegistry.cpp |
2756 +++ b/uriloader/exthandler/unix/nsCommonRegistry.cpp |
2972 + |
2974 + |
2973 +#endif //nsKDERegistry_h__ |
2975 +#endif //nsKDERegistry_h__ |
2974 diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp |
2976 diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp |
2975 --- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp |
2977 --- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp |
2976 +++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp |
2978 +++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp |
2977 @@ -7,32 +7,35 @@ |
2979 @@ -1,50 +1,53 @@ |
2978 #ifdef MOZ_WIDGET_QT |
2980 /* -*- Mode: C++; tab-width: 3; indent-tabs-mode: nil; c-basic-offset: 2 -*- |
2979 #if (MOZ_ENABLE_CONTENTACTION) |
2981 * |
2980 #include <contentaction/contentaction.h> |
2982 * This Source Code Form is subject to the terms of the Mozilla Public |
2981 #include "nsContentHandlerApp.h" |
2983 * License, v. 2.0. If a copy of the MPL was not distributed with this |
2982 #endif |
2984 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
2983 #endif |
|
2984 |
2985 |
2985 #include "nsMIMEInfoUnix.h" |
2986 #include "nsMIMEInfoUnix.h" |
2986 -#include "nsGNOMERegistry.h" |
2987 -#include "nsGNOMERegistry.h" |
2987 +#include "nsCommonRegistry.h" |
2988 +#include "nsCommonRegistry.h" |
2988 #include "nsIGIOService.h" |
2989 #include "nsIGIOService.h" |
2990 #include "nsIIOService.h" |
2991 #include "nsIIOService.h" |
2991 #include "nsAutoPtr.h" |
2992 #include "nsAutoPtr.h" |
2992 #ifdef MOZ_ENABLE_DBUS |
2993 #ifdef MOZ_ENABLE_DBUS |
2993 #include "nsDBusHandlerApp.h" |
2994 #include "nsDBusHandlerApp.h" |
2994 #endif |
2995 #endif |
2995 #ifdef MOZ_WIDGET_QT |
|
2996 #include "nsMIMEInfoQt.h" |
|
2997 #endif |
|
2998 +#if defined(XP_UNIX) && !defined(XP_MACOSX) |
2996 +#if defined(XP_UNIX) && !defined(XP_MACOSX) |
2999 +#include "nsKDEUtils.h" |
2997 +#include "nsKDEUtils.h" |
3000 +#endif |
2998 +#endif |
3001 |
2999 |
3002 nsresult |
3000 nsresult |
3003 nsMIMEInfoUnix::LoadUriInternal(nsIURI * aURI) |
3001 nsMIMEInfoUnix::LoadUriInternal(nsIURI * aURI) |
3004 { |
3002 { |
3005 - nsresult rv = nsGNOMERegistry::LoadURL(aURI); |
3003 - return nsGNOMERegistry::LoadURL(aURI); |
3006 + nsresult rv = nsCommonRegistry::LoadURL(aURI); |
3004 + return nsCommonRegistry::LoadURL(aURI); |
3007 |
3005 } |
3008 #ifdef MOZ_WIDGET_QT |
3006 |
3009 if (NS_FAILED(rv)) { |
3007 NS_IMETHODIMP |
3010 rv = nsMIMEInfoQt::LoadUriInternal(aURI); |
3008 nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval) |
3011 } |
3009 { |
3012 #endif |
3010 // if mDefaultApplication is set, it means the application has been set from |
3013 |
|
3014 return rv; |
|
3015 @@ -45,24 +48,24 @@ nsMIMEInfoUnix::GetHasDefaultHandler(boo |
|
3016 // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to |
3011 // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to |
3017 // give the GNOME answer. |
3012 // give the GNOME answer. |
3018 if (mDefaultApplication) |
3013 if (mDefaultApplication) |
3019 return nsMIMEInfoImpl::GetHasDefaultHandler(_retval); |
3014 return nsMIMEInfoImpl::GetHasDefaultHandler(_retval); |
3020 |
3015 |
3164 return gnomeInfo.forget(); |
3159 return gnomeInfo.forget(); |
3165 } |
3160 } |
3166 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build |
3161 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build |
3167 --- a/widget/gtk/moz.build |
3162 --- a/widget/gtk/moz.build |
3168 +++ b/widget/gtk/moz.build |
3163 +++ b/widget/gtk/moz.build |
3169 @@ -87,16 +87,17 @@ else: |
3164 @@ -90,16 +90,17 @@ else: |
3170 include('/ipc/chromium/chromium-config.mozbuild') |
3165 include('/ipc/chromium/chromium-config.mozbuild') |
3171 |
3166 |
3172 FINAL_LIBRARY = 'xul' |
3167 FINAL_LIBRARY = 'xul' |
3173 |
3168 |
3174 LOCAL_INCLUDES += [ |
3169 LOCAL_INCLUDES += [ |
3273 |
3268 |
3274 GtkWindow *parent_widget = |
3269 GtkWindow *parent_widget = |
3275 GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)); |
3270 GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)); |
3276 |
3271 |
3277 GtkFileChooserAction action = GetGtkFileChooserAction(mMode); |
3272 GtkFileChooserAction action = GetGtkFileChooserAction(mMode); |
3278 const gchar *accept_button = (action == GTK_FILE_CHOOSER_ACTION_SAVE) |
3273 |
3279 @@ -595,8 +615,235 @@ nsFilePicker::Done(GtkWidget* file_choos |
3274 @@ -603,8 +623,235 @@ nsFilePicker::Done(GtkWidget* file_choos |
3280 if (mCallback) { |
3275 if (mCallback) { |
3281 mCallback->Done(result); |
3276 mCallback->Done(result); |
3282 mCallback = nullptr; |
3277 mCallback = nullptr; |
3283 } else { |
3278 } else { |
3284 mResult = result; |
3279 mResult = result; |
3588 #if defined(XP_WIN) |
3583 #if defined(XP_WIN) |
3589 #pragma warning(push) |
3584 #pragma warning(push) |
3590 #pragma warning(disable:4996) // VC12+ deprecates GetVersionEx |
3585 #pragma warning(disable:4996) // VC12+ deprecates GetVersionEx |
3591 OSVERSIONINFO info = { sizeof(OSVERSIONINFO) }; |
3586 OSVERSIONINFO info = { sizeof(OSVERSIONINFO) }; |
3592 if (GetVersionEx(&info)) { |
3587 if (GetVersionEx(&info)) { |
3593 nsTextFormatter::ssprintf(osVersion, MOZ_UTF16("%ld.%ld"), |
3588 nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", |
3594 info.dwMajorVersion, |
3589 info.dwMajorVersion, |
3595 info.dwMinorVersion); |
3590 info.dwMinorVersion); |
3596 } |
3591 } |
3597 + desktop = NS_LITERAL_STRING("win"); |
3592 + desktop = NS_LITERAL_STRING("win"); |
3598 #pragma warning(pop) |
3593 #pragma warning(pop) |
3599 #elif defined(MOZ_WIDGET_COCOA) |
3594 #elif defined(MOZ_WIDGET_COCOA) |
3600 SInt32 majorVersion = nsCocoaFeatures::OSXVersionMajor(); |
3595 SInt32 majorVersion = nsCocoaFeatures::OSXVersionMajor(); |
3601 SInt32 minorVersion = nsCocoaFeatures::OSXVersionMinor(); |
3596 SInt32 minorVersion = nsCocoaFeatures::OSXVersionMinor(); |
3602 nsTextFormatter::ssprintf(osVersion, MOZ_UTF16("%ld.%ld"), |
3597 nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", |
3603 majorVersion, |
3598 majorVersion, |
3604 minorVersion); |
3599 minorVersion); |
3605 + desktop = NS_LITERAL_STRING("macosx"); |
3600 + desktop = NS_LITERAL_STRING("macosx"); |
3606 #elif defined(MOZ_WIDGET_GTK) |
3601 #elif defined(MOZ_WIDGET_GTK) |
3607 nsTextFormatter::ssprintf(osVersion, MOZ_UTF16("%ld.%ld"), |
3602 nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", |
3608 gtk_major_version, |
3603 gtk_major_version, |
3609 gtk_minor_version); |
3604 gtk_minor_version); |
3610 + desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome"); |
3605 + desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome"); |
3611 #elif defined(MOZ_WIDGET_ANDROID) |
3606 #elif defined(MOZ_WIDGET_ANDROID) |
3612 bool isTablet = false; |
3607 bool isTablet = false; |
3613 if (mozilla::AndroidBridge::Bridge()) { |
3608 if (mozilla::AndroidBridge::Bridge()) { |
3614 mozilla::AndroidBridge::Bridge()->GetStaticStringField("android/os/Build$VERSION", |
3609 mozilla::AndroidBridge::Bridge()->GetStaticStringField("android/os/Build$VERSION", |
3615 "RELEASE", |
3610 "RELEASE", |
3616 osVersion); |
3611 osVersion); |
3617 isTablet = mozilla::widget::GeckoAppShell::IsTablet(); |
3612 isTablet = java::GeckoAppShell::IsTablet(); |
3618 } |
3613 } |
3619 + desktop = NS_LITERAL_STRING("android"); |
3614 + desktop = NS_LITERAL_STRING("android"); |
3620 #endif |
3615 #endif |
3621 |
3616 |
3622 if (XRE_IsContentProcess()) { |
3617 if (XRE_IsContentProcess()) { |