Commit 279690f8 authored by stevenjb@chromium.org's avatar stevenjb@chromium.org

Move statistics_provider to chromeos/system

BUG=270135
For sync/util/get_session_name.cc (comment change only):
TBR=tim@chromium.org

Review URL: https://codereview.chromium.org/25112004

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@227700 0039d316-1c4b-4281-b951-d872f2087c98
parent 37aa5662
......@@ -12,13 +12,13 @@
#include "chrome/browser/chromeos/attestation/platform_verification_dialog.h"
#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/browser/prefs/scoped_user_pref_update.h"
#include "chrome/common/pref_names.h"
#include "chromeos/attestation/attestation_flow.h"
#include "chromeos/cryptohome/async_method_caller.h"
#include "chromeos/dbus/cryptohome_client.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/system/statistics_provider.h"
#include "components/user_prefs/pref_registry_syncable.h"
#include "components/user_prefs/user_prefs.h"
#include "content/public/browser/browser_thread.h"
......
......@@ -16,11 +16,11 @@
#include "chrome/browser/chromeos/settings/cros_settings_names.h"
#include "chrome/browser/chromeos/settings/device_settings_service.h"
#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h"
#include "chrome/browser/chromeos/system/mock_statistics_provider.h"
#include "chrome/common/pref_names.h"
#include "chromeos/attestation/mock_attestation_flow.h"
#include "chromeos/cryptohome/mock_async_method_caller.h"
#include "chromeos/dbus/fake_cryptohome_client.h"
#include "chromeos/system/mock_statistics_provider.h"
#include "content/public/test/test_browser_thread.h"
#include "testing/gtest/include/gtest/gtest.h"
......
......@@ -64,7 +64,6 @@
#include "chrome/browser/chromeos/settings/device_settings_service.h"
#include "chrome/browser/chromeos/settings/owner_key_util.h"
#include "chrome/browser/chromeos/status/data_promo_notification.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/browser/chromeos/system_key_event_listener.h"
#include "chrome/browser/chromeos/upgrade_detector_chromeos.h"
#include "chrome/browser/chromeos/xinput_hierarchy_changed_event_listener.h"
......@@ -97,6 +96,7 @@
#include "chromeos/network/network_change_notifier_chromeos.h"
#include "chromeos/network/network_change_notifier_factory_chromeos.h"
#include "chromeos/network/network_handler.h"
#include "chromeos/system/statistics_provider.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/power_save_blocker.h"
......@@ -381,10 +381,6 @@ void ChromeBrowserMainPartsChromeos::PreEarlyInitialization() {
switches::kLoginProfile).value();
}
// Initialize the statistics provider, which will ensure that the Chrome
// channel info is read and made available early.
system::StatisticsProvider::GetInstance()->Init();
#if defined(GOOGLE_CHROME_BUILD)
const char kChromeOSReleaseTrack[] = "CHROMEOS_RELEASE_TRACK";
std::string channel;
......@@ -424,8 +420,13 @@ void ChromeBrowserMainPartsChromeos::PreMainMessageLoopRun() {
CrasAudioHandler::Initialize(
AudioDevicesPrefHandler::Create(g_browser_process->local_state()));
if (!StartupUtils::IsOobeCompleted())
system::StatisticsProvider::GetInstance()->LoadOemManifest();
// Start loading machine statistics here. StatisticsProvider::Shutdown()
// will ensure that loading is aborted on early exit.
bool load_oem_statistics = !StartupUtils::IsOobeCompleted();
system::StatisticsProvider::GetInstance()->StartLoadingMachineStatistics(
content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::FILE),
load_oem_statistics);
base::FilePath downloads_directory;
CHECK(PathService::Get(chrome::DIR_DEFAULT_DOWNLOADS, &downloads_directory));
......@@ -577,13 +578,6 @@ void ChromeBrowserMainPartsChromeos::PostProfileInit() {
UserManager::Get()->RestoreActiveSessions();
}
// Start loading the machine statistics. Note: if we start loading machine
// statistics early in PreEarlyInitialization() then the crossystem tool
// sometimes hangs for unknown reasons, see http://crbug.com/167671.
// Also we must start loading no later than this point, because login manager
// may call GetMachineStatistic() during startup, see crbug.com/170635.
system::StatisticsProvider::GetInstance()->StartLoadingMachineStatistics();
// Tests should be able to tune login manager before showing it.
// Thus only show login manager in normal (non-testing) mode.
if (!parameters().ui_task ||
......@@ -746,6 +740,7 @@ void ChromeBrowserMainPartsChromeos::PostMainMessageLoopRun() {
MagnificationManager::Shutdown();
AccessibilityManager::Shutdown();
system::StatisticsProvider::GetInstance()->Shutdown();
// Let the UserManager and WallpaperManager unregister itself as an observer
// of the CrosSettings singleton before it is destroyed. This also ensures
......
......@@ -17,10 +17,10 @@
#include "base/time/time.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/login/wizard_controller.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chromeos/network/network_state.h"
#include "chromeos/network/network_state_handler.h"
#include "chromeos/system/statistics_provider.h"
#include "content/public/browser/browser_thread.h"
#include "net/url_request/url_fetcher.h"
......@@ -174,7 +174,7 @@ void StartupCustomizationDocument::Init(
std::string hwid;
if (statistics_provider->GetMachineStatistic(
chromeos::system::kHardwareClass, &hwid)) {
chromeos::system::kHardwareClassKey, &hwid)) {
ListValue* hwid_list = NULL;
if (root_->GetList(kHwidMapAttr, &hwid_list)) {
for (size_t i = 0; i < hwid_list->GetSize(); ++i) {
......
......@@ -4,7 +4,7 @@
#include "chrome/browser/chromeos/customization_document.h"
#include "chrome/browser/chromeos/system/mock_statistics_provider.h"
#include "chromeos/system/mock_statistics_provider.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
......
......@@ -18,7 +18,6 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/browser/chromeos/ui/echo_dialog_view.h"
#include "chrome/browser/prefs/scoped_user_pref_update.h"
#include "chrome/browser/ui/browser.h"
......@@ -26,6 +25,7 @@
#include "chrome/common/extensions/api/echo_private.h"
#include "chrome/common/extensions/extension.h"
#include "chrome/common/pref_names.h"
#include "chromeos/system/statistics_provider.h"
#include "content/public/browser/browser_thread.h"
namespace echo_api = extensions::api::echo_private;
......
......@@ -7,6 +7,7 @@
#include "base/sys_info.h"
#include "chrome/browser/chromeos/file_manager/open_with_browser.h"
#include "chrome/common/extensions/extension_l10n_util.h"
#include "chromeos/system/statistics_provider.h"
#include "grit/app_locale_settings.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
......
......@@ -8,11 +8,11 @@
#include "base/values.h"
#include "chrome/browser/chromeos/login/startup_utils.h"
#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chromeos/network/device_state.h"
#include "chromeos/network/network_handler.h"
#include "chromeos/network/network_state_handler.h"
#include "chromeos/network/shill_property_util.h"
#include "chromeos/system/statistics_provider.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
using chromeos::NetworkHandler;
......@@ -66,7 +66,7 @@ base::Value* ChromeosInfoPrivateGetFunction::GetValue(
std::string hwid;
chromeos::system::StatisticsProvider* provider =
chromeos::system::StatisticsProvider::GetInstance();
provider->GetMachineStatistic(chromeos::system::kHardwareClass, &hwid);
provider->GetMachineStatistic(chromeos::system::kHardwareClassKey, &hwid);
return new base::StringValue(hwid);
} else if (property_name == kPropertyHomeProvider) {
const chromeos::DeviceState* cellular_device =
......
......@@ -8,11 +8,11 @@
#include "base/file_util.h"
#include "base/strings/string_util.h"
#include "base/threading/worker_pool.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/image_burner_client.h"
#include "chromeos/network/network_state.h"
#include "chromeos/network/network_state_handler.h"
#include "chromeos/system/statistics_provider.h"
#include "content/public/browser/browser_thread.h"
#include "grit/generated_resources.h"
#include "net/url_request/url_fetcher.h"
......@@ -556,7 +556,7 @@ void BurnManager::ConfigFileFetched(bool fetched, const std::string& content) {
// Get image file name and image download URL.
std::string hwid;
if (fetched && system::StatisticsProvider::GetInstance()->
GetMachineStatistic(system::kHardwareClass, &hwid)) {
GetMachineStatistic(system::kHardwareClassKey, &hwid)) {
ConfigFile config_file(content);
image_file_name_ = config_file.GetProperty(kFileName, hwid);
image_download_url_ = GURL(config_file.GetProperty(kUrl, hwid));
......
......@@ -36,7 +36,6 @@
#include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/chromeos/settings/cros_settings_names.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/browser/google/google_util.h"
#include "chrome/browser/policy/policy_service.h"
#include "chrome/browser/prefs/session_startup_pref.h"
......
......@@ -10,9 +10,9 @@
#include "base/logging.h"
#include "base/strings/string_util.h"
#include "base/sys_info.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/common/chrome_switches.h"
#include "chromeos/chromeos_switches.h"
#include "chromeos/system/statistics_provider.h"
#include "third_party/re2/re2/re2.h"
#include "third_party/zlib/zlib.h"
......@@ -121,7 +121,7 @@ bool IsMachineHWIDCorrect() {
std::string hwid;
chromeos::system::StatisticsProvider* stats =
chromeos::system::StatisticsProvider::GetInstance();
if (!stats->GetMachineStatistic(chromeos::system::kHardwareClass, &hwid)) {
if (!stats->GetMachineStatistic(chromeos::system::kHardwareClassKey, &hwid)) {
LOG(ERROR) << "Couldn't get machine statistic 'hardware_class'.";
return false;
}
......
......@@ -49,6 +49,8 @@
#include "chromeos/disks/mock_disk_mount_manager.h"
#include "chromeos/login/login_state.h"
#include "chromeos/network/network_handler.h"
#include "chromeos/system/mock_statistics_provider.h"
#include "chromeos/system/statistics_provider.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/test/test_browser_thread.h"
#include "content/public/test/test_utils.h"
......@@ -216,6 +218,11 @@ class LoginUtilsTest : public testing::Test,
CryptohomeLibrary::Initialize();
LoginState::Initialize();
EXPECT_CALL(mock_statistics_provider_, GetMachineStatistic(_, _))
.WillRepeatedly(Return(false));
chromeos::system::StatisticsProvider::SetTestProvider(
&mock_statistics_provider_);
mock_input_method_manager_ = new input_method::MockInputMethodManager();
input_method::InitializeForTesting(mock_input_method_manager_);
disks::DiskMountManager::InitializeForTesting(&mock_disk_mount_manager_);
......@@ -478,6 +485,8 @@ class LoginUtilsTest : public testing::Test,
cryptohome::MockAsyncMethodCaller* mock_async_method_caller_;
chromeos::system::MockStatisticsProvider mock_statistics_provider_;
policy::BrowserPolicyConnector* connector_;
// Initialized after |mock_dbus_thread_manager_| is set up.
......
......@@ -13,13 +13,13 @@
#include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h"
#include "chrome/browser/chromeos/policy/enrollment_handler_chromeos.h"
#include "chrome/browser/chromeos/policy/enterprise_install_attributes.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/browser/policy/cloud/cloud_policy_constants.h"
#include "chrome/browser/policy/cloud/cloud_policy_store.h"
#include "chrome/browser/policy/cloud/device_management_service.h"
#include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h"
#include "chrome/common/pref_names.h"
#include "chromeos/chromeos_constants.h"
#include "chromeos/system/statistics_provider.h"
namespace em = enterprise_management;
......
......@@ -28,6 +28,8 @@
#include "chromeos/cryptohome/cryptohome_library.h"
#include "chromeos/dbus/dbus_client_implementation_type.h"
#include "chromeos/dbus/fake_cryptohome_client.h"
#include "chromeos/system/mock_statistics_provider.h"
#include "chromeos/system/statistics_provider.h"
#include "google_apis/gaia/gaia_oauth_client.h"
#include "net/url_request/test_url_fetcher_factory.h"
#include "net/url_request/url_request_test_util.h"
......@@ -39,7 +41,9 @@ using testing::AnyNumber;
using testing::AtMost;
using testing::DoAll;
using testing::Mock;
using testing::Return;
using testing::SaveArg;
using testing::SetArgumentPointee;
using testing::_;
namespace em = enterprise_management;
......@@ -67,6 +71,18 @@ class DeviceCloudPolicyManagerChromeOSTest
loop_.message_loop_proxy(),
&install_attributes_) {
fake_cryptohome_client_->Init(NULL /* no dbus::Bus */);
EXPECT_CALL(mock_statistics_provider_,
GetMachineStatistic(_, _))
.WillRepeatedly(Return(false));
EXPECT_CALL(mock_statistics_provider_,
GetMachineStatistic("serial_number", _))
.WillRepeatedly(DoAll(SetArgumentPointee<1>(std::string("test_sn")),
Return(true)));
chromeos::system::StatisticsProvider::SetTestProvider(
&mock_statistics_provider_);
}
virtual ~DeviceCloudPolicyManagerChromeOSTest() {
chromeos::system::StatisticsProvider::SetTestProvider(NULL);
}
virtual void SetUp() OVERRIDE {
......@@ -113,6 +129,7 @@ class DeviceCloudPolicyManagerChromeOSTest
MockDeviceManagementService device_management_service_;
chromeos::ScopedTestDeviceSettingsService test_device_settings_service_;
chromeos::ScopedTestCrosSettings test_cros_settings_;
chromeos::system::MockStatisticsProvider mock_statistics_provider_;
DeviceCloudPolicyStoreChromeOS* store_;
DeviceCloudPolicyManagerChromeOS manager_;
......
......@@ -17,7 +17,6 @@
#include "base/values.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/chromeos/settings/cros_settings_names.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h"
#include "chrome/browser/prefs/scoped_user_pref_update.h"
#include "chrome/common/chrome_version_info.h"
......@@ -25,6 +24,7 @@
#include "chromeos/network/device_state.h"
#include "chromeos/network/network_handler.h"
#include "chromeos/network/network_state_handler.h"
#include "chromeos/system/statistics_provider.h"
#include "content/public/browser/browser_thread.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
......
......@@ -17,13 +17,12 @@
#include "chrome/browser/chromeos/settings/cros_settings_provider.h"
#include "chrome/browser/chromeos/settings/device_settings_service.h"
#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h"
#include "chrome/browser/chromeos/system/mock_statistics_provider.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h"
#include "chrome/common/pref_names.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/shill_device_client.h"
#include "chromeos/network/network_handler.h"
#include "chromeos/system/mock_statistics_provider.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/geolocation_provider.h"
#include "content/public/test/test_browser_thread.h"
......
......@@ -23,7 +23,6 @@
#include "chrome/browser/chromeos/login/login_utils.h"
#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/chromeos/system/input_device_settings.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/browser/download/download_prefs.h"
#include "chrome/browser/feedback/tracing_manager.h"
#include "chrome/browser/prefs/pref_service_syncable.h"
......@@ -33,6 +32,7 @@
#include "chromeos/chromeos_switches.h"
#include "chromeos/ime/input_method_manager.h"
#include "chromeos/ime/xkeyboard.h"
#include "chromeos/system/statistics_provider.h"
#include "components/user_prefs/pref_registry_syncable.h"
#include "third_party/icu/source/i18n/unicode/timezone.h"
#include "ui/events/event_constants.h"
......
......@@ -23,9 +23,9 @@
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/browser/policy/browser_policy_connector.h"
#include "chrome/common/pref_names.h"
#include "chromeos/system/statistics_provider.h"
#include "content/public/browser/browser_thread.h"
namespace chromeos {
......
......@@ -220,7 +220,7 @@
#if defined(OS_CHROMEOS)
#include "chrome/browser/chromeos/external_metrics.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chromeos/system/statistics_provider.h"
#endif
#if defined(OS_WIN)
......
......@@ -69,7 +69,6 @@
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/chromeos/settings/cros_settings_provider.h"
#include "chrome/browser/chromeos/settings/device_settings_service.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chrome/browser/chromeos/system/timezone_settings.h"
#include "chromeos/chromeos_paths.h"
#include "chromeos/chromeos_switches.h"
......@@ -78,6 +77,7 @@
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/network/network_handler.h"
#include "chromeos/network/onc/onc_certificate_importer_impl.h"
#include "chromeos/system/statistics_provider.h"
#endif
using content::BrowserThread;
......@@ -157,7 +157,7 @@ class DeviceManagementServiceConfiguration
chromeos::system::StatisticsProvider::GetInstance();
std::string hwclass;
if (!provider->GetMachineStatistic(chromeos::system::kHardwareClass,
if (!provider->GetMachineStatistic(chromeos::system::kHardwareClassKey,
&hwclass)) {
LOG(ERROR) << "Failed to get machine information";
}
......
......@@ -801,8 +801,6 @@
'browser/chromeos/system/input_device_settings.h',
'browser/chromeos/system/pointer_device_observer.cc',
'browser/chromeos/system/pointer_device_observer.h',
'browser/chromeos/system/statistics_provider.cc',
'browser/chromeos/system/statistics_provider.h',
'browser/chromeos/system/syslogs_provider.cc',
'browser/chromeos/system/syslogs_provider.h',
'browser/chromeos/system/timezone_settings.cc',
......
......@@ -99,8 +99,6 @@
'browser/chromeos/settings/device_settings_test_helper.h',
'browser/chromeos/settings/mock_owner_key_util.cc',
'browser/chromeos/settings/mock_owner_key_util.h',
'browser/chromeos/system/mock_statistics_provider.cc',
'browser/chromeos/system/mock_statistics_provider.h',
# The only thing used from browser is Browser::Type.
'browser/download/download_test_file_activity_observer.cc',
'browser/download/download_test_file_activity_observer.h',
......
......@@ -308,6 +308,8 @@
'process_proxy/process_proxy_registry.h',
'system/name_value_pairs_parser.cc',
'system/name_value_pairs_parser.h',
'system/statistics_provider.cc',
'system/statistics_provider.h',
],
'conditions': [
['use_x11 == 1', {
......@@ -387,6 +389,8 @@
'network/onc/mock_certificate_importer.h',
'network/onc/onc_test_utils.cc',
'network/onc/onc_test_utils.h',
'system/mock_statistics_provider.cc',
'system/mock_statistics_provider.h',
],
'include_dirs': [
'..',
......
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Copyright 2013 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/chromeos/system/mock_statistics_provider.h"
#include "chromeos/system/mock_statistics_provider.h"
namespace chromeos {
namespace system {
......
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Copyright 2013 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_SYSTEM_MOCK_STATISTICS_PROVIDER_H_
#define CHROME_BROWSER_CHROMEOS_SYSTEM_MOCK_STATISTICS_PROVIDER_H_
#ifndef CHROMEOS_SYSTEM_MOCK_STATISTICS_PROVIDER_H_
#define CHROMEOS_SYSTEM_MOCK_STATISTICS_PROVIDER_H_
#include "base/basictypes.h"
#include "chrome/browser/chromeos/system/statistics_provider.h"
#include "chromeos/system/statistics_provider.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace chromeos {
namespace system {
class MockStatisticsProvider : public system::StatisticsProvider {
class CHROMEOS_EXPORT MockStatisticsProvider : public StatisticsProvider {
public:
MockStatisticsProvider();
virtual ~MockStatisticsProvider();
MOCK_METHOD0(Init, void());
MOCK_METHOD0(StartLoadingMachineStatistics, void());
MOCK_METHOD0(LoadOemManifest, void());
MOCK_METHOD2(StartLoadingMachineStatistics, void(
const scoped_refptr<base::TaskRunner>&,
bool));
MOCK_METHOD2(GetMachineStatistic, bool(const std::string& name,
std::string* result));
MOCK_METHOD2(GetMachineFlag, bool(const std::string& name,
bool* result));
MOCK_METHOD0(Shutdown, void());
private:
DISALLOW_COPY_AND_ASSIGN(MockStatisticsProvider);
......@@ -32,4 +33,4 @@ class MockStatisticsProvider : public system::StatisticsProvider {
} // namespace system
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_SYSTEM_MOCK_STATISTICS_PROVIDER_H_
#endif // CHROMEOS_SYSTEM_MOCK_STATISTICS_PROVIDER_H_
// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Copyright 2013 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_SYSTEM_STATISTICS_PROVIDER_H_
#define CHROME_BROWSER_CHROMEOS_SYSTEM_STATISTICS_PROVIDER_H_
#ifndef CHROMEOS_SYSTEM_STATISTICS_PROVIDER_H_
#define CHROMEOS_SYSTEM_STATISTICS_PROVIDER_H_
#include <string>
#include "base/memory/ref_counted.h"
#include "chromeos/chromeos_export.h"
namespace base {
class TaskRunner;
}
namespace chromeos {
namespace system {
// Developer switch value.
extern const char kDevSwitchBootMode[];
CHROMEOS_EXPORT extern const char kDevSwitchBootMode[];
// HWID key.
extern const char kHardwareClass[];
CHROMEOS_EXPORT extern const char kHardwareClassKey[];
// OEM customization flag that permits exiting enterprise enrollment flow in
// OOBE when 'oem_enterprise_managed' flag is set.
extern const char kOemCanExitEnterpriseEnrollmentKey[];
CHROMEOS_EXPORT extern const char kOemCanExitEnterpriseEnrollmentKey[];
// OEM customization directive that specified intended device purpose.
extern const char kOemDeviceRequisitionKey[];
CHROMEOS_EXPORT extern const char kOemDeviceRequisitionKey[];
// OEM customization flag that enforces enterprise enrollment flow in OOBE.
extern const char kOemIsEnterpriseManagedKey[];
CHROMEOS_EXPORT extern const char kOemIsEnterpriseManagedKey[];
// OEM customization flag that specifies if OOBE flow should be enhanced for
// keyboard driven control.
extern const char kOemKeyboardDrivenOobeKey[];
CHROMEOS_EXPORT extern const char kOemKeyboardDrivenOobeKey[];
// Offer coupon code key.
extern const char kOffersCouponCodeKey[];
CHROMEOS_EXPORT extern const char kOffersCouponCodeKey[];
// Offer group key.
extern const char kOffersGroupCodeKey[];
CHROMEOS_EXPORT extern const char kOffersGroupCodeKey[];
// This interface provides access to Chrome OS statistics.
class StatisticsProvider {
class CHROMEOS_EXPORT StatisticsProvider {
public:
// Initializes the statistics provider.
virtual void Init() = 0;
// Starts loading the machine statistcs.
virtual void StartLoadingMachineStatistics() = 0;
// Retrieve the named machine statistic (e.g. "hardware_class").
// This does not update the statistcs. If the |name| is not set, |result|
// preserves old value.
// Starts loading the machine statistics. File operations are performed on
// |file_task_runner|.
virtual void StartLoadingMachineStatistics(
const scoped_refptr<base::TaskRunner>& file_task_runner,
bool load_oem_manifest) = 0;
// Retrieves the named machine statistic (e.g. "hardware_class"). If |name|
// is found, sets |result| and returns true. Safe to call from any thread
// except the task runner passed to Initialize() (e.g. FILE). This may block
// if called early before the statistics are loaded from disk.
// StartLoadingMachineStatistics() must be called before this.
virtual bool GetMachineStatistic(const std::string& name,
std::string* result) = 0;
// Retrieve boolean value for named machine flag.
virtual bool GetMachineFlag(const std::string& name,
bool* result) = 0;
// Similar to GetMachineStatistic for boolean flags.
virtual bool GetMachineFlag(const std::string& name, bool* result) = 0;
// Loads kiosk oem manifest file.
virtual void LoadOemManifest() = 0;
// Cancels any pending file operations.
virtual void Shutdown() = 0;
// Get the Singleton instance.
static StatisticsProvider* GetInstance();
// Set the instance returned by GetInstance() for testing.
static void SetTestProvider(StatisticsProvider* test_provider);
protected:
virtual ~StatisticsProvider() {}
};
......@@ -67,4 +79,4 @@ class StatisticsProvider {
} // namespace system
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_SYSTEM_STATISTICS_PROVIDER_H_
#endif // CHROMEOS_SYSTEM_STATISTICS_PROVIDER_H_
......@@ -35,7 +35,7 @@ std::string GetSessionNameSynchronously() {
#if defined(OS_CHROMEOS)
// The approach below is similar to that used by the CrOs implementation of
// StatisticsProvider::GetMachineStatistic(CHROMEOS_RELEASE_BOARD).
// See chrome/browser/chromeos/system/statistics_provider.{h|cc}.
// See chromeos/system/statistics_provider.{h|cc}.
//
// We cannot use StatisticsProvider here because of the mutual dependency
// it creates between sync.gyp:sync and chrome.gyp:browser.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment