summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-26 03:47:45 +0000
committerhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-03-26 03:47:45 +0000
commitb14f3a578a11de815361fe745fc66684e3b47b70 (patch)
treea54df57f8a8efa344abb05fda466ef11b43bf515 /chrome
parent2c7c6704aa94f8a1da10f45959a5b563fd63c30d (diff)
downloadchromium_src-b14f3a578a11de815361fe745fc66684e3b47b70.zip
chromium_src-b14f3a578a11de815361fe745fc66684e3b47b70.tar.gz
chromium_src-b14f3a578a11de815361fe745fc66684e3b47b70.tar.bz2
chromeos: In DriveResourceMetadata::RefreshEntry, reject entry with root resource id if it has parent
BUG=None TEST=unit_tests Review URL: https://codereview.chromium.org/12905010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@190548 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/browser/chromeos/drive/drive_resource_metadata.cc4
-rw-r--r--chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc12
2 files changed, 16 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/drive/drive_resource_metadata.cc b/chrome/browser/chromeos/drive/drive_resource_metadata.cc
index b7b6973..92cb2e2 100644
--- a/chrome/browser/chromeos/drive/drive_resource_metadata.cc
+++ b/chrome/browser/chromeos/drive/drive_resource_metadata.cc
@@ -756,6 +756,10 @@ DriveResourceMetadata::RefreshEntryOnBlockingPool(
AddEntryToDirectory(CreateEntryWithProperBaseName(entry_proto));
} else {
// root has no parent.
+ if (!entry_proto.parent_resource_id().empty()) {
+ return make_scoped_ptr(new GetEntryInfoWithFilePathResult(
+ DRIVE_FILE_ERROR_INVALID_OPERATION));
+ }
storage_->PutEntry(CreateEntryWithProperBaseName(entry_proto));
}
diff --git a/chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc b/chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc
index 436c4b7..8dc952c 100644
--- a/chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc
+++ b/chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc
@@ -842,6 +842,18 @@ TEST_F(DriveResourceMetadataTest, RefreshEntry_Root) {
base::FilePath::FromUTF8Unsafe("drive/dir1/dir3/file9"));
ASSERT_TRUE(entry_proto.get());
EXPECT_EQ("file9", entry_proto->base_name());
+
+ // Refreshing root with a proto which has parent_resource_id should fail.
+ entry_proto = GetEntryInfoByPathSync(
+ base::FilePath::FromUTF8Unsafe("drive"));
+ ASSERT_TRUE(entry_proto.get());
+ entry_proto->set_parent_resource_id("foo");
+ resource_metadata_->RefreshEntry(
+ *entry_proto,
+ google_apis::test_util::CreateCopyResultCallback(
+ &error, &drive_file_path, &entry_proto));
+ google_apis::test_util::RunBlockingPoolTask();
+ EXPECT_EQ(DRIVE_FILE_ERROR_INVALID_OPERATION, error);
}
TEST_F(DriveResourceMetadataTest, RefreshDirectory_EmtpyMap) {