OLD | NEW |
| (Empty) |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef CHROME_RENDERER_NOTIFICATION_PROVIDER_H_ | |
6 #define CHROME_RENDERER_NOTIFICATION_PROVIDER_H_ | |
7 #pragma once | |
8 | |
9 #include "chrome/common/desktop_notifications/active_notification_tracker.h" | |
10 #include "chrome/renderer/render_view_observer.h" | |
11 #include "third_party/WebKit/Source/WebKit/chromium/public/WebNotification.h" | |
12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebNotificationPresen
ter.h" | |
13 | |
14 namespace WebKit { | |
15 class WebNotificationPermissionCallback; | |
16 } | |
17 | |
18 // NotificationProvider class is owned by the RenderView. Only | |
19 // to be used on the main thread. | |
20 class NotificationProvider : public RenderViewObserver, | |
21 public WebKit::WebNotificationPresenter { | |
22 public: | |
23 explicit NotificationProvider(RenderView* render_view); | |
24 virtual ~NotificationProvider(); | |
25 | |
26 private: | |
27 // RenderView::Observer implementation. | |
28 virtual bool OnMessageReceived(const IPC::Message& message); | |
29 | |
30 // WebKit::WebNotificationPresenter interface. | |
31 virtual bool show(const WebKit::WebNotification& proxy); | |
32 virtual void cancel(const WebKit::WebNotification& proxy); | |
33 virtual void objectDestroyed(const WebKit::WebNotification& proxy); | |
34 virtual WebKit::WebNotificationPresenter::Permission checkPermission( | |
35 const WebKit::WebURL& url); | |
36 virtual void requestPermission(const WebKit::WebSecurityOrigin& origin, | |
37 WebKit::WebNotificationPermissionCallback* callback); | |
38 | |
39 // Internal methods used to show notifications. | |
40 bool ShowHTML(const WebKit::WebNotification& notification, int id); | |
41 bool ShowText(const WebKit::WebNotification& notification, int id); | |
42 | |
43 // IPC handlers. | |
44 void OnDisplay(int id); | |
45 void OnError(int id, const WebKit::WebString& message); | |
46 void OnClose(int id, bool by_user); | |
47 void OnClick(int id); | |
48 void OnPermissionRequestComplete(int id); | |
49 void OnNavigate(); | |
50 | |
51 // A tracker object which manages the active notifications and the IDs | |
52 // that are used to refer to them over IPC. | |
53 ActiveNotificationTracker manager_; | |
54 | |
55 DISALLOW_COPY_AND_ASSIGN(NotificationProvider); | |
56 }; | |
57 | |
58 #endif // CHROME_RENDERER_NOTIFICATION_PROVIDER_H_ | |
OLD | NEW |