• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
3 // found in the LICENSE file.
4 
5 #ifndef CHROME_BROWSER_UI_UMA_BROWSING_ACTIVITY_OBSERVER_H_
6 #define CHROME_BROWSER_UI_UMA_BROWSING_ACTIVITY_OBSERVER_H_
7 
8 #include "content/public/browser/notification_registrar.h"
9 #include "content/public/browser/notification_observer.h"
10 
11 namespace chrome {
12 
13 // This object is instantiated when the first Browser object is added to the
14 // list and delete when the last one is removed. It watches for loads and
15 // creates histograms of some global object counts.
16 class UMABrowsingActivityObserver : public content::NotificationObserver {
17  public:
18   static void Init();
19 
20  private:
21   UMABrowsingActivityObserver();
22   virtual ~UMABrowsingActivityObserver();
23 
24   // content::NotificationObserver implementation.
25   virtual void Observe(int type,
26                        const content::NotificationSource& source,
27                        const content::NotificationDetails& details) OVERRIDE;
28 
29   // Counts the number of active RenderProcessHosts and logs them.
30   void LogRenderProcessHostCount() const;
31 
32   // Counts the number of tabs in each browser window and logs them. This is
33   // different than the number of WebContents objects since WebContents objects
34   // can be used for popups and in dialog boxes. We're just counting toplevel
35   // tabs here.
36   void LogBrowserTabCount() const;
37 
38   content::NotificationRegistrar registrar_;
39 
40   DISALLOW_COPY_AND_ASSIGN(UMABrowsingActivityObserver);
41 };
42 
43 }  // namespace chrome
44 
45 #endif  // CHROME_BROWSER_UI_UMA_BROWSING_ACTIVITY_OBSERVER_H_
46