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

Unified Diff: chrome/browser/chromeos/gdata/gdata_contacts_service_browsertest.cc

Issue 10834220: contacts: Only download contacts from "My Contacts" group. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge and apply review feedback 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/gdata/gdata_contacts_service_browsertest.cc
diff --git a/chrome/browser/chromeos/gdata/gdata_contacts_service_browsertest.cc b/chrome/browser/chromeos/gdata/gdata_contacts_service_browsertest.cc
index c62b5fcf530e8e12dcfb7e265546bbf1ea5ce275..575fc2edc4c1b3a619341790f67f024e240d3979 100644
--- a/chrome/browser/chromeos/gdata/gdata_contacts_service_browsertest.cc
+++ b/chrome/browser/chromeos/gdata/gdata_contacts_service_browsertest.cc
@@ -35,6 +35,9 @@ const FilePath::CharType kTestDataPath[] =
// Base URL where feeds are located on the test server.
const char kFeedBaseUrl[] = "files/chromeos/gdata/contacts/";
+// Filename of JSON feed containing contact groups.
+const char kGroupsFeedFilename[] = "groups.json";
+
// Width and height of /photo.png on the test server.
const int kPhotoSize = 48;
@@ -83,6 +86,8 @@ class GDataContactsServiceTest : public InProcessBrowserTest {
service_->set_rewrite_photo_url_callback_for_testing(
base::Bind(&GDataContactsServiceTest::RewritePhotoUrl,
base::Unretained(this)));
+ service_->set_groups_feed_url_for_testing(
+ test_server_.GetURL(std::string(kFeedBaseUrl) + kGroupsFeedFilename));
service_->set_photo_download_timer_interval_for_testing(
base::TimeDelta::FromMilliseconds(10));
}
@@ -92,8 +97,6 @@ class GDataContactsServiceTest : public InProcessBrowserTest {
}
protected:
- GDataContactsService* service() { return service_.get(); }
-
// Downloads contacts from |feed_filename| (within the chromeos/gdata/contacts
// test data directory). |min_update_time| is appended to the URL and the
// resulting contacts are swapped into |contacts|. Returns false if the
@@ -102,7 +105,7 @@ class GDataContactsServiceTest : public InProcessBrowserTest {
const base::Time& min_update_time,
scoped_ptr<ScopedVector<contacts::Contact> >* contacts) {
DCHECK(contacts);
- service_->set_feed_url_for_testing(
+ service_->set_contacts_feed_url_for_testing(
test_server_.GetURL(kFeedBaseUrl + feed_filename));
service_->DownloadContacts(
base::Bind(&GDataContactsServiceTest::OnSuccess,
@@ -115,6 +118,9 @@ class GDataContactsServiceTest : public InProcessBrowserTest {
return download_was_successful_;
}
+ net::TestServer test_server_;
+ scoped_ptr<GDataContactsService> service_;
+
private:
// Rewrites |original_url|, a photo URL from a contacts feed, to instead point
// at a file on |test_server_|.
@@ -138,9 +144,6 @@ class GDataContactsServiceTest : public InProcessBrowserTest {
MessageLoop::current()->Quit();
}
- net::TestServer test_server_;
- scoped_ptr<GDataContactsService> service_;
-
// Was the last download successful? Used to pass the result back from
// OnSuccess() and OnFailure() to Download().
bool download_was_successful_;
@@ -168,6 +171,27 @@ IN_PROC_BROWSER_TEST_F(GDataContactsServiceTest, BrokenFeeds) {
EXPECT_FALSE((*contacts)[0]->has_raw_untrusted_photo());
}
+// We should report failure when we're unable to download the contact group
+// feed.
+IN_PROC_BROWSER_TEST_F(GDataContactsServiceTest, MissingGroupsFeed) {
+ scoped_ptr<ScopedVector<contacts::Contact> > contacts;
+ service_->set_groups_feed_url_for_testing(
+ test_server_.GetURL(std::string(kFeedBaseUrl) + "404"));
+ EXPECT_FALSE(Download("feed.json", base::Time(), &contacts));
+ EXPECT_TRUE(service_->cached_my_contacts_group_id_for_testing().empty());
+}
+
+// We should also fail when the "My Contacts" group isn't listed in the group
+// feed.
+IN_PROC_BROWSER_TEST_F(GDataContactsServiceTest, NoMyContactsGroup) {
+ scoped_ptr<ScopedVector<contacts::Contact> > contacts;
+ service_->set_groups_feed_url_for_testing(
+ test_server_.GetURL(std::string(kFeedBaseUrl) +
+ "groups_no_my_contacts.json"));
+ EXPECT_FALSE(Download("feed.json", base::Time(), &contacts));
+ EXPECT_TRUE(service_->cached_my_contacts_group_id_for_testing().empty());
+}
+
// Check that we're able to download an empty feed and a normal-looking feed
// with two regular contacts and one deleted one.
IN_PROC_BROWSER_TEST_F(GDataContactsServiceTest, Download) {
@@ -177,6 +201,12 @@ IN_PROC_BROWSER_TEST_F(GDataContactsServiceTest, Download) {
EXPECT_TRUE(Download("feed.json", base::Time(), &contacts));
+ // Check that we got the group ID for the "My Contacts" group that's hardcoded
+ // in the groups feed.
+ EXPECT_EQ(
+ "http://www.google.com/m8/feeds/groups/test.user%40gmail.com/base/6",
+ service_->cached_my_contacts_group_id_for_testing());
+
// All of these expected values are hardcoded in the feed.
scoped_ptr<contacts::Contact> contact1(new contacts::Contact);
InitContact("http://example.com/1",
@@ -244,7 +274,7 @@ IN_PROC_BROWSER_TEST_F(GDataContactsServiceTest, Download) {
IN_PROC_BROWSER_TEST_F(GDataContactsServiceTest, ParallelPhotoDownload) {
// The feed used for this test contains 8 contacts.
const int kNumContacts = 8;
- service()->set_max_photo_downloads_per_second_for_testing(6);
+ service_->set_max_photo_downloads_per_second_for_testing(6);
scoped_ptr<ScopedVector<contacts::Contact> > contacts;
EXPECT_TRUE(Download("feed_multiple_photos.json", base::Time(), &contacts));
ASSERT_EQ(static_cast<size_t>(kNumContacts), contacts->size());
« no previous file with comments | « chrome/browser/chromeos/gdata/gdata_contacts_service.cc ('k') | chrome/browser/chromeos/gdata/gdata_operations.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698