blob: bdadfbf784611a6cd0f28bef7df7220c8c631cd0 [file] [log] [blame]
Ben Murdoch9ab55632013-07-18 11:57:30 +01001// Copyright 2013 The Chromium Authors. All rights reserved.
Torne (Richard Coles)58218062012-11-14 11:43:16 +00002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Ben Murdoch9ab55632013-07-18 11:57:30 +01005#include "chrome/browser/extensions/api/system_cpu/cpu_info_provider.h"
Torne (Richard Coles)58218062012-11-14 11:43:16 +00006
7#include "base/sys_info.h"
Torne (Richard Coles)58218062012-11-14 11:43:16 +00008
9namespace extensions {
10
Ben Murdoch9ab55632013-07-18 11:57:30 +010011using api::system_cpu::CpuInfo;
Torne (Richard Coles)58218062012-11-14 11:43:16 +000012
Ben Murdoch7dbb3d52013-07-17 14:55:54 +010013// Static member intialization.
Ben Murdochbb1529c2013-08-08 10:24:53 +010014base::LazyInstance<scoped_refptr<CpuInfoProvider> >
15 CpuInfoProvider::provider_ = LAZY_INSTANCE_INITIALIZER;
Ben Murdoch7dbb3d52013-07-17 14:55:54 +010016
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010017CpuInfoProvider::CpuInfoProvider() {}
Torne (Richard Coles)58218062012-11-14 11:43:16 +000018
Torne (Richard Coles)868fa2f2013-06-11 10:57:03 +010019CpuInfoProvider::~CpuInfoProvider() {}
Torne (Richard Coles)58218062012-11-14 11:43:16 +000020
Ben Murdoch7dbb3d52013-07-17 14:55:54 +010021const CpuInfo& CpuInfoProvider::cpu_info() const {
22 return info_;
23}
Torne (Richard Coles)58218062012-11-14 11:43:16 +000024
Ben Murdochbb1529c2013-08-08 10:24:53 +010025void CpuInfoProvider::InitializeForTesting(
26 scoped_refptr<CpuInfoProvider> provider) {
27 DCHECK(provider.get() != NULL);
28 provider_.Get() = provider;
29}
30
Ben Murdoch7dbb3d52013-07-17 14:55:54 +010031bool CpuInfoProvider::QueryInfo() {
32 info_.num_of_processors = base::SysInfo::NumberOfProcessors();
33 info_.arch_name = base::SysInfo::OperatingSystemArchitecture();
34 info_.model_name = base::SysInfo::CPUModelName();
Torne (Richard Coles)58218062012-11-14 11:43:16 +000035 return true;
36}
37
Torne (Richard Coles)58218062012-11-14 11:43:16 +000038// static
39CpuInfoProvider* CpuInfoProvider::Get() {
Ben Murdochbb1529c2013-08-08 10:24:53 +010040 if (provider_.Get().get() == NULL)
41 provider_.Get() = new CpuInfoProvider();
42 return provider_.Get();
Torne (Richard Coles)58218062012-11-14 11:43:16 +000043}
44
Torne (Richard Coles)58218062012-11-14 11:43:16 +000045} // namespace extensions