1 // Copyright (c) 2011 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/policy/device_policy_identity_strategy.h" 6 7 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/chromeos/cros/cros_library.h" 9 #include "chrome/browser/chromeos/login/ownership_service.h" 10 #include "chrome/browser/chromeos/login/user_manager.h" 11 #include "chrome/browser/chromeos/system_access.h" 12 #include "chrome/browser/net/gaia/token_service.h" 13 #include "chrome/browser/policy/proto/device_management_constants.h" 14 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile_manager.h" 16 #include "chrome/common/guid.h" 17 #include "chrome/common/net/gaia/gaia_constants.h" 18 #include "content/common/notification_service.h" 19 #include "content/common/notification_type.h" 20 21 // MachineInfo key names. 22 static const char kMachineInfoSystemHwqual[] = "hardware_class"; 23 static const char kMachineInfoSerialNumber[] = "serial_number"; 24 25 namespace policy { 26 27 DevicePolicyIdentityStrategy::DevicePolicyIdentityStrategy() { 28 chromeos::SystemAccess* sys_lib = chromeos::SystemAccess::GetInstance(); 29 30 if (!sys_lib->GetMachineStatistic(kMachineInfoSystemHwqual, 31 &machine_model_)) { 32 LOG(ERROR) << "Failed to get machine model."; 33 } 34 if (!sys_lib->GetMachineStatistic(kMachineInfoSerialNumber, 35 &machine_id_)) { 36 LOG(ERROR) << "Failed to get machine serial number."; 37 } 38 } 39 40 DevicePolicyIdentityStrategy::~DevicePolicyIdentityStrategy() { 41 } 42 43 std::string DevicePolicyIdentityStrategy::GetDeviceToken() { 44 return device_token_; 45 } 46 47 std::string DevicePolicyIdentityStrategy::GetDeviceID() { 48 return device_id_; 49 } 50 51 std::string DevicePolicyIdentityStrategy::GetMachineID() { 52 return machine_id_; 53 } 54 55 std::string DevicePolicyIdentityStrategy::GetMachineModel() { 56 return machine_model_; 57 } 58 59 em::DeviceRegisterRequest_Type 60 DevicePolicyIdentityStrategy::GetPolicyRegisterType() { 61 return em::DeviceRegisterRequest::DEVICE; 62 } 63 64 std::string DevicePolicyIdentityStrategy::GetPolicyType() { 65 return kChromeDevicePolicyType; 66 } 67 68 void DevicePolicyIdentityStrategy::SetAuthCredentials( 69 const std::string& username, 70 const std::string& auth_token) { 71 username_ = username; 72 auth_token_ = auth_token; 73 device_id_ = guid::GenerateGUID(); 74 NotifyAuthChanged(); 75 } 76 77 void DevicePolicyIdentityStrategy::SetDeviceManagementCredentials( 78 const std::string& owner_email, 79 const std::string& device_id, 80 const std::string& device_token) { 81 username_ = owner_email; 82 device_id_ = device_id; 83 device_token_ = device_token; 84 NotifyDeviceTokenChanged(); 85 } 86 87 void DevicePolicyIdentityStrategy::FetchPolicy() { 88 DCHECK(!device_token_.empty()); 89 NotifyDeviceTokenChanged(); 90 } 91 92 bool DevicePolicyIdentityStrategy::GetCredentials(std::string* username, 93 std::string* auth_token) { 94 *username = username_; 95 *auth_token = auth_token_; 96 97 return !username->empty() && !auth_token->empty(); 98 } 99 100 void DevicePolicyIdentityStrategy::OnDeviceTokenAvailable( 101 const std::string& token) { 102 device_token_ = token; 103 } 104 105 } // namespace policy 106