1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "extensions/browser/api/system_memory/memory_info_provider.h"
6
7#include "base/sys_info.h"
8
9namespace extensions {
10
11using core_api::system_memory::MemoryInfo;
12
13// Static member intialization.
14base::LazyInstance<scoped_refptr<MemoryInfoProvider> >
15    MemoryInfoProvider::provider_ = LAZY_INSTANCE_INITIALIZER;
16
17MemoryInfoProvider::MemoryInfoProvider() {
18}
19
20MemoryInfoProvider::~MemoryInfoProvider() {
21}
22
23void MemoryInfoProvider::InitializeForTesting(
24    scoped_refptr<MemoryInfoProvider> provider) {
25  DCHECK(provider.get() != NULL);
26  provider_.Get() = provider;
27}
28
29bool MemoryInfoProvider::QueryInfo() {
30  info_.capacity = static_cast<double>(base::SysInfo::AmountOfPhysicalMemory());
31  info_.available_capacity =
32      static_cast<double>(base::SysInfo::AmountOfAvailablePhysicalMemory());
33  return true;
34}
35
36// static
37MemoryInfoProvider* MemoryInfoProvider::Get() {
38  if (provider_.Get().get() == NULL)
39    provider_.Get() = new MemoryInfoProvider();
40  return provider_.Get().get();
41}
42
43}  // namespace extensions
44