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

Side by Side Diff: chrome/browser/invalidation/ticl_invalidation_service_unittest.cc

Issue 319223002: Componentize TiclInvalidationService (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/invalidation/ticl_invalidation_service.h"
6
7 #include "base/bind.h"
8 #include "base/files/file_path.h"
9 #include "base/memory/weak_ptr.h"
10 #include "chrome/browser/invalidation/gcm_invalidation_bridge.h"
11 #include "chrome/browser/invalidation/invalidation_service_test_template.h"
12 #include "components/gcm_driver/fake_gcm_driver.h"
13 #include "components/gcm_driver/gcm_driver.h"
14 #include "components/invalidation/fake_invalidation_state_tracker.h"
15 #include "components/invalidation/fake_invalidator.h"
16 #include "google_apis/gaia/fake_identity_provider.h"
17 #include "google_apis/gaia/fake_oauth2_token_service.h"
18 #include "net/url_request/url_request_context_getter.h"
19 #include "sync/notifier/invalidation_state_tracker.h"
20 #include "sync/notifier/invalidator.h"
21 #include "testing/gtest/include/gtest/gtest.h"
22
23 namespace invalidation {
24
25 namespace {
26
27 class FakeTiclSettingsProvider : public TiclSettingsProvider {
28 public:
29 FakeTiclSettingsProvider();
30 virtual ~FakeTiclSettingsProvider();
31
32 // TiclSettingsProvider:
33 virtual bool UseGCMChannel() const OVERRIDE;
34
35 private:
36 DISALLOW_COPY_AND_ASSIGN(FakeTiclSettingsProvider);
37 };
38
39 FakeTiclSettingsProvider::FakeTiclSettingsProvider() {
40 }
41
42 FakeTiclSettingsProvider::~FakeTiclSettingsProvider() {
43 }
44
45 bool FakeTiclSettingsProvider::UseGCMChannel() const {
46 return false;
47 }
48
49 } // namespace
50
51 class TiclInvalidationServiceTestDelegate {
52 public:
53 TiclInvalidationServiceTestDelegate() {}
54
55 ~TiclInvalidationServiceTestDelegate() {
56 }
57
58 void CreateInvalidationService() {
59 CreateUninitializedInvalidationService();
60 InitializeInvalidationService();
61 }
62
63 void CreateUninitializedInvalidationService() {
64 gcm_driver_.reset(new gcm::FakeGCMDriver());
65 invalidation_service_.reset(new TiclInvalidationService(
66 scoped_ptr<IdentityProvider>(new FakeIdentityProvider(&token_service_)),
67 scoped_ptr<TiclSettingsProvider>(new FakeTiclSettingsProvider),
68 gcm_driver_.get(),
69 NULL));
70 }
71
72 void InitializeInvalidationService() {
73 fake_invalidator_ = new syncer::FakeInvalidator();
74 invalidation_service_->InitForTest(
75 scoped_ptr<syncer::InvalidationStateTracker>(
76 new syncer::FakeInvalidationStateTracker),
77 fake_invalidator_);
78 }
79
80 InvalidationService* GetInvalidationService() {
81 return invalidation_service_.get();
82 }
83
84 void DestroyInvalidationService() {
85 invalidation_service_.reset();
86 }
87
88 void TriggerOnInvalidatorStateChange(syncer::InvalidatorState state) {
89 fake_invalidator_->EmitOnInvalidatorStateChange(state);
90 }
91
92 void TriggerOnIncomingInvalidation(
93 const syncer::ObjectIdInvalidationMap& invalidation_map) {
94 fake_invalidator_->EmitOnIncomingInvalidation(invalidation_map);
95 }
96
97 FakeOAuth2TokenService token_service_;
98 scoped_ptr<gcm::GCMDriver> gcm_driver_;
99 syncer::FakeInvalidator* fake_invalidator_; // Owned by the service.
100
101 scoped_ptr<TiclInvalidationService> invalidation_service_;
102 };
103
104 INSTANTIATE_TYPED_TEST_CASE_P(
105 TiclInvalidationServiceTest, InvalidationServiceTest,
106 TiclInvalidationServiceTestDelegate);
107
108 namespace internal {
109
110 class FakeCallbackContainer {
111 public:
112 FakeCallbackContainer() : called_(false),
113 weak_ptr_factory_(this) {}
114
115 void FakeCallback(const base::DictionaryValue& value) {
116 called_ = true;
117 }
118
119 bool called_;
120 base::WeakPtrFactory<FakeCallbackContainer> weak_ptr_factory_;
121 };
122
123 } // namespace internal
124
125 // Test that requesting for detailed status doesn't crash even if the
126 // underlying invalidator is not initialized.
127 TEST(TiclInvalidationServiceLoggingTest, DetailedStatusCallbacksWork) {
128 scoped_ptr<TiclInvalidationServiceTestDelegate> delegate (
129 new TiclInvalidationServiceTestDelegate());
130
131 delegate->CreateUninitializedInvalidationService();
132 invalidation::InvalidationService* const invalidator =
133 delegate->GetInvalidationService();
134
135 internal::FakeCallbackContainer fake_container;
136 invalidator->RequestDetailedStatus(
137 base::Bind(&internal::FakeCallbackContainer::FakeCallback,
138 fake_container.weak_ptr_factory_.GetWeakPtr()));
139 EXPECT_FALSE(fake_container.called_);
140
141 delegate->InitializeInvalidationService();
142
143 invalidator->RequestDetailedStatus(
144 base::Bind(&internal::FakeCallbackContainer::FakeCallback,
145 fake_container.weak_ptr_factory_.GetWeakPtr()));
146 EXPECT_TRUE(fake_container.called_);
147 }
148
149 } // namespace invalidation
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698