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#ifndef CHROME_BROWSER_TASK_MANAGER_BROWSER_PROCESS_RESOURCE_PROVIDER_H_ 6#define CHROME_BROWSER_TASK_MANAGER_BROWSER_PROCESS_RESOURCE_PROVIDER_H_ 7 8#include "base/basictypes.h" 9#include "base/compiler_specific.h" 10#include "chrome/browser/task_manager/resource_provider.h" 11#include "content/public/browser/browser_child_process_observer.h" 12#include "content/public/browser/child_process_data.h" 13#include "content/public/browser/notification_observer.h" 14#include "content/public/browser/notification_registrar.h" 15#include "content/public/common/process_type.h" 16 17class TaskManager; 18 19namespace content { 20class RenderViewHost; 21class WebContents; 22} 23 24namespace extensions { 25class Extension; 26} 27 28namespace task_manager { 29 30class BrowserProcessResource : public Resource { 31 public: 32 BrowserProcessResource(); 33 virtual ~BrowserProcessResource(); 34 35 // Resource methods: 36 virtual base::string16 GetTitle() const OVERRIDE; 37 virtual base::string16 GetProfileName() const OVERRIDE; 38 virtual gfx::ImageSkia GetIcon() const OVERRIDE; 39 virtual base::ProcessHandle GetProcess() const OVERRIDE; 40 virtual int GetUniqueChildProcessId() const OVERRIDE; 41 virtual Type GetType() const OVERRIDE; 42 43 virtual bool SupportNetworkUsage() const OVERRIDE; 44 virtual void SetSupportNetworkUsage() OVERRIDE; 45 46 virtual bool ReportsSqliteMemoryUsed() const OVERRIDE; 47 virtual size_t SqliteMemoryUsedBytes() const OVERRIDE; 48 49 virtual bool ReportsV8MemoryStats() const OVERRIDE; 50 virtual size_t GetV8MemoryAllocated() const OVERRIDE; 51 virtual size_t GetV8MemoryUsed() const OVERRIDE; 52 53 private: 54 base::ProcessHandle process_; 55 mutable base::string16 title_; 56 57 static gfx::ImageSkia* default_icon_; 58 59 DISALLOW_COPY_AND_ASSIGN(BrowserProcessResource); 60}; 61 62class BrowserProcessResourceProvider : public ResourceProvider { 63 public: 64 explicit BrowserProcessResourceProvider(TaskManager* task_manager); 65 66 virtual Resource* GetResource(int origin_pid, 67 int child_id, 68 int route_id) OVERRIDE; 69 virtual void StartUpdating() OVERRIDE; 70 virtual void StopUpdating() OVERRIDE; 71 72 // Whether we are currently reporting to the task manager. Used to ignore 73 // notifications sent after StopUpdating(). 74 bool updating_; 75 76 private: 77 virtual ~BrowserProcessResourceProvider(); 78 79 TaskManager* task_manager_; 80 BrowserProcessResource resource_; 81 82 DISALLOW_COPY_AND_ASSIGN(BrowserProcessResourceProvider); 83}; 84 85} // namespace task_manager 86 87#endif // CHROME_BROWSER_TASK_MANAGER_BROWSER_PROCESS_RESOURCE_PROVIDER_H_ 88