OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/android/data_usage/data_use_ui_tab_model.h" | 5 #include "chrome/browser/android/data_usage/data_use_ui_tab_model.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include "base/message_loop/message_loop.h" | |
10 #include "base/run_loop.h" | |
11 #include "base/single_thread_task_runner.h" | |
12 #include "chrome/browser/android/data_usage/data_use_tab_model.h" | |
9 #include "chrome/browser/android/data_usage/data_use_ui_tab_model_factory.h" | 13 #include "chrome/browser/android/data_usage/data_use_ui_tab_model_factory.h" |
14 #include "chrome/browser/android/data_usage/external_data_use_observer.h" | |
10 #include "chrome/browser/profiles/profile.h" | 15 #include "chrome/browser/profiles/profile.h" |
11 #include "chrome/browser/sessions/session_tab_helper.h" | 16 #include "chrome/browser/sessions/session_tab_helper.h" |
12 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 17 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
18 #include "components/data_usage/core/data_use.h" | |
19 #include "components/data_usage/core/data_use_aggregator.h" | |
20 #include "components/data_usage/core/data_use_amortizer.h" | |
21 #include "components/data_usage/core/data_use_annotator.h" | |
22 #include "content/public/browser/browser_thread.h" | |
13 #include "content/public/browser/web_contents.h" | 23 #include "content/public/browser/web_contents.h" |
14 #include "content/public/test/test_renderer_host.h" | 24 #include "content/public/test/test_renderer_host.h" |
15 #include "content/public/test/web_contents_tester.h" | 25 #include "content/public/test/web_contents_tester.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
17 #include "ui/base/page_transition_types.h" | 27 #include "ui/base/page_transition_types.h" |
18 #include "url/gurl.h" | 28 #include "url/gurl.h" |
19 | 29 |
20 namespace chrome { | 30 namespace chrome { |
21 | 31 |
22 namespace android { | 32 namespace android { |
23 | 33 |
34 namespace { | |
35 | |
36 class TestDataUseTabModel : public DataUseTabModel { | |
37 public: | |
38 TestDataUseTabModel( | |
39 ExternalDataUseObserver* external_data_use_observer, | |
40 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) | |
41 : DataUseTabModel(external_data_use_observer, ui_task_runner), | |
42 weak_factory_(this) {} | |
43 | |
44 ~TestDataUseTabModel() override {} | |
45 | |
46 base::WeakPtr<TestDataUseTabModel> GetWeakPtr() { | |
47 return weak_factory_.GetWeakPtr(); | |
48 } | |
49 | |
50 using DataUseTabModel::NotifyObserversOfTrackingStarting; | |
51 using DataUseTabModel::NotifyObserversOfTrackingEnding; | |
52 | |
53 private: | |
54 base::WeakPtrFactory<TestDataUseTabModel> weak_factory_; | |
sclittle
2015/11/23 23:06:16
I don't think you need this weak factory, since yo
tbansal1
2015/11/24 00:42:02
Done.
| |
55 }; | |
56 | |
24 class DataUseUITabModelTest : public ChromeRenderViewHostTestHarness { | 57 class DataUseUITabModelTest : public ChromeRenderViewHostTestHarness { |
25 public: | 58 public: |
26 using ChromeRenderViewHostTestHarness::web_contents; | 59 using ChromeRenderViewHostTestHarness::web_contents; |
27 | 60 |
28 DataUseUITabModel* data_use_ui_tab_model() { | 61 DataUseUITabModel* data_use_ui_tab_model() { |
62 DataUseUITabModel* data_use_ui_tab_model = data_use_ui_tab_model_private(); | |
63 base::RunLoop().RunUntilIdle(); | |
64 return data_use_ui_tab_model; | |
65 } | |
66 | |
67 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner() const { | |
68 return io_task_runner_; | |
69 } | |
70 | |
71 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner() const { | |
72 return ui_task_runner_; | |
73 } | |
74 | |
75 ExternalDataUseObserver* external_data_use_observer() const { | |
76 return external_data_use_observer_.get(); | |
77 } | |
78 | |
79 TestDataUseTabModel* data_use_tab_model() const { | |
80 return data_use_tab_model_.get(); | |
81 } | |
82 | |
83 protected: | |
84 void SetUp() override { | |
85 ChromeRenderViewHostTestHarness::SetUp(); | |
86 | |
87 io_task_runner_ = content::BrowserThread::GetMessageLoopProxyForThread( | |
88 content::BrowserThread::IO); | |
89 ui_task_runner_ = content::BrowserThread::GetMessageLoopProxyForThread( | |
90 content::BrowserThread::UI); | |
91 | |
92 data_use_aggregator_.reset( | |
93 new data_usage::DataUseAggregator(nullptr, nullptr)); | |
94 | |
95 external_data_use_observer_.reset(new ExternalDataUseObserver( | |
96 data_use_aggregator_.get(), io_task_runner(), ui_task_runner())); | |
97 base::RunLoop().RunUntilIdle(); | |
98 | |
99 data_use_tab_model_.reset(new TestDataUseTabModel( | |
100 external_data_use_observer(), | |
101 content::BrowserThread::GetMessageLoopProxyForThread( | |
102 content::BrowserThread::UI))); | |
103 } | |
104 | |
105 private: | |
106 DataUseUITabModel* data_use_ui_tab_model_private() { | |
29 return chrome::android::DataUseUITabModelFactory::GetForBrowserContext( | 107 return chrome::android::DataUseUITabModelFactory::GetForBrowserContext( |
30 Profile::FromBrowserContext(web_contents()->GetBrowserContext())); | 108 Profile::FromBrowserContext(web_contents()->GetBrowserContext())); |
31 } | 109 } |
110 | |
111 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_; | |
112 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; | |
113 scoped_ptr<data_usage::DataUseAggregator> data_use_aggregator_; | |
114 scoped_ptr<ExternalDataUseObserver> external_data_use_observer_; | |
115 scoped_ptr<TestDataUseTabModel> data_use_tab_model_; | |
32 }; | 116 }; |
33 | 117 |
34 // Tests that DataUseTabModel is notified of tab closure and navigation events. | 118 } // namespace |
119 | |
120 // Tests that DataUseTabModel is notified of tab closure and navigation events, | |
121 // and DataUseTabModel notifies DataUseUITabModel. | |
35 TEST_F(DataUseUITabModelTest, ReportTabEventsTest) { | 122 TEST_F(DataUseUITabModelTest, ReportTabEventsTest) { |
36 data_use_ui_tab_model()->ReportBrowserNavigation( | 123 std::string foo_label("foo_label"); |
37 GURL("https://www.example.com"), | 124 std::string foo_package("com.foo"); |
38 ui::PageTransition::PAGE_TRANSITION_TYPED, | 125 |
39 SessionTabHelper::IdForTab(web_contents())); | 126 data_use_ui_tab_model()->SetDataUseTabModel( |
40 data_use_ui_tab_model()->ReportTabClosure( | 127 data_use_tab_model()->GetWeakPtr()); |
41 SessionTabHelper::IdForTab(web_contents())); | 128 base::RunLoop().RunUntilIdle(); |
42 // TODO(tbansal): Test that DataUseTabModel is notified. | 129 |
130 std::vector<std::string> url_regexes; | |
131 url_regexes.push_back( | |
132 "http://www[.]foo[.]com/#q=.*|https://www[.]foo[.]com/#q=.*"); | |
133 external_data_use_observer()->RegisterURLRegexes( | |
134 std::vector<std::string>(url_regexes.size(), foo_package), url_regexes, | |
135 std::vector<std::string>(url_regexes.size(), foo_label)); | |
136 | |
137 const struct { | |
138 ui::PageTransition transition_type; | |
139 std::string expected_label; | |
140 } tests[] = { | |
141 {ui::PageTransitionFromInt(ui::PageTransition::PAGE_TRANSITION_LINK | | |
142 ui::PAGE_TRANSITION_FROM_API), | |
143 std::string()}, | |
144 {ui::PageTransition::PAGE_TRANSITION_LINK, std::string()}, | |
145 {ui::PageTransition::PAGE_TRANSITION_TYPED, foo_label}, | |
146 {ui::PageTransition::PAGE_TRANSITION_AUTO_BOOKMARK, std::string()}, | |
147 {ui::PageTransition::PAGE_TRANSITION_AUTO_TOPLEVEL, std::string()}, | |
148 {ui::PageTransition::PAGE_TRANSITION_GENERATED, foo_label}, | |
149 {ui::PageTransition::PAGE_TRANSITION_RELOAD, std::string()}, | |
150 }; | |
151 | |
152 int32_t foo_tab_id = 0; | |
153 | |
154 for (size_t i = 0; i < arraysize(tests); ++i) { | |
155 // Start a new tab. | |
156 ++foo_tab_id; | |
157 data_use_ui_tab_model()->ReportBrowserNavigation( | |
158 GURL("https://www.foo.com/#q=abc"), tests[i].transition_type, | |
159 foo_tab_id); | |
160 base::RunLoop().RunUntilIdle(); | |
161 | |
162 // |data_use_ui_tab_model| should receive callback about starting of | |
163 // tracking of data usage for |foo_tab_id|. | |
164 EXPECT_EQ(!tests[i].expected_label.empty(), | |
165 data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)) | |
166 << i; | |
167 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)) | |
168 << i; | |
169 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id)) | |
170 << i; | |
171 | |
172 // DataUse object should be labeled correctly. | |
173 data_usage::DataUse data_use(GURL("http://foo.com/#q=abc"), | |
174 base::TimeTicks::Now(), | |
175 GURL("http://foobar.com"), foo_tab_id, | |
176 net::NetworkChangeNotifier::CONNECTION_UNKNOWN, | |
177 std::string(), 1000, 1000); | |
178 std::string got_label; | |
179 data_use_tab_model()->GetLabelForDataUse(data_use, &got_label); | |
180 EXPECT_EQ(tests[i].expected_label, got_label) << i; | |
181 | |
182 // Report closure of tab. | |
183 data_use_ui_tab_model()->ReportTabClosure(foo_tab_id); | |
184 base::RunLoop().RunUntilIdle(); | |
185 | |
186 // DataUse object should not be labeled. | |
187 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id)); | |
188 data_use.request_start = | |
189 base::TimeTicks::Now() + base::TimeDelta::FromMinutes(10); | |
190 data_use_tab_model()->GetLabelForDataUse(data_use, &got_label); | |
191 EXPECT_EQ(std::string(), got_label) << i; | |
192 } | |
193 | |
194 ++foo_tab_id; | |
195 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); | |
196 data_use_ui_tab_model()->ReportCustomTabInitialNavigation( | |
197 foo_tab_id, std::string(), foo_package); | |
198 base::RunLoop().RunUntilIdle(); | |
199 | |
200 // |data_use_ui_tab_model| should receive callback about starting of | |
201 // tracking of data usage for |foo_tab_id|. | |
202 EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); | |
203 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); | |
204 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id)); | |
205 | |
206 data_use_ui_tab_model()->ReportTabClosure(foo_tab_id); | |
207 base::RunLoop().RunUntilIdle(); | |
208 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id)); | |
43 } | 209 } |
44 | 210 |
45 // Tests if the Entrance/Exit UI state is tracked correctly. | 211 // Tests if the Entrance/Exit UI state is tracked correctly. |
46 TEST_F(DataUseUITabModelTest, EntranceExitState) { | 212 TEST_F(DataUseUITabModelTest, EntranceExitState) { |
213 data_use_ui_tab_model()->SetDataUseTabModel( | |
214 data_use_tab_model()->GetWeakPtr()); | |
215 base::RunLoop().RunUntilIdle(); | |
216 | |
47 int32_t foo_tab_id = 1; | 217 int32_t foo_tab_id = 1; |
48 int32_t bar_tab_id = 2; | 218 int32_t bar_tab_id = 2; |
49 int32_t baz_tab_id = 3; | 219 int32_t baz_tab_id = 3; |
50 | 220 |
51 // ShowEntrance should return true only once. | 221 // HasDataUseTrackingStarted should return true only once. |
52 data_use_ui_tab_model()->OnTrackingStarted(foo_tab_id); | 222 data_use_tab_model()->NotifyObserversOfTrackingStarting(foo_tab_id); |
223 base::RunLoop().RunUntilIdle(); | |
53 EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); | 224 EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); |
54 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); | 225 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); |
55 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id)); | 226 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id)); |
56 | 227 |
57 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(bar_tab_id)); | 228 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(bar_tab_id)); |
58 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(bar_tab_id)); | 229 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(bar_tab_id)); |
59 | 230 |
60 // ShowExit should return true only once. | 231 // HasDataUseTrackingEnded should return true only once. |
61 data_use_ui_tab_model()->OnTrackingEnded(foo_tab_id); | 232 data_use_tab_model()->NotifyObserversOfTrackingEnding(foo_tab_id); |
233 base::RunLoop().RunUntilIdle(); | |
62 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); | 234 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); |
63 EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id)); | 235 EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id)); |
64 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id)); | 236 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(foo_tab_id)); |
65 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); | 237 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); |
66 | 238 |
67 // The tab enters the tracking state again. | 239 // The tab enters the tracking state again. |
68 data_use_ui_tab_model()->OnTrackingStarted(foo_tab_id); | 240 data_use_tab_model()->NotifyObserversOfTrackingStarting(foo_tab_id); |
241 base::RunLoop().RunUntilIdle(); | |
69 EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); | 242 EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); |
70 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); | 243 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); |
71 | 244 |
72 // The tab exits the tracking state. | 245 // The tab exits the tracking state. |
73 data_use_ui_tab_model()->OnTrackingEnded(foo_tab_id); | 246 data_use_tab_model()->NotifyObserversOfTrackingEnding(foo_tab_id); |
247 base::RunLoop().RunUntilIdle(); | |
74 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); | 248 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); |
75 | 249 |
76 // The tab enters the tracking state again. | 250 // The tab enters the tracking state again. |
77 data_use_ui_tab_model()->OnTrackingStarted(foo_tab_id); | 251 data_use_tab_model()->NotifyObserversOfTrackingStarting(foo_tab_id); |
78 data_use_ui_tab_model()->OnTrackingStarted(foo_tab_id); | 252 base::RunLoop().RunUntilIdle(); |
253 data_use_tab_model()->NotifyObserversOfTrackingStarting(foo_tab_id); | |
254 base::RunLoop().RunUntilIdle(); | |
79 EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); | 255 EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); |
80 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); | 256 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(foo_tab_id)); |
81 | 257 |
82 // ShowExit should return true only once. | 258 // ShowExit should return true only once. |
83 data_use_ui_tab_model()->OnTrackingEnded(bar_tab_id); | 259 data_use_tab_model()->NotifyObserversOfTrackingEnding(bar_tab_id); |
260 base::RunLoop().RunUntilIdle(); | |
84 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(bar_tab_id)); | 261 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(bar_tab_id)); |
85 EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingEnded(bar_tab_id)); | 262 EXPECT_TRUE(data_use_ui_tab_model()->HasDataUseTrackingEnded(bar_tab_id)); |
86 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(bar_tab_id)); | 263 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(bar_tab_id)); |
87 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(bar_tab_id)); | 264 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(bar_tab_id)); |
88 | 265 |
89 data_use_ui_tab_model()->ReportTabClosure(foo_tab_id); | 266 data_use_ui_tab_model()->ReportTabClosure(foo_tab_id); |
90 data_use_ui_tab_model()->ReportTabClosure(bar_tab_id); | 267 data_use_ui_tab_model()->ReportTabClosure(bar_tab_id); |
91 | 268 |
92 // HasDataUseTrackingStarted/Ended should return false for closed tabs. | 269 // HasDataUseTrackingStarted/Ended should return false for closed tabs. |
93 data_use_ui_tab_model()->OnTrackingStarted(baz_tab_id); | 270 data_use_tab_model()->NotifyObserversOfTrackingStarting(baz_tab_id); |
271 base::RunLoop().RunUntilIdle(); | |
94 data_use_ui_tab_model()->ReportTabClosure(baz_tab_id); | 272 data_use_ui_tab_model()->ReportTabClosure(baz_tab_id); |
95 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(baz_tab_id)); | 273 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingStarted(baz_tab_id)); |
96 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(baz_tab_id)); | 274 EXPECT_FALSE(data_use_ui_tab_model()->HasDataUseTrackingEnded(baz_tab_id)); |
97 } | 275 } |
98 | 276 |
277 // Checks if page transition type is converted correctly. | |
278 TEST_F(DataUseUITabModelTest, ConvertTransitionType) { | |
279 data_use_ui_tab_model()->SetDataUseTabModel( | |
280 data_use_tab_model()->GetWeakPtr()); | |
281 DataUseTabModel::TransitionType transition_type; | |
282 EXPECT_TRUE(data_use_ui_tab_model()->ConvertTransitionType( | |
283 ui::PageTransition(ui::PAGE_TRANSITION_TYPED), &transition_type)); | |
284 EXPECT_EQ(DataUseTabModel::TRANSITION_OMNIBOX_NAVIGATION, transition_type); | |
285 EXPECT_TRUE(data_use_ui_tab_model()->ConvertTransitionType( | |
286 ui::PageTransition(ui::PAGE_TRANSITION_TYPED | 0xFF00), | |
287 &transition_type)); | |
288 EXPECT_EQ(DataUseTabModel::TRANSITION_OMNIBOX_NAVIGATION, transition_type); | |
289 EXPECT_TRUE(data_use_ui_tab_model()->ConvertTransitionType( | |
290 ui::PageTransition(ui::PAGE_TRANSITION_TYPED | 0xFFFF00), | |
291 &transition_type)); | |
292 EXPECT_EQ(DataUseTabModel::TRANSITION_OMNIBOX_NAVIGATION, transition_type); | |
293 EXPECT_TRUE(data_use_ui_tab_model()->ConvertTransitionType( | |
294 ui::PageTransition(ui::PAGE_TRANSITION_TYPED | 0x12FFFF00), | |
295 &transition_type)); | |
296 EXPECT_EQ(DataUseTabModel::TRANSITION_OMNIBOX_NAVIGATION, transition_type); | |
297 | |
298 EXPECT_TRUE(data_use_ui_tab_model()->ConvertTransitionType( | |
299 ui::PageTransition(ui::PAGE_TRANSITION_AUTO_BOOKMARK), &transition_type)); | |
300 EXPECT_EQ(DataUseTabModel::TRANSITION_BOOKMARK, transition_type); | |
301 EXPECT_TRUE(data_use_ui_tab_model()->ConvertTransitionType( | |
302 ui::PageTransition(ui::PAGE_TRANSITION_AUTO_BOOKMARK | 0xFF00), | |
303 &transition_type)); | |
304 EXPECT_EQ(DataUseTabModel::TRANSITION_BOOKMARK, transition_type); | |
305 EXPECT_TRUE(data_use_ui_tab_model()->ConvertTransitionType( | |
306 ui::PageTransition(ui::PAGE_TRANSITION_AUTO_BOOKMARK | 0xFFFF00), | |
307 &transition_type)); | |
308 EXPECT_EQ(DataUseTabModel::TRANSITION_BOOKMARK, transition_type); | |
309 EXPECT_TRUE(data_use_ui_tab_model()->ConvertTransitionType( | |
310 ui::PageTransition(ui::PAGE_TRANSITION_AUTO_BOOKMARK | 0x12FFFF00), | |
311 &transition_type)); | |
312 EXPECT_EQ(DataUseTabModel::TRANSITION_BOOKMARK, transition_type); | |
313 | |
314 EXPECT_TRUE(data_use_ui_tab_model()->ConvertTransitionType( | |
315 ui::PageTransition(ui::PAGE_TRANSITION_GENERATED), &transition_type)); | |
316 EXPECT_EQ(DataUseTabModel::TRANSITION_OMNIBOX_SEARCH, transition_type); | |
317 EXPECT_TRUE(data_use_ui_tab_model()->ConvertTransitionType( | |
318 ui::PageTransition(ui::PAGE_TRANSITION_GENERATED | 0xFF00), | |
319 &transition_type)); | |
320 EXPECT_EQ(DataUseTabModel::TRANSITION_OMNIBOX_SEARCH, transition_type); | |
321 EXPECT_TRUE(data_use_ui_tab_model()->ConvertTransitionType( | |
322 ui::PageTransition(ui::PAGE_TRANSITION_GENERATED | 0xFFFF00), | |
323 &transition_type)); | |
324 EXPECT_EQ(DataUseTabModel::TRANSITION_OMNIBOX_SEARCH, transition_type); | |
325 EXPECT_TRUE(data_use_ui_tab_model()->ConvertTransitionType( | |
326 ui::PageTransition(ui::PAGE_TRANSITION_GENERATED | 0x12FFFF00), | |
327 &transition_type)); | |
328 EXPECT_EQ(DataUseTabModel::TRANSITION_OMNIBOX_SEARCH, transition_type); | |
329 | |
330 EXPECT_FALSE(data_use_ui_tab_model()->ConvertTransitionType( | |
331 ui::PageTransition(ui::PAGE_TRANSITION_AUTO_SUBFRAME), &transition_type)); | |
332 EXPECT_FALSE(data_use_ui_tab_model()->ConvertTransitionType( | |
333 ui::PageTransition(ui::PAGE_TRANSITION_MANUAL_SUBFRAME), | |
334 &transition_type)); | |
335 EXPECT_FALSE(data_use_ui_tab_model()->ConvertTransitionType( | |
336 ui::PageTransition(ui::PAGE_TRANSITION_FORM_SUBMIT), &transition_type)); | |
337 } | |
338 | |
99 } // namespace android | 339 } // namespace android |
100 | 340 |
101 } // namespace chrome | 341 } // namespace chrome |
OLD | NEW |