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

Side by Side Diff: components/invalidation/gcm_network_channel_unittest.cc

Issue 334253006: Notify SyncNetworkChannel about GCM connection state (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed typo 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
« no previous file with comments | « components/invalidation/gcm_network_channel_delegate.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/run_loop.h" 5 #include "base/run_loop.h"
6 #include "base/strings/string_util.h" 6 #include "base/strings/string_util.h"
7 #include "components/invalidation/gcm_network_channel.h" 7 #include "components/invalidation/gcm_network_channel.h"
8 #include "google_apis/gaia/google_service_auth_error.h" 8 #include "google_apis/gaia/google_service_auth_error.h"
9 #include "net/url_request/test_url_fetcher_factory.h" 9 #include "net/url_request/test_url_fetcher_factory.h"
10 #include "net/url_request/url_request_test_util.h" 10 #include "net/url_request/url_request_test_util.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 namespace syncer { 13 namespace syncer {
14 14
15 class TestGCMNetworkChannelDelegate : public GCMNetworkChannelDelegate { 15 class TestGCMNetworkChannelDelegate : public GCMNetworkChannelDelegate {
16 public: 16 public:
17 TestGCMNetworkChannelDelegate() 17 TestGCMNetworkChannelDelegate()
18 : register_call_count_(0) {} 18 : register_call_count_(0) {}
19 19
20 virtual void Initialize() OVERRIDE {} 20 virtual void Initialize(
21 GCMNetworkChannelDelegate::ConnectionStateCallback callback) OVERRIDE {
22 connection_state_callback = callback;
23 }
21 24
22 virtual void RequestToken(RequestTokenCallback callback) OVERRIDE { 25 virtual void RequestToken(RequestTokenCallback callback) OVERRIDE {
23 request_token_callback = callback; 26 request_token_callback = callback;
24 } 27 }
25 28
26 virtual void InvalidateToken(const std::string& token) OVERRIDE { 29 virtual void InvalidateToken(const std::string& token) OVERRIDE {
27 invalidated_token = token; 30 invalidated_token = token;
28 } 31 }
29 32
30 virtual void Register(RegisterCallback callback) OVERRIDE { 33 virtual void Register(RegisterCallback callback) OVERRIDE {
31 ++register_call_count_; 34 ++register_call_count_;
32 register_callback = callback; 35 register_callback = callback;
33 } 36 }
34 37
35 virtual void SetMessageReceiver(MessageCallback callback) OVERRIDE { 38 virtual void SetMessageReceiver(MessageCallback callback) OVERRIDE {
36 message_callback = callback; 39 message_callback = callback;
37 } 40 }
38 41
39 RequestTokenCallback request_token_callback; 42 RequestTokenCallback request_token_callback;
40 std::string invalidated_token; 43 std::string invalidated_token;
41 RegisterCallback register_callback; 44 RegisterCallback register_callback;
42 int register_call_count_; 45 int register_call_count_;
43 MessageCallback message_callback; 46 MessageCallback message_callback;
47 ConnectionStateCallback connection_state_callback;
44 }; 48 };
45 49
46 // Backoff policy for test. Run first 5 retries without delay. 50 // Backoff policy for test. Run first 5 retries without delay.
47 const net::BackoffEntry::Policy kTestBackoffPolicy = { 51 const net::BackoffEntry::Policy kTestBackoffPolicy = {
48 // Number of initial errors (in sequence) to ignore before applying 52 // Number of initial errors (in sequence) to ignore before applying
49 // exponential back-off rules. 53 // exponential back-off rules.
50 5, 54 5,
51 55
52 // Initial delay for exponential back-off in ms. 56 // Initial delay for exponential back-off in ms.
53 2000, // 2 seconds. 57 2000, // 2 seconds.
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 EXPECT_EQ(input, plain); 403 EXPECT_EQ(input, plain);
400 } 404 }
401 // Presence of '-', '_'. 405 // Presence of '-', '_'.
402 input = "\xfb\xff"; 406 input = "\xfb\xff";
403 Base64EncodeURLSafe(input, &base64); 407 Base64EncodeURLSafe(input, &base64);
404 EXPECT_EQ("-_8", base64); 408 EXPECT_EQ("-_8", base64);
405 EXPECT_TRUE(Base64DecodeURLSafe(base64, &plain)); 409 EXPECT_TRUE(Base64DecodeURLSafe(base64, &plain));
406 EXPECT_EQ(input, plain); 410 EXPECT_EQ(input, plain);
407 } 411 }
408 412
409 TEST_F(GCMNetworkChannelTest, TransientError) { 413 TEST_F(GCMNetworkChannelTest, HttpTransientError) {
410 EXPECT_FALSE(delegate()->message_callback.is_null()); 414 EXPECT_FALSE(delegate()->message_callback.is_null());
411 // POST will fail. 415 // POST will fail.
412 url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"), 416 url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"),
413 std::string(), 417 std::string(),
414 net::HTTP_SERVICE_UNAVAILABLE, 418 net::HTTP_SERVICE_UNAVAILABLE,
415 net::URLRequestStatus::SUCCESS); 419 net::URLRequestStatus::SUCCESS);
416 420
417 delegate()->register_callback.Run("registration.id", gcm::GCMClient::SUCCESS); 421 delegate()->register_callback.Run("registration.id", gcm::GCMClient::SUCCESS);
418 422
419 network_channel()->SendMessage("abra.cadabra"); 423 network_channel()->SendMessage("abra.cadabra");
(...skipping 10 matching lines...) Expand all
430 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, get_last_invalidator_state()); 434 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, get_last_invalidator_state());
431 // Network change to something else should trigger retry. 435 // Network change to something else should trigger retry.
432 network_channel()->OnNetworkChanged( 436 network_channel()->OnNetworkChanged(
433 net::NetworkChangeNotifier::CONNECTION_WIFI); 437 net::NetworkChangeNotifier::CONNECTION_WIFI);
434 EXPECT_EQ(INVALIDATIONS_ENABLED, get_last_invalidator_state()); 438 EXPECT_EQ(INVALIDATIONS_ENABLED, get_last_invalidator_state());
435 network_channel()->OnNetworkChanged( 439 network_channel()->OnNetworkChanged(
436 net::NetworkChangeNotifier::CONNECTION_NONE); 440 net::NetworkChangeNotifier::CONNECTION_NONE);
437 EXPECT_EQ(INVALIDATIONS_ENABLED, get_last_invalidator_state()); 441 EXPECT_EQ(INVALIDATIONS_ENABLED, get_last_invalidator_state());
438 } 442 }
439 443
444 TEST_F(GCMNetworkChannelTest, GcmConnectionState) {
445 delegate()->connection_state_callback.Run(
446 GCMNetworkChannelDelegate::CONNECTION_STATE_OFFLINE);
447 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, get_last_invalidator_state());
448 delegate()->connection_state_callback.Run(
449 GCMNetworkChannelDelegate::CONNECTION_STATE_ONLINE);
450 EXPECT_EQ(INVALIDATIONS_ENABLED, get_last_invalidator_state());
451 }
452
440 #if !defined(OS_ANDROID) 453 #if !defined(OS_ANDROID)
441 TEST_F(GCMNetworkChannelTest, BuildUrl) { 454 TEST_F(GCMNetworkChannelTest, BuildUrl) {
442 GURL url = BuildUrl("registration.id"); 455 GURL url = BuildUrl("registration.id");
443 EXPECT_TRUE(url.SchemeIsHTTPOrHTTPS()); 456 EXPECT_TRUE(url.SchemeIsHTTPOrHTTPS());
444 EXPECT_FALSE(url.host().empty()); 457 EXPECT_FALSE(url.host().empty());
445 EXPECT_FALSE(url.path().empty()); 458 EXPECT_FALSE(url.path().empty());
446 std::vector<std::string> parts; 459 std::vector<std::string> parts;
447 Tokenize(url.path(), "/", &parts); 460 Tokenize(url.path(), "/", &parts);
448 std::string buffer; 461 std::string buffer;
449 EXPECT_TRUE(Base64DecodeURLSafe(parts[parts.size() - 1], &buffer)); 462 EXPECT_TRUE(Base64DecodeURLSafe(parts[parts.size() - 1], &buffer));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 delegate()->request_token_callback.Run( 498 delegate()->request_token_callback.Run(
486 GoogleServiceAuthError::AuthErrorNone(), "access.token"); 499 GoogleServiceAuthError::AuthErrorNone(), "access.token");
487 RunLoopUntilIdle(); 500 RunLoopUntilIdle();
488 EXPECT_EQ(url_fetchers_created_count(), 3); 501 EXPECT_EQ(url_fetchers_created_count(), 3);
489 // Echo_token should be from second message. 502 // Echo_token should be from second message.
490 EXPECT_EQ("echo.token", get_last_echo_token()); 503 EXPECT_EQ("echo.token", get_last_echo_token());
491 } 504 }
492 #endif 505 #endif
493 506
494 } // namespace syncer 507 } // namespace syncer
OLDNEW
« no previous file with comments | « components/invalidation/gcm_network_channel_delegate.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698