summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormtomasz <mtomasz@chromium.org>2015-11-15 04:11:21 -0800
committerCommit bot <commit-bot@chromium.org>2015-11-15 12:12:12 +0000
commit4c70fc9c006c7d5a3099cac3842cef8b411d2a49 (patch)
treeedb348637c36016d78fb2bd7c47a9de416165b8d
parentb77e5bbb09cacac678ca2b1f36a4280d65519cd6 (diff)
downloadchromium_src-4c70fc9c006c7d5a3099cac3842cef8b411d2a49.zip
chromium_src-4c70fc9c006c7d5a3099cac3842cef8b411d2a49.tar.gz
chromium_src-4c70fc9c006c7d5a3099cac3842cef8b411d2a49.tar.bz2
Do not call stat() when reading directories via File API.
It's very heavy, and on the JavaScript side the metadata is discarded anyway, and another call is used to obtain it. TEST=All existing tests should pass. Tested manually with MTP and chrome://quota-internals, then filesystem://.../isolated in the browser. BUG=None Review URL: https://codereview.chromium.org/1432403003 Cr-Commit-Position: refs/heads/master@{#359768}
-rw-r--r--chrome/browser/chromeos/drive/fileapi/fileapi_worker.cc3
-rw-r--r--chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc8
-rw-r--r--chrome/browser/chromeos/file_system_provider/operations/get_metadata.cc7
-rw-r--r--chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc25
-rw-r--r--chrome/browser/chromeos/file_system_provider/operations/read_directory.cc11
-rw-r--r--chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc17
-rw-r--r--chrome/browser/media_galleries/fileapi/iphoto_file_util.cc19
-rw-r--r--chrome/browser/media_galleries/fileapi/itunes_file_util.cc30
-rw-r--r--chrome/browser/media_galleries/fileapi/native_media_file_util.cc2
-rw-r--r--chrome/browser/media_galleries/fileapi/picasa_file_util.cc15
-rw-r--r--chrome/browser/media_galleries/fileapi/picasa_file_util_unittest.cc10
-rw-r--r--chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.cc52
-rw-r--r--chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.h16
-rw-r--r--chrome/browser/media_galleries/linux/mtp_device_task_helper.cc19
-rw-r--r--chrome/browser/media_galleries/linux/mtp_device_task_helper.h16
-rw-r--r--chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac.mm2
-rw-r--r--chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac_unittest.mm4
-rw-r--r--chrome/browser/media_galleries/win/mtp_device_delegate_impl_win.cc2
-rw-r--r--chrome/common/extensions/api/file_system_provider.idl9
-rw-r--r--chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js17
-rw-r--r--content/browser/fileapi/dragged_file_util_unittest.cc5
-rw-r--r--storage/browser/fileapi/async_file_util_adapter.cc2
-rw-r--r--storage/browser/fileapi/file_system_dir_url_request_job.cc51
-rw-r--r--storage/browser/fileapi/file_system_dir_url_request_job.h8
-rw-r--r--storage/common/fileapi/directory_entry.cc12
-rw-r--r--storage/common/fileapi/directory_entry.h7
26 files changed, 170 insertions, 199 deletions
diff --git a/chrome/browser/chromeos/drive/fileapi/fileapi_worker.cc b/chrome/browser/chromeos/drive/fileapi/fileapi_worker.cc
index 128b42c..1df0ae2 100644
--- a/chrome/browser/chromeos/drive/fileapi/fileapi_worker.cc
+++ b/chrome/browser/chromeos/drive/fileapi/fileapi_worker.cc
@@ -82,9 +82,6 @@ void RunReadDirectoryCallbackWithEntries(
const PlatformFileInfoProto& file_info = resource_entry.file_info();
entry.is_directory = file_info.is_directory();
- entry.size = file_info.size();
- entry.last_modified_time =
- base::Time::FromInternalValue(file_info.last_modified());
entries.push_back(entry);
}
diff --git a/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc b/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc
index d218101..fb3fce5 100644
--- a/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc
+++ b/chrome/browser/chromeos/file_system_provider/fake_provided_file_system.cc
@@ -136,11 +136,9 @@ AbortCallback FakeProvidedFileSystem::ReadDirectory(
if (file_path == directory_path || directory_path.IsParent(file_path)) {
const EntryMetadata* const metadata = it->second->metadata.get();
entry_list.push_back(storage::DirectoryEntry(
- metadata->name,
- metadata->is_directory ? storage::DirectoryEntry::DIRECTORY
- : storage::DirectoryEntry::FILE,
- metadata->size,
- metadata->modification_time));
+ metadata->name, metadata->is_directory
+ ? storage::DirectoryEntry::DIRECTORY
+ : storage::DirectoryEntry::FILE));
}
}
diff --git a/chrome/browser/chromeos/file_system_provider/operations/get_metadata.cc b/chrome/browser/chromeos/file_system_provider/operations/get_metadata.cc
index f98a145..0cc8389 100644
--- a/chrome/browser/chromeos/file_system_provider/operations/get_metadata.cc
+++ b/chrome/browser/chromeos/file_system_provider/operations/get_metadata.cc
@@ -32,10 +32,10 @@ bool ConvertRequestValueToFileInfo(scoped_ptr<RequestValue> value,
output->name = params->metadata.name;
output->is_directory = params->metadata.is_directory;
- output->size = static_cast<int64>(params->metadata.size);
+ output->size = static_cast<int64>(*params->metadata.size);
std::string input_modification_time;
- if (!params->metadata.modification_time.additional_properties.GetString(
+ if (!params->metadata.modification_time->additional_properties.GetString(
"value", &input_modification_time)) {
NOTREACHED();
}
@@ -65,7 +65,8 @@ bool ValidateIDLEntryMetadata(
return false;
std::string input_modification_time;
- if (!metadata.modification_time.additional_properties.GetString(
+ if (metadata.modification_time.get() &&
+ !metadata.modification_time->additional_properties.GetString(
"value", &input_modification_time)) {
return false;
}
diff --git a/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc b/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc
index efdd499..59ec1aa 100644
--- a/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc
+++ b/chrome/browser/chromeos/file_system_provider/operations/get_metadata_unittest.cc
@@ -92,6 +92,9 @@ class CallbackLogger {
} // namespace
+using ModificationTime =
+ extensions::api::file_system_provider::EntryMetadata::ModificationTime;
+
class FileSystemProviderOperationsGetMetadataTest : public testing::Test {
protected:
FileSystemProviderOperationsGetMetadataTest() {}
@@ -127,7 +130,8 @@ TEST_F(FileSystemProviderOperationsGetMetadataTest, ValidateIDLEntryMetadata) {
{
EntryMetadata metadata;
metadata.name = kValidFileName;
- metadata.modification_time.additional_properties.SetString(
+ metadata.modification_time.reset(new ModificationTime());
+ metadata.modification_time->additional_properties.SetString(
"value", "invalid-date-time"); // Invalid modification time is OK.
metadata.thumbnail.reset(new std::string(kValidThumbnailUrl));
EXPECT_TRUE(ValidateIDLEntryMetadata(metadata, false /* root_path */));
@@ -137,7 +141,8 @@ TEST_F(FileSystemProviderOperationsGetMetadataTest, ValidateIDLEntryMetadata) {
{
EntryMetadata metadata;
metadata.name = kValidFileName;
- metadata.modification_time.additional_properties.SetString(
+ metadata.modification_time.reset(new ModificationTime());
+ metadata.modification_time->additional_properties.SetString(
"value", "invalid-date-time"); // Invalid modification time is OK.
EXPECT_TRUE(ValidateIDLEntryMetadata(metadata, false /* root_path */));
}
@@ -146,7 +151,8 @@ TEST_F(FileSystemProviderOperationsGetMetadataTest, ValidateIDLEntryMetadata) {
{
EntryMetadata metadata;
metadata.name = "";
- metadata.modification_time.additional_properties.SetString(
+ metadata.modification_time.reset(new ModificationTime());
+ metadata.modification_time->additional_properties.SetString(
"value", "invalid-date-time"); // Invalid modification time is OK.
EXPECT_TRUE(ValidateIDLEntryMetadata(metadata, true /* root_path */));
}
@@ -155,7 +161,8 @@ TEST_F(FileSystemProviderOperationsGetMetadataTest, ValidateIDLEntryMetadata) {
{
EntryMetadata metadata;
metadata.name = "hello/world";
- metadata.modification_time.additional_properties.SetString(
+ metadata.modification_time.reset(new ModificationTime());
+ metadata.modification_time->additional_properties.SetString(
"value", "invalid-date-time"); // Invalid modification time is OK.
metadata.thumbnail.reset(new std::string(kValidThumbnailUrl));
EXPECT_FALSE(ValidateIDLEntryMetadata(metadata, false /* root_path */));
@@ -165,25 +172,27 @@ TEST_F(FileSystemProviderOperationsGetMetadataTest, ValidateIDLEntryMetadata) {
{
EntryMetadata metadata;
metadata.name = "";
- metadata.modification_time.additional_properties.SetString(
+ metadata.modification_time.reset(new ModificationTime());
+ metadata.modification_time->additional_properties.SetString(
"value", "invalid-date-time"); // Invalid modification time is OK.
metadata.thumbnail.reset(new std::string(kValidThumbnailUrl));
EXPECT_FALSE(ValidateIDLEntryMetadata(metadata, false /* root_path */));
}
- // Missing date time.
+ // Missing last modification time is allowed.
{
EntryMetadata metadata;
metadata.name = kValidFileName;
metadata.thumbnail.reset(new std::string(kValidThumbnailUrl));
- EXPECT_FALSE(ValidateIDLEntryMetadata(metadata, false /* root_path */));
+ EXPECT_TRUE(ValidateIDLEntryMetadata(metadata, false /* root_path */));
}
// Invalid thumbnail.
{
EntryMetadata metadata;
metadata.name = kValidFileName;
- metadata.modification_time.additional_properties.SetString(
+ metadata.modification_time.reset(new ModificationTime());
+ metadata.modification_time->additional_properties.SetString(
"value", "invalid-date-time"); // Invalid modification time is OK.
metadata.thumbnail.reset(new std::string("http://invalid-scheme"));
EXPECT_FALSE(ValidateIDLEntryMetadata(metadata, false /* root_path */));
diff --git a/chrome/browser/chromeos/file_system_provider/operations/read_directory.cc b/chrome/browser/chromeos/file_system_provider/operations/read_directory.cc
index d9f34c1..72ec917 100644
--- a/chrome/browser/chromeos/file_system_provider/operations/read_directory.cc
+++ b/chrome/browser/chromeos/file_system_provider/operations/read_directory.cc
@@ -35,17 +35,6 @@ bool ConvertRequestValueToEntryList(scoped_ptr<RequestValue> value,
storage::DirectoryEntry output_entry;
output_entry.is_directory = entry_metadata->is_directory;
output_entry.name = entry_metadata->name;
- output_entry.size = static_cast<int64>(entry_metadata->size);
-
- std::string input_modification_time;
- if (!entry_metadata->modification_time.additional_properties.GetString(
- "value", &input_modification_time)) {
- NOTREACHED();
- }
- if (!base::Time::FromString(input_modification_time.c_str(),
- &output_entry.last_modified_time)) {
- NOTREACHED();
- }
output->push_back(output_entry);
}
diff --git a/chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc b/chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc
index b763990..4c2f2a1 100644
--- a/chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc
+++ b/chrome/browser/chromeos/file_system_provider/operations/read_directory_unittest.cc
@@ -185,11 +185,7 @@ TEST_F(FileSystemProviderOperationsReadDirectoryTest, OnSuccess) {
" [\n"
" {\n"
" \"isDirectory\": false,\n"
- " \"name\": \"blueberries.txt\",\n"
- " \"size\": 4096,\n"
- " \"modificationTime\": {\n"
- " \"value\": \"Thu Apr 24 00:46:52 UTC 2014\"\n"
- " }\n"
+ " \"name\": \"blueberries.txt\"\n"
" }\n"
" ],\n"
" false,\n" // has_more
@@ -209,11 +205,6 @@ TEST_F(FileSystemProviderOperationsReadDirectoryTest, OnSuccess) {
const storage::DirectoryEntry entry = event->entry_list()[0];
EXPECT_FALSE(entry.is_directory);
EXPECT_EQ("blueberries.txt", entry.name);
- EXPECT_EQ(4096, entry.size);
- base::Time expected_time;
- EXPECT_TRUE(
- base::Time::FromString("Thu Apr 24 00:46:52 UTC 2014", &expected_time));
- EXPECT_EQ(expected_time, entry.last_modified_time);
}
TEST_F(FileSystemProviderOperationsReadDirectoryTest,
@@ -241,11 +232,7 @@ TEST_F(FileSystemProviderOperationsReadDirectoryTest,
" [\n"
" {\n"
" \"isDirectory\": false,\n"
- " \"name\": \"blue/berries.txt\",\n"
- " \"size\": 4096,\n"
- " \"modificationTime\": {\n"
- " \"value\": \"Thu Apr 24 00:46:52 UTC 2014\"\n"
- " }\n"
+ " \"name\": \"blue/berries.txt\"\n"
" }\n"
" ],\n"
" false,\n" // has_more
diff --git a/chrome/browser/media_galleries/fileapi/iphoto_file_util.cc b/chrome/browser/media_galleries/fileapi/iphoto_file_util.cc
index 317d19f..112def1 100644
--- a/chrome/browser/media_galleries/fileapi/iphoto_file_util.cc
+++ b/chrome/browser/media_galleries/fileapi/iphoto_file_util.cc
@@ -246,9 +246,8 @@ base::File::Error IPhotoFileUtil::ReadDirectorySync(
// Root directory. Child is the /Albums dir.
if (components.size() == 0) {
- file_list->push_back(DirectoryEntry(kIPhotoAlbumsDir,
- DirectoryEntry::DIRECTORY,
- 0, base::Time()));
+ file_list->push_back(
+ DirectoryEntry(kIPhotoAlbumsDir, DirectoryEntry::DIRECTORY));
return base::File::FILE_OK;
}
@@ -259,8 +258,7 @@ base::File::Error IPhotoFileUtil::ReadDirectorySync(
GetDataProvider()->GetAlbumNames();
for (std::vector<std::string>::const_iterator it = albums.begin();
it != albums.end(); it++) {
- file_list->push_back(DirectoryEntry(*it, DirectoryEntry::DIRECTORY,
- 0, base::Time()));
+ file_list->push_back(DirectoryEntry(*it, DirectoryEntry::DIRECTORY));
}
return base::File::FILE_OK;
} else if (components.size() == 2) {
@@ -271,9 +269,8 @@ base::File::Error IPhotoFileUtil::ReadDirectorySync(
// Album dirs contain all photos in them.
if (GetDataProvider()->HasOriginals(components[1])) {
- file_list->push_back(DirectoryEntry(kIPhotoOriginalsDir,
- DirectoryEntry::DIRECTORY,
- 0, base::Time()));
+ file_list->push_back(
+ DirectoryEntry(kIPhotoOriginalsDir, DirectoryEntry::DIRECTORY));
}
std::map<std::string, base::FilePath> locations =
GetDataProvider()->GetAlbumContents(components[1]);
@@ -283,8 +280,7 @@ base::File::Error IPhotoFileUtil::ReadDirectorySync(
base::File::Info info;
if (!base::GetFileInfo(it->second, &info))
return base::File::FILE_ERROR_IO;
- file_list->push_back(DirectoryEntry(it->first, DirectoryEntry::FILE,
- info.size, info.last_modified));
+ file_list->push_back(DirectoryEntry(it->first, DirectoryEntry::FILE));
}
return base::File::FILE_OK;
} else if (components.size() == 3 &&
@@ -298,8 +294,7 @@ base::File::Error IPhotoFileUtil::ReadDirectorySync(
base::File::Info info;
if (!base::GetFileInfo(it->second, &info))
return base::File::FILE_ERROR_IO;
- file_list->push_back(DirectoryEntry(it->first, DirectoryEntry::FILE,
- info.size, info.last_modified));
+ file_list->push_back(DirectoryEntry(it->first, DirectoryEntry::FILE));
}
return base::File::FILE_OK;
}
diff --git a/chrome/browser/media_galleries/fileapi/itunes_file_util.cc b/chrome/browser/media_galleries/fileapi/itunes_file_util.cc
index add9982..da4aeb00 100644
--- a/chrome/browser/media_galleries/fileapi/itunes_file_util.cc
+++ b/chrome/browser/media_galleries/fileapi/itunes_file_util.cc
@@ -195,12 +195,10 @@ base::File::Error ITunesFileUtil::ReadDirectorySync(
base::File::Info xml_info;
if (!base::GetFileInfo(GetDataProvider()->library_path(), &xml_info))
return base::File::FILE_ERROR_IO;
- file_list->push_back(DirectoryEntry(kITunesLibraryXML,
- DirectoryEntry::FILE,
- xml_info.size, xml_info.last_modified));
- file_list->push_back(DirectoryEntry(kITunesMediaDir,
- DirectoryEntry::DIRECTORY,
- 0, base::Time()));
+ file_list->push_back(
+ DirectoryEntry(kITunesLibraryXML, DirectoryEntry::FILE));
+ file_list->push_back(
+ DirectoryEntry(kITunesMediaDir, DirectoryEntry::DIRECTORY));
return base::File::FILE_OK;
}
@@ -212,13 +210,11 @@ base::File::Error ITunesFileUtil::ReadDirectorySync(
if (components.size() == 1) {
if (!GetDataProvider()->auto_add_path().empty()) {
- file_list->push_back(DirectoryEntry(kITunesAutoAddDir,
- DirectoryEntry::DIRECTORY,
- 0, base::Time()));
+ file_list->push_back(
+ DirectoryEntry(kITunesAutoAddDir, DirectoryEntry::DIRECTORY));
}
- file_list->push_back(DirectoryEntry(kITunesMusicDir,
- DirectoryEntry::DIRECTORY,
- 0, base::Time()));
+ file_list->push_back(
+ DirectoryEntry(kITunesMusicDir, DirectoryEntry::DIRECTORY));
return base::File::FILE_OK;
}
@@ -235,8 +231,7 @@ base::File::Error ITunesFileUtil::ReadDirectorySync(
GetDataProvider()->GetArtistNames();
std::set<ITunesDataProvider::ArtistName>::const_iterator it;
for (it = artists.begin(); it != artists.end(); ++it)
- file_list->push_back(DirectoryEntry(*it, DirectoryEntry::DIRECTORY,
- 0, base::Time()));
+ file_list->push_back(DirectoryEntry(*it, DirectoryEntry::DIRECTORY));
return base::File::FILE_OK;
}
@@ -247,8 +242,7 @@ base::File::Error ITunesFileUtil::ReadDirectorySync(
return base::File::FILE_ERROR_NOT_FOUND;
std::set<ITunesDataProvider::AlbumName>::const_iterator it;
for (it = albums.begin(); it != albums.end(); ++it)
- file_list->push_back(DirectoryEntry(*it, DirectoryEntry::DIRECTORY,
- 0, base::Time()));
+ file_list->push_back(DirectoryEntry(*it, DirectoryEntry::DIRECTORY));
return base::File::FILE_OK;
}
@@ -262,9 +256,7 @@ base::File::Error ITunesFileUtil::ReadDirectorySync(
base::File::Info file_info;
if (media_path_filter()->Match(it->second) &&
base::GetFileInfo(it->second, &file_info)) {
- file_list->push_back(DirectoryEntry(it->first, DirectoryEntry::FILE,
- file_info.size,
- file_info.last_modified));
+ file_list->push_back(DirectoryEntry(it->first, DirectoryEntry::FILE));
}
}
return base::File::FILE_OK;
diff --git a/chrome/browser/media_galleries/fileapi/native_media_file_util.cc b/chrome/browser/media_galleries/fileapi/native_media_file_util.cc
index 05a3b53..7be547d 100644
--- a/chrome/browser/media_galleries/fileapi/native_media_file_util.cc
+++ b/chrome/browser/media_galleries/fileapi/native_media_file_util.cc
@@ -579,8 +579,6 @@ base::File::Error NativeMediaFileUtil::ReadDirectorySync(
storage::DirectoryEntry entry;
entry.is_directory = info.IsDirectory();
entry.name = enum_path.BaseName().value();
- entry.size = info.GetSize();
- entry.last_modified_time = info.GetLastModifiedTime();
file_list->push_back(entry);
}
diff --git a/chrome/browser/media_galleries/fileapi/picasa_file_util.cc b/chrome/browser/media_galleries/fileapi/picasa_file_util.cc
index 65a2c3c..3417fe5 100644
--- a/chrome/browser/media_galleries/fileapi/picasa_file_util.cc
+++ b/chrome/browser/media_galleries/fileapi/picasa_file_util.cc
@@ -207,11 +207,9 @@ base::File::Error PicasaFileUtil::ReadDirectorySync(
case 0: {
// Root directory.
file_list->push_back(
- DirectoryEntry(kPicasaDirAlbums, DirectoryEntry::DIRECTORY, 0,
- base::Time()));
+ DirectoryEntry(kPicasaDirAlbums, DirectoryEntry::DIRECTORY));
file_list->push_back(
- DirectoryEntry(kPicasaDirFolders, DirectoryEntry::DIRECTORY, 0,
- base::Time()));
+ DirectoryEntry(kPicasaDirFolders, DirectoryEntry::DIRECTORY));
break;
}
case 1:
@@ -223,8 +221,7 @@ base::File::Error PicasaFileUtil::ReadDirectorySync(
for (AlbumMap::const_iterator it = albums->begin();
it != albums->end(); ++it) {
file_list->push_back(
- DirectoryEntry(it->first, DirectoryEntry::DIRECTORY, 0,
- it->second.timestamp));
+ DirectoryEntry(it->first, DirectoryEntry::DIRECTORY));
}
} else if (components[0] == kPicasaDirFolders) {
scoped_ptr<AlbumMap> folders = GetDataProvider()->GetFolders();
@@ -234,8 +231,7 @@ base::File::Error PicasaFileUtil::ReadDirectorySync(
for (AlbumMap::const_iterator it = folders->begin();
it != folders->end(); ++it) {
file_list->push_back(
- DirectoryEntry(it->first, DirectoryEntry::DIRECTORY, 0,
- it->second.timestamp));
+ DirectoryEntry(it->first, DirectoryEntry::DIRECTORY));
}
}
break;
@@ -265,8 +261,7 @@ base::File::Error PicasaFileUtil::ReadDirectorySync(
continue;
}
- file_list->push_back(DirectoryEntry(
- it->first, DirectoryEntry::FILE, info.size, info.last_modified));
+ file_list->push_back(DirectoryEntry(it->first, DirectoryEntry::FILE));
}
}
diff --git a/chrome/browser/media_galleries/fileapi/picasa_file_util_unittest.cc b/chrome/browser/media_galleries/fileapi/picasa_file_util_unittest.cc
index 6b597e4..8b1c080 100644
--- a/chrome/browser/media_galleries/fileapi/picasa_file_util_unittest.cc
+++ b/chrome/browser/media_galleries/fileapi/picasa_file_util_unittest.cc
@@ -303,12 +303,6 @@ class PicasaFileUtilTest : public testing::Test {
for (size_t i = 0; i < contents.size(); ++i) {
EXPECT_TRUE(contents[i].is_directory);
- // Because the timestamp is written out as a floating point Microsoft
- // variant time, we only expect it to be accurate to within a second.
- base::TimeDelta delta = test_folders[i]->folder_info().timestamp -
- contents[i].last_modified_time;
- EXPECT_LT(delta, base::TimeDelta::FromSeconds(1));
-
FileSystemOperation::FileEntryList folder_contents;
FileSystemURL folder_url = CreateURL(
std::string(kPicasaDirFolders) + "/" +
@@ -441,7 +435,6 @@ TEST_F(PicasaFileUtilTest, NameDeduplication) {
for (size_t i = 0; i < contents.size(); ++i) {
EXPECT_EQ(expected_names[i],
base::FilePath(contents[i].name).AsUTF8Unsafe());
- EXPECT_EQ(test_folders[i]->timestamp(), contents[i].last_modified_time);
EXPECT_TRUE(contents[i].is_directory);
}
}
@@ -461,9 +454,6 @@ TEST_F(PicasaFileUtilTest, RootFolders) {
EXPECT_TRUE(contents.front().is_directory);
EXPECT_TRUE(contents.back().is_directory);
- EXPECT_EQ(0, contents.front().size);
- EXPECT_EQ(0, contents.back().size);
-
EXPECT_EQ(FILE_PATH_LITERAL("albums"), contents.front().name);
EXPECT_EQ(FILE_PATH_LITERAL("folders"), contents.back().name);
}
diff --git a/chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.cc b/chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.cc
index f627e22..aacc58a 100644
--- a/chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.cc
+++ b/chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.cc
@@ -16,7 +16,6 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
-#include "chrome/browser/media_galleries/linux/mtp_device_task_helper.h"
#include "chrome/browser/media_galleries/linux/mtp_device_task_helper_map_service.h"
#include "chrome/browser/media_galleries/linux/snapshot_file_details.h"
#include "net/base/io_buffer.h"
@@ -554,15 +553,8 @@ void MTPDeviceDelegateImplLinux::GetFileInfo(
if (it != file_info_cache_.end()) {
// TODO(thestig): This code is repeated in several places. Combine them.
// e.g. c/b/media_galleries/win/mtp_device_operations_util.cc
- const storage::DirectoryEntry& cached_file_entry = it->second;
- base::File::Info info;
- info.size = cached_file_entry.size;
- info.is_directory = cached_file_entry.is_directory;
- info.is_symbolic_link = false;
- info.last_modified = cached_file_entry.last_modified_time;
- info.creation_time = base::Time();
-
- success_callback.Run(info);
+ const MTPDeviceTaskHelper::MTPEntry& cached_file_entry = it->second;
+ success_callback.Run(cached_file_entry.file_info);
return;
}
base::Closure closure =
@@ -1225,7 +1217,7 @@ void MTPDeviceDelegateImplLinux::OnDidReadDirectoryToCreateDirectory(
const bool exclusive,
const CreateDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback,
- const storage::AsyncFileUtil::EntryList& /* file_list */,
+ const storage::AsyncFileUtil::EntryList& /* entries */,
const bool has_more) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
@@ -1245,7 +1237,7 @@ void MTPDeviceDelegateImplLinux::OnDidReadDirectoryToDeleteDirectory(
const uint32 directory_id,
const DeleteDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback,
- const storage::AsyncFileUtil::EntryList& entries,
+ const MTPDeviceTaskHelper::MTPEntries& entries,
const bool has_more) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(!has_more);
@@ -1570,7 +1562,7 @@ void MTPDeviceDelegateImplLinux::OnCreateParentDirectoryErrorToCreateDirectory(
void MTPDeviceDelegateImplLinux::OnDidReadDirectory(
uint32 dir_id,
const ReadDirectorySuccessCallback& success_callback,
- const storage::AsyncFileUtil::EntryList& file_list,
+ const MTPDeviceTaskHelper::MTPEntries& mtp_entries,
bool has_more) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
@@ -1586,33 +1578,25 @@ void MTPDeviceDelegateImplLinux::OnDidReadDirectory(
parent_node = parent_node->parent();
}
base::FilePath dir_path = device_path_;
- for (size_t i = 0; i < dir_path_parts.size(); ++i)
- dir_path = dir_path.Append(dir_path_parts[i]);
-
- storage::AsyncFileUtil::EntryList normalized_file_list;
- for (size_t i = 0; i < file_list.size(); ++i) {
- normalized_file_list.push_back(file_list[i]);
- storage::DirectoryEntry& entry = normalized_file_list.back();
-
- // |entry.name| has the file id encoded in it. Decode here.
- size_t separator_idx = entry.name.find_last_of(',');
- DCHECK_NE(std::string::npos, separator_idx);
- std::string file_id_str = entry.name.substr(separator_idx);
- file_id_str = file_id_str.substr(1); // Get rid of the comma.
- uint32 file_id = 0;
- bool ret = base::StringToUint(file_id_str, &file_id);
- DCHECK(ret);
- entry.name = entry.name.substr(0, separator_idx);
+ for (const auto& dir_path_part : dir_path_parts)
+ dir_path = dir_path.Append(dir_path_part);
+
+ storage::AsyncFileUtil::EntryList file_list;
+ for (const auto& mtp_entry : mtp_entries) {
+ storage::DirectoryEntry entry;
+ entry.name = mtp_entry.name;
+ entry.is_directory = mtp_entry.file_info.is_directory;
+ file_list.push_back(entry);
// Refresh the in memory tree.
- dir_node->EnsureChildExists(entry.name, file_id);
+ dir_node->EnsureChildExists(entry.name, mtp_entry.file_id);
child_nodes_seen_.insert(entry.name);
// Add to |file_info_cache_|.
- file_info_cache_[dir_path.Append(entry.name)] = entry;
+ file_info_cache_[dir_path.Append(entry.name)] = mtp_entry;
}
- success_callback.Run(normalized_file_list, has_more);
+ success_callback.Run(file_list, has_more);
if (has_more)
return; // Wait to be called again.
@@ -1654,7 +1638,7 @@ void MTPDeviceDelegateImplLinux::OnDidReadBytes(
void MTPDeviceDelegateImplLinux::OnDidFillFileCache(
const base::FilePath& path,
- const storage::AsyncFileUtil::EntryList& /* file_list */,
+ const storage::AsyncFileUtil::EntryList& /* entries */,
bool has_more) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
DCHECK(path.IsParent(pending_tasks_.front().path));
diff --git a/chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.h b/chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.h
index fb25cc4..5b5cee1 100644
--- a/chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.h
+++ b/chrome/browser/media_galleries/linux/mtp_device_delegate_impl_linux.h
@@ -17,6 +17,7 @@
#include "base/memory/scoped_ptr.h"
#include "base/memory/weak_ptr.h"
#include "chrome/browser/media_galleries/fileapi/mtp_device_async_delegate.h"
+#include "chrome/browser/media_galleries/linux/mtp_device_task_helper.h"
#include "content/public/browser/browser_thread.h"
#include "storage/browser/fileapi/async_file_util.h"
@@ -62,7 +63,7 @@ class MTPDeviceDelegateImplLinux : public MTPDeviceAsyncDelegate {
typedef std::map<uint32, MTPFileNode*> FileIdToMTPFileNodeMap;
// Maps file paths to file info.
- typedef std::map<base::FilePath, storage::DirectoryEntry> FileInfoCache;
+ typedef std::map<base::FilePath, MTPDeviceTaskHelper::MTPEntry> FileInfoCache;
typedef base::Closure DeleteObjectSuccessCallback;
@@ -200,7 +201,7 @@ class MTPDeviceDelegateImplLinux : public MTPDeviceAsyncDelegate {
const bool exclusive,
const CreateDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback,
- const storage::AsyncFileUtil::EntryList& /* file_list */,
+ const storage::AsyncFileUtil::EntryList& entries,
const bool has_more);
// Called when ReadDirectory succeeds.
@@ -209,7 +210,7 @@ class MTPDeviceDelegateImplLinux : public MTPDeviceAsyncDelegate {
const uint32 directory_id,
const DeleteDirectorySuccessCallback& success_callback,
const ErrorCallback& error_callback,
- const storage::AsyncFileUtil::EntryList& entries,
+ const MTPDeviceTaskHelper::MTPEntries& entries,
const bool has_more);
// Calls DeleteObjectOnUIThread on UI thread.
@@ -348,7 +349,7 @@ class MTPDeviceDelegateImplLinux : public MTPDeviceAsyncDelegate {
// |has_more| is true if there are more file entries to read.
void OnDidReadDirectory(uint32 dir_id,
const ReadDirectorySuccessCallback& success_callback,
- const storage::AsyncFileUtil::EntryList& file_list,
+ const MTPDeviceTaskHelper::MTPEntries& mtp_entries,
bool has_more);
// Called when WriteDataIntoSnapshotFile() succeeds.
@@ -377,9 +378,10 @@ class MTPDeviceDelegateImplLinux : public MTPDeviceAsyncDelegate {
const base::File::Info& file_info, int bytes_read);
// Called when FillFileCache() succeeds.
- void OnDidFillFileCache(const base::FilePath& path,
- const storage::AsyncFileUtil::EntryList& file_list,
- bool has_more);
+ void OnDidFillFileCache(
+ const base::FilePath& path,
+ const storage::AsyncFileUtil::EntryList& /* entries */,
+ bool has_more);
// Called when FillFileCache() fails.
void OnFillFileCacheFailed(base::File::Error error);
diff --git a/chrome/browser/media_galleries/linux/mtp_device_task_helper.cc b/chrome/browser/media_galleries/linux/mtp_device_task_helper.cc
index 43891ab..c7596ea 100644
--- a/chrome/browser/media_galleries/linux/mtp_device_task_helper.cc
+++ b/chrome/browser/media_galleries/linux/mtp_device_task_helper.cc
@@ -7,8 +7,6 @@
#include <algorithm>
#include "base/logging.h"
-#include "base/numerics/safe_conversions.h"
-#include "base/strings/string_number_conversions.h"
#include "chrome/browser/media_galleries/linux/mtp_device_object_enumerator.h"
#include "chrome/browser/media_galleries/linux/mtp_read_file_worker.h"
#include "chrome/browser/media_galleries/linux/snapshot_file_details.h"
@@ -168,6 +166,8 @@ void MTPDeviceTaskHelper::RenameObject(
error_callback));
}
+MTPDeviceTaskHelper::MTPEntry::MTPEntry() : file_id(0) {}
+
// TODO(yawano) storage_name is not used, delete it.
void MTPDeviceTaskHelper::CopyFileFromLocal(
const std::string& storage_name,
@@ -260,20 +260,17 @@ void MTPDeviceTaskHelper::OnDidReadDirectory(
if (error)
return HandleDeviceError(error_callback, base::File::FILE_ERROR_FAILED);
- storage::AsyncFileUtil::EntryList entries;
+ MTPEntries entries;
base::FilePath current;
MTPDeviceObjectEnumerator file_enum(file_entries);
while (!(current = file_enum.Next()).empty()) {
- storage::DirectoryEntry entry;
+ MTPEntry entry;
entry.name = storage::VirtualPath::BaseName(current).value();
- uint32 file_id = 0;
- bool ret = file_enum.GetEntryId(&file_id);
+ bool ret = file_enum.GetEntryId(&entry.file_id);
DCHECK(ret);
- entry.name.push_back(',');
- entry.name += base::UintToString(file_id);
- entry.is_directory = file_enum.IsDirectory();
- entry.size = file_enum.Size();
- entry.last_modified_time = file_enum.LastModifiedTime();
+ entry.file_info.is_directory = file_enum.IsDirectory();
+ entry.file_info.size = file_enum.Size();
+ entry.file_info.last_modified = file_enum.LastModifiedTime();
entries.push_back(entry);
}
content::BrowserThread::PostTask(
diff --git a/chrome/browser/media_galleries/linux/mtp_device_task_helper.h b/chrome/browser/media_galleries/linux/mtp_device_task_helper.h
index c21c852..5af1487 100644
--- a/chrome/browser/media_galleries/linux/mtp_device_task_helper.h
+++ b/chrome/browser/media_galleries/linux/mtp_device_task_helper.h
@@ -26,6 +26,16 @@ struct SnapshotRequestInfo;
// MTP device storage.
class MTPDeviceTaskHelper {
public:
+ struct MTPEntry {
+ MTPEntry();
+
+ uint32_t file_id;
+ std::string name;
+ base::File::Info file_info;
+ };
+
+ typedef std::vector<MTPEntry> MTPEntries;
+
typedef base::Callback<void(bool succeeded)> OpenStorageCallback;
typedef MTPDeviceAsyncDelegate::GetFileInfoSuccessCallback
@@ -33,10 +43,8 @@ class MTPDeviceTaskHelper {
typedef base::Closure CreateDirectorySuccessCallback;
- // NOTE: The file names in the entry list have their file id appended at the
- // end. e.g. foo.jpg with file id 45 becomes foo.jpg,45.
- typedef base::Callback<void(const storage::AsyncFileUtil::EntryList& entries,
- bool has_more)> ReadDirectorySuccessCallback;
+ typedef base::Callback<void(const MTPEntries& entries, bool has_more)>
+ ReadDirectorySuccessCallback;
typedef base::Closure RenameObjectSuccessCallback;
diff --git a/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac.mm b/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac.mm
index 89e5108..743866b 100644
--- a/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac.mm
+++ b/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac.mm
@@ -467,8 +467,6 @@ void MTPDeviceDelegateImplMac::NotifyReadDir() {
storage::DirectoryEntry entry;
entry.name = relative_path.value();
entry.is_directory = info.is_directory;
- entry.size = info.size;
- entry.last_modified_time = info.last_modified;
entry_list.push_back(entry);
}
diff --git a/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac_unittest.mm b/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac_unittest.mm
index 7c8deb4..e418d65 100644
--- a/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac_unittest.mm
+++ b/chrome/browser/media_galleries/mac/mtp_device_delegate_impl_mac_unittest.mm
@@ -400,11 +400,9 @@ TEST_F(MTPDeviceDelegateImplMacTest, TestGetFileInfo) {
EXPECT_EQ(base::File::FILE_OK, ReadDir(base::FilePath(kDevicePath)));
ASSERT_EQ(2U, file_list_.size());
- EXPECT_EQ(time1, file_list_[0].last_modified_time);
EXPECT_FALSE(file_list_[0].is_directory);
EXPECT_EQ("name1", file_list_[0].name);
- EXPECT_EQ(time1, file_list_[1].last_modified_time);
EXPECT_FALSE(file_list_[1].is_directory);
EXPECT_EQ("name2", file_list_[1].name);
}
@@ -433,11 +431,9 @@ TEST_F(MTPDeviceDelegateImplMacTest, TestDirectoriesAndSorting) {
ASSERT_EQ(4U, file_list_.size());
EXPECT_EQ("dir1", file_list_[0].name);
EXPECT_EQ("dir2", file_list_[1].name);
- EXPECT_EQ(time1, file_list_[2].last_modified_time);
EXPECT_FALSE(file_list_[2].is_directory);
EXPECT_EQ("name1", file_list_[2].name);
- EXPECT_EQ(time1, file_list_[3].last_modified_time);
EXPECT_FALSE(file_list_[3].is_directory);
EXPECT_EQ("name2", file_list_[3].name);
}
diff --git a/chrome/browser/media_galleries/win/mtp_device_delegate_impl_win.cc b/chrome/browser/media_galleries/win/mtp_device_delegate_impl_win.cc
index 8dbca7f..b21cf6d 100644
--- a/chrome/browser/media_galleries/win/mtp_device_delegate_impl_win.cc
+++ b/chrome/browser/media_galleries/win/mtp_device_delegate_impl_win.cc
@@ -203,8 +203,6 @@ base::File::Error ReadDirectoryOnBlockingPoolThread(
storage::DirectoryEntry entry;
entry.is_directory = file_enum->IsDirectory();
entry.name = storage::VirtualPath::BaseName(current).value();
- entry.size = file_enum->Size();
- entry.last_modified_time = file_enum->LastModifiedTime();
entries->push_back(entry);
}
return error;
diff --git a/chrome/common/extensions/api/file_system_provider.idl b/chrome/common/extensions/api/file_system_provider.idl
index 1908c18..b6ab86d 100644
--- a/chrome/common/extensions/api/file_system_provider.idl
+++ b/chrome/common/extensions/api/file_system_provider.idl
@@ -61,11 +61,12 @@ namespace fileSystemProvider {
// it must be empty.
DOMString name;
- // File size in bytes.
- double size;
+ // File size in bytes. Required for <code>OnGetMetadataRequested</code>.
+ double? size;
- // The last modified time of this entry.
- [instanceOf=Date] object modificationTime;
+ // The last modified time of this entry. Required for
+ // <code>OnGetMetadataRequested</code>.
+ [instanceOf=Date] object? modificationTime;
// Mime type for the entry.
DOMString? mimeType;
diff --git a/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js b/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js
index 46f3d74..b43a9d7 100644
--- a/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js
+++ b/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js
@@ -60,12 +60,14 @@ function annotateMetadata(metadata) {
var result = {
isDirectory: metadata.isDirectory,
name: metadata.name,
- size: metadata.size,
- modificationTime: annotateDate(metadata.modificationTime)
};
- if ('mimeType' in metadata)
+ if (metadata.size !== undefined)
+ result.size = metadata.size;
+ if (metadata.modificationTime !== undefined)
+ result.modificationTime = annotateDate(metadata.modificationTime);
+ if (metadata.mimeType !== undefined)
result.mimeType = metadata.mimeType;
- if ('thumbnail' in metadata)
+ if (metadata.thumbnail !== undefined)
result.thumbnail = metadata.thumbnail;
return result;
}
@@ -102,6 +104,13 @@ eventBindings.registerArgumentMassager(
var options = args[0];
var onSuccessCallback = function(metadata) {
var error;
+ // TODO(mtomasz): Remove the following two fields once crbug.com/413161
+ // is landed.
+ if (options.size !== undefined)
+ error = 'Size is required for this event.';
+ if (options.modificationTime !== undefined)
+ error = 'Last modified time is required for this event.';
+
// It is invalid to return a thumbnail when it's not requested. The
// restriction is added in order to avoid fetching the thumbnail while
// it's not needed.
diff --git a/content/browser/fileapi/dragged_file_util_unittest.cc b/content/browser/fileapi/dragged_file_util_unittest.cc
index 38d8337..398ce6d 100644
--- a/content/browser/fileapi/dragged_file_util_unittest.cc
+++ b/content/browser/fileapi/dragged_file_util_unittest.cc
@@ -374,8 +374,6 @@ TEST_F(DraggedFileUtilTest, ReadDirectoryTest) {
storage::DirectoryEntry entry;
entry.is_directory = file_info.IsDirectory();
entry.name = current.BaseName().value();
- entry.size = file_info.GetSize();
- entry.last_modified_time = file_info.GetLastModifiedTime();
expected_entry_map[entry.name] = entry;
#if defined(OS_POSIX)
@@ -403,9 +401,6 @@ TEST_F(DraggedFileUtilTest, ReadDirectoryTest) {
EXPECT_TRUE(found != expected_entry_map.end());
EXPECT_EQ(found->second.name, entry.name);
EXPECT_EQ(found->second.is_directory, entry.is_directory);
- EXPECT_EQ(found->second.size, entry.size);
- EXPECT_EQ(found->second.last_modified_time.ToDoubleT(),
- entry.last_modified_time.ToDoubleT());
}
}
}
diff --git a/storage/browser/fileapi/async_file_util_adapter.cc b/storage/browser/fileapi/async_file_util_adapter.cc
index ed8f84f..0de0f61 100644
--- a/storage/browser/fileapi/async_file_util_adapter.cc
+++ b/storage/browser/fileapi/async_file_util_adapter.cc
@@ -116,8 +116,6 @@ void ReadDirectoryHelper(FileSystemFileUtil* file_util,
DirectoryEntry entry;
entry.is_directory = file_enum->IsDirectory();
entry.name = VirtualPath::BaseName(current).value();
- entry.size = file_enum->Size();
- entry.last_modified_time = file_enum->LastModifiedTime();
entries.push_back(entry);
if (entries.size() == kResultChunkSize) {
diff --git a/storage/browser/fileapi/file_system_dir_url_request_job.cc b/storage/browser/fileapi/file_system_dir_url_request_job.cc
index 4236fec..ac2118a 100644
--- a/storage/browser/fileapi/file_system_dir_url_request_job.cc
+++ b/storage/browser/fileapi/file_system_dir_url_request_job.cc
@@ -143,15 +143,52 @@ void FileSystemDirURLRequestJob::DidReadDirectory(
data_.append(net::GetDirectoryListingHeader(title));
}
- typedef std::vector<DirectoryEntry>::const_iterator EntryIterator;
- for (EntryIterator it = entries.begin(); it != entries.end(); ++it) {
- const base::string16& name = base::FilePath(it->name).LossyDisplayName();
- data_.append(net::GetDirectoryListingEntry(
- name, std::string(), it->is_directory, it->size,
- it->last_modified_time));
- }
+ entries_.insert(entries_.end(), entries.begin(), entries.end());
if (!has_more) {
+ if (entries_.size()) {
+ GetMetadata(0);
+ } else {
+ set_expected_content_size(data_.size());
+ NotifyHeadersComplete();
+ }
+ }
+}
+
+void FileSystemDirURLRequestJob::GetMetadata(size_t index) {
+ const DirectoryEntry& entry = entries_[index];
+ const FileSystemURL url = file_system_context_->CreateCrackedFileSystemURL(
+ url_.origin(), url_.type(),
+ url_.path().Append(base::FilePath(entry.name)));
+ DCHECK(url.is_valid());
+ file_system_context_->operation_runner()->GetMetadata(
+ url,
+ base::Bind(&FileSystemDirURLRequestJob::DidGetMetadata, this, index));
+}
+
+void FileSystemDirURLRequestJob::DidGetMetadata(
+ size_t index,
+ base::File::Error result,
+ const base::File::Info& file_info) {
+ if (result != base::File::FILE_OK) {
+ int rv = net::ERR_FILE_NOT_FOUND;
+ if (result == base::File::FILE_ERROR_INVALID_URL)
+ rv = net::ERR_INVALID_URL;
+ NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, rv));
+ }
+
+ if (!request_)
+ return;
+
+ const DirectoryEntry& entry = entries_[index];
+ const base::string16& name = base::FilePath(entry.name).LossyDisplayName();
+ data_.append(net::GetDirectoryListingEntry(name, std::string(),
+ entry.is_directory, file_info.size,
+ file_info.last_modified));
+
+ if (index < entries_.size() - 1) {
+ GetMetadata(index + 1);
+ } else {
set_expected_content_size(data_.size());
NotifyHeadersComplete();
}
diff --git a/storage/browser/fileapi/file_system_dir_url_request_job.h b/storage/browser/fileapi/file_system_dir_url_request_job.h
index 0163535..01bd372 100644
--- a/storage/browser/fileapi/file_system_dir_url_request_job.h
+++ b/storage/browser/fileapi/file_system_dir_url_request_job.h
@@ -51,6 +51,14 @@ class STORAGE_EXPORT FileSystemDirURLRequestJob : public net::URLRequestJob {
const std::vector<DirectoryEntry>& entries,
bool has_more);
+ // Reads metadata for the |index|-th entry in the directory. Must be called
+ // after |entries_| is filled.
+ void GetMetadata(size_t index);
+ void DidGetMetadata(size_t index,
+ base::File::Error result,
+ const base::File::Info& file_info);
+
+ std::vector<DirectoryEntry> entries_;
std::string data_;
FileSystemURL url_;
const std::string storage_domain_;
diff --git a/storage/common/fileapi/directory_entry.cc b/storage/common/fileapi/directory_entry.cc
index 477ede8..f972745 100644
--- a/storage/common/fileapi/directory_entry.cc
+++ b/storage/common/fileapi/directory_entry.cc
@@ -6,16 +6,10 @@
namespace storage {
-DirectoryEntry::DirectoryEntry() : is_directory(false), size(0) {}
+DirectoryEntry::DirectoryEntry() : is_directory(false) {}
-DirectoryEntry::DirectoryEntry(const std::string& name,
- DirectoryEntryType type,
- int64 size,
- const base::Time& last_modified_time)
+DirectoryEntry::DirectoryEntry(const std::string& name, DirectoryEntryType type)
: name(base::FilePath::FromUTF8Unsafe(name).value()),
- is_directory(type == DIRECTORY),
- size(size),
- last_modified_time(last_modified_time) {
-}
+ is_directory(type == DIRECTORY) {}
} // namespace storage
diff --git a/storage/common/fileapi/directory_entry.h b/storage/common/fileapi/directory_entry.h
index 1b06828..fab7fae 100644
--- a/storage/common/fileapi/directory_entry.h
+++ b/storage/common/fileapi/directory_entry.h
@@ -22,15 +22,10 @@ struct STORAGE_COMMON_EXPORT DirectoryEntry {
};
DirectoryEntry();
- DirectoryEntry(const std::string& name,
- DirectoryEntryType type,
- int64 size,
- const base::Time& last_modified_time);
+ DirectoryEntry(const std::string& name, DirectoryEntryType type);
base::FilePath::StringType name;
bool is_directory;
- int64 size;
- base::Time last_modified_time;
};
} // namespace storage