device_oauth2_token_service.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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. 4 5#include "chrome/browser/chromeos/settings/device_oauth2_token_service.h" 6 7#include "base/prefs/pref_registry_simple.h" 8#include "base/prefs/pref_service.h" 9#include "chrome/common/pref_names.h" 10#include "chromeos/cryptohome/cryptohome_library.h" 11#include "content/public/browser/browser_thread.h" 12 13namespace chromeos { 14 15DeviceOAuth2TokenService::DeviceOAuth2TokenService( 16 net::URLRequestContextGetter* getter, 17 PrefService* local_state) 18 : OAuth2TokenService(getter), 19 local_state_(local_state) { 20} 21 22DeviceOAuth2TokenService::~DeviceOAuth2TokenService() { 23} 24 25// static 26void DeviceOAuth2TokenService::RegisterPrefs(PrefRegistrySimple* registry) { 27 registry->RegisterStringPref(prefs::kDeviceRobotAnyApiRefreshToken, 28 std::string()); 29} 30 31void DeviceOAuth2TokenService::SetAndSaveRefreshToken( 32 const std::string& refresh_token) { 33 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 34 std::string encrypted_refresh_token = 35 CryptohomeLibrary::Get()->EncryptWithSystemSalt(refresh_token); 36 37 local_state_->SetString(prefs::kDeviceRobotAnyApiRefreshToken, 38 encrypted_refresh_token); 39} 40 41std::string DeviceOAuth2TokenService::GetRefreshToken() { 42 if (refresh_token_.empty()) { 43 std::string encrypted_refresh_token = 44 local_state_->GetString(prefs::kDeviceRobotAnyApiRefreshToken); 45 46 refresh_token_ = CryptohomeLibrary::Get()->DecryptWithSystemSalt( 47 encrypted_refresh_token); 48 } 49 return refresh_token_; 50} 51 52} // namespace chromeos 53