Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2083)

Unified Diff: chrome/browser/metrics/tab_reactivation_tracker_browsertest.cc

Issue 2335203003: Add metrics to keep track of the tab activate/deactivate cycle (Closed)
Patch Set: Tab discarding resistant Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698