blob: 87b1c70097533ec395553eb73868c319751064c8 [file] [log] [blame]
// Copyright (c) 2015 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/extensions/api/enterprise_device_attributes/enterprise_device_attributes_api.h"
#include "base/values.h"
#include "chrome/browser/app_mode/app_mode_utils.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/extensions/api/enterprise_device_attributes.h"
#include "chromeos/system/statistics_provider.h"
#include "components/user_manager/user.h"
#include "components/user_manager/user_manager.h"
namespace extensions {
namespace {
// Checks for the current browser context if the user is affiliated or belongs
// to the sign-in profile.
bool IsPermittedToGetDeviceAttributes(content::BrowserContext* context) {
if (chromeos::ProfileHelper::IsSigninProfile(
Profile::FromBrowserContext(context))) {
return true;
}
const user_manager::User* user =
chromeos::ProfileHelper::Get()->GetUserByProfile(
Profile::FromBrowserContext(context));
return user->IsAffiliated();
}
} // namespace
EnterpriseDeviceAttributesGetDirectoryDeviceIdFunction::
EnterpriseDeviceAttributesGetDirectoryDeviceIdFunction() {}
EnterpriseDeviceAttributesGetDirectoryDeviceIdFunction::
~EnterpriseDeviceAttributesGetDirectoryDeviceIdFunction() {}
ExtensionFunction::ResponseAction
EnterpriseDeviceAttributesGetDirectoryDeviceIdFunction::Run() {
std::string device_id;
if (IsPermittedToGetDeviceAttributes(browser_context())) {
device_id = g_browser_process->platform_part()
->browser_policy_connector_chromeos()
->GetDirectoryApiID();
}
return RespondNow(ArgumentList(
api::enterprise_device_attributes::GetDirectoryDeviceId::Results::Create(
device_id)));
}
EnterpriseDeviceAttributesGetDeviceSerialNumberFunction::
EnterpriseDeviceAttributesGetDeviceSerialNumberFunction() {}
EnterpriseDeviceAttributesGetDeviceSerialNumberFunction::
~EnterpriseDeviceAttributesGetDeviceSerialNumberFunction() {}
ExtensionFunction::ResponseAction
EnterpriseDeviceAttributesGetDeviceSerialNumberFunction::Run() {
std::string serial_number;
if (IsPermittedToGetDeviceAttributes(browser_context())) {
serial_number = chromeos::system::StatisticsProvider::GetInstance()
->GetEnterpriseMachineID();
}
return RespondNow(ArgumentList(
api::enterprise_device_attributes::GetDeviceSerialNumber::Results::Create(
serial_number)));
}
EnterpriseDeviceAttributesGetDeviceAssetIdFunction::
EnterpriseDeviceAttributesGetDeviceAssetIdFunction() {}
EnterpriseDeviceAttributesGetDeviceAssetIdFunction::
~EnterpriseDeviceAttributesGetDeviceAssetIdFunction() {}
ExtensionFunction::ResponseAction
EnterpriseDeviceAttributesGetDeviceAssetIdFunction::Run() {
std::string asset_id;
if (IsPermittedToGetDeviceAttributes(browser_context())) {
asset_id = g_browser_process->platform_part()
->browser_policy_connector_chromeos()
->GetDeviceAssetID();
}
return RespondNow(ArgumentList(
api::enterprise_device_attributes::GetDeviceAssetId::Results::Create(
asset_id)));
}
EnterpriseDeviceAttributesGetDeviceAnnotatedLocationFunction::
EnterpriseDeviceAttributesGetDeviceAnnotatedLocationFunction() {}
EnterpriseDeviceAttributesGetDeviceAnnotatedLocationFunction::
~EnterpriseDeviceAttributesGetDeviceAnnotatedLocationFunction() {}
ExtensionFunction::ResponseAction
EnterpriseDeviceAttributesGetDeviceAnnotatedLocationFunction::Run() {
std::string annotated_location;
if (IsPermittedToGetDeviceAttributes(browser_context())) {
annotated_location = g_browser_process->platform_part()
->browser_policy_connector_chromeos()
->GetDeviceAnnotatedLocation();
}
return RespondNow(ArgumentList(
api::enterprise_device_attributes::GetDeviceAnnotatedLocation::Results::
Create(annotated_location)));
}
} // namespace extensions