// Copyright (c) 2011 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. #include "chrome/browser/policy/device_policy_identity_strategy.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chromeos/cros/cros_library.h" #include "chrome/browser/chromeos/login/ownership_service.h" #include "chrome/browser/chromeos/login/user_manager.h" #include "chrome/browser/chromeos/system_access.h" #include "chrome/browser/net/gaia/token_service.h" #include "chrome/browser/policy/proto/device_management_constants.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/common/guid.h" #include "chrome/common/net/gaia/gaia_constants.h" #include "content/common/notification_service.h" #include "content/common/notification_type.h" // MachineInfo key names. static const char kMachineInfoSystemHwqual[] = "hardware_class"; static const char kMachineInfoSerialNumber[] = "serial_number"; namespace policy { DevicePolicyIdentityStrategy::DevicePolicyIdentityStrategy() { chromeos::SystemAccess* sys_lib = chromeos::SystemAccess::GetInstance(); if (!sys_lib->GetMachineStatistic(kMachineInfoSystemHwqual, &machine_model_)) { LOG(ERROR) << "Failed to get machine model."; } if (!sys_lib->GetMachineStatistic(kMachineInfoSerialNumber, &machine_id_)) { LOG(ERROR) << "Failed to get machine serial number."; } } DevicePolicyIdentityStrategy::~DevicePolicyIdentityStrategy() { } std::string DevicePolicyIdentityStrategy::GetDeviceToken() { return device_token_; } std::string DevicePolicyIdentityStrategy::GetDeviceID() { return device_id_; } std::string DevicePolicyIdentityStrategy::GetMachineID() { return machine_id_; } std::string DevicePolicyIdentityStrategy::GetMachineModel() { return machine_model_; } em::DeviceRegisterRequest_Type DevicePolicyIdentityStrategy::GetPolicyRegisterType() { return em::DeviceRegisterRequest::DEVICE; } std::string DevicePolicyIdentityStrategy::GetPolicyType() { return kChromeDevicePolicyType; } void DevicePolicyIdentityStrategy::SetAuthCredentials( const std::string& username, const std::string& auth_token) { username_ = username; auth_token_ = auth_token; device_id_ = guid::GenerateGUID(); NotifyAuthChanged(); } void DevicePolicyIdentityStrategy::SetDeviceManagementCredentials( const std::string& owner_email, const std::string& device_id, const std::string& device_token) { username_ = owner_email; device_id_ = device_id; device_token_ = device_token; NotifyDeviceTokenChanged(); } void DevicePolicyIdentityStrategy::FetchPolicy() { DCHECK(!device_token_.empty()); NotifyDeviceTokenChanged(); } bool DevicePolicyIdentityStrategy::GetCredentials(std::string* username, std::string* auth_token) { *username = username_; *auth_token = auth_token_; return !username->empty() && !auth_token->empty(); } void DevicePolicyIdentityStrategy::OnDeviceTokenAvailable( const std::string& token) { device_token_ = token; } } // namespace policy