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

Side by Side Diff: chrome/browser/memory/tab_manager_web_contents_data_unittest.cc

Issue 2898033002: [TabManager] Move TabManager into chrome/browser/resource_coordinator. (Closed)
Patch Set: rebase Created 3 years, 6 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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 #include "chrome/browser/memory/tab_manager_web_contents_data.h"
6
7 #include "base/test/histogram_tester.h"
8 #include "base/test/simple_test_tick_clock.h"
9 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
10 #include "chrome/test/base/testing_profile.h"
11 #include "content/public/browser/web_contents.h"
12 #include "content/public/test/web_contents_tester.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 using content::WebContents;
16 using content::WebContentsTester;
17
18 namespace memory {
19 namespace {
20
21 class TabManagerWebContentsDataTest : public ChromeRenderViewHostTestHarness {
22 public:
23 TabManagerWebContentsDataTest() : ChromeRenderViewHostTestHarness() {}
24
25 void SetUp() override {
26 ChromeRenderViewHostTestHarness::SetUp();
27 tab_data_ = CreateWebContentsAndTabData(&web_contents_);
28 tab_data_->set_test_tick_clock(&test_clock_);
29 }
30
31 void TearDown() override {
32 tab_data_->set_test_tick_clock(nullptr);
33 web_contents_.reset();
34 ChromeRenderViewHostTestHarness::TearDown();
35 }
36
37 TabManager::WebContentsData* tab_data() { return tab_data_; }
38
39 base::SimpleTestTickClock& test_clock() { return test_clock_; }
40
41 TabManager::WebContentsData* CreateWebContentsAndTabData(
42 std::unique_ptr<WebContents>* web_contents) {
43 web_contents->reset(
44 WebContents::Create(WebContents::CreateParams(profile())));
45 TabManager::WebContentsData::CreateForWebContents(web_contents->get());
46 return TabManager::WebContentsData::FromWebContents(web_contents->get());
47 }
48
49 private:
50 std::unique_ptr<WebContents> web_contents_;
51 TabManager::WebContentsData* tab_data_;
52 base::SimpleTestTickClock test_clock_;
53 };
54
55 } // namespace
56
57 TEST_F(TabManagerWebContentsDataTest, DiscardState) {
58 EXPECT_FALSE(tab_data()->IsDiscarded());
59 tab_data()->SetDiscardState(true);
60 EXPECT_TRUE(tab_data()->IsDiscarded());
61 tab_data()->SetDiscardState(false);
62 EXPECT_FALSE(tab_data()->IsDiscarded());
63 }
64
65 TEST_F(TabManagerWebContentsDataTest, DiscardCount) {
66 EXPECT_EQ(0, tab_data()->DiscardCount());
67 tab_data()->IncrementDiscardCount();
68 EXPECT_EQ(1, tab_data()->DiscardCount());
69 tab_data()->IncrementDiscardCount();
70 EXPECT_EQ(2, tab_data()->DiscardCount());
71 }
72
73 TEST_F(TabManagerWebContentsDataTest, RecentlyAudible) {
74 EXPECT_FALSE(tab_data()->IsRecentlyAudible());
75 tab_data()->SetRecentlyAudible(true);
76 EXPECT_TRUE(tab_data()->IsRecentlyAudible());
77 tab_data()->SetRecentlyAudible(false);
78 EXPECT_FALSE(tab_data()->IsRecentlyAudible());
79 }
80
81 TEST_F(TabManagerWebContentsDataTest, LastAudioChangeTime) {
82 EXPECT_EQ(base::TimeTicks::UnixEpoch(), tab_data()->LastAudioChangeTime());
83 auto now = base::TimeTicks::Now();
84 tab_data()->SetLastAudioChangeTime(now);
85 EXPECT_EQ(now, tab_data()->LastAudioChangeTime());
86 }
87
88 TEST_F(TabManagerWebContentsDataTest, LastInactiveTime) {
89 EXPECT_EQ(base::TimeTicks::UnixEpoch(), tab_data()->LastInactiveTime());
90 auto now = base::TimeTicks::Now();
91 tab_data()->SetLastInactiveTime(now);
92 EXPECT_EQ(now, tab_data()->LastInactiveTime());
93 }
94
95 TEST_F(TabManagerWebContentsDataTest, CopyState) {
96 std::unique_ptr<WebContents> web_contents2;
97 auto* tab_data2 = CreateWebContentsAndTabData(&web_contents2);
98
99 EXPECT_EQ(tab_data()->tab_data_, tab_data2->tab_data_);
100 tab_data()->IncrementDiscardCount();
101 tab_data()->SetDiscardState(true);
102 EXPECT_NE(tab_data()->tab_data_, tab_data2->tab_data_);
103
104 TabManager::WebContentsData::CopyState(tab_data()->web_contents(),
105 tab_data2->web_contents());
106 EXPECT_EQ(tab_data()->tab_data_, tab_data2->tab_data_);
107 EXPECT_EQ(tab_data()->test_tick_clock_, tab_data2->test_tick_clock_);
108 }
109
110 TEST_F(TabManagerWebContentsDataTest, HistogramDiscardCount) {
111 const char kHistogramName[] = "TabManager.Discarding.DiscardCount";
112
113 base::HistogramTester histograms;
114
115 EXPECT_TRUE(histograms.GetTotalCountsForPrefix(kHistogramName).empty());
116 tab_data()->SetDiscardState(true);
117 EXPECT_EQ(1,
118 histograms.GetTotalCountsForPrefix(kHistogramName).begin()->second);
119 tab_data()->SetDiscardState(false);
120 EXPECT_EQ(1,
121 histograms.GetTotalCountsForPrefix(kHistogramName).begin()->second);
122 tab_data()->SetDiscardState(true);
123 EXPECT_EQ(2,
124 histograms.GetTotalCountsForPrefix(kHistogramName).begin()->second);
125 tab_data()->SetDiscardState(false);
126 EXPECT_EQ(2,
127 histograms.GetTotalCountsForPrefix(kHistogramName).begin()->second);
128 }
129
130 TEST_F(TabManagerWebContentsDataTest, HistogramReloadCount) {
131 const char kHistogramName[] = "TabManager.Discarding.ReloadCount";
132
133 base::HistogramTester histograms;
134
135 EXPECT_TRUE(histograms.GetTotalCountsForPrefix(kHistogramName).empty());
136 tab_data()->SetDiscardState(true);
137 EXPECT_TRUE(histograms.GetTotalCountsForPrefix(kHistogramName).empty());
138 tab_data()->SetDiscardState(false);
139 EXPECT_EQ(1,
140 histograms.GetTotalCountsForPrefix(kHistogramName).begin()->second);
141 tab_data()->SetDiscardState(true);
142 EXPECT_EQ(1,
143 histograms.GetTotalCountsForPrefix(kHistogramName).begin()->second);
144 tab_data()->SetDiscardState(false);
145 EXPECT_EQ(2,
146 histograms.GetTotalCountsForPrefix(kHistogramName).begin()->second);
147 }
148
149 TEST_F(TabManagerWebContentsDataTest, HistogramsDiscardToReloadTime) {
150 const char kHistogramName[] = "TabManager.Discarding.DiscardToReloadTime";
151
152 base::HistogramTester histograms;
153
154 EXPECT_TRUE(histograms.GetTotalCountsForPrefix(kHistogramName).empty());
155
156 tab_data()->SetDiscardState(true);
157 test_clock().Advance(base::TimeDelta::FromSeconds(24));
158 tab_data()->SetDiscardState(false);
159
160 EXPECT_EQ(1,
161 histograms.GetTotalCountsForPrefix(kHistogramName).begin()->second);
162
163 histograms.ExpectBucketCount(kHistogramName, 24000, 1);
164 }
165
166 TEST_F(TabManagerWebContentsDataTest, HistogramsReloadToCloseTime) {
167 const char kHistogramName[] = "TabManager.Discarding.ReloadToCloseTime";
168
169 base::HistogramTester histograms;
170
171 EXPECT_TRUE(histograms.GetTotalCountsForPrefix(kHistogramName).empty());
172
173 tab_data()->SetDiscardState(true);
174 tab_data()->IncrementDiscardCount();
175 test_clock().Advance(base::TimeDelta::FromSeconds(5));
176 tab_data()->SetDiscardState(false);
177 test_clock().Advance(base::TimeDelta::FromSeconds(13));
178
179 tab_data()->WebContentsDestroyed();
180
181 EXPECT_EQ(1,
182 histograms.GetTotalCountsForPrefix(kHistogramName).begin()->second);
183
184 histograms.ExpectBucketCount(kHistogramName, 13000, 1);
185 }
186
187 TEST_F(TabManagerWebContentsDataTest, HistogramsInactiveToReloadTime) {
188 const char kHistogramName[] = "TabManager.Discarding.InactiveToReloadTime";
189
190 base::HistogramTester histograms;
191
192 EXPECT_TRUE(histograms.GetTotalCountsForPrefix(kHistogramName).empty());
193
194 tab_data()->SetLastInactiveTime(test_clock().NowTicks());
195 test_clock().Advance(base::TimeDelta::FromSeconds(5));
196 tab_data()->SetDiscardState(true);
197 tab_data()->IncrementDiscardCount();
198 test_clock().Advance(base::TimeDelta::FromSeconds(7));
199 tab_data()->SetDiscardState(false);
200
201 EXPECT_EQ(1,
202 histograms.GetTotalCountsForPrefix(kHistogramName).begin()->second);
203
204 histograms.ExpectBucketCount(kHistogramName, 12000, 1);
205 }
206
207 } // namespace memory
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698