Chromium Code Reviews| 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 "webkit/browser/fileapi/file_system_context.h" | 5 #include "webkit/browser/fileapi/file_system_context.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/single_thread_task_runner.h" | 8 #include "base/single_thread_task_runner.h" |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "base/task_runner_util.h" | 10 #include "base/task_runner_util.h" |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 265 FileSystemBackend* backend = GetFileSystemBackend(type); | 265 FileSystemBackend* backend = GetFileSystemBackend(type); |
| 266 if (!backend) { | 266 if (!backend) { |
| 267 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY, std::string(), GURL()); | 267 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY, std::string(), GURL()); |
| 268 return; | 268 return; |
| 269 } | 269 } |
| 270 | 270 |
| 271 backend->OpenFileSystem(origin_url, type, mode, | 271 backend->OpenFileSystem(origin_url, type, mode, |
| 272 base::Bind(&DidOpenFileSystem, callback)); | 272 base::Bind(&DidOpenFileSystem, callback)); |
| 273 } | 273 } |
| 274 | 274 |
| 275 void FileSystemContext::ResolveURL( | |
| 276 const GURL& filesystem_url, | |
| 277 const ResolveURLCallback& callback) { | |
| 278 DCHECK(!callback.is_null()); | |
| 279 | |
| 280 FileSystemURL url = CrackURL(GURL(filesystem_url)); | |
|
tzik
2013/09/05 09:30:26
extra GURL()?
nhiroki
2013/09/09 09:51:05
Done.
| |
| 281 if (!url.is_valid()) { | |
| 282 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY, | |
| 283 std::string(), GURL(), base::FilePath(), false); | |
| 284 return; | |
| 285 } | |
| 286 | |
| 287 FileSystemBackend* backend = GetFileSystemBackend(url.type()); | |
| 288 if (!backend) { | |
| 289 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY, | |
| 290 std::string(), GURL(), base::FilePath(), false); | |
| 291 return; | |
| 292 } | |
| 293 | |
| 294 backend->OpenFileSystem( | |
| 295 url.origin(), url.type(), | |
| 296 OPEN_FILE_SYSTEM_FAIL_IF_NONEXISTENT, | |
| 297 base::Bind(&FileSystemContext::DidOpenFileSystemForResolveURL, | |
| 298 this, url, callback)); | |
| 299 } | |
| 300 | |
| 275 void FileSystemContext::DeleteFileSystem( | 301 void FileSystemContext::DeleteFileSystem( |
| 276 const GURL& origin_url, | 302 const GURL& origin_url, |
| 277 FileSystemType type, | 303 FileSystemType type, |
| 278 const DeleteFileSystemCallback& callback) { | 304 const DeleteFileSystemCallback& callback) { |
| 279 DCHECK(origin_url == origin_url.GetOrigin()); | 305 DCHECK(origin_url == origin_url.GetOrigin()); |
| 280 FileSystemBackend* backend = GetFileSystemBackend(type); | 306 FileSystemBackend* backend = GetFileSystemBackend(type); |
| 281 if (!backend) { | 307 if (!backend) { |
| 282 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY); | 308 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY); |
| 283 return; | 309 return; |
| 284 } | 310 } |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 430 t < kFileSystemInternalTypeEnumEnd; ++t) { | 456 t < kFileSystemInternalTypeEnumEnd; ++t) { |
| 431 FileSystemType type = static_cast<FileSystemType>(t); | 457 FileSystemType type = static_cast<FileSystemType>(t); |
| 432 if (backend->CanHandleType(type)) { | 458 if (backend->CanHandleType(type)) { |
| 433 const bool inserted = backend_map_.insert( | 459 const bool inserted = backend_map_.insert( |
| 434 std::make_pair(type, backend)).second; | 460 std::make_pair(type, backend)).second; |
| 435 DCHECK(inserted); | 461 DCHECK(inserted); |
| 436 } | 462 } |
| 437 } | 463 } |
| 438 } | 464 } |
| 439 | 465 |
| 466 void FileSystemContext::DidOpenFileSystemForResolveURL( | |
| 467 const FileSystemURL& url, | |
| 468 const FileSystemContext::ResolveURLCallback& callback, | |
| 469 const GURL& filesystem_root, | |
| 470 const std::string& filesystem_name, | |
| 471 base::PlatformFileError error) { | |
| 472 if (error != base::PLATFORM_FILE_OK) { | |
| 473 callback.Run(error, std::string(), GURL(), base::FilePath(), false); | |
| 474 return; | |
| 475 } | |
| 476 operation_runner()->GetMetadata( | |
| 477 url, | |
| 478 base::Bind(&FileSystemContext::DidGetMetadataForResolveURL, | |
| 479 this, url, callback, filesystem_root, filesystem_name)); | |
| 480 } | |
| 481 | |
| 482 void FileSystemContext::DidGetMetadataForResolveURL( | |
| 483 const FileSystemURL& url, | |
| 484 const FileSystemContext::ResolveURLCallback& callback, | |
| 485 const GURL& filesystem_root, | |
| 486 const std::string& filesystem_name, | |
| 487 base::PlatformFileError error, | |
| 488 const base::PlatformFileInfo& file_info) { | |
| 489 if (error != base::PLATFORM_FILE_OK) { | |
| 490 callback.Run(error, std::string(), GURL(), base::FilePath(), false); | |
| 491 return; | |
| 492 } | |
| 493 callback.Run(error, filesystem_name, filesystem_root, url.path(), | |
| 494 file_info.is_directory); | |
| 495 } | |
| 496 | |
| 440 } // namespace fileapi | 497 } // namespace fileapi |
| OLD | NEW |