| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_H_ | 5 #ifndef CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_H_ |
| 6 #define CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_H_ | 6 #define CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 #include <string> | 10 #include <string> |
| 11 #include <utility> | 11 #include <utility> |
| 12 #include <vector> | 12 #include <vector> |
| 13 | 13 |
| 14 #include "base/basictypes.h" | 14 #include "base/basictypes.h" |
| 15 #include "base/gtest_prod_util.h" | 15 #include "base/gtest_prod_util.h" |
| 16 #include "base/memory/ref_counted.h" | 16 #include "base/memory/ref_counted.h" |
| 17 #include "base/memory/singleton.h" | 17 #include "base/memory/singleton.h" |
| 18 #include "base/observer_list.h" | 18 #include "base/observer_list.h" |
| 19 #include "base/process_util.h" | 19 #include "base/process_util.h" |
| 20 #include "base/string16.h" | 20 #include "base/string16.h" |
| 21 #include "base/timer.h" | 21 #include "base/timer.h" |
| 22 #include "chrome/browser/renderer_host/web_cache_manager.h" | 22 #include "chrome/browser/renderer_host/web_cache_manager.h" |
| 23 #include "net/url_request/url_request_job_tracker.h" | |
| 24 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCache.h" | 23 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCache.h" |
| 25 | 24 |
| 26 class Extension; | 25 class Extension; |
| 27 class SkBitmap; | 26 class SkBitmap; |
| 28 class TabContentsWrapper; | 27 class TabContentsWrapper; |
| 29 class TaskManagerModel; | 28 class TaskManagerModel; |
| 30 | 29 |
| 31 namespace base { | 30 namespace base { |
| 32 class ProcessMetrics; | 31 class ProcessMetrics; |
| 33 } | 32 } |
| 33 namespace net { |
| 34 class URLRequest; |
| 35 } |
| 34 | 36 |
| 35 // This class is a singleton. | 37 // This class is a singleton. |
| 36 class TaskManager { | 38 class TaskManager { |
| 37 public: | 39 public: |
| 38 // A resource represents one row in the task manager. | 40 // A resource represents one row in the task manager. |
| 39 // Resources from similar processes are grouped together by the task manager. | 41 // Resources from similar processes are grouped together by the task manager. |
| 40 class Resource { | 42 class Resource { |
| 41 public: | 43 public: |
| 42 virtual ~Resource() {} | 44 virtual ~Resource() {} |
| 43 | 45 |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 virtual void OnItemsChanged(int start, int length) = 0; | 209 virtual void OnItemsChanged(int start, int length) = 0; |
| 208 | 210 |
| 209 // Invoked when new items are added. | 211 // Invoked when new items are added. |
| 210 virtual void OnItemsAdded(int start, int length) = 0; | 212 virtual void OnItemsAdded(int start, int length) = 0; |
| 211 | 213 |
| 212 // Invoked when a range of items has been removed. | 214 // Invoked when a range of items has been removed. |
| 213 virtual void OnItemsRemoved(int start, int length) = 0; | 215 virtual void OnItemsRemoved(int start, int length) = 0; |
| 214 }; | 216 }; |
| 215 | 217 |
| 216 // The model that the TaskManager is using. | 218 // The model that the TaskManager is using. |
| 217 class TaskManagerModel : public net::URLRequestJobTracker::JobObserver, | 219 class TaskManagerModel : public base::RefCountedThreadSafe<TaskManagerModel> { |
| 218 public base::RefCountedThreadSafe<TaskManagerModel> { | |
| 219 public: | 220 public: |
| 220 explicit TaskManagerModel(TaskManager* task_manager); | 221 explicit TaskManagerModel(TaskManager* task_manager); |
| 221 | 222 |
| 222 void AddObserver(TaskManagerModelObserver* observer); | 223 void AddObserver(TaskManagerModelObserver* observer); |
| 223 void RemoveObserver(TaskManagerModelObserver* observer); | 224 void RemoveObserver(TaskManagerModelObserver* observer); |
| 224 | 225 |
| 225 // Returns number of registered resources. | 226 // Returns number of registered resources. |
| 226 int ResourceCount() const; | 227 int ResourceCount() const; |
| 227 | 228 |
| 228 // Methods to return raw resource information. | 229 // Methods to return raw resource information. |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 | 291 |
| 291 // Returns the type of the given resource. | 292 // Returns the type of the given resource. |
| 292 TaskManager::Resource::Type GetResourceType(int index) const; | 293 TaskManager::Resource::Type GetResourceType(int index) const; |
| 293 | 294 |
| 294 // Returns TabContents of given resource or NULL if not applicable. | 295 // Returns TabContents of given resource or NULL if not applicable. |
| 295 TabContentsWrapper* GetResourceTabContents(int index) const; | 296 TabContentsWrapper* GetResourceTabContents(int index) const; |
| 296 | 297 |
| 297 // Returns Extension of given resource or NULL if not applicable. | 298 // Returns Extension of given resource or NULL if not applicable. |
| 298 const Extension* GetResourceExtension(int index) const; | 299 const Extension* GetResourceExtension(int index) const; |
| 299 | 300 |
| 300 // JobObserver methods: | |
| 301 virtual void OnJobAdded(net::URLRequestJob* job); | |
| 302 virtual void OnJobRemoved(net::URLRequestJob* job); | |
| 303 virtual void OnJobDone(net::URLRequestJob* job, | |
| 304 const net::URLRequestStatus& status); | |
| 305 virtual void OnJobRedirect(net::URLRequestJob* job, | |
| 306 const GURL& location, | |
| 307 int status_code); | |
| 308 virtual void OnBytesRead(net::URLRequestJob* job, | |
| 309 const char* buf, | |
| 310 int byte_count); | |
| 311 | |
| 312 void AddResource(TaskManager::Resource* resource); | 301 void AddResource(TaskManager::Resource* resource); |
| 313 void RemoveResource(TaskManager::Resource* resource); | 302 void RemoveResource(TaskManager::Resource* resource); |
| 314 | 303 |
| 315 void StartUpdating(); | 304 void StartUpdating(); |
| 316 void StopUpdating(); | 305 void StopUpdating(); |
| 317 | 306 |
| 318 void Clear(); // Removes all items. | 307 void Clear(); // Removes all items. |
| 319 | 308 |
| 320 // Sends OnModelChanged() to all observers to inform them of significant | 309 // Sends OnModelChanged() to all observers to inform them of significant |
| 321 // changes to the model. | 310 // changes to the model. |
| 322 void ModelChanged(); | 311 void ModelChanged(); |
| 323 | 312 |
| 324 void NotifyResourceTypeStats( | 313 void NotifyResourceTypeStats( |
| 325 base::ProcessId renderer_id, | 314 base::ProcessId renderer_id, |
| 326 const WebKit::WebCache::ResourceTypeStats& stats); | 315 const WebKit::WebCache::ResourceTypeStats& stats); |
| 327 | 316 |
| 328 void NotifyV8HeapStats(base::ProcessId renderer_id, | 317 void NotifyV8HeapStats(base::ProcessId renderer_id, |
| 329 size_t v8_memory_allocated, | 318 size_t v8_memory_allocated, |
| 330 size_t v8_memory_used); | 319 size_t v8_memory_used); |
| 331 | 320 |
| 321 void NotifyBytesRead(const net::URLRequest& request, int bytes_read); |
| 322 |
| 332 private: | 323 private: |
| 333 friend class base::RefCountedThreadSafe<TaskManagerModel>; | 324 friend class base::RefCountedThreadSafe<TaskManagerModel>; |
| 334 FRIEND_TEST_ALL_PREFIXES(TaskManagerTest, RefreshCalled); | 325 FRIEND_TEST_ALL_PREFIXES(TaskManagerTest, RefreshCalled); |
| 335 FRIEND_TEST_ALL_PREFIXES(ExtensionApiTest, ProcessesVsTaskManager); | 326 FRIEND_TEST_ALL_PREFIXES(ExtensionApiTest, ProcessesVsTaskManager); |
| 336 | 327 |
| 337 ~TaskManagerModel(); | 328 ~TaskManagerModel(); |
| 338 | 329 |
| 339 enum UpdateState { | 330 enum UpdateState { |
| 340 IDLE = 0, // Currently not updating. | 331 IDLE = 0, // Currently not updating. |
| 341 TASK_PENDING, // An update task is pending. | 332 TASK_PENDING, // An update task is pending. |
| (...skipping 30 matching lines...) Expand all Loading... |
| 372 typedef std::map<TaskManager::Resource*, int64> ResourceValueMap; | 363 typedef std::map<TaskManager::Resource*, int64> ResourceValueMap; |
| 373 typedef std::map<base::ProcessHandle, | 364 typedef std::map<base::ProcessHandle, |
| 374 std::pair<size_t, size_t> > MemoryUsageMap; | 365 std::pair<size_t, size_t> > MemoryUsageMap; |
| 375 | 366 |
| 376 // Updates the values for all rows. | 367 // Updates the values for all rows. |
| 377 void Refresh(); | 368 void Refresh(); |
| 378 | 369 |
| 379 void AddItem(TaskManager::Resource* resource, bool notify_table); | 370 void AddItem(TaskManager::Resource* resource, bool notify_table); |
| 380 void RemoveItem(TaskManager::Resource* resource); | 371 void RemoveItem(TaskManager::Resource* resource); |
| 381 | 372 |
| 382 // Register for network usage updates | |
| 383 void RegisterForJobDoneNotifications(); | |
| 384 void UnregisterForJobDoneNotifications(); | |
| 385 | |
| 386 // Returns the network usage (in bytes per seconds) for the specified | 373 // Returns the network usage (in bytes per seconds) for the specified |
| 387 // resource. That's the value retrieved at the last timer's tick. | 374 // resource. That's the value retrieved at the last timer's tick. |
| 388 int64 GetNetworkUsageForResource(TaskManager::Resource* resource) const; | 375 int64 GetNetworkUsageForResource(TaskManager::Resource* resource) const; |
| 389 | 376 |
| 390 // Called on the UI thread when some bytes are read. | 377 // Called on the UI thread when some bytes are read. |
| 391 void BytesRead(BytesReadParam param); | 378 void BytesRead(BytesReadParam param); |
| 392 | 379 |
| 393 // Returns the network usage (in byte per second) that should be displayed for | 380 // Returns the network usage (in byte per second) that should be displayed for |
| 394 // the passed |resource|. -1 means the information is not available for that | 381 // the passed |resource|. -1 means the information is not available for that |
| 395 // resource. | 382 // resource. |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 // Whether we are currently in the process of updating. | 446 // Whether we are currently in the process of updating. |
| 460 UpdateState update_state_; | 447 UpdateState update_state_; |
| 461 | 448 |
| 462 // A salt lick for the goats. | 449 // A salt lick for the goats. |
| 463 int goat_salt_; | 450 int goat_salt_; |
| 464 | 451 |
| 465 DISALLOW_COPY_AND_ASSIGN(TaskManagerModel); | 452 DISALLOW_COPY_AND_ASSIGN(TaskManagerModel); |
| 466 }; | 453 }; |
| 467 | 454 |
| 468 #endif // CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_H_ | 455 #endif // CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_H_ |
| OLD | NEW |