Fixed libnotify patch
This commit is contained in:
		
							parent
							
								
									3d23209eb3
								
							
						
					
					
						commit
						90cf500b2f
					
				| @ -148,8 +148,6 @@ Patch217:        firefox-baseline-disable.patch | ||||
| 
 | ||||
| # Upstream patches | ||||
| Patch300:        mozilla-858919.patch | ||||
| Patch301:        mozilla-858919-2.patch | ||||
| Patch302:        mozilla-858919-3.patch | ||||
| 
 | ||||
| # Gtk3 upstream patches | ||||
| Patch402:        mozilla-gtk3-tab-size.patch | ||||
| @ -297,8 +295,6 @@ cd %{tarballdir} | ||||
| 
 | ||||
| # Upstream patches | ||||
| %patch300 -p1 -b .858919 | ||||
| %patch301 -p1 -b .858919 | ||||
| %patch302 -p1 -b .858919 | ||||
| 
 | ||||
| %if %{toolkit_gtk3} | ||||
| %patch402 -p1 -b .gtk3-tab-size | ||||
|  | ||||
| @ -1,28 +0,0 @@ | ||||
| # HG changeset patch | ||||
| # Parent 9d66436af432f057f65d16ab9f5871baca4ada78 | ||||
| # User Martin Stransky <stransky@redhat.com> | ||||
| Bug 858919 - Send "alertshow" event for Web Notifications by libnotify, r=?karlt | ||||
| 
 | ||||
| diff --git a/toolkit/system/gnome/nsAlertsIconListener.cpp b/toolkit/system/gnome/nsAlertsIconListener.cpp
 | ||||
| --- a/toolkit/system/gnome/nsAlertsIconListener.cpp
 | ||||
| +++ b/toolkit/system/gnome/nsAlertsIconListener.cpp
 | ||||
