| Index: content/renderer/notification_provider.cc
|
| diff --git a/content/renderer/notification_provider.cc b/content/renderer/notification_provider.cc
|
| deleted file mode 100644
|
| index b5e749386cceeaa2b9b9e6d7cc32e0d79b095d40..0000000000000000000000000000000000000000
|
| --- a/content/renderer/notification_provider.cc
|
| +++ /dev/null
|
| @@ -1,165 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "content/renderer/notification_provider.h"
|
| -
|
| -#include <vector>
|
| -
|
| -#include "base/strings/string_util.h"
|
| -#include "content/common/desktop_notification_messages.h"
|
| -#include "content/common/frame_messages.h"
|
| -#include "content/renderer/notification_icon_loader.h"
|
| -#include "content/renderer/render_frame_impl.h"
|
| -#include "third_party/WebKit/public/web/WebDocument.h"
|
| -#include "third_party/WebKit/public/web/WebLocalFrame.h"
|
| -
|
| -using blink::WebDocument;
|
| -using blink::WebNotification;
|
| -using blink::WebNotificationPresenter;
|
| -using blink::WebSecurityOrigin;
|
| -using blink::WebString;
|
| -
|
| -namespace content {
|
| -
|
| -NotificationProvider::NotificationProvider(RenderFrame* render_frame)
|
| - : RenderFrameObserver(render_frame) {}
|
| -
|
| -NotificationProvider::~NotificationProvider() {}
|
| -
|
| -bool NotificationProvider::show(const WebNotification& notification) {
|
| - int notification_id = manager_.RegisterNotification(notification);
|
| - if (notification.iconURL().isEmpty()) {
|
| - DisplayNotification(notification_id, SkBitmap());
|
| - return true;
|
| - }
|
| -
|
| - scoped_ptr<NotificationIconLoader> loader(
|
| - new NotificationIconLoader(
|
| - notification_id,
|
| - base::Bind(&NotificationProvider::DisplayNotification,
|
| - base::Unretained(this))));
|
| -
|
| - loader->Start(notification.iconURL());
|
| -
|
| - pending_notifications_.push_back(loader.release());
|
| - return true;
|
| -}
|
| -
|
| -void NotificationProvider::DisplayNotification(int notification_id,
|
| - const SkBitmap& icon) {
|
| - WebDocument document = render_frame()->GetWebFrame()->document();
|
| - WebNotification notification;
|
| -
|
| - if (!manager_.GetNotification(notification_id, ¬ification)) {
|
| - NOTREACHED();
|
| - return;
|
| - }
|
| -
|
| - RemovePendingNotification(notification_id);
|
| -
|
| - ShowDesktopNotificationHostMsgParams params;
|
| - params.origin = GURL(document.securityOrigin().toString());
|
| - params.icon = icon;
|
| - params.title = notification.title();
|
| - params.body = notification.body();
|
| - params.direction = notification.direction();
|
| - params.replace_id = notification.replaceId();
|
| -
|
| - Send(new DesktopNotificationHostMsg_Show(routing_id(),
|
| - notification_id,
|
| - params));
|
| -}
|
| -
|
| -bool NotificationProvider::RemovePendingNotification(int notification_id) {
|
| - PendingNotifications::iterator iter = pending_notifications_.begin();
|
| - for (; iter != pending_notifications_.end(); ++iter) {
|
| - if ((*iter)->notification_id() != notification_id)
|
| - continue;
|
| -
|
| - pending_notifications_.erase(iter);
|
| - return true;
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -
|
| -void NotificationProvider::cancel(const WebNotification& notification) {
|
| - int id;
|
| - bool id_found = manager_.GetId(notification, id);
|
| - // Won't be found if the notification has already been closed by the user,
|
| - // or if the notification's icon is still being requested.
|
| - if (id_found && !RemovePendingNotification(id))
|
| - Send(new DesktopNotificationHostMsg_Cancel(routing_id(), id));
|
| -}
|
| -
|
| -void NotificationProvider::objectDestroyed(
|
| - const WebNotification& notification) {
|
| - int id;
|
| - bool id_found = manager_.GetId(notification, id);
|
| - // Won't be found if the notification has already been closed by the user.
|
| - if (id_found) {
|
| - RemovePendingNotification(id);
|
| - manager_.UnregisterNotification(id);
|
| - }
|
| -}
|
| -
|
| -WebNotificationPresenter::Permission NotificationProvider::checkPermission(
|
| - const WebSecurityOrigin& origin) {
|
| - int permission = WebNotificationPresenter::PermissionNotAllowed;
|
| - Send(new DesktopNotificationHostMsg_CheckPermission(
|
| - routing_id(),
|
| - GURL(origin.toString()),
|
| - &permission));
|
| - return static_cast<WebNotificationPresenter::Permission>(permission);
|
| -}
|
| -
|
| -bool NotificationProvider::OnMessageReceived(const IPC::Message& message) {
|
| - bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP(NotificationProvider, message)
|
| - IPC_MESSAGE_HANDLER(DesktopNotificationMsg_PostDisplay, OnDisplay);
|
| - IPC_MESSAGE_HANDLER(DesktopNotificationMsg_PostClose, OnClose);
|
| - IPC_MESSAGE_HANDLER(DesktopNotificationMsg_PostClick, OnClick);
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP()
|
| -
|
| - if (message.type() == FrameMsg_Navigate::ID)
|
| - OnNavigate(); // Don't want to swallow the message.
|
| -
|
| - return handled;
|
| -}
|
| -
|
| -void NotificationProvider::OnDisplay(int id) {
|
| - WebNotification notification;
|
| - bool found = manager_.GetNotification(id, ¬ification);
|
| - // |found| may be false if the WebNotification went out of scope in
|
| - // the page before it was actually displayed to the user.
|
| - if (found)
|
| - notification.dispatchDisplayEvent();
|
| -}
|
| -
|
| -void NotificationProvider::OnClose(int id, bool by_user) {
|
| - WebNotification notification;
|
| - bool found = manager_.GetNotification(id, ¬ification);
|
| - // |found| may be false if the WebNotification went out of scope in
|
| - // the page before the associated toast was closed by the user.
|
| - if (found) {
|
| - notification.dispatchCloseEvent(by_user);
|
| - manager_.UnregisterNotification(id);
|
| - }
|
| -}
|
| -
|
| -void NotificationProvider::OnClick(int id) {
|
| - WebNotification notification;
|
| - bool found = manager_.GetNotification(id, ¬ification);
|
| - // |found| may be false if the WebNotification went out of scope in
|
| - // the page before the associated toast was clicked on.
|
| - if (found)
|
| - notification.dispatchClickEvent();
|
| -}
|
| -
|
| -void NotificationProvider::OnNavigate() {
|
| - manager_.Clear();
|
| -}
|
| -
|
| -} // namespace content
|
|
|