1c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// found in the LICENSE file.
4c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
5c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#ifndef CONTENT_BROWSER_PUSH_MESSAGING_MESSAGE_FILTER_H_
6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#define CONTENT_BROWSER_PUSH_MESSAGING_MESSAGE_FILTER_H_
7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
8c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include <string>
9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/memory/weak_ptr.h"
11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "content/public/browser/browser_message_filter.h"
12c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "url/gurl.h"
13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace content {
15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class PushMessagingService;
17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass PushMessagingMessageFilter : public BrowserMessageFilter {
19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch public:
20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  explicit PushMessagingMessageFilter(int render_process_id);
21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch private:
23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  virtual ~PushMessagingMessageFilter();
24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // BrowserMessageFilter implementation.
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  void OnRegister(int routing_id,
29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                  int callbacks_id,
30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                  const std::string& sender_id);
31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  void DoRegister(int routing_id,
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                  int callbacks_id,
34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                  const std::string& sender_id);
35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  void DidRegister(int routing_id,
37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                   int callbacks_id,
38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                   const GURL& endpoint,
39c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch                   const std::string& registration_id,
40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                   bool success);
41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  PushMessagingService* service();
43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  int render_process_id_;
45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  PushMessagingService* service_; // Not owned.
46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  base::WeakPtrFactory<PushMessagingMessageFilter> weak_factory_;
48c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  DISALLOW_COPY_AND_ASSIGN(PushMessagingMessageFilter);
50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch};
51c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
52c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}  // namespace content
53c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
54c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif  // CONTENT_BROWSER_PUSH_MESSAGING_MESSAGE_FILTER_H_
55