| @@ -175,16 +175,19 @@ nsAlertsIconListener::ShowAlert(GdkPixbu
 | ||||
|    // different signature, so a marshaller is used instead of a C callback to | ||||
|    // get the user_data (this) in a parseable format.  |closure| is created | ||||
|    // with a floating reference, which gets sunk by g_signal_connect_closure(). | ||||
|    GClosure* closure = g_closure_new_simple(sizeof(GClosure), this); | ||||
|    g_closure_set_marshal(closure, notify_closed_marshal); | ||||
|    mClosureHandler = g_signal_connect_closure(mNotification, "closed", closure, FALSE); | ||||
|    gboolean result = notify_notification_show(mNotification, nullptr); | ||||
|   | ||||
| +  if (result && mAlertListener)
 | ||||
| +    mAlertListener->Observe(nullptr, "alertshow", mAlertCookie.get());
 | ||||
| +
 | ||||
|    return result ? NS_OK : NS_ERROR_FAILURE; | ||||
|  } | ||||
|   | ||||
|  nsresult | ||||
|  nsAlertsIconListener::StartRequest(const nsAString & aImageUrl) | ||||
|  { | ||||
|    if (mIconRequest) { | ||||
|      // Another icon request is already in flight.  Kill it. | ||||
| @ -1,144 +0,0 @@ | ||||
| # HG changeset patch | ||||
| # Parent 531e0bc755b2335dec5aae2a10f4ba454307981d | ||||
| # User Martin Stransky <stransky@redhat.com> | ||||
| Bug 858919 - Fixes image loading for libnotify notifications. r=?karlt | ||||
| 
 | ||||
| diff --git a/toolkit/system/gnome/nsAlertsIconListener.cpp b/toolkit/system/gnome/nsAlertsIconListener.cpp
 | ||||
| --- a/toolkit/system/gnome/nsAlertsIconListener.cpp
 | ||||
| +++ b/toolkit/system/gnome/nsAlertsIconListener.cpp
 | ||||
| @@ -46,16 +46,31 @@ static void notify_closed_marshal(GClosu
 | ||||
|    NS_ABORT_IF_FALSE(n_param_values >= 1, "No object in params"); | ||||
|   | ||||
|    nsAlertsIconListener* alert = | ||||
|      static_cast<nsAlertsIconListener*>(closure->data); | ||||
|    alert->SendClosed(); | ||||
|    NS_RELEASE(alert); | ||||
|  } | ||||
|   | ||||
| +static GdkPixbuf*
 | ||||
| +GetPixbufFromImgRequest(imgIRequest* aRequest)
 | ||||
| +{
 | ||||
| +  nsCOMPtr<imgIContainer> image;
 | ||||
| +  nsresult rv = aRequest->GetImage(getter_AddRefs(image));
 | ||||
| +  if (NS_FAILED(rv)) {  
 | ||||
| +    return nullptr;
 | ||||
| +  }
 | ||||
| +
 | ||||
| +  nsCOMPtr<nsIImageToPixbuf> imgToPixbuf =
 | ||||
| +    do_GetService("@mozilla.org/widget/image-to-gdk-pixbuf;1");
 | ||||
| +
 | ||||
| +  return imgToPixbuf->ConvertImageToPixbuf(image);
 | ||||
| +}
 | ||||
| +
 | ||||
|  NS_IMPL_ISUPPORTS(nsAlertsIconListener, imgINotificationObserver, | ||||
|                    nsIObserver, nsISupportsWeakReference) | ||||
|   | ||||
|  nsAlertsIconListener::nsAlertsIconListener() | ||||
|  : mLoadedFrame(false), | ||||
|    mNotification(nullptr) | ||||
|  { | ||||
|    if (!libNotifyHandle && !libNotifyNotAvail) { | ||||
| @@ -101,57 +116,55 @@ nsAlertsIconListener::Notify(imgIRequest
 | ||||
|    } | ||||
|   | ||||
|    return NS_OK; | ||||
|  } | ||||
|   | ||||
|  nsresult | ||||
|  nsAlertsIconListener::OnStopRequest(imgIRequest* aRequest) | ||||
|  { | ||||
| +  NS_ASSERTION(mIconRequest == aRequest, "aRequest does not match!");
 | ||||
| +
 | ||||
|    uint32_t imgStatus = imgIRequest::STATUS_ERROR; | ||||
|    nsresult rv = aRequest->GetImageStatus(&imgStatus); | ||||
|    NS_ENSURE_SUCCESS(rv, rv); | ||||
|    if (imgStatus == imgIRequest::STATUS_ERROR && !mLoadedFrame) { | ||||
|      // We have an error getting the image. Display the notification with no icon. | ||||
|      ShowAlert(nullptr); | ||||
| -  }
 | ||||
|   | ||||
| -  if (mIconRequest) {
 | ||||
| +    // Cancel any pending request
 | ||||
|      mIconRequest->Cancel(NS_BINDING_ABORTED); | ||||
|      mIconRequest = nullptr; | ||||
|    } | ||||
| +
 | ||||
|    return NS_OK; | ||||
|  } | ||||
|   | ||||
|  nsresult | ||||
|  nsAlertsIconListener::OnStopFrame(imgIRequest* aRequest) | ||||
|  { | ||||
| -  if (aRequest != mIconRequest)
 | ||||
| -    return NS_ERROR_FAILURE;
 | ||||
| +  NS_ASSERTION(mIconRequest == aRequest, "aRequest does not match!");
 | ||||
|   | ||||
|    if (mLoadedFrame) | ||||
|      return NS_OK; // only use one frame | ||||
|   | ||||
| -  nsCOMPtr<imgIContainer> image;
 | ||||
| -  nsresult rv = aRequest->GetImage(getter_AddRefs(image));
 | ||||
| -  if (NS_FAILED(rv))
 | ||||
| -    return rv;
 | ||||
| -
 | ||||
| -  nsCOMPtr<nsIImageToPixbuf> imgToPixbuf =
 | ||||
| -    do_GetService("@mozilla.org/widget/image-to-gdk-pixbuf;1");
 | ||||
| -
 | ||||
| -  GdkPixbuf* imagePixbuf = imgToPixbuf->ConvertImageToPixbuf(image);
 | ||||
| -  if (!imagePixbuf)
 | ||||
| -    return NS_ERROR_FAILURE;
 | ||||
| -
 | ||||
| -  ShowAlert(imagePixbuf);
 | ||||
| -
 | ||||
| -  g_object_unref(imagePixbuf);
 | ||||
| +  GdkPixbuf* imagePixbuf = GetPixbufFromImgRequest(aRequest);
 | ||||
| +  if (!imagePixbuf) {
 | ||||
| +    ShowAlert(nullptr);
 | ||||
| +  } else {
 | ||||
| +    ShowAlert(imagePixbuf);
 | ||||
| +    g_object_unref(imagePixbuf);
 | ||||
| +  }
 | ||||
|   | ||||
|    mLoadedFrame = true; | ||||
| +
 | ||||
| +  // Cancel any pending request (multipart image loading/decoding for instance)
 | ||||
| +  mIconRequest->Cancel(NS_BINDING_ABORTED);
 | ||||
| +  mIconRequest = nullptr;
 | ||||
| +
 | ||||
|    return NS_OK; | ||||
|  } | ||||
|   | ||||
|  nsresult | ||||
|  nsAlertsIconListener::ShowAlert(GdkPixbuf* aPixbuf) | ||||
|  { | ||||
|    mNotification = notify_notification_new(mAlertTitle.get(), mAlertText.get(), | ||||
|                                            nullptr, nullptr); | ||||
| @@ -196,19 +209,25 @@ nsAlertsIconListener::StartRequest(const
 | ||||
|    NS_NewURI(getter_AddRefs(imageUri), aImageUrl); | ||||
|    if (!imageUri) | ||||
|      return ShowAlert(nullptr); | ||||
|   | ||||
|    nsCOMPtr<imgILoader> il(do_GetService("@mozilla.org/image/loader;1")); | ||||
|    if (!il) | ||||
|      return ShowAlert(nullptr); | ||||
|   | ||||
| -  return il->LoadImageXPCOM(imageUri, nullptr, nullptr, nullptr, nullptr,
 | ||||
| -                            this, nullptr, nsIRequest::LOAD_NORMAL, nullptr,
 | ||||
| -                            nullptr, getter_AddRefs(mIconRequest));
 | ||||
| +  nsresult rv = il->LoadImageXPCOM(imageUri, nullptr, nullptr, nullptr, nullptr,
 | ||||
| +                                   this, nullptr, nsIRequest::LOAD_NORMAL, nullptr,
 | ||||
| +                                   nullptr, getter_AddRefs(mIconRequest));
 | ||||
| +  if (NS_FAILED(rv))
 | ||||
| +    return rv;
 | ||||
| +
 | ||||
| +  mIconRequest->StartDecoding();
 | ||||
| +
 | ||||
| +  return NS_OK;
 | ||||
|  } | ||||
|   | ||||
|  void | ||||
|  nsAlertsIconListener::SendCallback() | ||||
|  { | ||||
|    if (mAlertListener) | ||||
|      mAlertListener->Observe(nullptr, "alertclickcallback", mAlertCookie.get()); | ||||
|  } | ||||
| @ -1,33 +1,153 @@ | ||||
| # HG changeset patch | ||||
| # Parent b17cad2d1e5e6bcb5a10096d51d07ea8a79b6921 | ||||
| # User Martin Stransky <stransky@redhat.com> | ||||
| Bug 858919 - Add support for libnotify calls which was removed for new notification API. r=karlt | ||||
| 
 | ||||
| diff --git a/toolkit/system/gnome/moz.build b/toolkit/system/gnome/moz.build
 | ||||
| --- a/toolkit/system/gnome/moz.build
 | ||||
| +++ b/toolkit/system/gnome/moz.build
 | ||||
| @@ -1,15 +1,17 @@
 | ||||
|  # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- | ||||
|  # vim: set filetype=python: | ||||
|  # 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 | ||||
| diff -up mozilla-release/toolkit/components/alerts/nsAlertsService.cpp.858919 mozilla-release/toolkit/components/alerts/nsAlertsService.cpp
 | ||||
| --- mozilla-release/toolkit/components/alerts/nsAlertsService.cpp.858919	2014-11-26 03:17:37.000000000 +0100
 | ||||
| +++ mozilla-release/toolkit/components/alerts/nsAlertsService.cpp	2014-12-01 11:58:31.896101722 +0100
 | ||||
| @@ -100,10 +100,12 @@ NS_IMETHODIMP nsAlertsService::ShowAlert
 | ||||
|    nsCOMPtr<nsIAlertsService> sysAlerts(do_GetService(NS_SYSTEMALERTSERVICE_CONTRACTID)); | ||||
|    nsresult rv; | ||||
|    if (sysAlerts) { | ||||
| -    return sysAlerts->ShowAlertNotification(aImageUrl, aAlertTitle, aAlertText, aAlertTextClickable,
 | ||||
| -                                            aAlertCookie, aAlertListener, aAlertName,
 | ||||
| -                                            aBidi, aLang, aData,
 | ||||
| -                                            IPC::Principal(aPrincipal));
 | ||||
| +    rv = sysAlerts->ShowAlertNotification(aImageUrl, aAlertTitle, aAlertText, aAlertTextClickable,
 | ||||
| +                                          aAlertCookie, aAlertListener, aAlertName,
 | ||||
| +                                          aBidi, aLang, aData,
 | ||||
| +                                          IPC::Principal(aPrincipal));
 | ||||
| +    if (NS_SUCCEEDED(rv))
 | ||||
| +      return NS_OK;
 | ||||
|    } | ||||
|   | ||||
|    if (!ShouldShowAlert()) { | ||||
| diff -up mozilla-release/toolkit/system/gnome/moz.build.858919 mozilla-release/toolkit/system/gnome/moz.build
 | ||||
| --- mozilla-release/toolkit/system/gnome/moz.build.858919	2014-11-26 03:17:39.000000000 +0100
 | ||||
| +++ mozilla-release/toolkit/system/gnome/moz.build	2014-12-01 11:58:31.896101722 +0100
 | ||||
| @@ -5,7 +5,9 @@
 | ||||
|  # file, You can obtain one at http://mozilla.org/MPL/2.0/. | ||||
|   | ||||
|  SOURCES += [ | ||||
| +    'nsAlertsIconListener.cpp',
 | ||||
| +    'nsAlertsService.cpp',
 | ||||
|      'nsGnomeModule.cpp', | ||||
| +    'nsSystemAlertsService.cpp',
 | ||||
|  ] | ||||
|   | ||||
|  if CONFIG['MOZ_ENABLE_GCONF']: | ||||
|      SOURCES += [ | ||||
|          'nsGConfService.cpp', | ||||
|      ] | ||||
| diff -up mozilla-release/toolkit/system/gnome/nsAlertsIconListener.cpp.858919 mozilla-release/toolkit/system/gnome/nsAlertsIconListener.cpp
 | ||||
| --- mozilla-release/toolkit/system/gnome/nsAlertsIconListener.cpp.858919	2014-11-26 03:17:39.000000000 +0100
 | ||||
| +++ mozilla-release/toolkit/system/gnome/nsAlertsIconListener.cpp	2014-12-01 12:00:39.455960137 +0100
 | ||||
| @@ -51,6 +51,21 @@ static void notify_closed_marshal(GClosu
 | ||||
|    NS_RELEASE(alert); | ||||
|  } | ||||
|   | ||||
| diff --git a/toolkit/system/gnome/nsAlertsIconListener.h b/toolkit/system/gnome/nsAlertsIconListener.h
 | ||||
| new file mode 100644 | ||||
| --- /dev/null
 | ||||
| +++ b/toolkit/system/gnome/nsAlertsIconListener.h
 | ||||
| +static GdkPixbuf*
 | ||||
| +GetPixbufFromImgRequest(imgIRequest* aRequest)
 | ||||
| +{
 | ||||
| +  nsCOMPtr<imgIContainer> image;
 | ||||
| +  nsresult rv = aRequest->GetImage(getter_AddRefs(image));
 | ||||
| +  if (NS_FAILED(rv)) {
 | ||||
| +    return nullptr;
 | ||||
| +  }
 | ||||
| +
 | ||||
| +  nsCOMPtr<nsIImageToPixbuf> imgToPixbuf =
 | ||||
| +    do_GetService("@mozilla.org/widget/image-to-gdk-pixbuf;1");
 | ||||
| +
 | ||||
| +  return imgToPixbuf->ConvertImageToPixbuf(image);
 | ||||
| +}
 | ||||
| +
 | ||||
|  NS_IMPL_ISUPPORTS(nsAlertsIconListener, imgINotificationObserver, | ||||
|                    nsIObserver, nsISupportsWeakReference) | ||||
|   | ||||
| @@ -106,15 +121,15 @@ nsAlertsIconListener::Notify(imgIRequest
 | ||||
|  nsresult | ||||
|  nsAlertsIconListener::OnStopRequest(imgIRequest* aRequest) | ||||
|  { | ||||
| +  NS_ASSERTION(mIconRequest == aRequest, "aRequest does not match!");
 | ||||
| +
 | ||||
|    uint32_t imgStatus = imgIRequest::STATUS_ERROR; | ||||
|    nsresult rv = aRequest->GetImageStatus(&imgStatus); | ||||
|    NS_ENSURE_SUCCESS(rv, rv); | ||||
|    if (imgStatus == imgIRequest::STATUS_ERROR && !mLoadedFrame) { | ||||
|      // We have an error getting the image. Display the notification with no icon. | ||||
|      ShowAlert(nullptr); | ||||
| -  }
 | ||||
|   | ||||
| -  if (mIconRequest) {
 | ||||
|      mIconRequest->Cancel(NS_BINDING_ABORTED); | ||||
|      mIconRequest = nullptr; | ||||
|    } | ||||
| @@ -124,29 +139,25 @@ nsAlertsIconListener::OnStopRequest(imgI
 | ||||
|  nsresult | ||||
|  nsAlertsIconListener::OnStopFrame(imgIRequest* aRequest) | ||||
|  { | ||||
| -  if (aRequest != mIconRequest)
 | ||||
| -    return NS_ERROR_FAILURE;
 | ||||
| +  NS_ASSERTION(mIconRequest == aRequest, "aRequest does not match!");
 | ||||
|   | ||||
|    if (mLoadedFrame) | ||||
|      return NS_OK; // only use one frame | ||||
|   | ||||
| -  nsCOMPtr<imgIContainer> image;
 | ||||
| -  nsresult rv = aRequest->GetImage(getter_AddRefs(image));
 | ||||
| -  if (NS_FAILED(rv))
 | ||||
| -    return rv;
 | ||||
| -
 | ||||
| -  nsCOMPtr<nsIImageToPixbuf> imgToPixbuf =
 | ||||
| -    do_GetService("@mozilla.org/widget/image-to-gdk-pixbuf;1");
 | ||||
| -
 | ||||
| -  GdkPixbuf* imagePixbuf = imgToPixbuf->ConvertImageToPixbuf(image);
 | ||||
| -  if (!imagePixbuf)
 | ||||
| -    return NS_ERROR_FAILURE;
 | ||||
| +  GdkPixbuf* imagePixbuf = GetPixbufFromImgRequest(aRequest);
 | ||||
| +  if (!imagePixbuf) {
 | ||||
| +    ShowAlert(nullptr);
 | ||||
| +  } else {
 | ||||
| +    ShowAlert(imagePixbuf);
 | ||||
| +    g_object_unref(imagePixbuf);
 | ||||
| +  }
 | ||||
|   | ||||
| -  ShowAlert(imagePixbuf);
 | ||||
| +  mLoadedFrame = true;
 | ||||
|   | ||||
| -  g_object_unref(imagePixbuf);
 | ||||
| +  // Cancel any pending request (multipart image loading/decoding for instance)
 | ||||
| +  mIconRequest->Cancel(NS_BINDING_ABORTED);
 | ||||
| +  mIconRequest = nullptr;
 | ||||
|   | ||||
| -  mLoadedFrame = true;
 | ||||
|    return NS_OK; | ||||
|  } | ||||
|   | ||||
| @@ -180,6 +191,9 @@ nsAlertsIconListener::ShowAlert(GdkPixbu
 | ||||
|    mClosureHandler = g_signal_connect_closure(mNotification, "closed", closure, FALSE); | ||||
|    gboolean result = notify_notification_show(mNotification, nullptr); | ||||
|   | ||||
| +  if (result && mAlertListener)
 | ||||
| +    mAlertListener->Observe(nullptr, "alertshow", mAlertCookie.get());
 | ||||
| +
 | ||||
|    return result ? NS_OK : NS_ERROR_FAILURE; | ||||
|  } | ||||
|   | ||||
| @@ -201,9 +215,15 @@ nsAlertsIconListener::StartRequest(const
 | ||||
|    if (!il) | ||||
|      return ShowAlert(nullptr); | ||||
|   | ||||
| -  return il->LoadImageXPCOM(imageUri, nullptr, nullptr, nullptr, nullptr,
 | ||||
| -                            this, nullptr, nsIRequest::LOAD_NORMAL, nullptr,
 | ||||
| -                            nullptr, getter_AddRefs(mIconRequest));
 | ||||
| +  nsresult rv = il->LoadImageXPCOM(imageUri, nullptr, nullptr, nullptr, nullptr,
 | ||||
| +                                   this, nullptr, nsIRequest::LOAD_NORMAL, nullptr,
 | ||||
| +                                   0 /* use default */, getter_AddRefs(mIconRequest));
 | ||||
| +  if (NS_FAILED(rv))
 | ||||
| +    return rv;
 | ||||
| +
 | ||||
| +  mIconRequest->StartDecoding();
 | ||||
| +
 | ||||
| +  return NS_OK;
 | ||||
|  } | ||||
|   | ||||
|  void | ||||
| diff -up mozilla-release/toolkit/system/gnome/nsAlertsIconListener.h.858919 mozilla-release/toolkit/system/gnome/nsAlertsIconListener.h
 | ||||
| --- mozilla-release/toolkit/system/gnome/nsAlertsIconListener.h.858919	2014-12-01 11:58:31.896101722 +0100
 | ||||
| +++ mozilla-release/toolkit/system/gnome/nsAlertsIconListener.h	2014-12-01 11:58:31.896101722 +0100
 | ||||
| @@ -0,0 +1,89 @@
 | ||||
| +/* -*- 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
 | ||||
| @ -118,50 +238,86 @@ new file mode 100644 | ||||
| +};
 | ||||
| +
 | ||||
| +#endif
 | ||||
| diff --git a/toolkit/system/gnome/nsAlertsService.cpp b/toolkit/system/gnome/nsAlertsService.cpp
 | ||||
| new file mode 100644 | ||||
| --- /dev/null
 | ||||
| +++ b/toolkit/system/gnome/nsAlertsService.cpp
 | ||||
| @@ -0,0 +1,53 @@
 | ||||
| diff -up mozilla-release/toolkit/system/gnome/nsGnomeModule.cpp.858919 mozilla-release/toolkit/system/gnome/nsGnomeModule.cpp
 | ||||
| --- mozilla-release/toolkit/system/gnome/nsGnomeModule.cpp.858919	2014-11-26 03:17:39.000000000 +0100
 | ||||
| +++ mozilla-release/toolkit/system/gnome/nsGnomeModule.cpp	2014-12-01 11:58:31.896101722 +0100
 | ||||
| @@ -22,6 +22,8 @@ NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGn
 | ||||
|  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); | ||||
| @@ -33,6 +35,7 @@ NS_DEFINE_NAMED_CID(NS_GNOMEVFSSERVICE_C
 | ||||
|  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 | ||||
| @@ -45,6 +48,7 @@ static const mozilla::Module::CIDEntry k
 | ||||
|    { &kNS_GIOSERVICE_CID, false, nullptr, nsGIOServiceConstructor }, | ||||
|    { &kNS_GSETTINGSSERVICE_CID, false, nullptr, nsGSettingsServiceConstructor }, | ||||
|  #endif | ||||
| +  { &kNS_SYSTEMALERTSSERVICE_CID, false, nullptr, nsSystemAlertsServiceConstructor },
 | ||||
|    { nullptr } | ||||
|  }; | ||||
|   | ||||
| @@ -59,6 +63,7 @@ static const mozilla::Module::ContractID
 | ||||
|    { NS_GIOSERVICE_CONTRACTID, &kNS_GIOSERVICE_CID }, | ||||
|    { NS_GSETTINGSSERVICE_CONTRACTID, &kNS_GSETTINGSSERVICE_CID }, | ||||
|  #endif | ||||
| +  { NS_SYSTEMALERTSERVICE_CONTRACTID, &kNS_SYSTEMALERTSSERVICE_CID },
 | ||||
|    { nullptr } | ||||
|  }; | ||||
|   | ||||
| diff -up mozilla-release/toolkit/system/gnome/nsSystemAlertsService.cpp.858919 mozilla-release/toolkit/system/gnome/nsSystemAlertsService.cpp
 | ||||
| --- mozilla-release/toolkit/system/gnome/nsSystemAlertsService.cpp.858919	2014-12-01 11:58:31.897101728 +0100
 | ||||
| +++ mozilla-release/toolkit/system/gnome/nsSystemAlertsService.cpp	2014-12-01 11:58:31.896101722 +0100
 | ||||
| @@ -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 "nsXULAppAPI.h"
 | ||||
| +#include "nsAlertsService.h"
 | ||||
| +#include "nsSystemAlertsService.h"
 | ||||
| +#include "nsAlertsIconListener.h"
 | ||||
| +#include "nsAutoPtr.h"
 | ||||
| +
 | ||||
| +NS_IMPL_ADDREF(nsAlertsService)
 | ||||
| +NS_IMPL_RELEASE(nsAlertsService)
 | ||||
| +NS_IMPL_ADDREF(nsSystemAlertsService)
 | ||||
| +NS_IMPL_RELEASE(nsSystemAlertsService)
 | ||||
| +
 | ||||
| +NS_INTERFACE_MAP_BEGIN(nsAlertsService)
 | ||||
| +NS_INTERFACE_MAP_BEGIN(nsSystemAlertsService)
 | ||||
| +   NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIAlertsService)
 | ||||
| +   NS_INTERFACE_MAP_ENTRY(nsIAlertsService)
 | ||||
| +NS_INTERFACE_MAP_END_THREADSAFE
 | ||||
| +
 | ||||
| +nsAlertsService::nsAlertsService()
 | ||||
| +nsSystemAlertsService::nsSystemAlertsService()
 | ||||
| +{
 | ||||
| +}
 | ||||
| +
 | ||||
| +nsAlertsService::~nsAlertsService()
 | ||||
| +nsSystemAlertsService::~nsSystemAlertsService()
 | ||||
| +{}
 | ||||
| +
 | ||||
| +nsresult
 | ||||
| +nsAlertsService::Init()
 | ||||
| +nsSystemAlertsService::Init()
 | ||||
| +{
 | ||||
| +  return NS_OK;
 | ||||
| +}
 | ||||
| +
 | ||||
| +NS_IMETHODIMP nsAlertsService::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,
 | ||||
| +                                                     nsIPrincipal * aPrincipal)
 | ||||
| +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,
 | ||||
| +                                                           const nsAString & aData,
 | ||||
| +                                                           nsIPrincipal * aPrincipal)
 | ||||
| +{
 | ||||
| +  nsRefPtr<nsAlertsIconListener> alertListener = new nsAlertsIconListener();
 | ||||
| +  if (!alertListener)
 | ||||
| @ -171,102 +327,39 @@ new file mode 100644 | ||||
| +                                       aAlertCookie, aAlertListener);
 | ||||
| +}
 | ||||
| +
 | ||||
| +NS_IMETHODIMP nsAlertsService::CloseAlert(const nsAString& aAlertName,
 | ||||
| +                                          nsIPrincipal* aPrincipal)
 | ||||
| +NS_IMETHODIMP nsSystemAlertsService::CloseAlert(const nsAString& aAlertName,
 | ||||
| +                                                nsIPrincipal* aPrincipal)
 | ||||
| +{
 | ||||
| +  return NS_ERROR_NOT_IMPLEMENTED;
 | ||||
| +}
 | ||||
| diff --git a/toolkit/system/gnome/nsAlertsService.h b/toolkit/system/gnome/nsAlertsService.h
 | ||||
| new file mode 100644 | ||||
| --- /dev/null
 | ||||
| +++ b/toolkit/system/gnome/nsAlertsService.h
 | ||||
| diff -up mozilla-release/toolkit/system/gnome/nsSystemAlertsService.h.858919 mozilla-release/toolkit/system/gnome/nsSystemAlertsService.h
 | ||||
| --- mozilla-release/toolkit/system/gnome/nsSystemAlertsService.h.858919	2014-12-01 11:58:31.897101728 +0100
 | ||||
| +++ mozilla-release/toolkit/system/gnome/nsSystemAlertsService.h	2014-12-01 11:58:31.897101728 +0100
 | ||||
| @@ -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 nsAlertsService_h__
 | ||||
| +#define nsAlertsService_h__
 | ||||
| +#ifndef nsSystemAlertsService_h__
 | ||||
| +#define nsSystemAlertsService_h__
 | ||||
| +
 | ||||
| +#include "nsIAlertsService.h"
 | ||||
| +#include "nsCOMPtr.h"
 | ||||
| +
 | ||||
| +class nsAlertsService : public nsIAlertsService
 | ||||
| +class nsSystemAlertsService : public nsIAlertsService
 | ||||
| +{
 | ||||
| +public:
 | ||||
| +  NS_DECL_NSIALERTSSERVICE
 | ||||
| +  NS_DECL_ISUPPORTS
 | ||||
| +
 | ||||
| +  nsAlertsService();
 | ||||
| +  nsSystemAlertsService();
 | ||||
| +
 | ||||
| +  nsresult Init();
 | ||||
| +
 | ||||
| +protected:
 | ||||
| +  virtual ~nsAlertsService();
 | ||||
| +  virtual ~nsSystemAlertsService();
 | ||||
| +
 | ||||
| +};
 | ||||
| +
 | ||||
| +#endif /* nsAlertsService_h__ */
 | ||||
| diff --git a/toolkit/system/gnome/nsGnomeModule.cpp b/toolkit/system/gnome/nsGnomeModule.cpp
 | ||||
| --- a/toolkit/system/gnome/nsGnomeModule.cpp
 | ||||
| +++ b/toolkit/system/gnome/nsGnomeModule.cpp
 | ||||
| @@ -17,53 +17,58 @@ 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 "nsAlertsService.h"
 | ||||
| +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsAlertsService, 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, nullptr, nsGConfServiceConstructor }, | ||||
|  #endif | ||||
|  #ifdef MOZ_ENABLE_GNOMEVFS | ||||
|    { &kNS_GNOMEVFSSERVICE_CID, false, nullptr, nsGnomeVFSServiceConstructor }, | ||||
|  #endif | ||||
|  #ifdef MOZ_ENABLE_GIO | ||||
|    { &kNS_GIOSERVICE_CID, false, nullptr, nsGIOServiceConstructor }, | ||||
|    { &kNS_GSETTINGSSERVICE_CID, false, nullptr, nsGSettingsServiceConstructor }, | ||||
|  #endif | ||||
| +  { &kNS_SYSTEMALERTSSERVICE_CID, false, nullptr, nsAlertsServiceConstructor },
 | ||||
|    { nullptr } | ||||
|  }; | ||||
|   | ||||
|  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 },
 | ||||
|    { nullptr } | ||||
|  }; | ||||
|   | ||||
|  static nsresult | ||||
|  InitGType () | ||||
|  { | ||||
|    g_type_init(); | ||||
|    return NS_OK; | ||||
| +#endif /* nsSystemAlertsService_h__ */
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user