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