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

Unified Diff: chrome/browser/chromeos/contacts/google_contact_store_unittest.cc

Issue 10829247: contacts: Defer updates when offline. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/contacts/google_contact_store_unittest.cc
diff --git a/chrome/browser/chromeos/contacts/google_contact_store_unittest.cc b/chrome/browser/chromeos/contacts/google_contact_store_unittest.cc
index eae94fdb18f973f84b24bd84d256b00c6bbad022..714d003874224c49706de1ba46ea815db066aee7 100644
--- a/chrome/browser/chromeos/contacts/google_contact_store_unittest.cc
+++ b/chrome/browser/chromeos/contacts/google_contact_store_unittest.cc
@@ -17,6 +17,7 @@
#include "chrome/browser/chromeos/gdata/gdata_util.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/test/test_browser_thread.h"
+#include "net/base/network_change_notifier.h"
#include "testing/gtest/include/gtest/gtest.h"
using content::BrowserThread;
@@ -55,7 +56,9 @@ class GoogleContactStoreTest : public testing::Test {
protected:
// testing::Test implementation.
virtual void SetUp() OVERRIDE {
- testing::Test::SetUp();
+ // Create a mock NetworkChangeNotifier so the store won't be notified about
+ // changes to the system's actual network state.
+ network_change_notifier_.reset(net::NetworkChangeNotifier::CreateMock());
profile_.reset(new TestingProfile);
store_.reset(new GoogleContactStore(profile_.get()));
@@ -74,6 +77,7 @@ class GoogleContactStoreTest : public testing::Test {
content::TestBrowserThread ui_thread_;
TestContactStoreObserver observer_;
+ scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_;
scoped_ptr<TestingProfile> profile_;
scoped_ptr<GoogleContactStore> store_;
scoped_ptr<GoogleContactStore::TestAPI> test_api_;
@@ -377,5 +381,35 @@ TEST_F(GoogleContactStoreTest, HandleDatabaseInitFailure) {
EXPECT_TRUE(test_api_->update_scheduled());
}
+TEST_F(GoogleContactStoreTest, AvoidUpdatesWhenOffline) {
+ EXPECT_EQ(0, gdata_service_->num_download_requests());
+
+ // Notify the store that we're offline. Init() shouldn't attempt an update
+ // and the update timer shouldn't be running.
+ test_api_->NotifyAboutNetworkStateChange(false);
+ store_->Init();
+ EXPECT_EQ(0, gdata_service_->num_download_requests());
+ EXPECT_FALSE(test_api_->update_scheduled());
+
+ // We should do an update and schedule further updates as soon as we go
+ // online.
+ gdata_service_->reset_stats();
+ test_api_->NotifyAboutNetworkStateChange(true);
+ EXPECT_EQ(1, gdata_service_->num_download_requests());
+ EXPECT_TRUE(test_api_->update_scheduled());
+
+ // If we call DoUpdate() to mimic the code path that's used for a timer-driven
+ // update while we're offline, we should again defer the update.
+ gdata_service_->reset_stats();
+ test_api_->NotifyAboutNetworkStateChange(false);
+ test_api_->DoUpdate();
+ EXPECT_EQ(0, gdata_service_->num_download_requests());
+
+ // When we're back online, the update should happen.
+ gdata_service_->reset_stats();
+ test_api_->NotifyAboutNetworkStateChange(true);
+ EXPECT_EQ(1, gdata_service_->num_download_requests());
+}
+
} // namespace test
} // namespace contacts

Powered by Google App Engine
This is Rietveld 408576698