1a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "chrome/browser/extensions/api/system_memory/memory_info_provider.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/sys_info.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions { 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 11a3f7b4e666c476898878fa745f637129375cd889Ben Murdochusing api::system_memory::MemoryInfo; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 137dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Static member intialization. 14bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochbase::LazyInstance<scoped_refptr<MemoryInfoProvider> > 15bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch MemoryInfoProvider::provider_ = LAZY_INSTANCE_INITIALIZER; 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MemoryInfoProvider::MemoryInfoProvider() {} 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MemoryInfoProvider::~MemoryInfoProvider() {} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochconst MemoryInfo& MemoryInfoProvider::memory_info() const { 227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return info_; 237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 247dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 25bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdochvoid MemoryInfoProvider::InitializeForTesting( 26bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch scoped_refptr<MemoryInfoProvider> provider) { 27bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch DCHECK(provider.get() != NULL); 28bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch provider_.Get() = provider; 29bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch} 30bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch 317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochbool MemoryInfoProvider::QueryInfo() { 327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch info_.capacity = static_cast<double>(base::SysInfo::AmountOfPhysicalMemory()); 337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch info_.available_capacity = 34bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch static_cast<double>(base::SysInfo::AmountOfAvailablePhysicalMemory()); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MemoryInfoProvider* MemoryInfoProvider::Get() { 40bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch if (provider_.Get().get() == NULL) 41bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch provider_.Get() = new MemoryInfoProvider(); 42bb1529ce867d8845a77ec7cdf3e3003ef1771a40Ben Murdoch return provider_.Get(); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace extensions 46