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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Custom binding for the fileSystemProvider API. 5 // Custom binding for the fileSystemProvider API.
6 6
7 var binding = require('binding').Binding.create('fileSystemProvider'); 7 var binding = require('binding').Binding.create('fileSystemProvider');
8 var fileSystemProviderInternal = 8 var fileSystemProviderInternal =
9 require('binding').Binding.create('fileSystemProviderInternal').generate(); 9 require('binding').Binding.create('fileSystemProviderInternal').generate();
10 var eventBindings = require('event_bindings'); 10 var eventBindings = require('event_bindings');
11 var fileSystemNatives = requireNative('file_system_natives'); 11 var fileSystemNatives = requireNative('file_system_natives');
12 var GetDOMError = fileSystemNatives.GetDOMError; 12 var GetDOMError = fileSystemNatives.GetDOMError;
13 13
14 /**
15 * Annotates a date with its serialized value.
16 * @param {Date} date Input date.
17 * @return {Date} Date with an extra <code>value</code> attribute.
18 */
19 function annotateDate(date) {
20 // Copy in case the input date is frozen.
21 var result = new Date(date.getTime());
22 result.value = result.toString();
23 return result;
24 }
25
26 /**
27 * Annotates an entry metadata by serializing its modifiedTime value.
28 * @param {EntryMetadata} metadata Input metadata.
29 * @return {EntryMetadata} metadata Annotated metadata, which can be passed
30 * back to the C++ layer.
31 */
32 function annotateMetadata(metadata) {
33 var result = {
34 isDirectory: metadata.isDirectory,
35 name: metadata.name,
36 size: metadata.size,
37 modificationTime: annotateDate(metadata.modificationTime)
38 };
39 return result;
40 }
41
14 binding.registerCustomHook(function(bindingsAPI) { 42 binding.registerCustomHook(function(bindingsAPI) {
15 var apiFunctions = bindingsAPI.apiFunctions; 43 var apiFunctions = bindingsAPI.apiFunctions;
16 44
17 apiFunctions.setUpdateArgumentsPostValidate( 45 apiFunctions.setUpdateArgumentsPostValidate(
18 'mount', 46 'mount',
19 function(displayName, successCallback, errorCallback) { 47 function(displayName, successCallback, errorCallback) {
20 // Piggyback the error callback onto the success callback, 48 // Piggyback the error callback onto the success callback,
21 // so we can use the error callback later. 49 // so we can use the error callback later.
22 successCallback.errorCallback_ = errorCallback; 50 successCallback.errorCallback_ = errorCallback;
23 return [displayName, successCallback]; 51 return [displayName, successCallback];
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 dispatch([fileSystemId, onSuccessCallback, onErrorCallback]); 125 dispatch([fileSystemId, onSuccessCallback, onErrorCallback]);
98 }); 126 });
99 127
100 eventBindings.registerArgumentMassager( 128 eventBindings.registerArgumentMassager(
101 'fileSystemProvider.onGetMetadataRequested', 129 'fileSystemProvider.onGetMetadataRequested',
102 function(args, dispatch) { 130 function(args, dispatch) {
103 var fileSystemId = args[0]; 131 var fileSystemId = args[0];
104 var requestId = args[1]; 132 var requestId = args[1];
105 var entryPath = args[2]; 133 var entryPath = args[2];
106 var onSuccessCallback = function(metadata) { 134 var onSuccessCallback = function(metadata) {
107 // Serialize the Date as a string.
108 metadata.modificationTime.value = metadata.modificationTime.toString();
109 fileSystemProviderInternal.getMetadataRequestedSuccess( 135 fileSystemProviderInternal.getMetadataRequestedSuccess(
110 fileSystemId, requestId, metadata); 136 fileSystemId, requestId, annotateMetadata(metadata));
111 }; 137 };
112 var onErrorCallback = function(error) { 138 var onErrorCallback = function(error) {
113 fileSystemProviderInternal.getMetadataRequestedError( 139 fileSystemProviderInternal.getMetadataRequestedError(
114 fileSystemId, requestId, error); 140 fileSystemId, requestId, error);
115 } 141 }
116 dispatch([fileSystemId, entryPath, onSuccessCallback, onErrorCallback]); 142 dispatch([fileSystemId, entryPath, onSuccessCallback, onErrorCallback]);
117 }); 143 });
118 144
145 eventBindings.registerArgumentMassager(
146 'fileSystemProvider.onReadDirectoryRequested',
147 function(args, dispatch) {
148 var fileSystemId = args[0];
149 var requestId = args[1];
150 var directoryPath = args[2];
151 var onSuccessCallback = function(entries, hasNext) {
152 var annotatedEntries = entries.map(annotateMetadata);
153 fileSystemProviderInternal.readDirectoryRequestedSuccess(
154 fileSystemId, requestId, annotatedEntries, hasNext);
155 };
156 var onErrorCallback = function(error) {
157 fileSystemProviderInternal.readDirectoryRequestedError(
158 fileSystemId, requestId, error);
159 }
160 dispatch([
161 fileSystemId, directoryPath, onSuccessCallback, onErrorCallback]);
162 });
163
119 exports.binding = binding.generate(); 164 exports.binding = binding.generate();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698