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

Side by Side Diff: chrome/browser/chromeos/extensions/file_system_provider/provider_function.cc

Issue 703123003: [fsp] Pass more detailed errors to the providing extension. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed a bug. Created 6 years, 1 month 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "chrome/browser/chromeos/extensions/file_system_provider/file_system_pr ovider_api.h" 5 #include "chrome/browser/chromeos/extensions/file_system_provider/file_system_pr ovider_api.h"
6 6
7 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_inte rface.h" 7 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_inte rface.h"
8 #include "chrome/browser/chromeos/file_system_provider/request_manager.h" 8 #include "chrome/browser/chromeos/file_system_provider/request_manager.h"
9 #include "chrome/browser/chromeos/file_system_provider/request_value.h" 9 #include "chrome/browser/chromeos/file_system_provider/request_value.h"
10 #include "chrome/browser/chromeos/file_system_provider/service.h" 10 #include "chrome/browser/chromeos/file_system_provider/service.h"
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 FileErrorToProviderError(error)); 119 FileErrorToProviderError(error));
120 } 120 }
121 121
122 FileSystemProviderInternalFunction::FileSystemProviderInternalFunction() 122 FileSystemProviderInternalFunction::FileSystemProviderInternalFunction()
123 : request_id_(0), request_manager_(NULL) { 123 : request_id_(0), request_manager_(NULL) {
124 } 124 }
125 125
126 bool FileSystemProviderInternalFunction::RejectRequest( 126 bool FileSystemProviderInternalFunction::RejectRequest(
127 scoped_ptr<chromeos::file_system_provider::RequestValue> value, 127 scoped_ptr<chromeos::file_system_provider::RequestValue> value,
128 base::File::Error error) { 128 base::File::Error error) {
129 if (!request_manager_->RejectRequest(request_id_, value.Pass(), error)) { 129 const base::File::Error result =
130 SetError(FileErrorToString(base::File::FILE_ERROR_SECURITY)); 130 request_manager_->RejectRequest(request_id_, value.Pass(), error);
131 SendResponse(false); 131 if (result != base::File::FILE_OK) {
132 SetError(FileErrorToString(result));
132 return false; 133 return false;
133 } 134 }
134 135
135 return true; 136 return true;
136 } 137 }
137 138
138 bool FileSystemProviderInternalFunction::FulfillRequest( 139 bool FileSystemProviderInternalFunction::FulfillRequest(
139 scoped_ptr<RequestValue> value, 140 scoped_ptr<RequestValue> value,
140 bool has_more) { 141 bool has_more) {
141 if (!request_manager_->FulfillRequest(request_id_, value.Pass(), has_more)) { 142 const base::File::Error result =
142 SetError(FileErrorToString(base::File::FILE_ERROR_SECURITY)); 143 request_manager_->FulfillRequest(request_id_, value.Pass(), has_more);
143 SendResponse(false); 144 if (result != base::File::FILE_OK) {
145 SetError(FileErrorToString(result));
144 return false; 146 return false;
145 } 147 }
146 148
147 return true; 149 return true;
148 } 150 }
149 151
150 bool FileSystemProviderInternalFunction::RunSync() { 152 bool FileSystemProviderInternalFunction::RunSync() {
151 DCHECK(args_); 153 DCHECK(args_);
152 if (!Parse()) 154 if (!Parse())
153 return true; 155 return false;
154 156
155 SendResponse(RunWhenValid()); 157 return RunWhenValid();
156 return true;
157 } 158 }
158 159
159 bool FileSystemProviderInternalFunction::Parse() { 160 bool FileSystemProviderInternalFunction::Parse() {
160 std::string file_system_id; 161 std::string file_system_id;
161 162
162 if (!args_->GetString(0, &file_system_id) || 163 if (!args_->GetString(0, &file_system_id) ||
163 !args_->GetInteger(1, &request_id_)) { 164 !args_->GetInteger(1, &request_id_)) {
164 bad_message_ = true; 165 bad_message_ = true;
165 SendResponse(false);
166 return false; 166 return false;
167 } 167 }
168 168
169 Service* service = Service::Get(GetProfile()); 169 Service* service = Service::Get(GetProfile());
170 if (!service) { 170 if (!service) {
171 SendResponse(false);
172 return false; 171 return false;
173 } 172 }
174 173
175 ProvidedFileSystemInterface* file_system = 174 ProvidedFileSystemInterface* file_system =
176 service->GetProvidedFileSystem(extension_id(), file_system_id); 175 service->GetProvidedFileSystem(extension_id(), file_system_id);
177 if (!file_system) { 176 if (!file_system) {
178 SetError(FileErrorToString(base::File::FILE_ERROR_NOT_FOUND)); 177 SetError(FileErrorToString(base::File::FILE_ERROR_NOT_FOUND));
179 SendResponse(false);
180 return false; 178 return false;
181 } 179 }
182 180
183 request_manager_ = file_system->GetRequestManager(); 181 request_manager_ = file_system->GetRequestManager();
184 return true; 182 return true;
185 } 183 }
186 184
187 } // namespace extensions 185 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698