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

Side by Side Diff: chrome/browser/android/data_usage/data_use_tab_model_unittest.cc

Issue 1443683002: Notify DataUseTabModel of navigations and tab closures (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed bengr comments Created 5 years, 1 month 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
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_tab_model.h" 5 #include "chrome/browser/android/data_usage/data_use_tab_model.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <string> 9 #include <string>
10 10
11 #include "base/memory/weak_ptr.h"
11 #include "base/message_loop/message_loop.h" 12 #include "base/message_loop/message_loop.h"
13 #include "base/run_loop.h"
12 #include "base/single_thread_task_runner.h" 14 #include "base/single_thread_task_runner.h"
13 #include "base/strings/stringprintf.h" 15 #include "base/strings/stringprintf.h"
14 #include "base/test/histogram_tester.h" 16 #include "base/test/histogram_tester.h"
15 #include "base/time/time.h" 17 #include "base/time/time.h"
16 #include "chrome/browser/android/data_usage/external_data_use_observer.h" 18 #include "chrome/browser/android/data_usage/external_data_use_observer.h"
17 #include "chrome/browser/android/data_usage/tab_data_use_entry.h" 19 #include "chrome/browser/android/data_usage/tab_data_use_entry.h"
20 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
18 #include "components/data_usage/core/data_use.h" 21 #include "components/data_usage/core/data_use.h"
19 #include "components/data_usage/core/data_use_aggregator.h" 22 #include "components/data_usage/core/data_use_aggregator.h"
20 #include "components/data_usage/core/data_use_amortizer.h" 23 #include "components/data_usage/core/data_use_amortizer.h"
21 #include "components/data_usage/core/data_use_annotator.h" 24 #include "components/data_usage/core/data_use_annotator.h"
25 #include "content/public/browser/browser_thread.h"
22 #include "net/base/network_change_notifier.h" 26 #include "net/base/network_change_notifier.h"
23 #include "testing/gmock/include/gmock/gmock.h" 27 #include "testing/gmock/include/gmock/gmock.h"
24 #include "testing/gtest/include/gtest/gtest.h" 28 #include "testing/gtest/include/gtest/gtest.h"
25 29
26 namespace { 30 namespace {
27 31
28 // Tracking labels for tests. 32 // Tracking labels for tests.
29 const std::string kTestLabel1 = "label_1"; 33 const std::string kTestLabel1 = "label_1";
30 const std::string kTestLabel2 = "label_2"; 34 const std::string kTestLabel2 = "label_2";
31 const std::string kTestLabel3 = "label_3"; 35 const std::string kTestLabel3 = "label_3";
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 // Returns the current time advanced by |now_offset_|. 68 // Returns the current time advanced by |now_offset_|.
65 base::TimeTicks Now() const override { 69 base::TimeTicks Now() const override {
66 return base::TimeTicks::Now() + now_offset_; 70 return base::TimeTicks::Now() + now_offset_;
67 } 71 }
68 72
69 // Represents the delta offset to be added to current time that is returned by 73 // Represents the delta offset to be added to current time that is returned by
70 // Now. 74 // Now.
71 base::TimeDelta now_offset_; 75 base::TimeDelta now_offset_;
72 }; 76 };
73 77
74 class DataUseTabModelTest : public testing::Test { 78 class DataUseTabModelTest : public ChromeRenderViewHostTestHarness {
75 public: 79 public:
76 DataUseTabModelTest() {} 80 DataUseTabModelTest() {}
77 81
78 protected: 82 protected:
79 void SetUp() override { 83 void SetUp() override {
84 ChromeRenderViewHostTestHarness::SetUp();
85
80 data_use_aggregator_.reset(new data_usage::DataUseAggregator( 86 data_use_aggregator_.reset(new data_usage::DataUseAggregator(
81 scoped_ptr<data_usage::DataUseAnnotator>(), 87 scoped_ptr<data_usage::DataUseAnnotator>(),
82 scoped_ptr<data_usage::DataUseAmortizer>())); 88 scoped_ptr<data_usage::DataUseAmortizer>()));
83 data_use_observer_.reset(new ExternalDataUseObserver( 89 data_use_observer_.reset(new ExternalDataUseObserver(
84 data_use_aggregator_.get(), message_loop_.task_runner().get(), 90 data_use_aggregator_.get(),
85 message_loop_.task_runner().get())); 91 content::BrowserThread::GetMessageLoopProxyForThread(
92 content::BrowserThread::IO),
93 content::BrowserThread::GetMessageLoopProxyForThread(
94 content::BrowserThread::UI)));
86 data_use_tab_model_ = new DataUseTabModelNowTest( 95 data_use_tab_model_ = new DataUseTabModelNowTest(
87 data_use_observer_.get(), message_loop_.task_runner().get()); 96 data_use_observer_.get(),
97 content::BrowserThread::GetMessageLoopProxyForThread(
98 content::BrowserThread::UI));
88 99
89 // |data_use_tab_model_| will be owned by |data_use_observer_|. 100 // |data_use_tab_model_| will be owned by |data_use_observer_|.
90 data_use_observer_->data_use_tab_model_.reset(data_use_tab_model_); 101 data_use_observer_->data_use_tab_model_.reset(data_use_tab_model_);
91 } 102 }
92 103
93 // Returns true if tab entry for |tab_id| exists in |active_tabs_|. 104 // Returns true if tab entry for |tab_id| exists in |active_tabs_|.
94 bool IsTabEntryExists(int32_t tab_id) const { 105 bool IsTabEntryExists(int32_t tab_id) const {
95 return data_use_tab_model_->active_tabs_.find(tab_id) != 106 return data_use_tab_model_->active_tabs_.find(tab_id) !=
96 data_use_tab_model_->active_tabs_.end(); 107 data_use_tab_model_->active_tabs_.end();
97 } 108 }
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 data_use_observer_->RegisterURLRegexes(app_package_names, domain_regexes, 178 data_use_observer_->RegisterURLRegexes(app_package_names, domain_regexes,
168 labels); 179 labels);
169 } 180 }
170 181
171 scoped_ptr<data_usage::DataUseAggregator> data_use_aggregator_; 182 scoped_ptr<data_usage::DataUseAggregator> data_use_aggregator_;
172 scoped_ptr<ExternalDataUseObserver> data_use_observer_; 183 scoped_ptr<ExternalDataUseObserver> data_use_observer_;
173 184
174 // Pointer to the tab model within and owned by ExternalDataUseObserver. 185 // Pointer to the tab model within and owned by ExternalDataUseObserver.
175 DataUseTabModelNowTest* data_use_tab_model_; 186 DataUseTabModelNowTest* data_use_tab_model_;
176 187
177 base::MessageLoop message_loop_; 188 private:
189 DISALLOW_COPY_AND_ASSIGN(DataUseTabModelTest);
178 }; 190 };
179 191
180 // Mock observer to track the calls to start and end tracking events. 192 // Mock observer to track the calls to start and end tracking events.
181 class MockTabDataUseObserver : public DataUseTabModel::TabDataUseObserver { 193 class MockTabDataUseObserver : public DataUseTabModel::TabDataUseObserver {
182 public: 194 public:
195 MockTabDataUseObserver() : weak_ptr_factory_(this) {}
183 MOCK_METHOD1(NotifyTrackingStarting, void(int32_t tab_id)); 196 MOCK_METHOD1(NotifyTrackingStarting, void(int32_t tab_id));
184 MOCK_METHOD1(NotifyTrackingEnding, void(int32_t tab_id)); 197 MOCK_METHOD1(NotifyTrackingEnding, void(int32_t tab_id));
198
199 base::WeakPtr<MockTabDataUseObserver> GetWeakPtr() {
200 return weak_ptr_factory_.GetWeakPtr();
201 }
202
203 private:
204 base::WeakPtrFactory<MockTabDataUseObserver> weak_ptr_factory_;
205
206 DISALLOW_COPY_AND_ASSIGN(MockTabDataUseObserver);
185 }; 207 };
186 208
187 // Starts and ends tracking a single tab and checks if its label is returned 209 // Starts and ends tracking a single tab and checks if its label is returned
188 // correctly for DataUse objects. 210 // correctly for DataUse objects.
189 TEST_F(DataUseTabModelTest, SingleTabTracking) { 211 TEST_F(DataUseTabModelTest, SingleTabTracking) {
190 ExpectTabEntrySize(TabEntrySize::ZERO); 212 ExpectTabEntrySize(TabEntrySize::ZERO);
191 213
192 // No label is applied initially. 214 // No label is applied initially.
193 ExpectEmptyDataUseLabel(kTabID1); 215 ExpectEmptyDataUseLabel(kTabID1);
194 ExpectEmptyDataUseLabel(kTabID2); 216 ExpectEmptyDataUseLabel(kTabID2);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 } 264 }
243 265
244 // Checks that the mock observer receives start and end tracking events for a 266 // Checks that the mock observer receives start and end tracking events for a
245 // single tab. 267 // single tab.
246 TEST_F(DataUseTabModelTest, ObserverStartEndEvents) { 268 TEST_F(DataUseTabModelTest, ObserverStartEndEvents) {
247 MockTabDataUseObserver mock_observer; 269 MockTabDataUseObserver mock_observer;
248 270
249 EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(1); 271 EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(1);
250 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(1); 272 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(1);
251 273
252 data_use_tab_model_->AddObserver(&mock_observer); 274 data_use_tab_model_->AddObserver(&mock_observer, mock_observer.GetWeakPtr());
275 EXPECT_EQ(1U, data_use_tab_model_->observers_.size());
253 StartTrackingDataUse(kTabID1, kTestLabel1); 276 StartTrackingDataUse(kTabID1, kTestLabel1);
254 EndTrackingDataUse(kTabID1); 277 EndTrackingDataUse(kTabID1);
255 278
256 message_loop_.RunUntilIdle(); 279 base::RunLoop().RunUntilIdle();
257 } 280 }
258 281
259 // Checks that multiple mock observers receive start and end tracking events for 282 // Checks that multiple mock observers receive start and end tracking events for
260 // multiple tabs. 283 // multiple tabs.
261 TEST_F(DataUseTabModelTest, MultipleObserverMultipleStartEndEvents) { 284 TEST_F(DataUseTabModelTest, MultipleObserverMultipleStartEndEvents) {
262 MockTabDataUseObserver mock_observers[kMaxMockObservers]; 285 MockTabDataUseObserver mock_observers[kMaxMockObservers];
286 size_t expected_observer_count = 0;
287 EXPECT_EQ(expected_observer_count, data_use_tab_model_->observers_.size());
263 288
264 for (auto& mock_observer : mock_observers) { 289 for (auto& mock_observer : mock_observers) {
265 // Add the observer. 290 // Add the observer.
266 data_use_tab_model_->AddObserver(&mock_observer); 291 data_use_tab_model_->AddObserver(&mock_observer,
292 mock_observer.GetWeakPtr());
293 ++expected_observer_count;
294 EXPECT_EQ(expected_observer_count, data_use_tab_model_->observers_.size());
267 295
268 // Expect start and end events for tab ids 1-3. 296 // Expect start and end events for tab ids 1-3.
269 EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(1); 297 EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(1);
270 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(1); 298 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(1);
271 EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID2)).Times(1); 299 EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID2)).Times(1);
272 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID2)).Times(1); 300 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID2)).Times(1);
273 EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID3)).Times(1); 301 EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID3)).Times(1);
274 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID3)).Times(1); 302 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID3)).Times(1);
275 } 303 }
276 304
277 // Start and end tracking for tab ids 1-3. 305 // Start and end tracking for tab ids 1-3.
278 StartTrackingDataUse(kTabID1, kTestLabel1); 306 StartTrackingDataUse(kTabID1, kTestLabel1);
279 StartTrackingDataUse(kTabID2, kTestLabel2); 307 StartTrackingDataUse(kTabID2, kTestLabel2);
280 StartTrackingDataUse(kTabID3, kTestLabel3); 308 StartTrackingDataUse(kTabID3, kTestLabel3);
281 EndTrackingDataUse(kTabID1); 309 EndTrackingDataUse(kTabID1);
282 EndTrackingDataUse(kTabID2); 310 EndTrackingDataUse(kTabID2);
283 EndTrackingDataUse(kTabID3); 311 EndTrackingDataUse(kTabID3);
284 312
285 message_loop_.RunUntilIdle(); 313 base::RunLoop().RunUntilIdle();
314
315 for (auto& mock_observer : mock_observers) {
316 // Remove the observer.
317 data_use_tab_model_->RemoveObserver(&mock_observer);
318 --expected_observer_count;
319 EXPECT_EQ(expected_observer_count, data_use_tab_model_->observers_.size());
320 }
321 EXPECT_EQ(0U, data_use_tab_model_->observers_.size());
286 } 322 }
287 323
288 // Checks that the observer is not notified of start and end events after 324 // Checks that the observer is not notified of start and end events after
289 // RemoveObserver. 325 // RemoveObserver.
290 TEST_F(DataUseTabModelTest, ObserverNotNotifiedAfterRemove) { 326 TEST_F(DataUseTabModelTest, ObserverNotNotifiedAfterRemove) {
291 MockTabDataUseObserver mock_observer; 327 MockTabDataUseObserver mock_observer;
292 328
293 // Observer notified of start and end events. 329 // Observer notified of start and end events.
294 EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(1); 330 EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(1);
295 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(1); 331 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(1);
296 332
297 data_use_tab_model_->AddObserver(&mock_observer); 333 EXPECT_EQ(0U, data_use_tab_model_->observers_.size());
334 data_use_tab_model_->AddObserver(&mock_observer, mock_observer.GetWeakPtr());
335 EXPECT_EQ(1U, data_use_tab_model_->observers_.size());
298 StartTrackingDataUse(kTabID1, kTestLabel1); 336 StartTrackingDataUse(kTabID1, kTestLabel1);
299 EndTrackingDataUse(kTabID1); 337 EndTrackingDataUse(kTabID1);
300 338
301 message_loop_.RunUntilIdle(); 339 base::RunLoop().RunUntilIdle();
302 testing::Mock::VerifyAndClear(&mock_observer); 340 testing::Mock::VerifyAndClear(&mock_observer);
303 341
304 // Observer should not be notified after RemoveObserver. 342 // Observer should not be notified after RemoveObserver.
305 EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(0); 343 EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(0);
306 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(0); 344 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(0);
307 345
308 data_use_tab_model_->RemoveObserver(&mock_observer); 346 data_use_tab_model_->RemoveObserver(&mock_observer);
347 EXPECT_EQ(0U, data_use_tab_model_->observers_.size());
309 StartTrackingDataUse(kTabID1, kTestLabel1); 348 StartTrackingDataUse(kTabID1, kTestLabel1);
310 EndTrackingDataUse(kTabID1); 349 EndTrackingDataUse(kTabID1);
311 350
312 message_loop_.RunUntilIdle(); 351 base::RunLoop().RunUntilIdle();
313 } 352 }
314 353
315 // Checks that tab close event updates the close time of the tab entry. 354 // Checks that tab close event updates the close time of the tab entry.
316 TEST_F(DataUseTabModelTest, TabCloseEvent) { 355 TEST_F(DataUseTabModelTest, TabCloseEvent) {
317 StartTrackingDataUse(kTabID1, kTestLabel1); 356 StartTrackingDataUse(kTabID1, kTestLabel1);
318 EndTrackingDataUse(kTabID1); 357 EndTrackingDataUse(kTabID1);
319 358
320 ExpectTabEntrySize(TabEntrySize::ONE); 359 ExpectTabEntrySize(TabEntrySize::ONE);
321 EXPECT_TRUE( 360 EXPECT_TRUE(
322 data_use_tab_model_->active_tabs_[kTabID1].tab_close_time_.is_null()); 361 data_use_tab_model_->active_tabs_[kTabID1].tab_close_time_.is_null());
(...skipping 18 matching lines...) Expand all
341 kTabID1, base::TimeTicks::Now() + base::TimeDelta::FromMilliseconds(20)); 380 kTabID1, base::TimeTicks::Now() + base::TimeDelta::FromMilliseconds(20));
342 } 381 }
343 382
344 // Checks that end tracking for specific labels closes those active sessions. 383 // Checks that end tracking for specific labels closes those active sessions.
345 TEST_F(DataUseTabModelTest, OnTrackingLabelRemoved) { 384 TEST_F(DataUseTabModelTest, OnTrackingLabelRemoved) {
346 MockTabDataUseObserver mock_observer; 385 MockTabDataUseObserver mock_observer;
347 386
348 StartTrackingDataUse(kTabID1, kTestLabel1); 387 StartTrackingDataUse(kTabID1, kTestLabel1);
349 StartTrackingDataUse(kTabID2, kTestLabel2); 388 StartTrackingDataUse(kTabID2, kTestLabel2);
350 StartTrackingDataUse(kTabID3, kTestLabel3); 389 StartTrackingDataUse(kTabID3, kTestLabel3);
351 data_use_tab_model_->AddObserver(&mock_observer); 390 data_use_tab_model_->AddObserver(&mock_observer, mock_observer.GetWeakPtr());
352 ExpectTabEntrySize(TabEntrySize::THREE); 391 ExpectTabEntrySize(TabEntrySize::THREE);
353 392
354 EXPECT_TRUE(IsTrackingDataUse(kTabID1)); 393 EXPECT_TRUE(IsTrackingDataUse(kTabID1));
355 EXPECT_TRUE(IsTrackingDataUse(kTabID2)); 394 EXPECT_TRUE(IsTrackingDataUse(kTabID2));
356 EXPECT_TRUE(IsTrackingDataUse(kTabID3)); 395 EXPECT_TRUE(IsTrackingDataUse(kTabID3));
357 396
358 // Observer notified of end tracking. 397 // Observer notified of end tracking.
359 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID2)).Times(1); 398 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID2)).Times(1);
360 399
361 data_use_tab_model_->OnTrackingLabelRemoved(kTestLabel2); 400 data_use_tab_model_->OnTrackingLabelRemoved(kTestLabel2);
362 message_loop_.RunUntilIdle(); 401 base::RunLoop().RunUntilIdle();
363 402
364 EXPECT_TRUE(IsTrackingDataUse(kTabID1)); 403 EXPECT_TRUE(IsTrackingDataUse(kTabID1));
365 EXPECT_FALSE(IsTrackingDataUse(kTabID2)); 404 EXPECT_FALSE(IsTrackingDataUse(kTabID2));
366 EXPECT_TRUE(IsTrackingDataUse(kTabID3)); 405 EXPECT_TRUE(IsTrackingDataUse(kTabID3));
367 406
368 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID3)).Times(1); 407 EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID3)).Times(1);
369 408
370 data_use_tab_model_->OnTrackingLabelRemoved(kTestLabel3); 409 data_use_tab_model_->OnTrackingLabelRemoved(kTestLabel3);
371 message_loop_.RunUntilIdle(); 410 base::RunLoop().RunUntilIdle();
372 411
373 EXPECT_TRUE(IsTrackingDataUse(kTabID1)); 412 EXPECT_TRUE(IsTrackingDataUse(kTabID1));
374 EXPECT_FALSE(IsTrackingDataUse(kTabID2)); 413 EXPECT_FALSE(IsTrackingDataUse(kTabID2));
375 EXPECT_FALSE(IsTrackingDataUse(kTabID3)); 414 EXPECT_FALSE(IsTrackingDataUse(kTabID3));
376 } 415 }
377 416
378 // Checks that |active_tabs_| does not grow beyond GetMaxTabEntriesForTests tab 417 // Checks that |active_tabs_| does not grow beyond GetMaxTabEntriesForTests tab
379 // entries. 418 // entries.
380 TEST_F(DataUseTabModelTest, CompactTabEntriesWithinMaxLimit) { 419 TEST_F(DataUseTabModelTest, CompactTabEntriesWithinMaxLimit) {
381 const size_t max_tab_entries = data_use_tab_model_->max_tab_entries_; 420 const size_t max_tab_entries = data_use_tab_model_->max_tab_entries_;
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 labels.push_back(kTestLabel2); 590 labels.push_back(kTestLabel2);
552 591
553 RegisterURLRegexesInDataUseObserver(app_package_names, domain_regexes, 592 RegisterURLRegexesInDataUseObserver(app_package_names, domain_regexes,
554 labels); 593 labels);
555 594
556 data_use_tab_model_->OnNavigationEvent( 595 data_use_tab_model_->OnNavigationEvent(
557 kTabID1, DataUseTabModel::TRANSITION_OMNIBOX_SEARCH, 596 kTabID1, DataUseTabModel::TRANSITION_OMNIBOX_SEARCH,
558 GURL("http://foo.com/"), std::string()); 597 GURL("http://foo.com/"), std::string());
559 ExpectTabEntrySize(TabEntrySize::ONE); 598 ExpectTabEntrySize(TabEntrySize::ONE);
560 EXPECT_TRUE(IsTrackingDataUse(kTabID1)); 599 EXPECT_TRUE(IsTrackingDataUse(kTabID1));
561
562 data_use_tab_model_->OnNavigationEvent(
563 kTabID1, DataUseTabModel::TRANSITION_FROM_NAVSUGGEST, GURL(),
564 std::string());
565 EXPECT_FALSE(IsTrackingDataUse(kTabID1));
566 } 600 }
567 601
568 // Tests that any of the Enter transition events start the tracking. 602 // Tests that any of the Enter transition events start the tracking.
569 TEST_F(DataUseTabModelTest, AllNavigationEnterEvents) { 603 TEST_F(DataUseTabModelTest, AllNavigationEnterEvents) {
570 const struct { 604 const struct {
571 DataUseTabModel::TransitionType transition; 605 DataUseTabModel::TransitionType transition;
572 std::string url; 606 std::string url;
573 std::string package; 607 std::string package;
574 std::string expect_label; 608 std::string expect_label;
575 } all_enter_transition_tests[] = { 609 } all_enter_transition_tests[] = {
(...skipping 28 matching lines...) Expand all
604 EXPECT_TRUE(IsTrackingDataUse(tab_id)); 638 EXPECT_TRUE(IsTrackingDataUse(tab_id));
605 ExpectDataUseLabel(tab_id, test.expect_label); 639 ExpectDataUseLabel(tab_id, test.expect_label);
606 ExpectTabEntrySize(tab_id); 640 ExpectTabEntrySize(tab_id);
607 ++tab_id; 641 ++tab_id;
608 } 642 }
609 } 643 }
610 644
611 // Tests that any of the Exit transition events end the tracking. 645 // Tests that any of the Exit transition events end the tracking.
612 TEST_F(DataUseTabModelTest, AllNavigationExitEvents) { 646 TEST_F(DataUseTabModelTest, AllNavigationExitEvents) {
613 DataUseTabModel::TransitionType all_exit_transitions[] = { 647 DataUseTabModel::TransitionType all_exit_transitions[] = {
614 DataUseTabModel::TRANSITION_TO_EXTERNAL_APP,
615 DataUseTabModel::TRANSITION_FROM_NAVSUGGEST,
616 DataUseTabModel::TRANSITION_OMNIBOX_NAVIGATION,
617 DataUseTabModel::TRANSITION_BOOKMARK, 648 DataUseTabModel::TRANSITION_BOOKMARK,
618 DataUseTabModel::TRANSITION_HISTORY_ITEM}; 649 DataUseTabModel::TRANSITION_HISTORY_ITEM};
619 std::vector<std::string> app_package_names, domain_regexes, labels; 650 std::vector<std::string> app_package_names, domain_regexes, labels;
620 int32_t tab_id = 1; 651 int32_t tab_id = 1;
621 652
622 app_package_names.push_back(std::string()); 653 app_package_names.push_back(std::string());
623 domain_regexes.push_back("http://foo.com/"); 654 domain_regexes.push_back("http://foo.com/");
624 labels.push_back(kTestLabel1); 655 labels.push_back(kTestLabel1);
625 656
626 RegisterURLRegexesInDataUseObserver(app_package_names, domain_regexes, 657 RegisterURLRegexesInDataUseObserver(app_package_names, domain_regexes,
(...skipping 12 matching lines...) Expand all
639 670
640 EXPECT_FALSE(IsTrackingDataUse(tab_id)); 671 EXPECT_FALSE(IsTrackingDataUse(tab_id));
641 ExpectTabEntrySize(tab_id); 672 ExpectTabEntrySize(tab_id);
642 ++tab_id; 673 ++tab_id;
643 } 674 }
644 } 675 }
645 676
646 } // namespace android 677 } // namespace android
647 678
648 } // namespace chrome 679 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698