| Index: chrome/browser/chromeos/drive/change_list_loader_unittest.cc
|
| diff --git a/chrome/browser/chromeos/drive/change_list_loader_unittest.cc b/chrome/browser/chromeos/drive/change_list_loader_unittest.cc
|
| index d6e1c32b75555f6616ef388880c5973ae8852db9..ea639b8bc612b2aa1fe33a333885c7cda61f7ae6 100644
|
| --- a/chrome/browser/chromeos/drive/change_list_loader_unittest.cc
|
| +++ b/chrome/browser/chromeos/drive/change_list_loader_unittest.cc
|
| @@ -143,6 +143,70 @@ class ChangeListLoaderTest : public testing::Test {
|
| scoped_ptr<ChangeListLoader> change_list_loader_;
|
| };
|
|
|
| +TEST_F(ChangeListLoaderTest, AboutResourceLoader) {
|
| + google_apis::GDataErrorCode error[6] = {};
|
| + scoped_ptr<google_apis::AboutResource> about[6];
|
| +
|
| + // No resource is cached at the beginning.
|
| + ASSERT_FALSE(about_resource_loader_->cached_about_resource());
|
| +
|
| + // Since no resource is cached, this "Get" should trigger the update.
|
| + about_resource_loader_->GetAboutResource(
|
| + google_apis::test_util::CreateCopyResultCallback(error + 0, about + 0));
|
| + // Since there is one in-flight update, the next "Get" just wait for it.
|
| + about_resource_loader_->GetAboutResource(
|
| + google_apis::test_util::CreateCopyResultCallback(error + 1, about + 1));
|
| +
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_EQ(google_apis::HTTP_SUCCESS, error[0]);
|
| + EXPECT_EQ(google_apis::HTTP_SUCCESS, error[1]);
|
| + const int64 first_changestamp = about[0]->largest_change_id();
|
| + EXPECT_EQ(first_changestamp, about[1]->largest_change_id());
|
| + ASSERT_TRUE(about_resource_loader_->cached_about_resource());
|
| + EXPECT_EQ(
|
| + first_changestamp,
|
| + about_resource_loader_->cached_about_resource()->largest_change_id());
|
| +
|
| + // Increment changestamp by 1.
|
| + AddNewFile("temp");
|
| + // Explicitly calling UpdateAboutResource will start another API call.
|
| + about_resource_loader_->UpdateAboutResource(
|
| + google_apis::test_util::CreateCopyResultCallback(error + 2, about + 2));
|
| + // It again waits for the in-flight UpdateAboutResoure call, even though this
|
| + // time there is a cached result.
|
| + about_resource_loader_->GetAboutResource(
|
| + google_apis::test_util::CreateCopyResultCallback(error + 3, about + 3));
|
| +
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_EQ(google_apis::HTTP_SUCCESS, error[2]);
|
| + EXPECT_EQ(google_apis::HTTP_SUCCESS, error[3]);
|
| + EXPECT_EQ(first_changestamp + 1, about[2]->largest_change_id());
|
| + EXPECT_EQ(first_changestamp + 1, about[3]->largest_change_id());
|
| + EXPECT_EQ(
|
| + first_changestamp + 1,
|
| + about_resource_loader_->cached_about_resource()->largest_change_id());
|
| +
|
| + // Increment changestamp by 1.
|
| + AddNewFile("temp2");
|
| + // Now no UpdateAboutResource task is running. Returns the cached result.
|
| + about_resource_loader_->GetAboutResource(
|
| + google_apis::test_util::CreateCopyResultCallback(error + 4, about + 4));
|
| + // Explicitly calling UpdateAboutResource will start another API call.
|
| + about_resource_loader_->UpdateAboutResource(
|
| + google_apis::test_util::CreateCopyResultCallback(error + 5, about + 5));
|
| +
|
| + base::RunLoop().RunUntilIdle();
|
| + EXPECT_EQ(google_apis::HTTP_NO_CONTENT, error[4]);
|
| + EXPECT_EQ(google_apis::HTTP_SUCCESS, error[5]);
|
| + EXPECT_EQ(first_changestamp + 1, about[4]->largest_change_id());
|
| + EXPECT_EQ(first_changestamp + 2, about[5]->largest_change_id());
|
| + EXPECT_EQ(
|
| + first_changestamp + 2,
|
| + about_resource_loader_->cached_about_resource()->largest_change_id());
|
| +
|
| + EXPECT_EQ(3, drive_service_->about_resource_load_count());
|
| +}
|
| +
|
| TEST_F(ChangeListLoaderTest, Load) {
|
| EXPECT_FALSE(change_list_loader_->IsRefreshing());
|
|
|
|
|