diff options
Diffstat (limited to 'revert-removal-of-native-notifications.patch')
-rw-r--r-- | revert-removal-of-native-notifications.patch | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/revert-removal-of-native-notifications.patch b/revert-removal-of-native-notifications.patch new file mode 100644 index 0000000..b7e1a1b --- /dev/null +++ b/revert-removal-of-native-notifications.patch @@ -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__ */ |