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

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: Fix the tests 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
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
15 // NotificationProvider class is owned by the RenderFrame. Only to be used on 18 // NotificationProvider class is owned by the RenderFrame. Only to be used on
16 // the main thread. 19 // the main thread.
17 class NotificationProvider : public RenderFrameObserver, 20 class NotificationProvider : public RenderFrameObserver,
18 public blink::WebNotificationPresenter { 21 public blink::WebNotificationPresenter {
19 public: 22 public:
20 explicit NotificationProvider(RenderFrame* render_frame); 23 explicit NotificationProvider(RenderFrame* render_frame);
21 virtual ~NotificationProvider(); 24 virtual ~NotificationProvider();
22 25
23 private: 26 private:
24 // RenderFrameObserver implementation. 27 // RenderFrameObserver implementation.
25 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 28 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
26 29
27 // blink::WebNotificationPresenter interface. 30 // blink::WebNotificationPresenter implementation.
28 virtual bool show(const blink::WebNotification& proxy); 31 virtual bool show(const blink::WebNotification& proxy);
29 virtual void cancel(const blink::WebNotification& proxy); 32 virtual void cancel(const blink::WebNotification& proxy);
30 virtual void objectDestroyed(const blink::WebNotification& proxy); 33 virtual void objectDestroyed(const blink::WebNotification& proxy);
31 virtual blink::WebNotificationPresenter::Permission checkPermission( 34 virtual blink::WebNotificationPresenter::Permission checkPermission(
32 const blink::WebSecurityOrigin& origin); 35 const blink::WebSecurityOrigin& origin);
33 36
37 // Sends an IPC to the browser process to display the notification identified
38 // by |notification|, accompanied by the downloaded icon.
39 void DisplayNotification(int notification_id, const SkBitmap& icon);
40
41 // Removes the IconDownload object associated with |notification_id|, stopping
42 // any in-progress download. Returns whether the notification was removed.
43 bool RemovePendingNotification(int notification_id);
44
34 // IPC handlers. 45 // IPC handlers.
35 void OnDisplay(int id); 46 void OnDisplay(int id);
36 void OnError(int id); 47 void OnError(int id);
37 void OnClose(int id, bool by_user); 48 void OnClose(int id, bool by_user);
38 void OnClick(int id); 49 void OnClick(int id);
39 void OnNavigate(); 50 void OnNavigate();
40 51
52 class IconDownloader;
53
54 // A vector tracking notifications whose icon is still being downloaded.
55 typedef ScopedVector<IconDownloader> 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

Powered by Google App Engine
This is Rietveld 408576698