11e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 21e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 31e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// found in the LICENSE file. 41e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 51e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#ifndef CONTENT_CHILD_SERVICE_WORKER_SERVICE_WORKER_MESSAGE_FILTER_H_ 61e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#define CONTENT_CHILD_SERVICE_WORKER_SERVICE_WORKER_MESSAGE_FILTER_H_ 71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "content/child/child_message_filter.h" 91e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "content/common/content_export.h" 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace base { 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class MessageLoopProxy; 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)namespace content { 161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class ThreadSafeSender; 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)struct ServiceWorkerObjectInfo; 1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)struct ServiceWorkerRegistrationObjectInfo; 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)struct ServiceWorkerVersionAttributes; 211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)class CONTENT_EXPORT ServiceWorkerMessageFilter 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) : public NON_EXPORTED_BASE(ChildMessageFilter) { 241e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) public: 251e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) explicit ServiceWorkerMessageFilter(ThreadSafeSender* thread_safe_sender); 261e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 271e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) protected: 281e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) virtual ~ServiceWorkerMessageFilter(); 291e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 301e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) private: 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // ChildMessageFilter implementation: 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual base::TaskRunner* OverrideTaskRunnerForMessage( 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const IPC::Message& msg) OVERRIDE; 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual void OnStaleMessageReceived(const IPC::Message& msg) OVERRIDE; 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch // Message handlers for stale messages. 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void OnStaleRegistered( 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) int thread_id, 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) int request_id, 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServiceWorkerRegistrationObjectInfo& info, 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServiceWorkerVersionAttributes& attrs); 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void OnStaleSetVersionAttributes( 446e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) int thread_id, 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) int provider_id, 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) int registration_handle_id, 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) int changed_mask, 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ServiceWorkerVersionAttributes& attrs); 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) void OnStaleSetControllerServiceWorker( 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) int thread_id, 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) int provider_id, 526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const ServiceWorkerObjectInfo& info); 531e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 541e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) scoped_refptr<base::MessageLoopProxy> main_thread_loop_proxy_; 551e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) scoped_refptr<ThreadSafeSender> thread_safe_sender_; 561e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 571e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ServiceWorkerMessageFilter); 581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}; 591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 601e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} // namespace content 611e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 621e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#endif // CONTENT_CHILD_SERVICE_WORKER_SERVICE_WORKER_MESSAGE_FILTER_H_ 63