service_worker_provider_host.cc revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Copyright 2013 The Chromium Authors. All rights reserved. 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// Use of this source code is governed by a BSD-style license that can be 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org// found in the LICENSE file. 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "content/browser/service_worker/service_worker_provider_host.h" 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "base/stl_util.h" 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "content/browser/service_worker/service_worker_utils.h" 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "content/browser/service_worker/service_worker_version.h" 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgnamespace content { 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgServiceWorkerProviderHost::ServiceWorkerProviderHost( 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int process_id, int provider_id) 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org : process_id_(process_id), 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org provider_id_(provider_id) { 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgServiceWorkerProviderHost::~ServiceWorkerProviderHost() { 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org AssociateVersion(NULL); 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ServiceWorkerProviderHost::AssociateVersion( 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ServiceWorkerVersion* version) { 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (associated_version()) 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org associated_version_->RemoveProcessToWorker(process_id_); 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org associated_version_ = version; 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (version) 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org version->AddProcessToWorker(process_id_); 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ServiceWorkerProviderHost::AddScriptClient(int thread_id) { 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DCHECK(!ContainsKey(script_client_thread_ids_, thread_id)); 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org script_client_thread_ids_.insert(thread_id); 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgvoid ServiceWorkerProviderHost::RemoveScriptClient(int thread_id) { 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DCHECK(ContainsKey(script_client_thread_ids_, thread_id)); 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org script_client_thread_ids_.erase(thread_id); 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgbool ServiceWorkerProviderHost::ShouldHandleRequest( 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ResourceType::Type resource_type) const { 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (ServiceWorkerUtils::IsMainResourceType(resource_type)) 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return true; 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org if (associated_version()) 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return true; 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // TODO(kinuko): Handle ServiceWorker cases. 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // For now we always return false here, so that we don't handle 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // requests for ServiceWorker (either for the main or sub resources). 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return false; 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} // namespace content 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org