blob: ae5f7a7d473e35c18d1ba9428303c5633a2168d9 [file] [log] [blame]
Ben Murdocha3f7b4e2013-07-24 10:36:34 +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 Murdocha3f7b4e2013-07-24 10:36:34 +01005#include "chrome/browser/extensions/api/system_memory/memory_info_provider.h"
Torne (Richard Coles)58218062012-11-14 11:43:16 +00006
7#include "base/sys_info.h"
8
9namespace extensions {
10
Ben Murdocha3f7b4e2013-07-24 10:36:34 +010011using api::system_memory::MemoryInfo;
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<MemoryInfoProvider> >
15 MemoryInfoProvider::provider_ = LAZY_INSTANCE_INITIALIZER;
Ben Murdoch7dbb3d52013-07-17 14:55:54 +010016
Torne (Richard Coles)58218062012-11-14 11:43:16 +000017MemoryInfoProvider::MemoryInfoProvider() {}
18
19MemoryInfoProvider::~MemoryInfoProvider() {}
20
Ben Murdoch7dbb3d52013-07-17 14:55:54 +010021const MemoryInfo& MemoryInfoProvider::memory_info() const {
22 return info_;
23}
24
Ben Murdochbb1529c2013-08-08 10:24:53 +010025void MemoryInfoProvider::InitializeForTesting(
26 scoped_refptr<MemoryInfoProvider> provider) {
27 DCHECK(provider.get() != NULL);
28 provider_.Get() = provider;
29}
30
Ben Murdoch7dbb3d52013-07-17 14:55:54 +010031bool MemoryInfoProvider::QueryInfo() {
32 info_.capacity = static_cast<double>(base::SysInfo::AmountOfPhysicalMemory());
33 info_.available_capacity =
Ben Murdochbb1529c2013-08-08 10:24:53 +010034 static_cast<double>(base::SysInfo::AmountOfAvailablePhysicalMemory());
Torne (Richard Coles)58218062012-11-14 11:43:16 +000035 return true;
36}
37
38// static
39MemoryInfoProvider* MemoryInfoProvider::Get() {
Ben Murdochbb1529c2013-08-08 10:24:53 +010040 if (provider_.Get().get() == NULL)
41 provider_.Get() = new MemoryInfoProvider();
42 return provider_.Get();
Torne (Richard Coles)58218062012-11-14 11:43:16 +000043}
44
45} // namespace extensions