OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/extensions/api/file_handlers/app_file_handler_util.h" | 5 #include "chrome/browser/extensions/api/file_handlers/app_file_handler_util.h" |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "chrome/browser/extensions/extension_prefs.h" | 9 #include "chrome/browser/extensions/extension_prefs.h" |
10 #include "content/public/browser/browser_thread.h" | 10 #include "content/public/browser/browser_thread.h" |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 // Reports an error in completing a work item. This may be called more than | 117 // Reports an error in completing a work item. This may be called more than |
118 // once, but only the last message will be retained. | 118 // once, but only the last message will be retained. |
119 void Error(const base::FilePath& error_path); | 119 void Error(const base::FilePath& error_path); |
120 | 120 |
121 void CheckLocalWritableFiles(); | 121 void CheckLocalWritableFiles(); |
122 | 122 |
123 #if defined(OS_CHROMEOS) | 123 #if defined(OS_CHROMEOS) |
124 void CheckRemoteWritableFile(const base::FilePath& remote_path, | 124 void CheckRemoteWritableFile(const base::FilePath& remote_path, |
125 drive::FileError error, | 125 drive::FileError error, |
126 const base::FilePath& local_path); | 126 const base::FilePath& local_path); |
| 127 void RemoteCheckDone(const base::FilePath& remote_path, |
| 128 drive::FileError error); |
127 #endif | 129 #endif |
128 | 130 |
129 const std::vector<base::FilePath> paths_; | 131 const std::vector<base::FilePath> paths_; |
130 Profile* profile_; | 132 Profile* profile_; |
131 const bool is_directory_; | 133 const bool is_directory_; |
132 int outstanding_tasks_; | 134 int outstanding_tasks_; |
133 base::FilePath error_path_; | 135 base::FilePath error_path_; |
134 base::Closure on_success_; | 136 base::Closure on_success_; |
135 base::Callback<void(const base::FilePath&)> on_failure_; | 137 base::Callback<void(const base::FilePath&)> on_failure_; |
136 }; | 138 }; |
(...skipping 12 matching lines...) Expand all Loading... |
149 on_failure_(on_failure) {} | 151 on_failure_(on_failure) {} |
150 | 152 |
151 void WritableFileChecker::Check() { | 153 void WritableFileChecker::Check() { |
152 #if defined(OS_CHROMEOS) | 154 #if defined(OS_CHROMEOS) |
153 if (drive::util::IsUnderDriveMountPoint(paths_[0])) { | 155 if (drive::util::IsUnderDriveMountPoint(paths_[0])) { |
154 outstanding_tasks_ = paths_.size(); | 156 outstanding_tasks_ = paths_.size(); |
155 for (std::vector<base::FilePath>::const_iterator it = paths_.begin(); | 157 for (std::vector<base::FilePath>::const_iterator it = paths_.begin(); |
156 it != paths_.end(); | 158 it != paths_.end(); |
157 ++it) { | 159 ++it) { |
158 DCHECK(drive::util::IsUnderDriveMountPoint(*it)); | 160 DCHECK(drive::util::IsUnderDriveMountPoint(*it)); |
159 drive::util::PrepareWritableFileAndRun( | 161 if (is_directory_) { |
160 profile_, | 162 drive::util::CheckDirectoryExists( |
161 *it, | 163 profile_, |
162 base::Bind(&WritableFileChecker::CheckRemoteWritableFile, this, *it)); | 164 *it, |
| 165 base::Bind(&WritableFileChecker::RemoteCheckDone, this, *it)); |
| 166 } else { |
| 167 drive::util::PrepareWritableFileAndRun( |
| 168 profile_, |
| 169 *it, |
| 170 base::Bind(&WritableFileChecker::CheckRemoteWritableFile, this, |
| 171 *it)); |
| 172 } |
163 } | 173 } |
164 return; | 174 return; |
165 } | 175 } |
166 #endif | 176 #endif |
167 content::BrowserThread::PostTask( | 177 content::BrowserThread::PostTask( |
168 content::BrowserThread::FILE, | 178 content::BrowserThread::FILE, |
169 FROM_HERE, | 179 FROM_HERE, |
170 base::Bind(&WritableFileChecker::CheckLocalWritableFiles, this)); | 180 base::Bind(&WritableFileChecker::CheckLocalWritableFiles, this)); |
171 } | 181 } |
172 | 182 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 content::BrowserThread::UI, | 218 content::BrowserThread::UI, |
209 FROM_HERE, | 219 FROM_HERE, |
210 base::Bind(&WritableFileChecker::TaskDone, this)); | 220 base::Bind(&WritableFileChecker::TaskDone, this)); |
211 } | 221 } |
212 | 222 |
213 #if defined(OS_CHROMEOS) | 223 #if defined(OS_CHROMEOS) |
214 void WritableFileChecker::CheckRemoteWritableFile( | 224 void WritableFileChecker::CheckRemoteWritableFile( |
215 const base::FilePath& remote_path, | 225 const base::FilePath& remote_path, |
216 drive::FileError error, | 226 drive::FileError error, |
217 const base::FilePath& /* local_path */) { | 227 const base::FilePath& /* local_path */) { |
| 228 RemoteCheckDone(remote_path, error); |
| 229 } |
| 230 |
| 231 void WritableFileChecker::RemoteCheckDone( |
| 232 const base::FilePath& remote_path, |
| 233 drive::FileError error) { |
218 if (error == drive::FILE_ERROR_OK) { | 234 if (error == drive::FILE_ERROR_OK) { |
219 content::BrowserThread::PostTask( | 235 content::BrowserThread::PostTask( |
220 content::BrowserThread::UI, | 236 content::BrowserThread::UI, |
221 FROM_HERE, | 237 FROM_HERE, |
222 base::Bind(&WritableFileChecker::TaskDone, this)); | 238 base::Bind(&WritableFileChecker::TaskDone, this)); |
223 } else { | 239 } else { |
224 content::BrowserThread::PostTask( | 240 content::BrowserThread::PostTask( |
225 content::BrowserThread::UI, | 241 content::BrowserThread::UI, |
226 FROM_HERE, | 242 FROM_HERE, |
227 base::Bind(&WritableFileChecker::Error, this, remote_path)); | 243 base::Bind(&WritableFileChecker::Error, this, remote_path)); |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 *error = kInvalidParameters; | 403 *error = kInvalidParameters; |
388 return false; | 404 return false; |
389 } | 405 } |
390 | 406 |
391 return true; | 407 return true; |
392 } | 408 } |
393 | 409 |
394 } // namespace app_file_handler_util | 410 } // namespace app_file_handler_util |
395 | 411 |
396 } // namespace extensions | 412 } // namespace extensions |
OLD | NEW |