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

Unified Diff: sync/notifier/invalidation_notifier_unittest.cc

Issue 10451060: sync: migrate invalidation state from syncable::Directory to InvalidationStorage (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: include order Created 8 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sync/notifier/invalidation_notifier.cc ('k') | sync/notifier/invalidation_state_tracker.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/notifier/invalidation_notifier_unittest.cc
diff --git a/sync/notifier/invalidation_notifier_unittest.cc b/sync/notifier/invalidation_notifier_unittest.cc
index d3646e01734657713ca194cf9995740d558272f4..c5f71329eca43e5d57af690af2bf344470005e76 100644
--- a/sync/notifier/invalidation_notifier_unittest.cc
+++ b/sync/notifier/invalidation_notifier_unittest.cc
@@ -11,6 +11,7 @@
#include "jingle/notifier/listener/fake_push_client.h"
#include "net/url_request/url_request_test_util.h"
#include "sync/notifier/invalidation_state_tracker.h"
+#include "sync/notifier/mock_invalidation_state_tracker.h"
#include "sync/notifier/mock_sync_notifier_observer.h"
#include "sync/syncable/model_type.h"
#include "sync/syncable/model_type_payload_map.h"
@@ -27,7 +28,17 @@ using ::testing::StrictMock;
class InvalidationNotifierTest : public testing::Test {
protected:
- virtual void SetUp() {
+ virtual void TearDown() {
+ if (invalidation_notifier_.get())
+ ResetNotifier();
+ }
+
+ // Constructs an InvalidationNotifier, places it in
+ // |invalidation_notifier_|, and adds |mock_observer_| as an observer. This
+ // remains in place until either TearDown (automatic) or ResetNotifier
+ // (manual) is called.
+ void CreateAndObserveNotifier(
+ const std::string& initial_invalidation_state) {
notifier::NotifierOptions notifier_options;
// Note: URLRequestContextGetters are ref-counted.
notifier_options.request_context_getter =
@@ -36,13 +47,13 @@ class InvalidationNotifierTest : public testing::Test {
new InvalidationNotifier(
scoped_ptr<notifier::PushClient>(new notifier::FakePushClient()),
InvalidationVersionMap(),
- browser_sync::MakeWeakHandle(
- base::WeakPtr<InvalidationStateTracker>()),
+ initial_invalidation_state,
+ browser_sync::MakeWeakHandle(mock_tracker_.AsWeakPtr()),
"fake_client_info"));
invalidation_notifier_->AddObserver(&mock_observer_);
}
- virtual void TearDown() {
+ void ResetNotifier() {
invalidation_notifier_->RemoveObserver(&mock_observer_);
// Stopping the invalidation notifier stops its scheduler, which deletes any
// pending tasks without running them. Some tasks "run and delete" another
@@ -55,11 +66,13 @@ class InvalidationNotifierTest : public testing::Test {
MessageLoopForIO message_loop_;
scoped_ptr<InvalidationNotifier> invalidation_notifier_;
+ StrictMock<MockInvalidationStateTracker> mock_tracker_;
StrictMock<MockSyncNotifierObserver> mock_observer_;
notifier::FakeBaseTask fake_base_task_;
};
TEST_F(InvalidationNotifierTest, Basic) {
+ CreateAndObserveNotifier("fake_state");
InSequence dummy;
syncable::ModelTypePayloadMap type_payloads;
@@ -68,25 +81,44 @@ TEST_F(InvalidationNotifierTest, Basic) {
type_payloads[syncable::AUTOFILL] = "";
EXPECT_CALL(mock_observer_, OnNotificationStateChange(true));
- EXPECT_CALL(mock_observer_, StoreState("new_fake_state"));
EXPECT_CALL(mock_observer_,
OnIncomingNotification(type_payloads,
REMOTE_NOTIFICATION));
EXPECT_CALL(mock_observer_, OnNotificationStateChange(false));
+ // Note no expectation on mock_tracker_, as we initialized with
+ // non-empty initial_invalidation_state above.
- invalidation_notifier_->SetState("fake_state");
+ // TODO(tim): This call should be a no-op, Remove once bug 124140 and
+ // associated issues are fixed.
+ invalidation_notifier_->SetStateDeprecated("fake_state");
invalidation_notifier_->SetUniqueId("fake_id");
invalidation_notifier_->UpdateCredentials("foo@bar.com", "fake_token");
invalidation_notifier_->OnSessionStatusChanged(true);
- invalidation_notifier_->WriteState("new_fake_state");
-
invalidation_notifier_->OnInvalidate(type_payloads);
invalidation_notifier_->OnSessionStatusChanged(false);
}
+TEST_F(InvalidationNotifierTest, MigrateState) {
+ CreateAndObserveNotifier(std::string());
+ InSequence dummy;
+
+ EXPECT_CALL(mock_tracker_, SetInvalidationState("fake_state"));
+ invalidation_notifier_->SetStateDeprecated("fake_state");
+
+ // Should do nothing.
+ invalidation_notifier_->SetStateDeprecated("spurious_fake_state");
+
+ // Pretend Chrome shut down.
+ ResetNotifier();
+
+ CreateAndObserveNotifier("fake_state");
+ // Should do nothing.
+ invalidation_notifier_->SetStateDeprecated("more_spurious_fake_state");
+}
+
} // namespace
} // namespace sync_notifier
« no previous file with comments | « sync/notifier/invalidation_notifier.cc ('k') | sync/notifier/invalidation_state_tracker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698