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

Side by Side Diff: components/gcm_driver/gcm_channel_status_request_unittest.cc

Issue 653843003: [GCM] Start GCMChannelStatusSyncer when GCM is disabled (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix for GCM not reenabled after being disabled on the fly Created 6 years, 2 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/message_loop/message_loop.h" 5 #include "base/message_loop/message_loop.h"
6 #include "components/gcm_driver/gcm_channel_status_request.h" 6 #include "components/gcm_driver/gcm_channel_status_request.h"
7 #include "net/url_request/test_url_fetcher_factory.h" 7 #include "net/url_request/test_url_fetcher_factory.h"
8 #include "net/url_request/url_request_test_util.h" 8 #include "net/url_request/url_request_test_util.h"
9 #include "sync/protocol/experiment_status.pb.h" 9 #include "sync/protocol/experiment_status.pb.h"
10 #include "sync/protocol/experiments_specifics.pb.h" 10 #include "sync/protocol/experiments_specifics.pb.h"
(...skipping 11 matching lines...) Expand all
22 NOT_SPECIFIED, 22 NOT_SPECIFIED,
23 GCM_ENABLED, 23 GCM_ENABLED,
24 GCM_DISABLED, 24 GCM_DISABLED,
25 }; 25 };
26 26
27 void StartRequest(); 27 void StartRequest();
28 void SetResponseStatusAndString(net::HttpStatusCode status_code, 28 void SetResponseStatusAndString(net::HttpStatusCode status_code,
29 const std::string& response_body); 29 const std::string& response_body);
30 void SetResponseProtoData(GCMStatus status, int poll_interval_seconds); 30 void SetResponseProtoData(GCMStatus status, int poll_interval_seconds);
31 void CompleteFetch(); 31 void CompleteFetch();
32 void OnRequestCompleted(bool enabled, int poll_interval_seconds); 32 void OnRequestCompleted(bool update_received,
33 bool enabled,
34 int poll_interval_seconds);
33 35
34 scoped_ptr<GCMChannelStatusRequest> request_; 36 scoped_ptr<GCMChannelStatusRequest> request_;
35 base::MessageLoop message_loop_; 37 base::MessageLoop message_loop_;
36 net::TestURLFetcherFactory url_fetcher_factory_; 38 net::TestURLFetcherFactory url_fetcher_factory_;
37 scoped_refptr<net::TestURLRequestContextGetter> url_request_context_getter_; 39 scoped_refptr<net::TestURLRequestContextGetter> url_request_context_getter_;
38 bool request_callback_invoked_; 40 bool request_callback_invoked_;
41 bool update_received_;
39 bool enabled_; 42 bool enabled_;
40 int poll_interval_seconds_; 43 int poll_interval_seconds_;
41 }; 44 };
42 45
43 GCMChannelStatusRequestTest::GCMChannelStatusRequestTest() 46 GCMChannelStatusRequestTest::GCMChannelStatusRequestTest()
44 : url_request_context_getter_(new net::TestURLRequestContextGetter( 47 : url_request_context_getter_(new net::TestURLRequestContextGetter(
45 message_loop_.message_loop_proxy())), 48 message_loop_.message_loop_proxy())),
46 request_callback_invoked_(false), 49 request_callback_invoked_(false),
50 update_received_(false),
47 enabled_(true), 51 enabled_(true),
48 poll_interval_seconds_(0) { 52 poll_interval_seconds_(0) {
49 } 53 }
50 54
51 GCMChannelStatusRequestTest::~GCMChannelStatusRequestTest() { 55 GCMChannelStatusRequestTest::~GCMChannelStatusRequestTest() {
52 } 56 }
53 57
54 void GCMChannelStatusRequestTest::StartRequest() { 58 void GCMChannelStatusRequestTest::StartRequest() {
55 request_.reset(new GCMChannelStatusRequest( 59 request_.reset(new GCMChannelStatusRequest(
56 url_request_context_getter_.get(), 60 url_request_context_getter_.get(),
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 } 94 }
91 95
92 void GCMChannelStatusRequestTest::CompleteFetch() { 96 void GCMChannelStatusRequestTest::CompleteFetch() {
93 request_callback_invoked_ = false; 97 request_callback_invoked_ = false;
94 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0); 98 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0);
95 ASSERT_TRUE(fetcher); 99 ASSERT_TRUE(fetcher);
96 fetcher->delegate()->OnURLFetchComplete(fetcher); 100 fetcher->delegate()->OnURLFetchComplete(fetcher);
97 } 101 }
98 102
99 void GCMChannelStatusRequestTest::OnRequestCompleted( 103 void GCMChannelStatusRequestTest::OnRequestCompleted(
100 bool enabled, int poll_interval_seconds) { 104 bool update_received, bool enabled, int poll_interval_seconds) {
101 request_callback_invoked_ = true; 105 request_callback_invoked_ = true;
106 update_received_ = update_received;
102 enabled_ = enabled; 107 enabled_ = enabled;
103 poll_interval_seconds_ = poll_interval_seconds; 108 poll_interval_seconds_ = poll_interval_seconds;
104 } 109 }
105 110
106 TEST_F(GCMChannelStatusRequestTest, ResponseHttpStatusNotOK) { 111 TEST_F(GCMChannelStatusRequestTest, ResponseHttpStatusNotOK) {
107 StartRequest(); 112 StartRequest();
108 SetResponseStatusAndString(net::HTTP_UNAUTHORIZED, ""); 113 SetResponseStatusAndString(net::HTTP_UNAUTHORIZED, "");
109 CompleteFetch(); 114 CompleteFetch();
110 115
111 EXPECT_FALSE(request_callback_invoked_); 116 EXPECT_FALSE(request_callback_invoked_);
112 } 117 }
113 118
114 TEST_F(GCMChannelStatusRequestTest, ResponseEmpty) { 119 TEST_F(GCMChannelStatusRequestTest, ResponseEmpty) {
115 StartRequest(); 120 StartRequest();
116 SetResponseStatusAndString(net::HTTP_OK, ""); 121 SetResponseStatusAndString(net::HTTP_OK, "");
117 CompleteFetch(); 122 CompleteFetch();
118 123
119 EXPECT_FALSE(request_callback_invoked_); 124 EXPECT_TRUE(request_callback_invoked_);
125 EXPECT_FALSE(update_received_);
120 } 126 }
121 127
122 TEST_F(GCMChannelStatusRequestTest, ResponseNotInProtoFormat) { 128 TEST_F(GCMChannelStatusRequestTest, ResponseNotInProtoFormat) {
123 StartRequest(); 129 StartRequest();
124 SetResponseStatusAndString(net::HTTP_OK, "foo"); 130 SetResponseStatusAndString(net::HTTP_OK, "foo");
125 CompleteFetch(); 131 CompleteFetch();
126 132
127 EXPECT_FALSE(request_callback_invoked_); 133 EXPECT_FALSE(request_callback_invoked_);
128 } 134 }
129 135
130 TEST_F(GCMChannelStatusRequestTest, ResponseEmptyProtoData) { 136 TEST_F(GCMChannelStatusRequestTest, ResponseEmptyProtoData) {
131 StartRequest(); 137 StartRequest();
132 SetResponseProtoData(NOT_SPECIFIED, 0); 138 SetResponseProtoData(NOT_SPECIFIED, 0);
133 CompleteFetch(); 139 CompleteFetch();
134 140
135 EXPECT_FALSE(request_callback_invoked_); 141 EXPECT_TRUE(request_callback_invoked_);
142 EXPECT_FALSE(update_received_);
136 } 143 }
137 144
138 TEST_F(GCMChannelStatusRequestTest, ResponseWithDisabledStatus) { 145 TEST_F(GCMChannelStatusRequestTest, ResponseWithDisabledStatus) {
139 StartRequest(); 146 StartRequest();
140 SetResponseProtoData(GCM_DISABLED, 0); 147 SetResponseProtoData(GCM_DISABLED, 0);
141 CompleteFetch(); 148 CompleteFetch();
142 149
143 EXPECT_TRUE(request_callback_invoked_); 150 EXPECT_TRUE(request_callback_invoked_);
151 EXPECT_TRUE(update_received_);
144 EXPECT_FALSE(enabled_); 152 EXPECT_FALSE(enabled_);
145 EXPECT_EQ( 153 EXPECT_EQ(
146 GCMChannelStatusRequest::default_poll_interval_seconds(), 154 GCMChannelStatusRequest::default_poll_interval_seconds(),
147 poll_interval_seconds_); 155 poll_interval_seconds_);
148 } 156 }
149 157
150 TEST_F(GCMChannelStatusRequestTest, ResponseWithEnabledStatus) { 158 TEST_F(GCMChannelStatusRequestTest, ResponseWithEnabledStatus) {
151 StartRequest(); 159 StartRequest();
152 SetResponseProtoData(GCM_ENABLED, 0); 160 SetResponseProtoData(GCM_ENABLED, 0);
153 CompleteFetch(); 161 CompleteFetch();
154 162
155 EXPECT_TRUE(request_callback_invoked_); 163 EXPECT_TRUE(request_callback_invoked_);
164 EXPECT_TRUE(update_received_);
156 EXPECT_TRUE(enabled_); 165 EXPECT_TRUE(enabled_);
157 EXPECT_EQ( 166 EXPECT_EQ(
158 GCMChannelStatusRequest::default_poll_interval_seconds(), 167 GCMChannelStatusRequest::default_poll_interval_seconds(),
159 poll_interval_seconds_); 168 poll_interval_seconds_);
160 } 169 }
161 170
162 TEST_F(GCMChannelStatusRequestTest, ResponseWithPollInterval) { 171 TEST_F(GCMChannelStatusRequestTest, ResponseWithPollInterval) {
163 // Setting a poll interval 15 minutes longer than the minimum interval we 172 // Setting a poll interval 15 minutes longer than the minimum interval we
164 // enforce. 173 // enforce.
165 int poll_interval_seconds = 174 int poll_interval_seconds =
166 GCMChannelStatusRequest::min_poll_interval_seconds() + 15 * 60; 175 GCMChannelStatusRequest::min_poll_interval_seconds() + 15 * 60;
167 StartRequest(); 176 StartRequest();
168 SetResponseProtoData(NOT_SPECIFIED, poll_interval_seconds); 177 SetResponseProtoData(NOT_SPECIFIED, poll_interval_seconds);
169 CompleteFetch(); 178 CompleteFetch();
170 179
171 EXPECT_TRUE(request_callback_invoked_); 180 EXPECT_TRUE(request_callback_invoked_);
181 EXPECT_TRUE(update_received_);
172 EXPECT_TRUE(enabled_); 182 EXPECT_TRUE(enabled_);
173 EXPECT_EQ(poll_interval_seconds, poll_interval_seconds_); 183 EXPECT_EQ(poll_interval_seconds, poll_interval_seconds_);
174 } 184 }
175 185
176 TEST_F(GCMChannelStatusRequestTest, ResponseWithShortPollInterval) { 186 TEST_F(GCMChannelStatusRequestTest, ResponseWithShortPollInterval) {
177 // Setting a poll interval 15 minutes shorter than the minimum interval we 187 // Setting a poll interval 15 minutes shorter than the minimum interval we
178 // enforce. 188 // enforce.
179 int poll_interval_seconds = 189 int poll_interval_seconds =
180 GCMChannelStatusRequest::min_poll_interval_seconds() - 15 * 60; 190 GCMChannelStatusRequest::min_poll_interval_seconds() - 15 * 60;
181 StartRequest(); 191 StartRequest();
182 SetResponseProtoData(NOT_SPECIFIED, poll_interval_seconds); 192 SetResponseProtoData(NOT_SPECIFIED, poll_interval_seconds);
183 CompleteFetch(); 193 CompleteFetch();
184 194
185 EXPECT_TRUE(request_callback_invoked_); 195 EXPECT_TRUE(request_callback_invoked_);
196 EXPECT_TRUE(update_received_);
186 EXPECT_TRUE(enabled_); 197 EXPECT_TRUE(enabled_);
187 EXPECT_EQ(GCMChannelStatusRequest::min_poll_interval_seconds(), 198 EXPECT_EQ(GCMChannelStatusRequest::min_poll_interval_seconds(),
188 poll_interval_seconds_); 199 poll_interval_seconds_);
189 } 200 }
190 201
191 TEST_F(GCMChannelStatusRequestTest, ResponseWithDisabledStatusAndPollInterval) { 202 TEST_F(GCMChannelStatusRequestTest, ResponseWithDisabledStatusAndPollInterval) {
192 int poll_interval_seconds = 203 int poll_interval_seconds =
193 GCMChannelStatusRequest::min_poll_interval_seconds() + 15 * 60; 204 GCMChannelStatusRequest::min_poll_interval_seconds() + 15 * 60;
194 StartRequest(); 205 StartRequest();
195 SetResponseProtoData(GCM_DISABLED, poll_interval_seconds); 206 SetResponseProtoData(GCM_DISABLED, poll_interval_seconds);
196 CompleteFetch(); 207 CompleteFetch();
197 208
198 EXPECT_TRUE(request_callback_invoked_); 209 EXPECT_TRUE(request_callback_invoked_);
210 EXPECT_TRUE(update_received_);
199 EXPECT_FALSE(enabled_); 211 EXPECT_FALSE(enabled_);
200 EXPECT_EQ(poll_interval_seconds, poll_interval_seconds_); 212 EXPECT_EQ(poll_interval_seconds, poll_interval_seconds_);
201 } 213 }
202 214
203 } // namespace gcm 215 } // namespace gcm
OLDNEW
« no previous file with comments | « components/gcm_driver/gcm_channel_status_request.cc ('k') | components/gcm_driver/gcm_channel_status_syncer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698