OLD | NEW |
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 "base/run_loop.h" | 6 #include "base/run_loop.h" |
7 #include "chromeos/geolocation/geoposition.h" | 7 #include "chromeos/geolocation/geoposition.h" |
8 #include "chromeos/timezone/timezone_provider.h" | 8 #include "chromeos/timezone/timezone_provider.h" |
9 #include "net/http/http_response_headers.h" | 9 #include "net/http/http_response_headers.h" |
10 #include "net/http/http_status_code.h" | 10 #include "net/http/http_status_code.h" |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 const SimpleRequest simple_request; | 203 const SimpleRequest simple_request; |
204 | 204 |
205 TimeZoneAPIFetcherFactory url_factory(simple_request.url, | 205 TimeZoneAPIFetcherFactory url_factory(simple_request.url, |
206 simple_request.http_response, | 206 simple_request.http_response, |
207 0 /* require_retries */, | 207 0 /* require_retries */, |
208 &provider); | 208 &provider); |
209 | 209 |
210 TimeZoneReceiver receiver; | 210 TimeZoneReceiver receiver; |
211 | 211 |
212 provider.RequestTimezone(simple_request.position, | 212 provider.RequestTimezone(simple_request.position, |
213 false, | |
214 base::TimeDelta::FromSeconds(1), | 213 base::TimeDelta::FromSeconds(1), |
215 base::Bind(&TimeZoneReceiver::OnRequestDone, | 214 base::Bind(&TimeZoneReceiver::OnRequestDone, |
216 base::Unretained(&receiver))); | 215 base::Unretained(&receiver))); |
217 receiver.WaitUntilRequestDone(); | 216 receiver.WaitUntilRequestDone(); |
218 | 217 |
219 EXPECT_EQ(simple_request.timezone.ToStringForDebug(), | 218 EXPECT_EQ(simple_request.timezone.ToStringForDebug(), |
220 receiver.timezone()->ToStringForDebug()); | 219 receiver.timezone()->ToStringForDebug()); |
221 EXPECT_FALSE(receiver.server_error()); | 220 EXPECT_FALSE(receiver.server_error()); |
222 EXPECT_EQ(1U, url_factory.attempts()); | 221 EXPECT_EQ(1U, url_factory.attempts()); |
223 } | 222 } |
224 | 223 |
225 TEST_F(TimeZoneTest, ResponseOKWithRetries) { | 224 TEST_F(TimeZoneTest, ResponseOKWithRetries) { |
226 TimeZoneProvider provider(NULL, GURL(kTestTimeZoneProviderUrl)); | 225 TimeZoneProvider provider(NULL, GURL(kTestTimeZoneProviderUrl)); |
227 const SimpleRequest simple_request; | 226 const SimpleRequest simple_request; |
228 | 227 |
229 TimeZoneAPIFetcherFactory url_factory(simple_request.url, | 228 TimeZoneAPIFetcherFactory url_factory(simple_request.url, |
230 simple_request.http_response, | 229 simple_request.http_response, |
231 3 /* require_retries */, | 230 3 /* require_retries */, |
232 &provider); | 231 &provider); |
233 | 232 |
234 TimeZoneReceiver receiver; | 233 TimeZoneReceiver receiver; |
235 | 234 |
236 provider.RequestTimezone(simple_request.position, | 235 provider.RequestTimezone(simple_request.position, |
237 false, | |
238 base::TimeDelta::FromSeconds(1), | 236 base::TimeDelta::FromSeconds(1), |
239 base::Bind(&TimeZoneReceiver::OnRequestDone, | 237 base::Bind(&TimeZoneReceiver::OnRequestDone, |
240 base::Unretained(&receiver))); | 238 base::Unretained(&receiver))); |
241 receiver.WaitUntilRequestDone(); | 239 receiver.WaitUntilRequestDone(); |
242 EXPECT_EQ(simple_request.timezone.ToStringForDebug(), | 240 EXPECT_EQ(simple_request.timezone.ToStringForDebug(), |
243 receiver.timezone()->ToStringForDebug()); | 241 receiver.timezone()->ToStringForDebug()); |
244 EXPECT_FALSE(receiver.server_error()); | 242 EXPECT_FALSE(receiver.server_error()); |
245 EXPECT_EQ(4U, url_factory.attempts()); | 243 EXPECT_EQ(4U, url_factory.attempts()); |
246 } | 244 } |
247 | 245 |
248 TEST_F(TimeZoneTest, InvalidResponse) { | 246 TEST_F(TimeZoneTest, InvalidResponse) { |
249 TimeZoneProvider provider(NULL, GURL(kTestTimeZoneProviderUrl)); | 247 TimeZoneProvider provider(NULL, GURL(kTestTimeZoneProviderUrl)); |
250 const SimpleRequest simple_request; | 248 const SimpleRequest simple_request; |
251 | 249 |
252 TimeZoneAPIFetcherFactory url_factory(simple_request.url, | 250 TimeZoneAPIFetcherFactory url_factory(simple_request.url, |
253 "invalid JSON string", | 251 "invalid JSON string", |
254 0 /* require_retries */, | 252 0 /* require_retries */, |
255 &provider); | 253 &provider); |
256 | 254 |
257 TimeZoneReceiver receiver; | 255 TimeZoneReceiver receiver; |
258 | 256 |
259 const int timeout_seconds = 1; | 257 const int timeout_seconds = 1; |
260 size_t expected_retries = static_cast<size_t>( | 258 size_t expected_retries = static_cast<size_t>( |
261 timeout_seconds * 1000 / kRequestRetryIntervalMilliSeconds); | 259 timeout_seconds * 1000 / kRequestRetryIntervalMilliSeconds); |
262 ASSERT_GE(expected_retries, 2U); | 260 ASSERT_GE(expected_retries, 2U); |
263 | 261 |
264 provider.RequestTimezone(simple_request.position, | 262 provider.RequestTimezone(simple_request.position, |
265 false, | |
266 base::TimeDelta::FromSeconds(timeout_seconds), | 263 base::TimeDelta::FromSeconds(timeout_seconds), |
267 base::Bind(&TimeZoneReceiver::OnRequestDone, | 264 base::Bind(&TimeZoneReceiver::OnRequestDone, |
268 base::Unretained(&receiver))); | 265 base::Unretained(&receiver))); |
269 receiver.WaitUntilRequestDone(); | 266 receiver.WaitUntilRequestDone(); |
270 EXPECT_EQ( | 267 EXPECT_EQ( |
271 "dstOffset=0.000000, rawOffset=0.000000, timeZoneId='', timeZoneName='', " | 268 "dstOffset=0.000000, rawOffset=0.000000, timeZoneId='', timeZoneName='', " |
272 "error_message='TimeZone provider at 'https://localhost/' : JSONReader " | 269 "error_message='TimeZone provider at 'https://localhost/' : JSONReader " |
273 "failed: Line: 1, column: 1, Unexpected token..', status=6 " | 270 "failed: Line: 1, column: 1, Unexpected token..', status=6 " |
274 "(REQUEST_ERROR)", | 271 "(REQUEST_ERROR)", |
275 receiver.timezone()->ToStringForDebug()); | 272 receiver.timezone()->ToStringForDebug()); |
276 EXPECT_FALSE(receiver.server_error()); | 273 EXPECT_FALSE(receiver.server_error()); |
277 EXPECT_GE(url_factory.attempts(), 2U); | 274 EXPECT_GE(url_factory.attempts(), 2U); |
278 if (url_factory.attempts() > expected_retries + 1) { | 275 if (url_factory.attempts() > expected_retries + 1) { |
279 LOG(WARNING) << "TimeZoneTest::InvalidResponse: Too many attempts (" | 276 LOG(WARNING) << "TimeZoneTest::InvalidResponse: Too many attempts (" |
280 << url_factory.attempts() << "), no more then " | 277 << url_factory.attempts() << "), no more then " |
281 << expected_retries + 1 << " expected."; | 278 << expected_retries + 1 << " expected."; |
282 } | 279 } |
283 if (url_factory.attempts() < expected_retries - 1) { | 280 if (url_factory.attempts() < expected_retries - 1) { |
284 LOG(WARNING) << "TimeZoneTest::InvalidResponse: Too less attempts (" | 281 LOG(WARNING) << "TimeZoneTest::InvalidResponse: Too less attempts (" |
285 << url_factory.attempts() << "), greater then " | 282 << url_factory.attempts() << "), greater then " |
286 << expected_retries - 1 << " expected."; | 283 << expected_retries - 1 << " expected."; |
287 } | 284 } |
288 } | 285 } |
289 | 286 |
290 } // namespace chromeos | 287 } // namespace chromeos |
OLD | NEW |