1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_CHILD_FILEAPI_WEBFILEWRITER_IMPL_H_ 6 #define CONTENT_CHILD_FILEAPI_WEBFILEWRITER_IMPL_H_ 7 8 #include <string> 9 10 #include "base/memory/ref_counted.h" 11 #include "base/memory/weak_ptr.h" 12 #include "base/message_loop/message_loop_proxy.h" 13 #include "content/child/fileapi/webfilewriter_base.h" 14 15 namespace content { 16 17 // An implementation of WebFileWriter for use in chrome renderers and workers. 18 class WebFileWriterImpl : public WebFileWriterBase, 19 public base::SupportsWeakPtr<WebFileWriterImpl> { 20 public: 21 enum Type { 22 TYPE_SYNC, 23 TYPE_ASYNC, 24 }; 25 26 WebFileWriterImpl(const GURL& path, 27 blink::WebFileWriterClient* client, 28 Type type, 29 base::MessageLoopProxy* main_thread_loop); 30 virtual ~WebFileWriterImpl(); 31 32 protected: 33 // WebFileWriterBase overrides 34 virtual void DoTruncate(const GURL& path, int64 offset) OVERRIDE; 35 virtual void DoWrite(const GURL& path, const std::string& blob_id, 36 int64 offset) OVERRIDE; 37 virtual void DoCancel() OVERRIDE; 38 39 private: 40 class WriterBridge; 41 42 void RunOnMainThread(const base::Closure& closure); 43 44 scoped_refptr<base::MessageLoopProxy> main_thread_loop_; 45 scoped_refptr<WriterBridge> bridge_; 46 }; 47 48 } // namespace content 49 50 #endif // CONTENT_CHILD_FILEAPI_WEBFILEWRITER_IMPL_H_ 51