// Copyright (c) 2012 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. #ifndef CHROME_BROWSER_CHROMEOS_POLICY_USER_POLICY_TOKEN_LOADER_H_ #define CHROME_BROWSER_CHROMEOS_POLICY_USER_POLICY_TOKEN_LOADER_H_ #include <string> #include "base/basictypes.h" #include "base/files/file_path.h" #include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" namespace base { class SequencedTaskRunner; } namespace policy { // Handles disk access and threading details for loading and storing tokens. // This is legacy-support code that reads the token from its prior location // within the profile directory new code keeps the token in the policy blob // maintained by session_manager. class UserPolicyTokenLoader : public base::RefCountedThreadSafe<UserPolicyTokenLoader> { public: // Callback interface for reporting a successful load. class Delegate { public: virtual ~Delegate(); virtual void OnTokenLoaded(const std::string& token, const std::string& device_id) = 0; }; UserPolicyTokenLoader( const base::WeakPtr<Delegate>& delegate, const base::FilePath& cache_file, scoped_refptr<base::SequencedTaskRunner> background_task_runner); // Starts loading the disk cache. After the load is finished, the result is // reported through the delegate. void Load(); private: friend class base::RefCountedThreadSafe<UserPolicyTokenLoader>; ~UserPolicyTokenLoader(); void LoadOnBackgroundThread(); void NotifyOnOriginThread(const std::string& token, const std::string& device_id); const base::WeakPtr<Delegate> delegate_; const base::FilePath cache_file_; scoped_refptr<base::SequencedTaskRunner> origin_task_runner_; scoped_refptr<base::SequencedTaskRunner> background_task_runner_; DISALLOW_COPY_AND_ASSIGN(UserPolicyTokenLoader); }; } // namespace policy #endif // CHROME_BROWSER_CHROMEOS_POLICY_USER_POLICY_TOKEN_LOADER_H_