Index: components/invalidation/gcm_network_channel_unittest.cc |
diff --git a/components/invalidation/gcm_network_channel_unittest.cc b/components/invalidation/gcm_network_channel_unittest.cc |
index be61ba98a1ef4d322d55c408acd0e30f7c360bdd..a974b838b6c75ee424b967421c88976b564d5483 100644 |
--- a/components/invalidation/gcm_network_channel_unittest.cc |
+++ b/components/invalidation/gcm_network_channel_unittest.cc |
@@ -250,6 +250,8 @@ TEST_F(GCMNetworkChannelTest, HappyCase) { |
net::HTTP_NO_CONTENT, |
net::URLRequestStatus::SUCCESS); |
+ // Emulate gcm connection state to be online. |
+ delegate()->connection_state_callback.Run(true); |
// After construction GCMNetworkChannel should have called Register. |
EXPECT_FALSE(delegate()->register_callback.is_null()); |
// Return valid registration id. |
@@ -410,7 +412,7 @@ TEST_F(GCMNetworkChannelTest, Base64EncodeDecode) { |
EXPECT_EQ(input, plain); |
} |
-TEST_F(GCMNetworkChannelTest, HttpTransientError) { |
+TEST_F(GCMNetworkChannelTest, ChannelState) { |
EXPECT_FALSE(delegate()->message_callback.is_null()); |
// POST will fail. |
url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"), |
@@ -418,6 +420,7 @@ TEST_F(GCMNetworkChannelTest, HttpTransientError) { |
net::HTTP_SERVICE_UNAVAILABLE, |
net::URLRequestStatus::SUCCESS); |
+ delegate()->connection_state_callback.Run(true); |
delegate()->register_callback.Run("registration.id", gcm::GCMClient::SUCCESS); |
network_channel()->SendMessage("abra.cadabra"); |
@@ -428,25 +431,29 @@ TEST_F(GCMNetworkChannelTest, HttpTransientError) { |
EXPECT_EQ(url_fetchers_created_count(), 1); |
// Failing HTTP POST should cause TRANSIENT_INVALIDATION_ERROR. |
EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, get_last_invalidator_state()); |
- // Network change to CONNECTION_NONE shouldn't affect invalidator state. |
- network_channel()->OnNetworkChanged( |
- net::NetworkChangeNotifier::CONNECTION_NONE); |
- EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, get_last_invalidator_state()); |
- // Network change to something else should trigger retry. |
- network_channel()->OnNetworkChanged( |
- net::NetworkChangeNotifier::CONNECTION_WIFI); |
+ |
+ // Setup POST to succeed. |
+ url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"), |
+ "", |
+ net::HTTP_NO_CONTENT, |
+ net::URLRequestStatus::SUCCESS); |
+ network_channel()->SendMessage("abra.cadabra"); |
+ EXPECT_FALSE(delegate()->request_token_callback.is_null()); |
+ delegate()->request_token_callback.Run( |
+ GoogleServiceAuthError::AuthErrorNone(), "access.token"); |
+ RunLoopUntilIdle(); |
+ EXPECT_EQ(url_fetchers_created_count(), 2); |
+ // Successful post should set invalidator state to enabled. |
EXPECT_EQ(INVALIDATIONS_ENABLED, get_last_invalidator_state()); |
+ // Network changed event shouldn't affect invalidator state. |
network_channel()->OnNetworkChanged( |
net::NetworkChangeNotifier::CONNECTION_NONE); |
EXPECT_EQ(INVALIDATIONS_ENABLED, get_last_invalidator_state()); |
-} |
-TEST_F(GCMNetworkChannelTest, GcmConnectionState) { |
- delegate()->connection_state_callback.Run( |
- GCMNetworkChannelDelegate::CONNECTION_STATE_OFFLINE); |
+ // GCM connection state should affect invalidator state. |
+ delegate()->connection_state_callback.Run(false); |
EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, get_last_invalidator_state()); |
- delegate()->connection_state_callback.Run( |
- GCMNetworkChannelDelegate::CONNECTION_STATE_ONLINE); |
+ delegate()->connection_state_callback.Run(true); |
EXPECT_EQ(INVALIDATIONS_ENABLED, get_last_invalidator_state()); |
} |