Index: chrome/browser/metrics/tab_reactivation_tracker_browsertest.cc |
diff --git a/chrome/browser/metrics/tab_reactivation_tracker_browsertest.cc b/chrome/browser/metrics/tab_reactivation_tracker_browsertest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a51808b42a5a70cc4be2107785cceddb3a789d16 |
--- /dev/null |
+++ b/chrome/browser/metrics/tab_reactivation_tracker_browsertest.cc |
@@ -0,0 +1,82 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/metrics/tab_reactivation_tracker.h" |
+#include "chrome/browser/ui/browser.h" |
+#include "chrome/browser/ui/tabs/tab_strip_model.h" |
+#include "chrome/common/url_constants.h" |
+#include "chrome/test/base/in_process_browser_test.h" |
+ |
+namespace metrics { |
+ |
+// Simple test fixture that just counts the notification received by a |
+// TabReactivationTracker. |
+class TabReactivationTrackerTest : public InProcessBrowserTest, |
+ public TabReactivationTracker::Delegate { |
+ public: |
+ TabReactivationTrackerTest() |
+ : tab_reactivation_count_(0), tab_deactivation_count_(0) {} |
+ |
+ // TabReactivationTracker::Delegate: |
+ void OnTabReactivated(content::WebContents* contents) override; |
+ void OnTabDeactivated(content::WebContents* contents) override; |
+ |
+ int tab_reactivation_count() { return tab_reactivation_count_; } |
+ int tab_deactivation_count() { return tab_deactivation_count_; } |
+ |
+ private: |
+ int tab_reactivation_count_; |
+ int tab_deactivation_count_; |
+}; |
+ |
+void TabReactivationTrackerTest::OnTabReactivated( |
+ content::WebContents* contents) { |
+ tab_reactivation_count_++; |
+} |
+ |
+void TabReactivationTrackerTest::OnTabDeactivated( |
+ content::WebContents* contents) { |
+ tab_deactivation_count_++; |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(TabReactivationTrackerTest, CorrectTracking) { |
+ content::OpenURLParams open1( |
+ GURL(chrome::kChromeUIAboutURL), content::Referrer(), |
+ WindowOpenDisposition::CURRENT_TAB, ui::PAGE_TRANSITION_TYPED, false); |
+ |
+ content::OpenURLParams open2(GURL(chrome::kChromeUIAboutURL), |
+ content::Referrer(), |
+ WindowOpenDisposition::NEW_FOREGROUND_TAB, |
+ ui::PAGE_TRANSITION_TYPED, false); |
+ |
+ TabReactivationTracker tab_reactivation_tracker(this); |
+ |
+ EXPECT_EQ(0, tab_reactivation_count()); |
+ EXPECT_EQ(0, tab_deactivation_count()); |
+ |
+ // Open one tab. |
+ browser()->OpenURL(open1); |
+ ASSERT_EQ(1, browser()->tab_strip_model()->count()); |
+ EXPECT_EQ(0, tab_reactivation_count()); |
+ EXPECT_EQ(0, tab_deactivation_count()); |
+ |
+ // Open a second tab. |
+ browser()->OpenURL(open2); |
+ ASSERT_EQ(2, browser()->tab_strip_model()->count()); |
+ EXPECT_EQ(0, tab_reactivation_count()); |
+ EXPECT_EQ(1, tab_deactivation_count()); |
+ |
+ // Reactivate the first tab. |
+ browser()->tab_strip_model()->ActivateTabAt(0, false); |
+ EXPECT_EQ(1, tab_reactivation_count()); |
+ EXPECT_EQ(2, tab_deactivation_count()); |
+ |
+ // Closing a tab doesn't count as a deactivation. |
+ browser()->tab_strip_model()->CloseWebContentsAt(1, 0); |
+ ASSERT_EQ(1, browser()->tab_strip_model()->count()); |
+ EXPECT_EQ(1, tab_reactivation_count()); |
+ EXPECT_EQ(2, tab_deactivation_count()); |
+} |
+ |
+} // namespace metrics |