| 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
|
|
|