Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / modules / filesystem / LocalFileSystem.h
index 35c30bc..b531c43 100644 (file)
 #ifndef LocalFileSystem_h
 #define LocalFileSystem_h
 
-#include "core/page/Page.h"
 #include "core/workers/WorkerClients.h"
 #include "platform/FileSystemType.h"
 #include "wtf/Forward.h"
+#include "wtf/Functional.h"
 
-namespace WebCore {
+namespace blink {
 
 class AsyncFileSystemCallbacks;
+class CallbackWrapper;
 class FileSystemClient;
 class ExecutionContext;
+class KURL;
+class LocalFrame;
+class WebFileSystem;
 
-class LocalFileSystem FINAL : public Supplement<Page>, public Supplement<WorkerClients> {
+class LocalFileSystem FINAL : public NoBaseWillBeGarbageCollectedFinalized<LocalFileSystem>, public WillBeHeapSupplement<LocalFrame>, public WillBeHeapSupplement<WorkerClients> {
+    WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(LocalFileSystem);
     WTF_MAKE_NONCOPYABLE(LocalFileSystem);
 public:
-    static PassOwnPtr<LocalFileSystem> create(PassOwnPtr<FileSystemClient>);
+    static PassOwnPtrWillBeRawPtr<LocalFileSystem> create(PassOwnPtr<FileSystemClient>);
     virtual ~LocalFileSystem();
 
     void resolveURL(ExecutionContext*, const KURL&, PassOwnPtr<AsyncFileSystemCallbacks>);
@@ -57,12 +62,26 @@ public:
     static const char* supplementName();
     static LocalFileSystem* from(ExecutionContext&);
 
+    virtual void trace(Visitor* visitor) OVERRIDE
+    {
+        WillBeHeapSupplement<LocalFrame>::trace(visitor);
+        WillBeHeapSupplement<WorkerClients>::trace(visitor);
+    }
+
 protected:
     explicit LocalFileSystem(PassOwnPtr<FileSystemClient>);
 
+private:
+    WebFileSystem* fileSystem() const;
+    void requestFileSystemAccessInternal(ExecutionContext*, const Closure& allowed, const Closure& denied);
+    void fileSystemNotAvailable(PassRefPtrWillBeRawPtr<ExecutionContext>, CallbackWrapper*);
+    void fileSystemNotAllowedInternal(PassRefPtrWillBeRawPtr<ExecutionContext>, CallbackWrapper*);
+    void fileSystemAllowedInternal(PassRefPtrWillBeRawPtr<ExecutionContext>, FileSystemType, CallbackWrapper*);
+    void resolveURLInternal(PassRefPtrWillBeRawPtr<ExecutionContext>, const KURL&, CallbackWrapper*);
+    void deleteFileSystemInternal(PassRefPtrWillBeRawPtr<ExecutionContext>, FileSystemType, CallbackWrapper*);
     OwnPtr<FileSystemClient> m_client;
 };
 
-} // namespace WebCore
+} // namespace blink
 
 #endif // LocalFileSystem_h