diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/web/WebDOMFileSystem.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/web/WebDOMFileSystem.cpp | 62 |
1 files changed, 53 insertions, 9 deletions
diff --git a/chromium/third_party/WebKit/Source/web/WebDOMFileSystem.cpp b/chromium/third_party/WebKit/Source/web/WebDOMFileSystem.cpp index 7c3306ace6c..df3491f2dfb 100644 --- a/chromium/third_party/WebKit/Source/web/WebDOMFileSystem.cpp +++ b/chromium/third_party/WebKit/Source/web/WebDOMFileSystem.cpp @@ -29,11 +29,17 @@ */ #include "config.h" -#include "WebDOMFileSystem.h" +#include "public/web/WebDOMFileSystem.h" #include "V8DOMFileSystem.h" +#include "V8DirectoryEntry.h" +#include "V8FileEntry.h" #include "bindings/v8/WrapperTypeInfo.h" +#include "core/dom/Document.h" #include "modules/filesystem/DOMFileSystem.h" +#include "modules/filesystem/DirectoryEntry.h" +#include "modules/filesystem/FileEntry.h" +#include "web/WebLocalFrameImpl.h" #include <v8.h> using namespace WebCore; @@ -42,7 +48,7 @@ namespace blink { WebDOMFileSystem WebDOMFileSystem::fromV8Value(v8::Handle<v8::Value> value) { - if (!V8DOMFileSystem::hasInstanceInAnyWorld(value, v8::Isolate::GetCurrent())) + if (!V8DOMFileSystem::hasInstance(value, v8::Isolate::GetCurrent())) return WebDOMFileSystem(); v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(value); DOMFileSystem* domFileSystem = V8DOMFileSystem::toNative(object); @@ -50,6 +56,28 @@ WebDOMFileSystem WebDOMFileSystem::fromV8Value(v8::Handle<v8::Value> value) return WebDOMFileSystem(domFileSystem); } +WebURL WebDOMFileSystem::createFileSystemURL(v8::Handle<v8::Value> value) +{ + const FileEntry* const entry = V8FileEntry::toNativeWithTypeCheck(v8::Isolate::GetCurrent(), value); + if (entry) + return entry->filesystem()->createFileSystemURL(entry); + return WebURL(); +} + +WebDOMFileSystem WebDOMFileSystem::create( + WebLocalFrame* frame, + WebFileSystemType type, + const WebString& name, + const WebURL& rootURL, + SerializableType serializableType) +{ + ASSERT(frame && toWebLocalFrameImpl(frame)->frame()); + DOMFileSystem* domFileSystem = DOMFileSystem::create(toWebLocalFrameImpl(frame)->frame()->document(), name, static_cast<WebCore::FileSystemType>(type), rootURL); + if (serializableType == SerializableTypeSerializable) + domFileSystem->makeClonable(); + return WebDOMFileSystem(domFileSystem); +} + void WebDOMFileSystem::reset() { m_private.reset(); @@ -90,20 +118,36 @@ WebURL WebDOMFileSystem::rootURL() const return m_private->rootURL(); } -WebDOMFileSystem::WebDOMFileSystem(const WTF::PassRefPtr<DOMFileSystem>& domFileSystem) - : m_private(domFileSystem) +v8::Handle<v8::Value> WebDOMFileSystem::toV8Value(v8::Handle<v8::Object> creationContext, v8::Isolate* isolate) { + if (!m_private.get()) + return v8::Handle<v8::Value>(); + return toV8(m_private.get(), creationContext, isolate); } -WebDOMFileSystem& WebDOMFileSystem::operator=(const WTF::PassRefPtr<WebCore::DOMFileSystem>& domFileSystem) +v8::Handle<v8::Value> WebDOMFileSystem::createV8Entry( + const WebString& path, + EntryType entryType, + v8::Handle<v8::Object> creationContext, + v8::Isolate* isolate) +{ + if (!m_private.get()) + return v8::Handle<v8::Value>(); + if (entryType == EntryTypeDirectory) + return toV8(DirectoryEntry::create(m_private.get(), path), creationContext, isolate); + ASSERT(entryType == EntryTypeFile); + return toV8(FileEntry::create(m_private.get(), path), creationContext, isolate); +} + +WebDOMFileSystem::WebDOMFileSystem(DOMFileSystem* domFileSystem) + : m_private(domFileSystem) { - m_private = domFileSystem; - return *this; } -WebDOMFileSystem::operator WTF::PassRefPtr<WebCore::DOMFileSystem>() const +WebDOMFileSystem& WebDOMFileSystem::operator=(WebCore::DOMFileSystem* domFileSystem) { - return m_private.get(); + m_private = domFileSystem; + return *this; } } // namespace blink |