summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/web/WebDOMFileSystem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/web/WebDOMFileSystem.cpp')
-rw-r--r--chromium/third_party/WebKit/Source/web/WebDOMFileSystem.cpp62
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