129b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 229b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 329b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch// found in the LICENSE file. 429b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch 529b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch#include "chrome/browser/chromeos/login/easy_unlock/short_lived_user_context.h" 629b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch 729b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch#include "base/bind.h" 829b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch#include "base/location.h" 929b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch#include "base/task_runner.h" 1029b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch#include "chrome/common/extensions/extension_constants.h" 1129b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch#include "chromeos/login/auth/user_context.h" 1229b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch 1329b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdochnamespace chromeos { 1429b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch 1529b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdochnamespace { 1629b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch 1729b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch// The number of minutes that the user context will be stored. 1829b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdochconst int64 kUserContextTimeToLiveMinutes = 10; 1929b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch 2029b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch} // namespace 2129b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch 2229b820f8d84e3bc97d62552e54923c42407f2f29Ben MurdochShortLivedUserContext::ShortLivedUserContext( 2329b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch const UserContext& user_context, 2429b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch apps::AppLifetimeMonitor* app_lifetime_monitor, 2529b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch base::TaskRunner* task_runner) 2629b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch : user_context_(new UserContext(user_context)), 2729b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch app_lifetime_monitor_(app_lifetime_monitor), 2829b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch weak_ptr_factory_(this) { 2929b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch app_lifetime_monitor_->AddObserver(this); 3029b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch 3129b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch task_runner->PostDelayedTask( 3229b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch FROM_HERE, 3329b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch base::Bind(&ShortLivedUserContext::Reset, weak_ptr_factory_.GetWeakPtr()), 3429b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch base::TimeDelta::FromMinutes(kUserContextTimeToLiveMinutes)); 3529b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch} 3629b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch 3729b820f8d84e3bc97d62552e54923c42407f2f29Ben MurdochShortLivedUserContext::~ShortLivedUserContext() { 3829b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch Reset(); 3929b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch} 4029b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch 4129b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdochvoid ShortLivedUserContext::Reset() { 4229b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch if (user_context_.get()) { 4329b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch user_context_->ClearSecrets(); 4429b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch user_context_.reset(); 4529b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch app_lifetime_monitor_->RemoveObserver(this); 4629b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch } 4729b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch} 4829b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch 4929b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdochvoid ShortLivedUserContext::OnAppDeactivated(Profile* profile, 5029b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch const std::string& app_id) { 5129b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch if (app_id == extension_misc::kEasyUnlockAppId) 5229b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch Reset(); 5329b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch} 5429b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch 5529b820f8d84e3bc97d62552e54923c42407f2f29Ben Murdoch} // namespace chromeos 56