diff options
author | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-26 03:47:45 +0000 |
---|---|---|
committer | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-26 03:47:45 +0000 |
commit | b14f3a578a11de815361fe745fc66684e3b47b70 (patch) | |
tree | a54df57f8a8efa344abb05fda466ef11b43bf515 /chrome | |
parent | 2c7c6704aa94f8a1da10f45959a5b563fd63c30d (diff) | |
download | chromium_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.cc | 4 | ||||
-rw-r--r-- | chrome/browser/chromeos/drive/drive_resource_metadata_unittest.cc | 12 |
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) { |