FIXME: DesktopNotificationDelegate has been removed
Related CL: https://codereview.chromium.org/2906883003
This commit is contained in:
parent
fe431a9e58
commit
f694b64d71
8 changed files with 57 additions and 84 deletions
|
@ -49,7 +49,8 @@ namespace api {
|
||||||
|
|
||||||
Notification::Notification(v8::Isolate* isolate,
|
Notification::Notification(v8::Isolate* isolate,
|
||||||
v8::Local<v8::Object> wrapper,
|
v8::Local<v8::Object> wrapper,
|
||||||
mate::Arguments* args) {
|
mate::Arguments* args)
|
||||||
|
: NotificationDelegate(std::string()) { // FIXME(alexeykuzmin)
|
||||||
InitWith(isolate, wrapper);
|
InitWith(isolate, wrapper);
|
||||||
|
|
||||||
presenter_ = brightray::BrowserClient::Get()->GetNotificationPresenter();
|
presenter_ = brightray::BrowserClient::Get()->GetNotificationPresenter();
|
||||||
|
|
34
brightray/browser/notification_delegate.cc
Normal file
34
brightray/browser/notification_delegate.cc
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
// Copyright (c) 2015 GitHub, Inc.
|
||||||
|
// Use of this source code is governed by the MIT license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#include "brightray/browser/notification_delegate.h"
|
||||||
|
#include "content/public/browser/notification_event_dispatcher.h"
|
||||||
|
|
||||||
|
namespace brightray {
|
||||||
|
|
||||||
|
NotificationDelegate::NotificationDelegate(const std::string& notification_id)
|
||||||
|
: notification_id_(notification_id) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void NotificationDelegate::NotificationDestroyed() {
|
||||||
|
delete this;
|
||||||
|
}
|
||||||
|
|
||||||
|
void NotificationDelegate::NotificationClick() {
|
||||||
|
content::NotificationEventDispatcher::GetInstance()
|
||||||
|
->DispatchNonPersistentClickEvent(notification_id_);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NotificationDelegate::NotificationClosed() {
|
||||||
|
content::NotificationEventDispatcher::GetInstance()
|
||||||
|
->DispatchNonPersistentCloseEvent(notification_id_);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NotificationDelegate::NotificationDisplayed() {
|
||||||
|
content::NotificationEventDispatcher::GetInstance()
|
||||||
|
->DispatchNonPersistentShowEvent(notification_id_);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace brightray
|
||||||
|
|
|
@ -7,14 +7,18 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "content/public/browser/desktop_notification_delegate.h"
|
#include "base/macros.h"
|
||||||
|
|
||||||
|
|
||||||
namespace brightray {
|
namespace brightray {
|
||||||
|
|
||||||
class NotificationDelegate : public content::DesktopNotificationDelegate {
|
class NotificationDelegate {
|
||||||
public:
|
public:
|
||||||
|
explicit NotificationDelegate(const std::string& notification_id);
|
||||||
|
virtual ~NotificationDelegate() {}
|
||||||
|
|
||||||
// The native Notification object is destroyed.
|
// The native Notification object is destroyed.
|
||||||
virtual void NotificationDestroyed() {}
|
virtual void NotificationDestroyed();
|
||||||
|
|
||||||
// Failed to send the notification.
|
// Failed to send the notification.
|
||||||
virtual void NotificationFailed() {}
|
virtual void NotificationFailed() {}
|
||||||
|
@ -22,6 +26,15 @@ class NotificationDelegate : public content::DesktopNotificationDelegate {
|
||||||
// Notification was replied to
|
// Notification was replied to
|
||||||
virtual void NotificationReplied(const std::string& reply) {}
|
virtual void NotificationReplied(const std::string& reply) {}
|
||||||
virtual void NotificationAction(int index) {}
|
virtual void NotificationAction(int index) {}
|
||||||
|
|
||||||
|
virtual void NotificationClick();
|
||||||
|
virtual void NotificationClosed();
|
||||||
|
virtual void NotificationDisplayed();
|
||||||
|
|
||||||
|
private:
|
||||||
|
const std::string& notification_id_;
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(NotificationDelegate);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace brightray
|
} // namespace brightray
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
// Copyright (c) 2015 GitHub, Inc.
|
|
||||||
// Use of this source code is governed by the MIT license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
#include "brightray/browser/notification_delegate_adapter.h"
|
|
||||||
|
|
||||||
namespace brightray {
|
|
||||||
|
|
||||||
NotificationDelegateAdapter::NotificationDelegateAdapter(
|
|
||||||
std::unique_ptr<content::DesktopNotificationDelegate> delegate)
|
|
||||||
: delegate_(std::move(delegate)) {
|
|
||||||
}
|
|
||||||
|
|
||||||
NotificationDelegateAdapter::~NotificationDelegateAdapter() {
|
|
||||||
}
|
|
||||||
|
|
||||||
void NotificationDelegateAdapter::NotificationDestroyed() {
|
|
||||||
delete this;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NotificationDelegateAdapter::NotificationDisplayed() {
|
|
||||||
delegate_->NotificationDisplayed();
|
|
||||||
}
|
|
||||||
|
|
||||||
void NotificationDelegateAdapter::NotificationClosed() {
|
|
||||||
delegate_->NotificationClosed();
|
|
||||||
}
|
|
||||||
|
|
||||||
void NotificationDelegateAdapter::NotificationClick() {
|
|
||||||
delegate_->NotificationClick();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace brightray
|
|
|
@ -1,38 +0,0 @@
|
||||||
// Copyright (c) 2015 GitHub, Inc.
|
|
||||||
// Use of this source code is governed by the MIT license that can be
|
|
||||||
// found in the LICENSE file.
|
|
||||||
|
|
||||||
#ifndef BRIGHTRAY_BROWSER_NOTIFICATION_DELEGATE_ADAPTER_H_
|
|
||||||
#define BRIGHTRAY_BROWSER_NOTIFICATION_DELEGATE_ADAPTER_H_
|
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
#include "base/macros.h"
|
|
||||||
#include "brightray/browser/notification_delegate.h"
|
|
||||||
|
|
||||||
namespace brightray {
|
|
||||||
|
|
||||||
// Adapt the content::DesktopNotificationDelegate to NotificationDelegate.
|
|
||||||
class NotificationDelegateAdapter : public NotificationDelegate {
|
|
||||||
public:
|
|
||||||
explicit NotificationDelegateAdapter(
|
|
||||||
std::unique_ptr<content::DesktopNotificationDelegate> delegate);
|
|
||||||
~NotificationDelegateAdapter() override;
|
|
||||||
|
|
||||||
// NotificationDelegate:
|
|
||||||
void NotificationDestroyed() override;
|
|
||||||
|
|
||||||
// content::DesktopNotificationDelegate:
|
|
||||||
void NotificationDisplayed() override;
|
|
||||||
void NotificationClosed() override;
|
|
||||||
void NotificationClick() override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::unique_ptr<content::DesktopNotificationDelegate> delegate_;
|
|
||||||
|
|
||||||
DISALLOW_COPY_AND_ASSIGN(NotificationDelegateAdapter);
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace brightray
|
|
||||||
|
|
||||||
#endif // BRIGHTRAY_BROWSER_NOTIFICATION_DELEGATE_ADAPTER_H_
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include "base/strings/utf_string_conversions.h"
|
#include "base/strings/utf_string_conversions.h"
|
||||||
#include "brightray/browser/browser_client.h"
|
#include "brightray/browser/browser_client.h"
|
||||||
#include "brightray/browser/notification.h"
|
#include "brightray/browser/notification.h"
|
||||||
#include "brightray/browser/notification_delegate_adapter.h"
|
#include "brightray/browser/notification_delegate.h"
|
||||||
#include "brightray/browser/notification_presenter.h"
|
#include "brightray/browser/notification_presenter.h"
|
||||||
#include "content/public/common/notification_resources.h"
|
#include "content/public/common/notification_resources.h"
|
||||||
#include "content/public/common/platform_notification_data.h"
|
#include "content/public/common/platform_notification_data.h"
|
||||||
|
@ -77,16 +77,14 @@ void PlatformNotificationService::DisplayNotification(
|
||||||
const GURL& origin,
|
const GURL& origin,
|
||||||
const content::PlatformNotificationData& notification_data,
|
const content::PlatformNotificationData& notification_data,
|
||||||
const content::NotificationResources& notification_resources,
|
const content::NotificationResources& notification_resources,
|
||||||
std::unique_ptr<content::DesktopNotificationDelegate> delegate,
|
|
||||||
base::Closure* cancel_callback) {
|
base::Closure* cancel_callback) {
|
||||||
auto presenter = browser_client_->GetNotificationPresenter();
|
auto presenter = browser_client_->GetNotificationPresenter();
|
||||||
if (!presenter)
|
if (!presenter)
|
||||||
return;
|
return;
|
||||||
std::unique_ptr<NotificationDelegateAdapter> adapter(
|
brightray::NotificationDelegate* delegate =
|
||||||
new NotificationDelegateAdapter(std::move(delegate)));
|
new NotificationDelegate(notification_id);
|
||||||
auto notification = presenter->CreateNotification(adapter.get());
|
auto notification = presenter->CreateNotification(delegate);
|
||||||
if (notification) {
|
if (notification) {
|
||||||
ignore_result(adapter.release()); // it will release itself automatically.
|
|
||||||
*cancel_callback = base::Bind(&RemoveNotification, notification);
|
*cancel_callback = base::Bind(&RemoveNotification, notification);
|
||||||
browser_client_->WebNotificationAllowed(
|
browser_client_->WebNotificationAllowed(
|
||||||
render_process_id_, base::Bind(&OnWebNotificationAllowed, notification,
|
render_process_id_, base::Bind(&OnWebNotificationAllowed, notification,
|
||||||
|
|
|
@ -37,7 +37,6 @@ class PlatformNotificationService
|
||||||
const GURL& origin,
|
const GURL& origin,
|
||||||
const content::PlatformNotificationData& notification_data,
|
const content::PlatformNotificationData& notification_data,
|
||||||
const content::NotificationResources& notification_resources,
|
const content::NotificationResources& notification_resources,
|
||||||
std::unique_ptr<content::DesktopNotificationDelegate> delegate,
|
|
||||||
base::Closure* cancel_callback) override;
|
base::Closure* cancel_callback) override;
|
||||||
void DisplayPersistentNotification(
|
void DisplayPersistentNotification(
|
||||||
content::BrowserContext* browser_context,
|
content::BrowserContext* browser_context,
|
||||||
|
|
|
@ -68,8 +68,7 @@
|
||||||
'browser/network_delegate.cc',
|
'browser/network_delegate.cc',
|
||||||
'browser/network_delegate.h',
|
'browser/network_delegate.h',
|
||||||
'browser/notification_delegate.h',
|
'browser/notification_delegate.h',
|
||||||
'browser/notification_delegate_adapter.cc',
|
'browser/notification_delegate.cc',
|
||||||
'browser/notification_delegate_adapter.h',
|
|
||||||
'browser/notification_presenter.cc',
|
'browser/notification_presenter.cc',
|
||||||
'browser/notification_presenter.h',
|
'browser/notification_presenter.h',
|
||||||
'browser/notification.cc',
|
'browser/notification.cc',
|
||||||
|
|
Loading…
Reference in a new issue