Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(482)

Side by Side Diff: content/common/fileapi/webfilewriter_impl.cc

Issue 14796018: Cleanup: Deprecate FileSystemCallbackDispatcher (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/common/fileapi/webfilewriter_impl.h" 5 #include "content/common/fileapi/webfilewriter_impl.h"
6 6
7 #include "base/bind.h"
7 #include "content/common/child_thread.h" 8 #include "content/common/child_thread.h"
8 #include "content/common/fileapi/file_system_dispatcher.h" 9 #include "content/common/fileapi/file_system_dispatcher.h"
9 10
10 namespace content { 11 namespace content {
11 namespace { 12 namespace {
12 13
13 inline FileSystemDispatcher* GetFileSystemDispatcher() { 14 inline FileSystemDispatcher* GetFileSystemDispatcher() {
14 return ChildThread::current()->file_system_dispatcher(); 15 return ChildThread::current()->file_system_dispatcher();
15 } 16 }
16 } 17 }
17 18
18 class WebFileWriterImpl::CallbackDispatcher 19 class WebFileWriterImpl::CallbackDispatcher {
19 : public fileapi::FileSystemCallbackDispatcher {
20 public: 20 public:
21 ~CallbackDispatcher() {}
22
23 static FileSystemDispatcher::StatusCallback GetStatusCallback(
24 const base::WeakPtr<WebFileWriterImpl>& writer) {
25 CallbackDispatcher* dispatcher = new CallbackDispatcher(writer);
26 return base::Bind(&CallbackDispatcher::DidFinish, base::Owned(dispatcher));
27 }
28
29 static FileSystemDispatcher::WriteCallback GetWriteCallback(
30 const base::WeakPtr<WebFileWriterImpl>& writer) {
31 CallbackDispatcher* dispatcher = new CallbackDispatcher(writer);
32 return base::Bind(&CallbackDispatcher::DidWrite, base::Owned(dispatcher));
33 }
34
35 void DidFinish(base::PlatformFileError error_code) {
36 if (!writer_)
37 return;
38 if (error_code == base::PLATFORM_FILE_OK)
39 writer_->DidSucceed();
40 else
41 writer_->DidFail(error_code);
42 }
43
44 void DidWrite(base::PlatformFileError error_code,
45 int64 bytes, bool complete) {
46 if (!writer_)
47 return;
48 if (error_code == base::PLATFORM_FILE_OK)
49 writer_->DidWrite(bytes, complete);
50 else
51 writer_->DidFail(error_code);
52 }
53
54 private:
21 explicit CallbackDispatcher( 55 explicit CallbackDispatcher(
22 const base::WeakPtr<WebFileWriterImpl>& writer) : writer_(writer) { 56 const base::WeakPtr<WebFileWriterImpl>& writer) : writer_(writer) {
23 } 57 }
24 virtual ~CallbackDispatcher() {
25 }
26 virtual void DidReadMetadata(
27 const base::PlatformFileInfo&,
28 const base::FilePath&) OVERRIDE {
29 NOTREACHED();
30 }
31 virtual void DidCreateSnapshotFile(
32 const base::PlatformFileInfo&,
33 const base::FilePath&) OVERRIDE {
34 NOTREACHED();
35 }
36 virtual void DidReadDirectory(
37 const std::vector<base::FileUtilProxy::Entry>& entries,
38 bool has_more) OVERRIDE {
39 NOTREACHED();
40 }
41 virtual void DidOpenFileSystem(const std::string& name,
42 const GURL& root) OVERRIDE {
43 NOTREACHED();
44 }
45 virtual void DidSucceed() OVERRIDE {
46 if (writer_)
47 writer_->DidSucceed();
48 }
49 virtual void DidFail(base::PlatformFileError error_code) OVERRIDE {
50 if (writer_)
51 writer_->DidFail(error_code);
52 }
53 virtual void DidWrite(int64 bytes, bool complete) OVERRIDE {
54 if (writer_)
55 writer_->DidWrite(bytes, complete);
56 }
57 58
58 private:
59 base::WeakPtr<WebFileWriterImpl> writer_; 59 base::WeakPtr<WebFileWriterImpl> writer_;
60 }; 60 };
61 61
62 WebFileWriterImpl::WebFileWriterImpl( 62 WebFileWriterImpl::WebFileWriterImpl(
63 const GURL& path, WebKit::WebFileWriterClient* client) 63 const GURL& path, WebKit::WebFileWriterClient* client)
64 : WebFileWriterBase(path, client), 64 : WebFileWriterBase(path, client),
65 request_id_(0) { 65 request_id_(0) {
66 } 66 }
67 67
68 WebFileWriterImpl::~WebFileWriterImpl() { 68 WebFileWriterImpl::~WebFileWriterImpl() {
69 } 69 }
70 70
71 void WebFileWriterImpl::DoTruncate(const GURL& path, int64 offset) { 71 void WebFileWriterImpl::DoTruncate(const GURL& path, int64 offset) {
72 // The FileSystemDispatcher takes ownership of the CallbackDispatcher. 72 // The FileSystemDispatcher takes ownership of the CallbackDispatcher.
73 GetFileSystemDispatcher()->Truncate(path, offset, &request_id_, 73 GetFileSystemDispatcher()->Truncate(
74 new CallbackDispatcher(AsWeakPtr())); 74 path, offset, &request_id_,
75 CallbackDispatcher::GetStatusCallback(AsWeakPtr()));
75 } 76 }
76 77
77 void WebFileWriterImpl::DoWrite( 78 void WebFileWriterImpl::DoWrite(
78 const GURL& path, const GURL& blob_url, int64 offset) { 79 const GURL& path, const GURL& blob_url, int64 offset) {
79 GetFileSystemDispatcher()->Write( 80 GetFileSystemDispatcher()->Write(
80 path, blob_url, offset, &request_id_, 81 path, blob_url, offset, &request_id_,
81 new CallbackDispatcher(AsWeakPtr())); 82 CallbackDispatcher::GetWriteCallback(AsWeakPtr()));
82 } 83 }
83 84
84 void WebFileWriterImpl::DoCancel() { 85 void WebFileWriterImpl::DoCancel() {
85 GetFileSystemDispatcher()->Cancel(request_id_, 86 GetFileSystemDispatcher()->Cancel(
86 new CallbackDispatcher(AsWeakPtr())); 87 request_id_,
88 CallbackDispatcher::GetStatusCallback(AsWeakPtr()));
87 } 89 }
88 90
89 } // namespace content 91 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698