1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/extensions/active_install_data.h" 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/extensions/install_tracker.h" 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace extensions { 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// ActiveInstallData: 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 13116680a4aac90f2aa7413d9095a592090648e557Ben MurdochActiveInstallData::ActiveInstallData() 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : percent_downloaded(0), is_ephemeral(false) { 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 17116680a4aac90f2aa7413d9095a592090648e557Ben MurdochActiveInstallData::ActiveInstallData(const std::string& extension_id) 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : extension_id(extension_id), percent_downloaded(0), is_ephemeral(false) { 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// ScopedActiveInstall: 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 23116680a4aac90f2aa7413d9095a592090648e557Ben MurdochScopedActiveInstall::ScopedActiveInstall(InstallTracker* tracker, 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const ActiveInstallData& install_data) 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : tracker_(tracker), 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tracker_observer_(this), 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch extension_id_(install_data.extension_id) { 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Init(); 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tracker_->AddActiveInstall(install_data); 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 32116680a4aac90f2aa7413d9095a592090648e557Ben MurdochScopedActiveInstall::ScopedActiveInstall(InstallTracker* tracker, 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& extension_id) 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : tracker_(tracker), tracker_observer_(this), extension_id_(extension_id) { 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Init(); 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 38116680a4aac90f2aa7413d9095a592090648e557Ben MurdochScopedActiveInstall::~ScopedActiveInstall() { 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (tracker_) 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tracker_->RemoveActiveInstall(extension_id_); 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ScopedActiveInstall::CancelDeregister() { 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tracker_observer_.RemoveAll(); 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tracker_ = NULL; 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ScopedActiveInstall::Init() { 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DCHECK(!extension_id_.empty()); 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DCHECK(tracker_); 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch tracker_observer_.Add(tracker_); 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ScopedActiveInstall::OnShutdown() { 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch CancelDeregister(); 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace extensions 59