| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/webui/memory_internals/memory_internals_proxy.h" | 5 #include "chrome/browser/ui/webui/memory_internals/memory_internals_proxy.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 class Profile; | 46 class Profile; |
| 47 | 47 |
| 48 namespace { | 48 namespace { |
| 49 | 49 |
| 50 class ProcessDetails : public MemoryDetails { | 50 class ProcessDetails : public MemoryDetails { |
| 51 public: | 51 public: |
| 52 typedef base::Callback<void(const ProcessData&)> DataCallback; | 52 typedef base::Callback<void(const ProcessData&)> DataCallback; |
| 53 explicit ProcessDetails(const DataCallback& callback) | 53 explicit ProcessDetails(const DataCallback& callback) |
| 54 : callback_(callback) {} | 54 : callback_(callback) {} |
| 55 // MemoryDetails: | 55 // MemoryDetails: |
| 56 virtual void OnDetailsAvailable() override { | 56 void OnDetailsAvailable() override { |
| 57 const std::vector<ProcessData>& browser_processes = processes(); | 57 const std::vector<ProcessData>& browser_processes = processes(); |
| 58 // [0] means Chrome. | 58 // [0] means Chrome. |
| 59 callback_.Run(browser_processes[0]); | 59 callback_.Run(browser_processes[0]); |
| 60 } | 60 } |
| 61 | 61 |
| 62 private: | 62 private: |
| 63 virtual ~ProcessDetails() {} | 63 ~ProcessDetails() override {} |
| 64 | 64 |
| 65 DataCallback callback_; | 65 DataCallback callback_; |
| 66 | 66 |
| 67 DISALLOW_COPY_AND_ASSIGN(ProcessDetails); | 67 DISALLOW_COPY_AND_ASSIGN(ProcessDetails); |
| 68 }; | 68 }; |
| 69 | 69 |
| 70 base::DictionaryValue* FindProcessFromPid(base::ListValue* processes, | 70 base::DictionaryValue* FindProcessFromPid(base::ListValue* processes, |
| 71 base::ProcessId pid) { | 71 base::ProcessId pid) { |
| 72 const size_t n = processes->GetSize(); | 72 const size_t n = processes->GetSize(); |
| 73 for (size_t i = 0; i < n; ++i) { | 73 for (size_t i = 0; i < n; ++i) { |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 122 public: | 122 public: |
| 123 typedef base::Callback<void(const base::ProcessId pid, | 123 typedef base::Callback<void(const base::ProcessId pid, |
| 124 const size_t v8_allocated, | 124 const size_t v8_allocated, |
| 125 const size_t v8_used)> V8DataCallback; | 125 const size_t v8_used)> V8DataCallback; |
| 126 | 126 |
| 127 explicit RendererDetails(const V8DataCallback& callback) | 127 explicit RendererDetails(const V8DataCallback& callback) |
| 128 : callback_(callback) { | 128 : callback_(callback) { |
| 129 registrar_.Add(this, chrome::NOTIFICATION_RENDERER_V8_HEAP_STATS_COMPUTED, | 129 registrar_.Add(this, chrome::NOTIFICATION_RENDERER_V8_HEAP_STATS_COMPUTED, |
| 130 content::NotificationService::AllSources()); | 130 content::NotificationService::AllSources()); |
| 131 } | 131 } |
| 132 virtual ~RendererDetails() {} | 132 ~RendererDetails() override {} |
| 133 | 133 |
| 134 void Request() { | 134 void Request() { |
| 135 for (std::set<content::WebContents*>::iterator iter = web_contents_.begin(); | 135 for (std::set<content::WebContents*>::iterator iter = web_contents_.begin(); |
| 136 iter != web_contents_.end(); ++iter) | 136 iter != web_contents_.end(); ++iter) |
| 137 (*iter)->GetRenderViewHost()->Send(new ChromeViewMsg_GetV8HeapStats); | 137 (*iter)->GetRenderViewHost()->Send(new ChromeViewMsg_GetV8HeapStats); |
| 138 } | 138 } |
| 139 | 139 |
| 140 void AddWebContents(content::WebContents* content) { | 140 void AddWebContents(content::WebContents* content) { |
| 141 web_contents_.insert(content); | 141 web_contents_.insert(content); |
| 142 } | 142 } |
| 143 | 143 |
| 144 void Clear() { | 144 void Clear() { |
| 145 web_contents_.clear(); | 145 web_contents_.clear(); |
| 146 } | 146 } |
| 147 | 147 |
| 148 void RemoveWebContents(base::ProcessId) { | 148 void RemoveWebContents(base::ProcessId) { |
| 149 // We don't have to detect which content is the caller of this method. | 149 // We don't have to detect which content is the caller of this method. |
| 150 if (!web_contents_.empty()) | 150 if (!web_contents_.empty()) |
| 151 web_contents_.erase(web_contents_.begin()); | 151 web_contents_.erase(web_contents_.begin()); |
| 152 } | 152 } |
| 153 | 153 |
| 154 int IsClean() { | 154 int IsClean() { |
| 155 return web_contents_.empty(); | 155 return web_contents_.empty(); |
| 156 } | 156 } |
| 157 | 157 |
| 158 private: | 158 private: |
| 159 // NotificationObserver: | 159 // NotificationObserver: |
| 160 virtual void Observe(int type, | 160 void Observe(int type, |
| 161 const content::NotificationSource& source, | 161 const content::NotificationSource& source, |
| 162 const content::NotificationDetails& details) override { | 162 const content::NotificationDetails& details) override { |
| 163 const base::ProcessId* pid = | 163 const base::ProcessId* pid = |
| 164 content::Source<const base::ProcessId>(source).ptr(); | 164 content::Source<const base::ProcessId>(source).ptr(); |
| 165 const ChromeRenderMessageFilter::V8HeapStatsDetails* v8_heap = | 165 const ChromeRenderMessageFilter::V8HeapStatsDetails* v8_heap = |
| 166 content::Details<const ChromeRenderMessageFilter::V8HeapStatsDetails>( | 166 content::Details<const ChromeRenderMessageFilter::V8HeapStatsDetails>( |
| 167 details).ptr(); | 167 details).ptr(); |
| 168 callback_.Run(*pid, | 168 callback_.Run(*pid, |
| 169 v8_heap->v8_memory_allocated(), | 169 v8_heap->v8_memory_allocated(), |
| 170 v8_heap->v8_memory_used()); | 170 v8_heap->v8_memory_used()); |
| 171 } | 171 } |
| 172 | 172 |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 const std::string& function, const base::Value& args) { | 339 const std::string& function, const base::Value& args) { |
| 340 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 340 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 341 | 341 |
| 342 std::vector<const base::Value*> args_vector(1, &args); | 342 std::vector<const base::Value*> args_vector(1, &args); |
| 343 base::string16 update = | 343 base::string16 update = |
| 344 content::WebUI::GetJavascriptCall(function, args_vector); | 344 content::WebUI::GetJavascriptCall(function, args_vector); |
| 345 // Don't forward updates to a destructed UI. | 345 // Don't forward updates to a destructed UI. |
| 346 if (handler_) | 346 if (handler_) |
| 347 handler_->OnUpdate(update); | 347 handler_->OnUpdate(update); |
| 348 } | 348 } |
| OLD | NEW |