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