Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / extensions / browser / api / system_memory / memory_info_provider.cc
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
9 namespace extensions {
10
11 using core_api::system_memory::MemoryInfo;
12
13 // Static member intialization.
14 base::LazyInstance<scoped_refptr<MemoryInfoProvider> >
15     MemoryInfoProvider::provider_ = LAZY_INSTANCE_INITIALIZER;
16
17 MemoryInfoProvider::MemoryInfoProvider() {
18 }
19
20 MemoryInfoProvider::~MemoryInfoProvider() {
21 }
22
23 void MemoryInfoProvider::InitializeForTesting(
24     scoped_refptr<MemoryInfoProvider> provider) {
25   DCHECK(provider.get() != NULL);
26   provider_.Get() = provider;
27 }
28
29 bool 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
37 MemoryInfoProvider* MemoryInfoProvider::Get() {
38   if (provider_.Get().get() == NULL)
39     provider_.Get() = new MemoryInfoProvider();
40   return provider_.Get().get();
41 }
42
43 }  // namespace extensions