Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(395)

Side by Side Diff: chrome/browser/task_manager/task_manager_resource_providers.h

Issue 8764021: Make TaskManager not use ChildProcessInfo. After this change, I will make BrowserChildProcessHost... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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_RESOURCE_PROVIDERS_H_ 5 #ifndef CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_RESOURCE_PROVIDERS_H_
6 #define CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_RESOURCE_PROVIDERS_H_ 6 #define CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_RESOURCE_PROVIDERS_H_
7 #pragma once 7 #pragma once
8 8
9 #include <map> 9 #include <map>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/basictypes.h" 12 #include "base/basictypes.h"
13 #include "base/compiler_specific.h" 13 #include "base/compiler_specific.h"
14 #include "base/process_util.h" 14 #include "base/process_util.h"
15 #include "chrome/browser/task_manager/task_manager.h" 15 #include "chrome/browser/task_manager/task_manager.h"
16 #include "content/common/child_process_info.h"
17 #include "content/public/browser/notification_observer.h" 16 #include "content/public/browser/notification_observer.h"
18 #include "content/public/browser/notification_registrar.h" 17 #include "content/public/browser/notification_registrar.h"
18 #include "content/public/common/process_type.h"
19 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCache.h" 19 #include "third_party/WebKit/Source/WebKit/chromium/public/WebCache.h"
20 20
21 class BackgroundContents; 21 class BackgroundContents;
22 class BalloonHost; 22 class BalloonHost;
23 class Extension; 23 class Extension;
24 class ExtensionHost; 24 class ExtensionHost;
25 class RenderViewHost; 25 class RenderViewHost;
26 class TabContentsWrapper; 26 class TabContentsWrapper;
27 27
28 // These file contains the resource providers used in the task manager. 28 // These file contains the resource providers used in the task manager.
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 Resources resources_; 226 Resources resources_;
227 227
228 // A scoped container for notification registries. 228 // A scoped container for notification registries.
229 content::NotificationRegistrar registrar_; 229 content::NotificationRegistrar registrar_;
230 230
231 DISALLOW_COPY_AND_ASSIGN(TaskManagerBackgroundContentsResourceProvider); 231 DISALLOW_COPY_AND_ASSIGN(TaskManagerBackgroundContentsResourceProvider);
232 }; 232 };
233 233
234 class TaskManagerChildProcessResource : public TaskManager::Resource { 234 class TaskManagerChildProcessResource : public TaskManager::Resource {
235 public: 235 public:
236 explicit TaskManagerChildProcessResource(const ChildProcessInfo& child_proc); 236 TaskManagerChildProcessResource(content::ProcessType type,
237 const string16& name,
238 base::ProcessHandle handle);
237 virtual ~TaskManagerChildProcessResource(); 239 virtual ~TaskManagerChildProcessResource();
238 240
239 // TaskManager::Resource methods: 241 // TaskManager::Resource methods:
240 virtual string16 GetTitle() const OVERRIDE; 242 virtual string16 GetTitle() const OVERRIDE;
241 virtual string16 GetProfileName() const OVERRIDE; 243 virtual string16 GetProfileName() const OVERRIDE;
242 virtual SkBitmap GetIcon() const OVERRIDE; 244 virtual SkBitmap GetIcon() const OVERRIDE;
243 virtual base::ProcessHandle GetProcess() const OVERRIDE; 245 virtual base::ProcessHandle GetProcess() const OVERRIDE;
244 virtual Type GetType() const OVERRIDE; 246 virtual Type GetType() const OVERRIDE;
245 virtual bool SupportNetworkUsage() const OVERRIDE; 247 virtual bool SupportNetworkUsage() const OVERRIDE;
246 virtual void SetSupportNetworkUsage() OVERRIDE; 248 virtual void SetSupportNetworkUsage() OVERRIDE;
247 249
248 // Returns the pid of the child process. 250 // Returns the pid of the child process.
249 int process_id() const { return pid_; } 251 int process_id() const { return pid_; }
250 252
251 private: 253 private:
252 // Returns a localized title for the child process. For example, a plugin 254 // Returns a localized title for the child process. For example, a plugin
253 // process would be "Plug-in: Flash" when name is "Flash". 255 // process would be "Plug-in: Flash" when name is "Flash".
254 string16 GetLocalizedTitle() const; 256 string16 GetLocalizedTitle() const;
255 257
256 ChildProcessInfo child_process_; 258 content::ProcessType type_;
259 string16 name_;
260 base::ProcessHandle handle_;
257 int pid_; 261 int pid_;
258 mutable string16 title_; 262 mutable string16 title_;
259 bool network_usage_support_; 263 bool network_usage_support_;
260 264
261 // The icon painted for the child processs. 265 // The icon painted for the child processs.
262 // TODO(jcampan): we should have plugin specific icons for well-known 266 // TODO(jcampan): we should have plugin specific icons for well-known
263 // plugins. 267 // plugins.
264 static SkBitmap* default_icon_; 268 static SkBitmap* default_icon_;
265 269
266 DISALLOW_COPY_AND_ASSIGN(TaskManagerChildProcessResource); 270 DISALLOW_COPY_AND_ASSIGN(TaskManagerChildProcessResource);
267 }; 271 };
268 272
269 class TaskManagerChildProcessResourceProvider 273 class TaskManagerChildProcessResourceProvider
270 : public TaskManager::ResourceProvider, 274 : public TaskManager::ResourceProvider,
271 public content::NotificationObserver { 275 public content::NotificationObserver {
272 public: 276 public:
273 explicit TaskManagerChildProcessResourceProvider(TaskManager* task_manager); 277 explicit TaskManagerChildProcessResourceProvider(TaskManager* task_manager);
274 278
275 virtual TaskManager::Resource* GetResource(int origin_pid, 279 virtual TaskManager::Resource* GetResource(int origin_pid,
276 int render_process_host_id, 280 int render_process_host_id,
277 int routing_id) OVERRIDE; 281 int routing_id) OVERRIDE;
278 virtual void StartUpdating() OVERRIDE; 282 virtual void StartUpdating() OVERRIDE;
279 virtual void StopUpdating() OVERRIDE; 283 virtual void StopUpdating() OVERRIDE;
280 284
281 // content::NotificationObserver method: 285 // content::NotificationObserver method:
282 virtual void Observe(int type, 286 virtual void Observe(int type,
283 const content::NotificationSource& source, 287 const content::NotificationSource& source,
284 const content::NotificationDetails& details) OVERRIDE; 288 const content::NotificationDetails& details) OVERRIDE;
285 289
286 // Retrieves the current ChildProcessInfo (performed in the IO thread). 290 private:
291 struct ChildProcessData {
292 content::ProcessType type;
293 string16 name;
294 base::ProcessHandle handle;
295 };
296
297 virtual ~TaskManagerChildProcessResourceProvider();
298
299 // Retrieves information about the running ChildProcessHosts (performed in the
300 // IO thread).
287 virtual void RetrieveChildProcessInfo(); 301 virtual void RetrieveChildProcessInfo();
288 302
289 // Notifies the UI thread that the ChildProcessInfo have been retrieved. 303 // Notifies the UI thread that the ChildProcessHosts information have been
290 virtual void ChildProcessInfoRetreived(); 304 // retrieved.
305 virtual void ChildProcessInfoRetreived(
306 const std::vector<ChildProcessData>& child_processes);
307
308 void Add(const ChildProcessData& child_process_data);
309 void Remove(const ChildProcessData& child_process_data);
310
311 void AddToTaskManager(const ChildProcessData& child_process_data);
312
313 TaskManager* task_manager_;
291 314
292 // Whether we are currently reporting to the task manager. Used to ignore 315 // Whether we are currently reporting to the task manager. Used to ignore
293 // notifications sent after StopUpdating(). 316 // notifications sent after StopUpdating().
294 bool updating_; 317 bool updating_;
295 318
296 // The list of ChildProcessInfo retrieved when starting the update.
297 std::vector<ChildProcessInfo> existing_child_process_info_;
298
299 private:
300 virtual ~TaskManagerChildProcessResourceProvider();
301
302 void Add(const ChildProcessInfo& child_process_info);
303 void Remove(const ChildProcessInfo& child_process_info);
304
305 void AddToTaskManager(const ChildProcessInfo& child_process_info);
306
307 TaskManager* task_manager_;
308
309 // Maps the actual resources (the ChildProcessInfo) to the Task Manager 319 // Maps the actual resources (the ChildProcessInfo) to the Task Manager
310 // resources. 320 // resources.
311 std::map<ChildProcessInfo, TaskManagerChildProcessResource*> resources_; 321 typedef std::map<base::ProcessHandle, TaskManagerChildProcessResource*>
322 ChildProcessMap;
323 ChildProcessMap resources_;
312 324
313 // Maps the pids to the resources (used for quick access to the resource on 325 // Maps the pids to the resources (used for quick access to the resource on
314 // byte read notifications). 326 // byte read notifications).
315 std::map<int, TaskManagerChildProcessResource*> pid_to_resources_; 327 typedef std::map<int, TaskManagerChildProcessResource*> PidResourceMap;
328 PidResourceMap pid_to_resources_;
316 329
317 // A scoped container for notification registries. 330 // A scoped container for notification registries.
318 content::NotificationRegistrar registrar_; 331 content::NotificationRegistrar registrar_;
319 332
320 DISALLOW_COPY_AND_ASSIGN(TaskManagerChildProcessResourceProvider); 333 DISALLOW_COPY_AND_ASSIGN(TaskManagerChildProcessResourceProvider);
321 }; 334 };
322 335
323 class TaskManagerExtensionProcessResource : public TaskManager::Resource { 336 class TaskManagerExtensionProcessResource : public TaskManager::Resource {
324 public: 337 public:
325 explicit TaskManagerExtensionProcessResource(ExtensionHost* extension_host); 338 explicit TaskManagerExtensionProcessResource(ExtensionHost* extension_host);
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 virtual void StartUpdating() OVERRIDE; 524 virtual void StartUpdating() OVERRIDE;
512 virtual void StopUpdating() OVERRIDE; 525 virtual void StopUpdating() OVERRIDE;
513 526
514 // Whether we are currently reporting to the task manager. Used to ignore 527 // Whether we are currently reporting to the task manager. Used to ignore
515 // notifications sent after StopUpdating(). 528 // notifications sent after StopUpdating().
516 bool updating_; 529 bool updating_;
517 530
518 private: 531 private:
519 virtual ~TaskManagerBrowserProcessResourceProvider(); 532 virtual ~TaskManagerBrowserProcessResourceProvider();
520 533
521 void AddToTaskManager(ChildProcessInfo child_process_info);
522
523 TaskManager* task_manager_; 534 TaskManager* task_manager_;
524 TaskManagerBrowserProcessResource resource_; 535 TaskManagerBrowserProcessResource resource_;
525 536
526 DISALLOW_COPY_AND_ASSIGN(TaskManagerBrowserProcessResourceProvider); 537 DISALLOW_COPY_AND_ASSIGN(TaskManagerBrowserProcessResourceProvider);
527 }; 538 };
528 539
529 #endif // CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_RESOURCE_PROVIDERS_H_ 540 #endif // CHROME_BROWSER_TASK_MANAGER_TASK_MANAGER_RESOURCE_PROVIDERS_H_
OLDNEW
« no previous file with comments | « chrome/app/generated_resources.grd ('k') | chrome/browser/task_manager/task_manager_resource_providers.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698