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

Side by Side Diff: content/renderer/notification_provider.h

Issue 554213003: Request the icon of a Web Notification in the renderer process. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: include logging.h Created 6 years, 2 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 unified diff | Download patch
« no previous file with comments | « content/renderer/notification_icon_loader.cc ('k') | content/renderer/notification_provider.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_RENDERER_NOTIFICATION_PROVIDER_H_ 5 #ifndef CONTENT_RENDERER_NOTIFICATION_PROVIDER_H_
6 #define CONTENT_RENDERER_NOTIFICATION_PROVIDER_H_ 6 #define CONTENT_RENDERER_NOTIFICATION_PROVIDER_H_
7 7
8 #include "base/memory/scoped_vector.h"
8 #include "content/public/renderer/render_frame_observer.h" 9 #include "content/public/renderer/render_frame_observer.h"
9 #include "content/renderer/active_notification_tracker.h" 10 #include "content/renderer/active_notification_tracker.h"
10 #include "third_party/WebKit/public/web/WebNotification.h" 11 #include "third_party/WebKit/public/web/WebNotification.h"
11 #include "third_party/WebKit/public/web/WebNotificationPresenter.h" 12 #include "third_party/WebKit/public/web/WebNotificationPresenter.h"
12 13
14 class SkBitmap;
15
13 namespace content { 16 namespace content {
14 17
18 class NotificationIconLoader;
19
15 // NotificationProvider class is owned by the RenderFrame. Only to be used on 20 // NotificationProvider class is owned by the RenderFrame. Only to be used on
16 // the main thread. 21 // the main thread.
17 class NotificationProvider : public RenderFrameObserver, 22 class NotificationProvider : public RenderFrameObserver,
18 public blink::WebNotificationPresenter { 23 public blink::WebNotificationPresenter {
19 public: 24 public:
20 explicit NotificationProvider(RenderFrame* render_frame); 25 explicit NotificationProvider(RenderFrame* render_frame);
21 virtual ~NotificationProvider(); 26 virtual ~NotificationProvider();
22 27
23 private: 28 private:
24 // RenderFrameObserver implementation. 29 // RenderFrameObserver implementation.
25 virtual bool OnMessageReceived(const IPC::Message& message) override; 30 virtual bool OnMessageReceived(const IPC::Message& message) override;
26 31
27 // blink::WebNotificationPresenter interface. 32 // blink::WebNotificationPresenter implementation.
28 virtual bool show(const blink::WebNotification& proxy); 33 virtual bool show(const blink::WebNotification& proxy);
29 virtual void cancel(const blink::WebNotification& proxy); 34 virtual void cancel(const blink::WebNotification& proxy);
30 virtual void objectDestroyed(const blink::WebNotification& proxy); 35 virtual void objectDestroyed(const blink::WebNotification& proxy);
31 virtual blink::WebNotificationPresenter::Permission checkPermission( 36 virtual blink::WebNotificationPresenter::Permission checkPermission(
32 const blink::WebSecurityOrigin& origin); 37 const blink::WebSecurityOrigin& origin);
33 38
39 // Sends an IPC to the browser process to display the notification identified
40 // by |notification|, accompanied by the downloaded icon.
41 void DisplayNotification(int notification_id, const SkBitmap& icon);
42
43 // Removes the IconDownload object associated with |notification_id|, stopping
44 // any in-progress download. Returns whether the notification was removed.
45 bool RemovePendingNotification(int notification_id);
46
34 // IPC handlers. 47 // IPC handlers.
35 void OnDisplay(int id); 48 void OnDisplay(int id);
36 void OnError(int id); 49 void OnError(int id);
37 void OnClose(int id, bool by_user); 50 void OnClose(int id, bool by_user);
38 void OnClick(int id); 51 void OnClick(int id);
39 void OnNavigate(); 52 void OnNavigate();
40 53
54 // A vector tracking notifications whose icon is still being downloaded.
55 typedef ScopedVector<NotificationIconLoader> PendingNotifications;
56 PendingNotifications pending_notifications_;
57
41 // A tracker object which manages the active notifications and the IDs 58 // A tracker object which manages the active notifications and the IDs
42 // that are used to refer to them over IPC. 59 // that are used to refer to them over IPC.
43 ActiveNotificationTracker manager_; 60 ActiveNotificationTracker manager_;
44 61
45 DISALLOW_COPY_AND_ASSIGN(NotificationProvider); 62 DISALLOW_COPY_AND_ASSIGN(NotificationProvider);
46 }; 63 };
47 64
48 } // namespace content 65 } // namespace content
49 66
50 #endif // CONTENT_RENDERER_NOTIFICATION_PROVIDER_H_ 67 #endif // CONTENT_RENDERER_NOTIFICATION_PROVIDER_H_
OLDNEW
« no previous file with comments | « content/renderer/notification_icon_loader.cc ('k') | content/renderer/notification_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698