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

Unified Diff: chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js

Issue 246913003: [fsp] Add support for reading directories. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 6 years, 7 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/renderer/resources/extensions/file_system_provider_custom_bindings.js
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 37fb8eea8576d992e9d18f2e46b9d056851aa972..f59900c5adf8e4eba45bcbea8c998973e8030b9b 100644
--- a/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js
+++ b/chrome/renderer/resources/extensions/file_system_provider_custom_bindings.js
@@ -11,6 +11,34 @@ var eventBindings = require('event_bindings');
var fileSystemNatives = requireNative('file_system_natives');
var GetDOMError = fileSystemNatives.GetDOMError;
+/**
+ * Annotates a date with its serialized value.
+ * @param {Date} date Input date.
+ * @return {Date} Date with an extra <code>value</code> attribute.
+ */
+function annotateDate(date) {
+ // Copy in case the input date is frozen.
+ var result = new Date(date.getTime());
+ result.value = result.toString();
+ return result;
+}
+
+/**
+ * Annotates an entry metadata by serializing its modifiedTime value.
+ * @param {EntryMetadata} metadata Input metadata.
+ * @return {EntryMetadata} metadata Annotated metadata, which can be passed
+ * back to the C++ layer.
+ */
+function annotateMetadata(metadata) {
+ var result = {
+ isDirectory: metadata.isDirectory,
+ name: metadata.name,
+ size: metadata.size,
+ modificationTime: annotateDate(metadata.modificationTime)
+ };
+ return result;
+}
+
binding.registerCustomHook(function(bindingsAPI) {
var apiFunctions = bindingsAPI.apiFunctions;
@@ -104,10 +132,8 @@ eventBindings.registerArgumentMassager(
var requestId = args[1];
var entryPath = args[2];
var onSuccessCallback = function(metadata) {
- // Serialize the Date as a string.
- metadata.modificationTime.value = metadata.modificationTime.toString();
fileSystemProviderInternal.getMetadataRequestedSuccess(
- fileSystemId, requestId, metadata);
+ fileSystemId, requestId, annotateMetadata(metadata));
};
var onErrorCallback = function(error) {
fileSystemProviderInternal.getMetadataRequestedError(
@@ -116,4 +142,23 @@ eventBindings.registerArgumentMassager(
dispatch([fileSystemId, entryPath, onSuccessCallback, onErrorCallback]);
});
+eventBindings.registerArgumentMassager(
+ 'fileSystemProvider.onReadDirectoryRequested',
+ function(args, dispatch) {
+ var fileSystemId = args[0];
+ var requestId = args[1];
+ var directoryPath = args[2];
+ var onSuccessCallback = function(entries, hasNext) {
+ var annotatedEntries = entries.map(annotateMetadata);
+ fileSystemProviderInternal.readDirectoryRequestedSuccess(
+ fileSystemId, requestId, annotatedEntries, hasNext);
+ };
+ var onErrorCallback = function(error) {
+ fileSystemProviderInternal.readDirectoryRequestedError(
+ fileSystemId, requestId, error);
+ }
+ dispatch([
+ fileSystemId, directoryPath, onSuccessCallback, onErrorCallback]);
+ });
+
exports.binding = binding.generate();

Powered by Google App Engine
This is Rietveld 408576698