OLD | NEW |
| (Empty) |
1 // Copyright 2016 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_METRICS_DESKTOP_ENGAGEMENT_CHROME_VISIBILITY_OBSERVER_H_ | |
6 #define CHROME_BROWSER_METRICS_DESKTOP_ENGAGEMENT_CHROME_VISIBILITY_OBSERVER_H_ | |
7 | |
8 #include "base/memory/weak_ptr.h" | |
9 #include "chrome/browser/ui/browser_list_observer.h" | |
10 | |
11 namespace metrics { | |
12 | |
13 // Observer for tracking browser visibility events. | |
14 class ChromeVisibilityObserver : public chrome::BrowserListObserver { | |
15 public: | |
16 ChromeVisibilityObserver(); | |
17 ~ChromeVisibilityObserver() override; | |
18 | |
19 protected: | |
20 // Notifies |DesktopEngagementService| of visibility changes. Overridden by | |
21 // tests. | |
22 virtual void SendVisibilityChangeEvent(bool active); | |
23 | |
24 private: | |
25 // Cancels visibility change in case when the browser becomes visible after a | |
26 // short gap. | |
27 void CancelVisibilityChange(); | |
28 | |
29 // chrome::BrowserListObserver: | |
30 void OnBrowserSetLastActive(Browser* browser) override; | |
31 void OnBrowserNoLongerActive(Browser* browser) override; | |
32 void OnBrowserRemoved(Browser* browser) override; | |
33 | |
34 // Sets |visibility_gap_timeout_| based on variation params. | |
35 void InitVisibilityGapTimeout(); | |
36 | |
37 // Timeout interval for waiting after loss of visibility. This allows merging | |
38 // two visibility session if they happened very shortly after each other, for | |
39 // example, when user switching between two browser windows. | |
40 base::TimeDelta visibility_gap_timeout_; | |
41 | |
42 base::WeakPtrFactory<ChromeVisibilityObserver> weak_factory_; | |
43 | |
44 DISALLOW_COPY_AND_ASSIGN(ChromeVisibilityObserver); | |
45 }; | |
46 | |
47 } // namespace metrics | |
48 | |
49 #endif // CHROME_BROWSER_METRICS_DESKTOP_ENGAGEMENT_CHROME_VISIBILITY_OBSERVER_
H_ | |
OLD | NEW |