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