Home | History | Annotate | Download | only in renderer
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_RENDERER_NOTIFICATION_PROVIDER_H_
      6 #define CONTENT_RENDERER_NOTIFICATION_PROVIDER_H_
      7 
      8 #include "content/public/renderer/render_view_observer.h"
      9 #include "content/renderer/active_notification_tracker.h"
     10 #include "third_party/WebKit/public/web/WebNotification.h"
     11 #include "third_party/WebKit/public/web/WebNotificationPresenter.h"
     12 
     13 namespace WebKit {
     14 class WebNotificationPermissionCallback;
     15 }
     16 
     17 namespace content {
     18 class RenderViewImpl;
     19 
     20 // NotificationProvider class is owned by the RenderView.  Only
     21 // to be used on the main thread.
     22 class NotificationProvider : public RenderViewObserver,
     23                              public WebKit::WebNotificationPresenter {
     24  public:
     25   explicit NotificationProvider(RenderViewImpl* render_view);
     26   virtual ~NotificationProvider();
     27 
     28  private:
     29   // RenderView::Observer implementation.
     30   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
     31 
     32   // WebKit::WebNotificationPresenter interface.
     33   virtual bool show(const WebKit::WebNotification& proxy);
     34   virtual void cancel(const WebKit::WebNotification& proxy);
     35   virtual void objectDestroyed(const WebKit::WebNotification& proxy);
     36   virtual WebKit::WebNotificationPresenter::Permission checkPermission(
     37       const WebKit::WebSecurityOrigin& origin);
     38   virtual void requestPermission(const WebKit::WebSecurityOrigin& origin,
     39       WebKit::WebNotificationPermissionCallback* callback);
     40 
     41   // Internal methods used to show notifications.
     42   bool ShowHTML(const WebKit::WebNotification& notification, int id);
     43   bool ShowText(const WebKit::WebNotification& notification, int id);
     44 
     45   // IPC handlers.
     46   void OnDisplay(int id);
     47   void OnError(int id, const WebKit::WebString& message);
     48   void OnClose(int id, bool by_user);
     49   void OnClick(int id);
     50   void OnPermissionRequestComplete(int id);
     51   void OnNavigate();
     52 
     53   // A tracker object which manages the active notifications and the IDs
     54   // that are used to refer to them over IPC.
     55   ActiveNotificationTracker manager_;
     56 
     57   DISALLOW_COPY_AND_ASSIGN(NotificationProvider);
     58 };
     59 
     60 }  // namespace content
     61 
     62 #endif  // CONTENT_RENDERER_NOTIFICATION_PROVIDER_H_
     63