Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / feedback / system_logs / log_sources / memory_details_log_source.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 "chrome/browser/feedback/system_logs/log_sources/memory_details_log_source.h"
6
7 #include "chrome/browser/memory_details.h"
8 #include "content/public/browser/browser_thread.h"
9
10 namespace system_logs {
11
12 // Reads Chrome memory usage.
13 class SystemLogsMemoryHandler : public MemoryDetails {
14  public:
15   explicit SystemLogsMemoryHandler(const SysLogsSourceCallback& callback)
16       : callback_(callback) {}
17
18   // Sends the data to the callback.
19   // MemoryDetails override.
20   void OnDetailsAvailable() override {
21     DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
22
23     scoped_ptr<SystemLogsResponse> response(new SystemLogsResponse);
24     (*response)["mem_usage"] = ToLogString();
25     callback_.Run(response.get());
26   }
27
28  private:
29   ~SystemLogsMemoryHandler() override {}
30   SysLogsSourceCallback callback_;
31
32   DISALLOW_COPY_AND_ASSIGN(SystemLogsMemoryHandler);
33 };
34
35 MemoryDetailsLogSource::MemoryDetailsLogSource()
36     : SystemLogsSource("MemoryDetails") {
37 }
38
39 MemoryDetailsLogSource::~MemoryDetailsLogSource() {
40 }
41
42 void MemoryDetailsLogSource::Fetch(const SysLogsSourceCallback& callback) {
43   DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
44   DCHECK(!callback.is_null());
45
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);
50 }
51
52 }  // namespace system_logs