| 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();
|
|
|