// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/extensions/active_install_data.h" #include "chrome/browser/extensions/install_tracker.h" namespace extensions { // ActiveInstallData: ActiveInstallData::ActiveInstallData() : percent_downloaded(0) { } ActiveInstallData::ActiveInstallData(const std::string& extension_id) : extension_id(extension_id), percent_downloaded(0) { } // ScopedActiveInstall: ScopedActiveInstall::ScopedActiveInstall(InstallTracker* tracker, const ActiveInstallData& install_data) : tracker_(tracker), tracker_observer_(this), extension_id_(install_data.extension_id) { Init(); tracker_->AddActiveInstall(install_data); } ScopedActiveInstall::ScopedActiveInstall(InstallTracker* tracker, const std::string& extension_id) : tracker_(tracker), tracker_observer_(this), extension_id_(extension_id) { Init(); } ScopedActiveInstall::~ScopedActiveInstall() { if (tracker_) tracker_->RemoveActiveInstall(extension_id_); } void ScopedActiveInstall::CancelDeregister() { tracker_observer_.RemoveAll(); tracker_ = NULL; } void ScopedActiveInstall::Init() { DCHECK(!extension_id_.empty()); DCHECK(tracker_); tracker_observer_.Add(tracker_); } void ScopedActiveInstall::OnShutdown() { CancelDeregister(); } } // namespace extensions