| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/renderer/chrome_render_process_observer.h" | 5 #include "chrome/renderer/chrome_render_process_observer.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | |
| 9 #include <limits> | 8 #include <limits> |
| 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/bind.h" | 12 #include "base/bind.h" |
| 13 #include "base/command_line.h" | 13 #include "base/command_line.h" |
| 14 #include "base/files/file_util.h" | 14 #include "base/files/file_util.h" |
| 15 #include "base/location.h" | 15 #include "base/location.h" |
| 16 #include "base/macros.h" | 16 #include "base/macros.h" |
| 17 #include "base/memory/weak_ptr.h" | 17 #include "base/memory/weak_ptr.h" |
| 18 #include "base/metrics/field_trial.h" | 18 #include "base/metrics/field_trial.h" |
| 19 #include "base/metrics/histogram.h" | 19 #include "base/metrics/histogram.h" |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 | 117 |
| 118 base::WeakPtrFactory<RendererResourceDelegate> weak_factory_; | 118 base::WeakPtrFactory<RendererResourceDelegate> weak_factory_; |
| 119 | 119 |
| 120 DISALLOW_COPY_AND_ASSIGN(RendererResourceDelegate); | 120 DISALLOW_COPY_AND_ASSIGN(RendererResourceDelegate); |
| 121 }; | 121 }; |
| 122 | 122 |
| 123 static const int kWaitForWorkersStatsTimeoutMS = 20; | 123 static const int kWaitForWorkersStatsTimeoutMS = 20; |
| 124 | 124 |
| 125 class ResourceUsageReporterImpl : public ResourceUsageReporter { | 125 class ResourceUsageReporterImpl : public ResourceUsageReporter { |
| 126 public: | 126 public: |
| 127 ResourceUsageReporterImpl( | 127 ResourceUsageReporterImpl(base::WeakPtr<ChromeRenderProcessObserver> observer, |
| 128 base::WeakPtr<ChromeRenderProcessObserver> observer, | 128 mojo::InterfaceRequest<ResourceUsageReporter> req) |
| 129 mojo::InterfaceRequest<ResourceUsageReporter> req) | 129 : binding_(this, std::move(req)), |
| 130 : binding_(this, req.Pass()), observer_(observer), weak_factory_(this) {} | 130 observer_(observer), |
| 131 weak_factory_(this) {} |
| 131 ~ResourceUsageReporterImpl() override {} | 132 ~ResourceUsageReporterImpl() override {} |
| 132 | 133 |
| 133 private: | 134 private: |
| 134 static void CollectOnWorkerThread( | 135 static void CollectOnWorkerThread( |
| 135 const scoped_refptr<base::TaskRunner>& master, | 136 const scoped_refptr<base::TaskRunner>& master, |
| 136 base::WeakPtr<ResourceUsageReporterImpl> impl) { | 137 base::WeakPtr<ResourceUsageReporterImpl> impl) { |
| 137 size_t total_bytes = 0; | 138 size_t total_bytes = 0; |
| 138 size_t used_bytes = 0; | 139 size_t used_bytes = 0; |
| 139 v8::Isolate* isolate = v8::Isolate::GetCurrent(); | 140 v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
| 140 if (isolate) { | 141 if (isolate) { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 151 void ReceiveStats(size_t total_bytes, size_t used_bytes) { | 152 void ReceiveStats(size_t total_bytes, size_t used_bytes) { |
| 152 usage_data_->v8_bytes_allocated += total_bytes; | 153 usage_data_->v8_bytes_allocated += total_bytes; |
| 153 usage_data_->v8_bytes_used += used_bytes; | 154 usage_data_->v8_bytes_used += used_bytes; |
| 154 workers_to_go_--; | 155 workers_to_go_--; |
| 155 if (!workers_to_go_) | 156 if (!workers_to_go_) |
| 156 SendResults(); | 157 SendResults(); |
| 157 } | 158 } |
| 158 | 159 |
| 159 void SendResults() { | 160 void SendResults() { |
| 160 if (!callback_.is_null()) | 161 if (!callback_.is_null()) |
| 161 callback_.Run(usage_data_.Pass()); | 162 callback_.Run(std::move(usage_data_)); |
| 162 callback_.reset(); | 163 callback_.reset(); |
| 163 weak_factory_.InvalidateWeakPtrs(); | 164 weak_factory_.InvalidateWeakPtrs(); |
| 164 workers_to_go_ = 0; | 165 workers_to_go_ = 0; |
| 165 } | 166 } |
| 166 | 167 |
| 167 void GetUsageData( | 168 void GetUsageData( |
| 168 const mojo::Callback<void(ResourceUsageDataPtr)>& callback) override { | 169 const mojo::Callback<void(ResourceUsageDataPtr)>& callback) override { |
| 169 DCHECK(callback_.is_null()); | 170 DCHECK(callback_.is_null()); |
| 170 weak_factory_.InvalidateWeakPtrs(); | 171 weak_factory_.InvalidateWeakPtrs(); |
| 171 usage_data_ = ResourceUsageData::New(); | 172 usage_data_ = ResourceUsageData::New(); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 int workers_to_go_; | 214 int workers_to_go_; |
| 214 mojo::StrongBinding<ResourceUsageReporter> binding_; | 215 mojo::StrongBinding<ResourceUsageReporter> binding_; |
| 215 base::WeakPtr<ChromeRenderProcessObserver> observer_; | 216 base::WeakPtr<ChromeRenderProcessObserver> observer_; |
| 216 | 217 |
| 217 base::WeakPtrFactory<ResourceUsageReporterImpl> weak_factory_; | 218 base::WeakPtrFactory<ResourceUsageReporterImpl> weak_factory_; |
| 218 }; | 219 }; |
| 219 | 220 |
| 220 void CreateResourceUsageReporter( | 221 void CreateResourceUsageReporter( |
| 221 base::WeakPtr<ChromeRenderProcessObserver> observer, | 222 base::WeakPtr<ChromeRenderProcessObserver> observer, |
| 222 mojo::InterfaceRequest<ResourceUsageReporter> request) { | 223 mojo::InterfaceRequest<ResourceUsageReporter> request) { |
| 223 new ResourceUsageReporterImpl(observer, request.Pass()); | 224 new ResourceUsageReporterImpl(observer, std::move(request)); |
| 224 } | 225 } |
| 225 | 226 |
| 226 } // namespace | 227 } // namespace |
| 227 | 228 |
| 228 bool ChromeRenderProcessObserver::is_incognito_process_ = false; | 229 bool ChromeRenderProcessObserver::is_incognito_process_ = false; |
| 229 | 230 |
| 230 ChromeRenderProcessObserver::ChromeRenderProcessObserver() | 231 ChromeRenderProcessObserver::ChromeRenderProcessObserver() |
| 231 : webkit_initialized_(false), weak_factory_(this) { | 232 : webkit_initialized_(false), weak_factory_(this) { |
| 232 const base::CommandLine& command_line = | 233 const base::CommandLine& command_line = |
| 233 *base::CommandLine::ForCurrentProcess(); | 234 *base::CommandLine::ForCurrentProcess(); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 334 ChromeRenderProcessObserver::content_setting_rules() const { | 335 ChromeRenderProcessObserver::content_setting_rules() const { |
| 335 return &content_setting_rules_; | 336 return &content_setting_rules_; |
| 336 } | 337 } |
| 337 | 338 |
| 338 void ChromeRenderProcessObserver::OnFieldTrialGroupFinalized( | 339 void ChromeRenderProcessObserver::OnFieldTrialGroupFinalized( |
| 339 const std::string& trial_name, | 340 const std::string& trial_name, |
| 340 const std::string& group_name) { | 341 const std::string& group_name) { |
| 341 content::RenderThread::Get()->Send( | 342 content::RenderThread::Get()->Send( |
| 342 new ChromeViewHostMsg_FieldTrialActivated(trial_name)); | 343 new ChromeViewHostMsg_FieldTrialActivated(trial_name)); |
| 343 } | 344 } |
| OLD | NEW |