1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CONTENT_CHILD_SERVICE_WORKER_WEB_SERVICE_WORKER_PROVIDER_IMPL_H_ 6#define CONTENT_CHILD_SERVICE_WORKER_WEB_SERVICE_WORKER_PROVIDER_IMPL_H_ 7 8#include "base/compiler_specific.h" 9#include "base/memory/ref_counted.h" 10#include "base/memory/scoped_ptr.h" 11#include "third_party/WebKit/public/platform/WebServiceWorkerProvider.h" 12 13namespace blink { 14class WebURL; 15class WebServiceWorkerProviderClient; 16} 17 18namespace content { 19 20class ServiceWorkerDispatcher; 21class ServiceWorkerProviderContext; 22class ThreadSafeSender; 23 24// This class corresponds to one ServiceWorkerContainer interface in 25// JS context (i.e. navigator.serviceWorker). 26class WebServiceWorkerProviderImpl 27 : NON_EXPORTED_BASE(public blink::WebServiceWorkerProvider) { 28 public: 29 WebServiceWorkerProviderImpl(ThreadSafeSender* thread_safe_sender, 30 ServiceWorkerProviderContext* context); 31 virtual ~WebServiceWorkerProviderImpl(); 32 33 virtual void setClient(blink::WebServiceWorkerProviderClient* client); 34 35 virtual void registerServiceWorker(const blink::WebURL& pattern, 36 const blink::WebURL& script_url, 37 WebServiceWorkerRegistrationCallbacks*); 38 39 virtual void unregisterServiceWorker( 40 const blink::WebURL& pattern, 41 WebServiceWorkerUnregistrationCallbacks*); 42 43 virtual void getRegistration(const blink::WebURL& document_url, 44 WebServiceWorkerGetRegistrationCallbacks*); 45 46 ServiceWorkerProviderContext* context() { return context_.get(); } 47 48 int provider_id() const { return provider_id_; } 49 50 private: 51 void RemoveScriptClient(); 52 ServiceWorkerDispatcher* GetDispatcher(); 53 54 scoped_refptr<ThreadSafeSender> thread_safe_sender_; 55 scoped_refptr<ServiceWorkerProviderContext> context_; 56 const int provider_id_; 57 58 DISALLOW_COPY_AND_ASSIGN(WebServiceWorkerProviderImpl); 59}; 60 61} // namespace content 62 63#endif // CONTENT_CHILD_SERVICE_WORKER_WEB_SERVICE_WORKER_PROVIDER_IMPL_H_ 64