diff options
Diffstat (limited to 'content/common/fileapi/webfilesystem_callback_dispatcher.cc')
-rw-r--r-- | content/common/fileapi/webfilesystem_callback_dispatcher.cc | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/content/common/fileapi/webfilesystem_callback_dispatcher.cc b/content/common/fileapi/webfilesystem_callback_dispatcher.cc new file mode 100644 index 0000000..0020f08 --- /dev/null +++ b/content/common/fileapi/webfilesystem_callback_dispatcher.cc @@ -0,0 +1,74 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/common/fileapi/webfilesystem_callback_dispatcher.h" + +#include <string> +#include <vector> + +#include "base/file_util_proxy.h" +#include "base/logging.h" +#include "base/utf_string_conversions.h" +#include "googleurl/src/gurl.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileInfo.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebFileSystem.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileSystemCallbacks.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" +#include "webkit/glue/webkit_glue.h" + +using WebKit::WebFileInfo; +using WebKit::WebFileSystemCallbacks; +using WebKit::WebFileSystemEntry; +using WebKit::WebString; +using WebKit::WebVector; + +WebFileSystemCallbackDispatcher::WebFileSystemCallbackDispatcher( + WebFileSystemCallbacks* callbacks) + : callbacks_(callbacks) { + DCHECK(callbacks_); +} + +void WebFileSystemCallbackDispatcher::DidSucceed() { + callbacks_->didSucceed(); +} + +void WebFileSystemCallbackDispatcher::DidReadMetadata( + const base::PlatformFileInfo& file_info, const FilePath& platform_path) { + WebFileInfo web_file_info; + web_file_info.modificationTime = file_info.last_modified.ToDoubleT(); + web_file_info.length = file_info.size; + if (file_info.is_directory) + web_file_info.type = WebFileInfo::TypeDirectory; + else + web_file_info.type = WebFileInfo::TypeFile; + web_file_info.platformPath = + webkit_glue::FilePathToWebString(platform_path); + callbacks_->didReadMetadata(web_file_info); +} + +void WebFileSystemCallbackDispatcher::DidReadDirectory( + const std::vector<base::FileUtilProxy::Entry>& entries, bool has_more) { + WebVector<WebFileSystemEntry> file_system_entries(entries.size()); + for (size_t i = 0; i < entries.size(); i++) { + file_system_entries[i].name = + webkit_glue::FilePathStringToWebString(entries[i].name); + file_system_entries[i].isDirectory = entries[i].is_directory; + } + callbacks_->didReadDirectory(file_system_entries, has_more); +} + +void WebFileSystemCallbackDispatcher::DidOpenFileSystem( + const std::string& name, const GURL& root) { + callbacks_->didOpenFileSystem(UTF8ToUTF16(name), root); +} + +void WebFileSystemCallbackDispatcher::DidFail( + base::PlatformFileError error_code) { + callbacks_->didFail( + webkit_glue::PlatformFileErrorToWebFileError(error_code)); +} + +void WebFileSystemCallbackDispatcher::DidWrite(int64 bytes, bool complete) { + NOTREACHED(); +} |