blob: a51808b42a5a70cc4be2107785cceddb3a789d16 [file] [log] [blame]
// 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