Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / uma_browsing_activity_observer.h
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   ~UMABrowsingActivityObserver() override;
23
24   // content::NotificationObserver implementation.
25   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_