rhbz#1001998 - added a workaround for system notifications
This commit is contained in:
parent
cb5406d995
commit
f780cc4326
273
revert-removal-of-native-notifications.patch
Normal file
273
revert-removal-of-native-notifications.patch
Normal file
@ -0,0 +1,273 @@
|
|||||||
|
# HG changeset patch
|
||||||
|
# Parent 36da3cb921935478b6a37936b18b5c85a33d5617
|
||||||
|
# User Chris Coulson <chris.coulson@canonical.com>
|
||||||
|
|
||||||
|
diff --git a/mozilla/toolkit/system/gnome/moz.build b/mozilla/toolkit/system/gnome/moz.build
|
||||||
|
--- a/mozilla/toolkit/system/gnome/moz.build
|
||||||
|
+++ b/mozilla/toolkit/system/gnome/moz.build
|
||||||
|
@@ -3,16 +3,18 @@
|
||||||
|
# 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/.
|
||||||
|
|
||||||
|
MODULE = 'mozgnome'
|
||||||
|
|
||||||
|
CPP_SOURCES += [
|
||||||
|
'nsGnomeModule.cpp',
|
||||||
|
+ 'nsSystemAlertsService.cpp',
|
||||||
|
+ 'nsAlertsIconListener.cpp'
|
||||||
|
]
|
||||||
|
|
||||||
|
if CONFIG['MOZ_ENABLE_GCONF']:
|
||||||
|
CPP_SOURCES += [
|
||||||
|
'nsGConfService.cpp',
|
||||||
|
]
|
||||||
|
|
||||||
|
if CONFIG['MOZ_ENABLE_GNOMEVFS']:
|
||||||
|
diff --git a/mozilla/toolkit/system/gnome/nsAlertsIconListener.h b/mozilla/toolkit/system/gnome/nsAlertsIconListener.h
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/mozilla/toolkit/system/gnome/nsAlertsIconListener.h
|
||||||
|
@@ -0,0 +1,88 @@
|
||||||
|
+/* -*- 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/. */
|
||||||
|
+
|
||||||
|
+#ifndef nsAlertsIconListener_h__
|
||||||
|
+#define nsAlertsIconListener_h__
|
||||||
|
+
|
||||||
|
+#include "nsCOMPtr.h"
|
||||||
|
+#include "imgINotificationObserver.h"
|
||||||
|
+#include "nsStringAPI.h"
|
||||||
|
+#include "nsIObserver.h"
|
||||||
|
+#include "nsWeakReference.h"
|
||||||
|
+
|
||||||
|
+#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||||
|
+
|
||||||
|
+class imgIRequest;
|
||||||
|
+
|
||||||
|
+struct NotifyNotification;
|
||||||
|
+
|
||||||
|
+class nsAlertsIconListener : public imgINotificationObserver,
|
||||||
|
+ public nsIObserver,
|
||||||
|
+ public nsSupportsWeakReference
|
||||||
|
+{
|
||||||
|
+public:
|
||||||
|
+ NS_DECL_ISUPPORTS
|
||||||
|
+ NS_DECL_IMGINOTIFICATIONOBSERVER
|
||||||
|
+ NS_DECL_NSIOBSERVER
|
||||||
|
+
|
||||||
|
+ nsAlertsIconListener();
|
||||||
|
+ virtual ~nsAlertsIconListener();
|
||||||
|
+
|
||||||
|
+ nsresult InitAlertAsync(const nsAString & aImageUrl,
|
||||||
|
+ const nsAString & aAlertTitle,
|
||||||
|
+ const nsAString & aAlertText,
|
||||||
|
+ bool aAlertTextClickable,
|
||||||
|
+ const nsAString & aAlertCookie,
|
||||||
|
+ nsIObserver * aAlertListener);
|
||||||
|
+
|
||||||
|
+ void SendCallback();
|
||||||
|
+ void SendClosed();
|
||||||
|
+
|
||||||
|
+protected:
|
||||||
|
+ nsresult OnStopRequest(imgIRequest* aRequest);
|
||||||
|
+ nsresult OnStopFrame(imgIRequest* aRequest);
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * The only difference between libnotify.so.4 and libnotify.so.1 for these symbols
|
||||||
|
+ * is that notify_notification_new takes three arguments in libnotify.so.4 and
|
||||||
|
+ * four in libnotify.so.1.
|
||||||
|
+ * Passing the fourth argument as NULL is binary compatible.
|
||||||
|
+ */
|
||||||
|
+ typedef void (*NotifyActionCallback)(NotifyNotification*, char*, gpointer);
|
||||||
|
+ typedef bool (*notify_is_initted_t)(void);
|
||||||
|
+ typedef bool (*notify_init_t)(const char*);
|
||||||
|
+ typedef GList* (*notify_get_server_caps_t)(void);
|
||||||
|
+ typedef NotifyNotification* (*notify_notification_new_t)(const char*, const char*, const char*, const char*);
|
||||||
|
+ typedef bool (*notify_notification_show_t)(void*, char*);
|
||||||
|
+ typedef void (*notify_notification_set_icon_from_pixbuf_t)(void*, GdkPixbuf*);
|
||||||
|
+ typedef void (*notify_notification_add_action_t)(void*, const char*, const char*, NotifyActionCallback, gpointer, GFreeFunc);
|
||||||
|
+
|
||||||
|
+ nsCOMPtr<imgIRequest> mIconRequest;
|
||||||
|
+ nsCString mAlertTitle;
|
||||||
|
+ nsCString mAlertText;
|
||||||
|
+
|
||||||
|
+ nsCOMPtr<nsIObserver> mAlertListener;
|
||||||
|
+ nsString mAlertCookie;
|
||||||
|
+
|
||||||
|
+ bool mLoadedFrame;
|
||||||
|
+ bool mAlertHasAction;
|
||||||
|
+
|
||||||
|
+ static void* libNotifyHandle;
|
||||||
|
+ static bool libNotifyNotAvail;
|
||||||
|
+ static notify_is_initted_t notify_is_initted;
|
||||||
|
+ static notify_init_t notify_init;
|
||||||
|
+ static notify_get_server_caps_t notify_get_server_caps;
|
||||||
|
+ static notify_notification_new_t notify_notification_new;
|
||||||
|
+ static notify_notification_show_t notify_notification_show;
|
||||||
|
+ static notify_notification_set_icon_from_pixbuf_t notify_notification_set_icon_from_pixbuf;
|
||||||
|
+ static notify_notification_add_action_t notify_notification_add_action;
|
||||||
|
+ NotifyNotification* mNotification;
|
||||||
|
+ gulong mClosureHandler;
|
||||||
|
+
|
||||||
|
+ nsresult StartRequest(const nsAString & aImageUrl);
|
||||||
|
+ nsresult ShowAlert(GdkPixbuf* aPixbuf);
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+#endif
|
||||||
|
diff --git a/mozilla/toolkit/system/gnome/nsGnomeModule.cpp b/mozilla/toolkit/system/gnome/nsGnomeModule.cpp
|
||||||
|
--- a/mozilla/toolkit/system/gnome/nsGnomeModule.cpp
|
||||||
|
+++ b/mozilla/toolkit/system/gnome/nsGnomeModule.cpp
|
||||||
|
@@ -17,53 +17,59 @@ NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGC
|
||||||
|
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGnomeVFSService, Init)
|
||||||
|
#endif
|
||||||
|
#ifdef MOZ_ENABLE_GIO
|
||||||
|
#include "nsGIOService.h"
|
||||||
|
#include "nsGSettingsService.h"
|
||||||
|
NS_GENERIC_FACTORY_CONSTRUCTOR(nsGIOService)
|
||||||
|
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGSettingsService, Init)
|
||||||
|
#endif
|
||||||
|
+#include "nsSystemAlertsService.h"
|
||||||
|
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSystemAlertsService, Init)
|
||||||
|
|
||||||
|
#ifdef MOZ_ENABLE_GCONF
|
||||||
|
NS_DEFINE_NAMED_CID(NS_GCONFSERVICE_CID);
|
||||||
|
#endif
|
||||||
|
#ifdef MOZ_ENABLE_GNOMEVFS
|
||||||
|
NS_DEFINE_NAMED_CID(NS_GNOMEVFSSERVICE_CID);
|
||||||
|
#endif
|
||||||
|
#ifdef MOZ_ENABLE_GIO
|
||||||
|
NS_DEFINE_NAMED_CID(NS_GIOSERVICE_CID);
|
||||||
|
NS_DEFINE_NAMED_CID(NS_GSETTINGSSERVICE_CID);
|
||||||
|
#endif
|
||||||
|
+NS_DEFINE_NAMED_CID(NS_SYSTEMALERTSSERVICE_CID);
|
||||||
|
+
|
||||||
|
|
||||||
|
static const mozilla::Module::CIDEntry kGnomeCIDs[] = {
|
||||||
|
#ifdef MOZ_ENABLE_GCONF
|
||||||
|
{ &kNS_GCONFSERVICE_CID, false, NULL, nsGConfServiceConstructor },
|
||||||
|
#endif
|
||||||
|
#ifdef MOZ_ENABLE_GNOMEVFS
|
||||||
|
{ &kNS_GNOMEVFSSERVICE_CID, false, NULL, nsGnomeVFSServiceConstructor },
|
||||||
|
#endif
|
||||||
|
#ifdef MOZ_ENABLE_GIO
|
||||||
|
{ &kNS_GIOSERVICE_CID, false, NULL, nsGIOServiceConstructor },
|
||||||
|
{ &kNS_GSETTINGSSERVICE_CID, false, NULL, nsGSettingsServiceConstructor },
|
||||||
|
#endif
|
||||||
|
+ { &kNS_SYSTEMALERTSSERVICE_CID, false, NULL, nsSystemAlertsServiceConstructor },
|
||||||
|
{ NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
static const mozilla::Module::ContractIDEntry kGnomeContracts[] = {
|
||||||
|
#ifdef MOZ_ENABLE_GCONF
|
||||||
|
{ NS_GCONFSERVICE_CONTRACTID, &kNS_GCONFSERVICE_CID },
|
||||||
|
#endif
|
||||||
|
#ifdef MOZ_ENABLE_GNOMEVFS
|
||||||
|
{ NS_GNOMEVFSSERVICE_CONTRACTID, &kNS_GNOMEVFSSERVICE_CID },
|
||||||
|
#endif
|
||||||
|
#ifdef MOZ_ENABLE_GIO
|
||||||
|
{ NS_GIOSERVICE_CONTRACTID, &kNS_GIOSERVICE_CID },
|
||||||
|
{ NS_GSETTINGSSERVICE_CONTRACTID, &kNS_GSETTINGSSERVICE_CID },
|
||||||
|
#endif
|
||||||
|
+ { NS_SYSTEMALERTSERVICE_CONTRACTID, &kNS_SYSTEMALERTSSERVICE_CID },
|
||||||
|
{ NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
static nsresult
|
||||||
|
InitGType ()
|
||||||
|
{
|
||||||
|
g_type_init();
|
||||||
|
return NS_OK;
|
||||||
|
diff --git a/mozilla/toolkit/system/gnome/nsSystemAlertsService.cpp b/mozilla/toolkit/system/gnome/nsSystemAlertsService.cpp
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/mozilla/toolkit/system/gnome/nsSystemAlertsService.cpp
|
||||||
|
@@ -0,0 +1,54 @@
|
||||||
|
+/* -*- 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 "nsSystemAlertsService.h"
|
||||||
|
+#include "nsAlertsIconListener.h"
|
||||||
|
+#include "nsAutoPtr.h"
|
||||||
|
+
|
||||||
|
+NS_IMPL_THREADSAFE_ADDREF(nsSystemAlertsService)
|
||||||
|
+NS_IMPL_THREADSAFE_RELEASE(nsSystemAlertsService)
|
||||||
|
+
|
||||||
|
+NS_INTERFACE_MAP_BEGIN(nsSystemAlertsService)
|
||||||
|
+ NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIAlertsService)
|
||||||
|
+ NS_INTERFACE_MAP_ENTRY(nsIAlertsService)
|
||||||
|
+NS_INTERFACE_MAP_END_THREADSAFE
|
||||||
|
+
|
||||||
|
+nsSystemAlertsService::nsSystemAlertsService()
|
||||||
|
+{}
|
||||||
|
+
|
||||||
|
+nsSystemAlertsService::~nsSystemAlertsService()
|
||||||
|
+{}
|
||||||
|
+
|
||||||
|
+nsresult
|
||||||
|
+nsSystemAlertsService::Init()
|
||||||
|
+{
|
||||||
|
+ return NS_OK;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+NS_IMETHODIMP
|
||||||
|
+nsSystemAlertsService::ShowAlertNotification(const nsAString & aImageUrl,
|
||||||
|
+ const nsAString & aAlertTitle,
|
||||||
|
+ const nsAString & aAlertText,
|
||||||
|
+ bool aAlertTextClickable,
|
||||||
|
+ const nsAString & aAlertCookie,
|
||||||
|
+ nsIObserver * aAlertListener,
|
||||||
|
+ const nsAString & aAlertName,
|
||||||
|
+ const nsAString & aBidi,
|
||||||
|
+ const nsAString & aLang)
|
||||||
|
+{
|
||||||
|
+ nsRefPtr<nsAlertsIconListener> alertListener = new nsAlertsIconListener();
|
||||||
|
+ if (!alertListener)
|
||||||
|
+ return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
+
|
||||||
|
+ return alertListener->InitAlertAsync(aImageUrl, aAlertTitle, aAlertText, aAlertTextClickable,
|
||||||
|
+ aAlertCookie, aAlertListener);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+NS_IMETHODIMP
|
||||||
|
+nsSystemAlertsService::CloseAlert(const nsAString & aAlertName)
|
||||||
|
+{
|
||||||
|
+ return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
diff --git a/mozilla/toolkit/system/gnome/nsSystemAlertsService.h b/mozilla/toolkit/system/gnome/nsSystemAlertsService.h
|
||||||
|
new file mode 100644
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/mozilla/toolkit/system/gnome/nsSystemAlertsService.h
|
||||||
|
@@ -0,0 +1,27 @@
|
||||||
|
+/* -*- 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/. */
|
||||||
|
+
|
||||||
|
+#ifndef nsSystemAlertsService_h__
|
||||||
|
+#define nsSystemAlertsService_h__
|
||||||
|
+
|
||||||
|
+#include "nsIAlertsService.h"
|
||||||
|
+#include "nsCOMPtr.h"
|
||||||
|
+
|
||||||
|
+class nsSystemAlertsService : public nsIAlertsService
|
||||||
|
+{
|
||||||
|
+public:
|
||||||
|
+ NS_DECL_NSIALERTSSERVICE
|
||||||
|
+ NS_DECL_ISUPPORTS
|
||||||
|
+
|
||||||
|
+ nsSystemAlertsService();
|
||||||
|
+ virtual ~nsSystemAlertsService();
|
||||||
|
+
|
||||||
|
+ nsresult Init();
|
||||||
|
+
|
||||||
|
+protected:
|
||||||
|
+
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+#endif /* nsSystemAlertsService_h__ */
|
@ -54,7 +54,7 @@
|
|||||||
Summary: Mozilla Thunderbird mail/newsgroup client
|
Summary: Mozilla Thunderbird mail/newsgroup client
|
||||||
Name: thunderbird
|
Name: thunderbird
|
||||||
Version: 24.2.0
|
Version: 24.2.0
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
URL: http://www.mozilla.org/projects/thunderbird/
|
URL: http://www.mozilla.org/projects/thunderbird/
|
||||||
License: MPLv1.1 or GPLv2+ or LGPLv2+
|
License: MPLv1.1 or GPLv2+ or LGPLv2+
|
||||||
Group: Applications/Internet
|
Group: Applications/Internet
|
||||||
@ -85,6 +85,7 @@ Patch300: xulrunner-24.0-jemalloc-ppc.patch
|
|||||||
|
|
||||||
# Fedora specific patches
|
# Fedora specific patches
|
||||||
Patch400: rhbz-966424.patch
|
Patch400: rhbz-966424.patch
|
||||||
|
Patch401: revert-removal-of-native-notifications.patch
|
||||||
|
|
||||||
%if %{official_branding}
|
%if %{official_branding}
|
||||||
# Required by Mozilla Corporation
|
# Required by Mozilla Corporation
|
||||||
@ -173,6 +174,7 @@ cd mozilla
|
|||||||
%patch104 -p1 -b .gcc47
|
%patch104 -p1 -b .gcc47
|
||||||
%patch300 -p2 -b .852698
|
%patch300 -p2 -b .852698
|
||||||
%patch400 -p1 -b .966424
|
%patch400 -p1 -b .966424
|
||||||
|
%patch401 -p2 -b .notifications
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
%patch200 -p1 -b .addons
|
%patch200 -p1 -b .addons
|
||||||
@ -442,6 +444,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
|||||||
#===============================================================================
|
#===============================================================================
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Dec 11 2013 Martin Stransky <stransky@redhat.com> - 24.2.0-2
|
||||||
|
- rhbz#1001998 - added a workaround for system notifications
|
||||||
|
|
||||||
* Mon Dec 9 2013 Jan Horak <jhorak@redhat.com> - 24.2.0-1
|
* Mon Dec 9 2013 Jan Horak <jhorak@redhat.com> - 24.2.0-1
|
||||||
- Update to 24.2.0
|
- Update to 24.2.0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user