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.
5 #include "content/browser/service_worker/service_worker_registration.h"
7 #include "content/browser/service_worker/service_worker_context_core.h"
8 #include "content/browser/service_worker/service_worker_info.h"
9 #include "content/public/browser/browser_thread.h"
13 ServiceWorkerRegistration::ServiceWorkerRegistration(
15 const GURL& script_url,
16 int64 registration_id,
17 base::WeakPtr<ServiceWorkerContextCore> context)
19 script_url_(script_url),
20 registration_id_(registration_id),
23 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
25 context_->AddLiveRegistration(this);
28 ServiceWorkerRegistration::~ServiceWorkerRegistration() {
29 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
31 context_->RemoveLiveRegistration(registration_id_);
34 ServiceWorkerRegistrationInfo ServiceWorkerRegistration::GetInfo() {
35 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
36 return ServiceWorkerRegistrationInfo(
39 active_version_ ? active_version_->GetInfo() : ServiceWorkerVersionInfo(),
40 pending_version_ ? pending_version_->GetInfo()
41 : ServiceWorkerVersionInfo());
44 ServiceWorkerVersion* ServiceWorkerRegistration::GetNewestVersion() {
46 return active_version();
47 return pending_version();
50 void ServiceWorkerRegistration::ActivatePendingVersion() {
51 active_version_->SetStatus(ServiceWorkerVersion::DEACTIVATED);
52 active_version_ = pending_version_;
53 // TODO(kinuko): This should be set to ACTIVATING until activation finishes.
54 active_version_->SetStatus(ServiceWorkerVersion::ACTIVE);
55 pending_version_ = NULL;
58 } // namespace content