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.
5 #include "chrome/browser/feedback/system_logs/log_sources/memory_details_log_source.h"
7 #include "chrome/browser/memory_details.h"
8 #include "content/public/browser/browser_thread.h"
10 namespace system_logs {
12 // Reads Chrome memory usage.
13 class SystemLogsMemoryHandler : public MemoryDetails {
15 explicit SystemLogsMemoryHandler(const SysLogsSourceCallback& callback)
16 : callback_(callback) {}
18 // Sends the data to the callback.
19 // MemoryDetails override.
20 void OnDetailsAvailable() override {
21 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
23 scoped_ptr<SystemLogsResponse> response(new SystemLogsResponse);
24 (*response)["mem_usage"] = ToLogString();
25 callback_.Run(response.get());
29 ~SystemLogsMemoryHandler() override {}
30 SysLogsSourceCallback callback_;
32 DISALLOW_COPY_AND_ASSIGN(SystemLogsMemoryHandler);
35 MemoryDetailsLogSource::MemoryDetailsLogSource()
36 : SystemLogsSource("MemoryDetails") {
39 MemoryDetailsLogSource::~MemoryDetailsLogSource() {
42 void MemoryDetailsLogSource::Fetch(const SysLogsSourceCallback& callback) {
43 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
44 DCHECK(!callback.is_null());
46 scoped_refptr<SystemLogsMemoryHandler>
47 handler(new SystemLogsMemoryHandler(callback));
48 // TODO(jamescook): Maybe we don't need to update histograms here?
49 handler->StartFetch(MemoryDetails::UPDATE_USER_METRICS);
52 } // namespace system_logs