web_service_worker_provider_impl.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
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#include "content/child/service_worker/web_service_worker_provider_impl.h"
6
7#include "base/atomic_sequence_num.h"
8#include "base/logging.h"
9#include "content/child/child_thread.h"
10#include "content/child/service_worker/service_worker_dispatcher.h"
11#include "content/child/thread_safe_sender.h"
12#include "third_party/WebKit/public/platform/WebURL.h"
13
14using blink::WebURL;
15
16namespace content {
17
18WebServiceWorkerProviderImpl::WebServiceWorkerProviderImpl(
19    ThreadSafeSender* thread_safe_sender,
20    int provider_id)
21    : thread_safe_sender_(thread_safe_sender),
22      provider_id_(provider_id) {
23}
24
25WebServiceWorkerProviderImpl::~WebServiceWorkerProviderImpl() {
26  // Make sure the script client is removed.
27  GetDispatcher()->RemoveScriptClient(provider_id_);
28}
29
30void WebServiceWorkerProviderImpl::setClient(
31    blink::WebServiceWorkerProviderClient* client) {
32  if (client)
33    GetDispatcher()->AddScriptClient(provider_id_, client);
34  else
35    GetDispatcher()->RemoveScriptClient(provider_id_);
36}
37
38void WebServiceWorkerProviderImpl::registerServiceWorker(
39    const WebURL& pattern,
40    const WebURL& script_url,
41    WebServiceWorkerCallbacks* callbacks) {
42  GetDispatcher()->RegisterServiceWorker(pattern, script_url, callbacks);
43}
44
45void WebServiceWorkerProviderImpl::unregisterServiceWorker(
46    const WebURL& pattern,
47    WebServiceWorkerCallbacks* callbacks) {
48  GetDispatcher()->UnregisterServiceWorker(pattern, callbacks);
49}
50
51ServiceWorkerDispatcher* WebServiceWorkerProviderImpl::GetDispatcher() {
52  return ServiceWorkerDispatcher::ThreadSpecificInstance(thread_safe_sender_);
53}
54
55}  // namespace content
56