1// Copyright 2014 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_BROWSER_PUSH_MESSAGING_MESSAGE_FILTER_H_
6#define CONTENT_BROWSER_PUSH_MESSAGING_MESSAGE_FILTER_H_
7
8#include <string>
9
10#include "base/memory/ref_counted.h"
11#include "base/memory/weak_ptr.h"
12#include "content/public/browser/browser_message_filter.h"
13#include "content/public/common/push_messaging_status.h"
14#include "url/gurl.h"
15
16namespace content {
17
18class PushMessagingService;
19class ServiceWorkerContextWrapper;
20
21class PushMessagingMessageFilter : public BrowserMessageFilter {
22 public:
23  PushMessagingMessageFilter(
24      int render_process_id,
25      ServiceWorkerContextWrapper* service_worker_context);
26
27 private:
28  virtual ~PushMessagingMessageFilter();
29
30  // BrowserMessageFilter implementation.
31  virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
32
33  void OnRegister(int render_frame_id,
34                  int callbacks_id,
35                  const std::string& sender_id,
36                  bool user_gesture,
37                  int service_worker_provider_id);
38
39  void DoRegister(int render_frame_id,
40                  int callbacks_id,
41                  const std::string& sender_id,
42                  bool user_gesture,
43                  const GURL& origin,
44                  int64 service_worker_registration_id);
45
46  void DidRegister(int render_frame_id,
47                   int callbacks_id,
48                   const GURL& push_endpoint,
49                   const std::string& push_registration_id,
50                   PushMessagingStatus status);
51
52  PushMessagingService* service();
53
54  int render_process_id_;
55  scoped_refptr<ServiceWorkerContextWrapper> service_worker_context_;
56
57  // Owned by the content embedder's browsing context.
58  PushMessagingService* service_;
59
60  base::WeakPtrFactory<PushMessagingMessageFilter> weak_factory_;
61
62  DISALLOW_COPY_AND_ASSIGN(PushMessagingMessageFilter);
63};
64
65}  // namespace content
66
67#endif  // CONTENT_BROWSER_PUSH_MESSAGING_MESSAGE_FILTER_H_
68