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 15namespace content { 16 17// An implementation of WebFileWriter for use in chrome renderers and workers. 18class 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