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

Unified 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: 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/data_usage/data_use_tab_model_unittest.cc
diff --git a/chrome/browser/android/data_usage/data_use_tab_model_unittest.cc b/chrome/browser/android/data_usage/data_use_tab_model_unittest.cc
index f2bf80006ca4b630a8cea6537f7ef91393b09110..431d983ec20f8716090e3dc95e43f56c8341e6d5 100644
--- a/chrome/browser/android/data_usage/data_use_tab_model_unittest.cc
+++ b/chrome/browser/android/data_usage/data_use_tab_model_unittest.cc
@@ -8,6 +8,7 @@
#include <string>
+#include "base/memory/weak_ptr.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/stringprintf.h"
#include "base/time/time.h"
@@ -123,8 +124,16 @@ class DataUseTabModelTest : public testing::Test {
// Mock observer to track the calls to start and end tracking events.
class MockTabDataUseObserver : public DataUseTabModel::TabDataUseObserver {
public:
+ MockTabDataUseObserver() : weak_ptr_factory_(this) {}
MOCK_METHOD1(NotifyTrackingStarting, void(int32_t tab_id));
MOCK_METHOD1(NotifyTrackingEnding, void(int32_t tab_id));
+
+ base::WeakPtr<MockTabDataUseObserver> GetWeakPtr() {
+ return weak_ptr_factory_.GetWeakPtr();
+ }
+
+ private:
+ base::WeakPtrFactory<MockTabDataUseObserver> weak_ptr_factory_;
sclittle 2015/11/20 22:50:54 You should DISALLOW_COPY_AND_ASSIGN, since it does
tbansal1 2015/11/23 17:52:22 Done.
};
// Starts and ends tracking a single tab and checks if its label is returned
@@ -192,7 +201,8 @@ TEST_F(DataUseTabModelTest, ObserverStartEndEvents) {
EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(1);
EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(1);
- data_use_tab_model_.AddObserver(&mock_observer);
+ data_use_tab_model_.AddObserver(&mock_observer, mock_observer.GetWeakPtr());
+ EXPECT_EQ(1U, data_use_tab_model_.active_tabs_.size());
data_use_tab_model_.StartTrackingDataUse(kTabID1, kTestLabel1);
data_use_tab_model_.EndTrackingDataUse(kTabID1);
@@ -203,10 +213,14 @@ TEST_F(DataUseTabModelTest, ObserverStartEndEvents) {
// multiple tabs.
TEST_F(DataUseTabModelTest, MultipleObserverMultipleStartEndEvents) {
MockTabDataUseObserver mock_observers[kMaxMockObservers];
+ size_t expected_observer_count = 0;
+ EXPECT_EQ(expected_observer_count, data_use_tab_model_.active_tabs_.size());
for (auto& mock_observer : mock_observers) {
// Add the observer.
- data_use_tab_model_.AddObserver(&mock_observer);
+ data_use_tab_model_.AddObserver(&mock_observer, mock_observer.GetWeakPtr());
+ ++expected_observer_count;
+ EXPECT_EQ(expected_observer_count, data_use_tab_model_.active_tabs_.size());
// Expect start and end events for tab ids 1-3.
EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(1);
@@ -226,6 +240,14 @@ TEST_F(DataUseTabModelTest, MultipleObserverMultipleStartEndEvents) {
data_use_tab_model_.EndTrackingDataUse(kTabID3);
message_loop_.RunUntilIdle();
+
+ for (auto& mock_observer : mock_observers) {
+ // Remove the observer.
+ data_use_tab_model_.RemoveObserver(&mock_observer);
+ --expected_observer_count;
+ EXPECT_EQ(expected_observer_count, data_use_tab_model_.active_tabs_.size());
+ }
+ EXPECT_EQ(0U, data_use_tab_model_.active_tabs_.size());
}
// Checks that the observer is not notified of start and end events after
@@ -237,7 +259,9 @@ TEST_F(DataUseTabModelTest, ObserverNotNotifiedAfterRemove) {
EXPECT_CALL(mock_observer, NotifyTrackingStarting(kTabID1)).Times(1);
EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(1);
- data_use_tab_model_.AddObserver(&mock_observer);
+ EXPECT_EQ(0U, data_use_tab_model_.active_tabs_.size());
+ data_use_tab_model_.AddObserver(&mock_observer, mock_observer.GetWeakPtr());
+ EXPECT_EQ(1U, data_use_tab_model_.active_tabs_.size());
data_use_tab_model_.StartTrackingDataUse(kTabID1, kTestLabel1);
data_use_tab_model_.EndTrackingDataUse(kTabID1);
@@ -249,6 +273,7 @@ TEST_F(DataUseTabModelTest, ObserverNotNotifiedAfterRemove) {
EXPECT_CALL(mock_observer, NotifyTrackingEnding(kTabID1)).Times(0);
data_use_tab_model_.RemoveObserver(&mock_observer);
+ EXPECT_EQ(0U, data_use_tab_model_.active_tabs_.size());
data_use_tab_model_.StartTrackingDataUse(kTabID1, kTestLabel1);
data_use_tab_model_.EndTrackingDataUse(kTabID1);

Powered by Google App Engine
This is Rietveld 408576698