Give names to all utility processes.
[chromium-blink-merge.git] / chrome / browser / task_manager / web_contents_information.h
blob4cf1938770ab4801d7525c636090b066ace052ef
1 // Copyright 2014 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.
5 #ifndef CHROME_BROWSER_TASK_MANAGER_WEB_CONTENTS_INFORMATION_H_
6 #define CHROME_BROWSER_TASK_MANAGER_WEB_CONTENTS_INFORMATION_H_
8 #include "base/basictypes.h"
9 #include "base/callback.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "content/public/browser/notification_observer.h"
12 #include "content/public/browser/notification_registrar.h"
14 namespace content {
15 class WebContents;
18 namespace task_manager {
20 class RendererResource;
22 // This interface gives a WebContentsResourceProvider information about a
23 // category of WebContentses owned by some service. The instances are expected
24 // to be owned by their WebContentsResourceProvider, which will track and adapt
25 // the WebContentses into TaskManager resources.
26 class WebContentsInformation {
27 public:
28 typedef base::Callback<void(content::WebContents*)> NewWebContentsCallback;
30 WebContentsInformation();
31 virtual ~WebContentsInformation();
33 // Retrieve all known WebContents instances from the service we're tracking.
34 // Invoke |callback| on each one.
35 virtual void GetAll(const NewWebContentsCallback& callback) = 0;
37 // Return true if |web_contents| is from the service we're tracking.
38 virtual bool CheckOwnership(content::WebContents* web_contents) = 0;
40 // Start listening to the creation of new WebContents instances from
41 // the service. While listening, invoke |callback| on each new instance.
42 virtual void StartObservingCreation(
43 const NewWebContentsCallback& callback) = 0;
45 // Stop listening to creation of new WebContents instances.
46 virtual void StopObservingCreation() = 0;
48 // Create a new task manager resource for the given WebContents instance.
49 virtual scoped_ptr<RendererResource> MakeResource(
50 content::WebContents* web_contents) = 0;
52 private:
53 DISALLOW_COPY_AND_ASSIGN(WebContentsInformation);
56 // Implements the observer methods (StartObservingCreation() /
57 // StopObservingCreation()) of WebContentsInformation using
58 // NOTIFICATION_WEB_CONTENTS_CONNECTED.
59 class NotificationObservingWebContentsInformation
60 : public WebContentsInformation,
61 public content::NotificationObserver {
62 public:
63 NotificationObservingWebContentsInformation();
64 ~NotificationObservingWebContentsInformation() override;
66 // WebContentsInformation partial implementation.
67 void StartObservingCreation(const NewWebContentsCallback& callback) override;
68 void StopObservingCreation() override;
70 // content::NotificationObserver implementation.
71 void Observe(int type,
72 const content::NotificationSource& source,
73 const content::NotificationDetails& details) override;
75 private:
76 content::NotificationRegistrar registrar_;
77 NewWebContentsCallback observer_callback_;
78 DISALLOW_COPY_AND_ASSIGN(NotificationObservingWebContentsInformation);
81 } // namespace task_manager
83 #endif // CHROME_BROWSER_TASK_MANAGER_WEB_CONTENTS_INFORMATION_H_