Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(263)

Unified Diff: chrome/renderer/notification_provider.h

Issue 194079: renderer process notifications support (Closed)
Patch Set: last change for code review Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/notification_provider.h
diff --git a/chrome/renderer/notification_provider.h b/chrome/renderer/notification_provider.h
new file mode 100644
index 0000000000000000000000000000000000000000..06b32d3ad3c0cca66fb24fa1b8f015e7ea3ae9d8
--- /dev/null
+++ b/chrome/renderer/notification_provider.h
@@ -0,0 +1,70 @@
+// Copyright (c) 2009 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.
+
+#ifndef CHROME_RENDERER_NOTIFICATION_PROVIDER_H_
+#define CHROME_RENDERER_NOTIFICATION_PROVIDER_H_
+
+#include <map>
+
+#include "chrome/common/desktop_notifications/active_notification_tracker.h"
+#include "ipc/ipc_channel.h"
+#include "ipc/ipc_channel_proxy.h"
+#include "webkit/api/public/WebNotification.h"
+#include "webkit/api/public/WebNotificationPresenter.h"
+
+class RenderView;
+namespace WebKit {
+class WebNotificationPermissionCallback;
+}
+
+class NotificationProvider : public WebKit::WebNotificationPresenter,
+ public IPC::ChannelProxy::MessageFilter {
+ public:
+ explicit NotificationProvider(RenderView* view);
+ ~NotificationProvider() {}
+
+ // WebKit::WebNotificationPresenter interface. Called from WebKit
+ // on the UI thread.
+ virtual bool show(const WebKit::WebNotification& proxy);
+ virtual void cancel(const WebKit::WebNotification& proxy);
+ virtual void objectDestroyed(const WebKit::WebNotification& proxy);
+ virtual WebKit::WebNotificationPresenter::Permission checkPermission(
+ const WebKit::WebString& origin);
+ virtual void requestPermission(const WebKit::WebString& origin,
+ WebKit::WebNotificationPermissionCallback* callback);
+
+private:
+ // Internal methods used on the UI thread.
+ bool ShowHTML(const WebKit::WebNotification& notification, int id);
+ bool ShowText(const WebKit::WebNotification& notification, int id);
+
+ // Callback methods invoked when events happen on active notifications.
+ void OnDisplay(int id);
+ void OnError(int id, const WebKit::WebString& message);
+ void OnClose(int id, bool by_user);
+ void OnPermissionRequestComplete(int id);
+
+ // Internal versions of the IPC handlers which run on the UI thread.
+ void HandleOnDisplay(int id);
+ void HandleOnError(int id, const WebKit::WebString& message);
+ void HandleOnClose(int id, bool by_user);
+ void HandleOnPermissionRequestComplete(int id);
+
+ // IPC::ChannelProxy::MessageFilter override
+ virtual bool OnMessageReceived(const IPC::Message& message);
+
+ bool Send(IPC::Message* message);
+
+ // Non-owned pointer to the RenderView object which created and owns
+ // this object.
+ RenderView* view_;
+
+ // A tracker object which manages the active notifications and the IDs
+ // that are used to refer to them over IPC.
+ ActiveNotificationTracker manager_;
+
+ DISALLOW_COPY_AND_ASSIGN(NotificationProvider);
+};
+
+#endif // CHROME_RENDERER_NOTIFICATION_PROVIDER_H_

Powered by Google App Engine
This is Rietveld 408576698