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 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/ref_counted.h" 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/memory/weak_ptr.h" 12c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "content/public/browser/browser_message_filter.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/public/common/push_messaging_status.h" 14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "url/gurl.h" 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochnamespace content { 17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class PushMessagingService; 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass ServiceWorkerContextWrapper; 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass PushMessagingMessageFilter : public BrowserMessageFilter { 22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch public: 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PushMessagingMessageFilter( 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int render_process_id, 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ServiceWorkerContextWrapper* service_worker_context); 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch private: 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual ~PushMessagingMessageFilter(); 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // BrowserMessageFilter implementation. 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnRegister(int render_frame_id, 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int callbacks_id, 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& sender_id, 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool user_gesture, 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int service_worker_provider_id); 38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void DoRegister(int render_frame_id, 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) int callbacks_id, 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& sender_id, 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool user_gesture, 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const GURL& origin, 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int64 service_worker_registration_id); 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void DidRegister(int render_frame_id, 47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int callbacks_id, 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const GURL& push_endpoint, 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& push_registration_id, 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PushMessagingStatus status); 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) PushMessagingService* service(); 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) int render_process_id_; 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_refptr<ServiceWorkerContextWrapper> service_worker_context_; 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Owned by the content embedder's browsing context. 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PushMessagingService* service_; 59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::WeakPtrFactory<PushMessagingMessageFilter> weak_factory_; 61c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 62c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch DISALLOW_COPY_AND_ASSIGN(PushMessagingMessageFilter); 63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}; 64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} // namespace content 66c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 67c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#endif // CONTENT_BROWSER_PUSH_MESSAGING_MESSAGE_FILTER_H_ 68