#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>);
FileSystemClient* client() { return m_client.get(); }
static const char* supplementName();
- static LocalFileSystem* from(ExecutionContext*);
+ 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