1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file.
4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#ifndef CONTENT_PUBLIC_BROWSER_PUSH_MESSAGING_SERVICE_H_
6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define CONTENT_PUBLIC_BROWSER_PUSH_MESSAGING_SERVICE_H_
7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include <string>
9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/callback.h"
11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "content/common/content_export.h"
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/public/common/push_messaging_status.h"
13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "url/gurl.h"
14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace content {
16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// A push service-agnostic interface that the Push API uses for talking to
18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// push messaging services like GCM.
19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class CONTENT_EXPORT PushMessagingService {
20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public:
21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  typedef base::Callback<void(const GURL& /* endpoint */,
22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                              const std::string& /* registration_id */,
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                              PushMessagingStatus /* status */)>
24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)      RegisterCallback;
25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  virtual ~PushMessagingService() {}
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void Register(const GURL& origin,
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)                        int64 service_worker_registration_id,
29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                        const std::string& sender_id,
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                        int renderer_id,
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                        int render_frame_id,
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                        bool user_gesture,
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)                        const RegisterCallback& callback) = 0;
34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)};
35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}  // namespace content
37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif  // CONTENT_PUBLIC_BROWSER_PUSH_MESSAGING_SERVICE_H_
39