| OLD | NEW |
| 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 "net/base/mock_file_stream.h" | 5 #include "net/base/mock_file_stream.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 | 9 |
| 10 namespace net { | 10 namespace net { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 : net::FileStream(file.Pass(), task_runner), | 26 : net::FileStream(file.Pass(), task_runner), |
| 27 forced_error_(net::OK), | 27 forced_error_(net::OK), |
| 28 async_error_(false), | 28 async_error_(false), |
| 29 throttled_(false), | 29 throttled_(false), |
| 30 weak_factory_(this) { | 30 weak_factory_(this) { |
| 31 } | 31 } |
| 32 | 32 |
| 33 MockFileStream::~MockFileStream() { | 33 MockFileStream::~MockFileStream() { |
| 34 } | 34 } |
| 35 | 35 |
| 36 int MockFileStream::Seek(base::File::Whence whence, int64 offset, | 36 int MockFileStream::Seek(base::File::Whence whence, |
| 37 int64 offset, |
| 37 const Int64CompletionCallback& callback) { | 38 const Int64CompletionCallback& callback) { |
| 38 Int64CompletionCallback wrapped_callback = | 39 Int64CompletionCallback wrapped_callback = base::Bind( |
| 39 base::Bind(&MockFileStream::DoCallback64, | 40 &MockFileStream::DoCallback64, weak_factory_.GetWeakPtr(), callback); |
| 40 weak_factory_.GetWeakPtr(), callback); | |
| 41 if (forced_error_ == net::OK) | 41 if (forced_error_ == net::OK) |
| 42 return FileStream::Seek(whence, offset, wrapped_callback); | 42 return FileStream::Seek(whence, offset, wrapped_callback); |
| 43 return ErrorCallback64(wrapped_callback); | 43 return ErrorCallback64(wrapped_callback); |
| 44 } | 44 } |
| 45 | 45 |
| 46 int MockFileStream::Read(IOBuffer* buf, | 46 int MockFileStream::Read(IOBuffer* buf, |
| 47 int buf_len, | 47 int buf_len, |
| 48 const CompletionCallback& callback) { | 48 const CompletionCallback& callback) { |
| 49 CompletionCallback wrapped_callback = base::Bind(&MockFileStream::DoCallback, | 49 CompletionCallback wrapped_callback = base::Bind( |
| 50 weak_factory_.GetWeakPtr(), | 50 &MockFileStream::DoCallback, weak_factory_.GetWeakPtr(), callback); |
| 51 callback); | |
| 52 if (forced_error_ == net::OK) | 51 if (forced_error_ == net::OK) |
| 53 return FileStream::Read(buf, buf_len, wrapped_callback); | 52 return FileStream::Read(buf, buf_len, wrapped_callback); |
| 54 return ErrorCallback(wrapped_callback); | 53 return ErrorCallback(wrapped_callback); |
| 55 } | 54 } |
| 56 | 55 |
| 57 int MockFileStream::Write(IOBuffer* buf, | 56 int MockFileStream::Write(IOBuffer* buf, |
| 58 int buf_len, | 57 int buf_len, |
| 59 const CompletionCallback& callback) { | 58 const CompletionCallback& callback) { |
| 60 CompletionCallback wrapped_callback = base::Bind(&MockFileStream::DoCallback, | 59 CompletionCallback wrapped_callback = base::Bind( |
| 61 weak_factory_.GetWeakPtr(), | 60 &MockFileStream::DoCallback, weak_factory_.GetWeakPtr(), callback); |
| 62 callback); | |
| 63 if (forced_error_ == net::OK) | 61 if (forced_error_ == net::OK) |
| 64 return FileStream::Write(buf, buf_len, wrapped_callback); | 62 return FileStream::Write(buf, buf_len, wrapped_callback); |
| 65 return ErrorCallback(wrapped_callback); | 63 return ErrorCallback(wrapped_callback); |
| 66 } | 64 } |
| 67 | 65 |
| 68 int MockFileStream::Flush(const CompletionCallback& callback) { | 66 int MockFileStream::Flush(const CompletionCallback& callback) { |
| 69 CompletionCallback wrapped_callback = base::Bind(&MockFileStream::DoCallback, | 67 CompletionCallback wrapped_callback = base::Bind( |
| 70 weak_factory_.GetWeakPtr(), | 68 &MockFileStream::DoCallback, weak_factory_.GetWeakPtr(), callback); |
| 71 callback); | |
| 72 if (forced_error_ == net::OK) | 69 if (forced_error_ == net::OK) |
| 73 return FileStream::Flush(wrapped_callback); | 70 return FileStream::Flush(wrapped_callback); |
| 74 return ErrorCallback(wrapped_callback); | 71 return ErrorCallback(wrapped_callback); |
| 75 } | 72 } |
| 76 | 73 |
| 77 void MockFileStream::ThrottleCallbacks() { | 74 void MockFileStream::ThrottleCallbacks() { |
| 78 CHECK(!throttled_); | 75 CHECK(!throttled_); |
| 79 throttled_ = true; | 76 throttled_ = true; |
| 80 } | 77 } |
| 81 | 78 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 106 callback.Run(result); | 103 callback.Run(result); |
| 107 return; | 104 return; |
| 108 } | 105 } |
| 109 CHECK(throttled_task_.is_null()); | 106 CHECK(throttled_task_.is_null()); |
| 110 throttled_task_ = base::Bind(callback, result); | 107 throttled_task_ = base::Bind(callback, result); |
| 111 } | 108 } |
| 112 | 109 |
| 113 int MockFileStream::ErrorCallback(const CompletionCallback& callback) { | 110 int MockFileStream::ErrorCallback(const CompletionCallback& callback) { |
| 114 CHECK_NE(net::OK, forced_error_); | 111 CHECK_NE(net::OK, forced_error_); |
| 115 if (async_error_) { | 112 if (async_error_) { |
| 116 base::MessageLoop::current()->PostTask( | 113 base::MessageLoop::current()->PostTask(FROM_HERE, |
| 117 FROM_HERE, base::Bind(callback, forced_error_)); | 114 base::Bind(callback, forced_error_)); |
| 118 clear_forced_error(); | 115 clear_forced_error(); |
| 119 return net::ERR_IO_PENDING; | 116 return net::ERR_IO_PENDING; |
| 120 } | 117 } |
| 121 int ret = forced_error_; | 118 int ret = forced_error_; |
| 122 clear_forced_error(); | 119 clear_forced_error(); |
| 123 return ret; | 120 return ret; |
| 124 } | 121 } |
| 125 | 122 |
| 126 int64 MockFileStream::ErrorCallback64(const Int64CompletionCallback& callback) { | 123 int64 MockFileStream::ErrorCallback64(const Int64CompletionCallback& callback) { |
| 127 CHECK_NE(net::OK, forced_error_); | 124 CHECK_NE(net::OK, forced_error_); |
| 128 if (async_error_) { | 125 if (async_error_) { |
| 129 base::MessageLoop::current()->PostTask( | 126 base::MessageLoop::current()->PostTask(FROM_HERE, |
| 130 FROM_HERE, base::Bind(callback, forced_error_)); | 127 base::Bind(callback, forced_error_)); |
| 131 clear_forced_error(); | 128 clear_forced_error(); |
| 132 return net::ERR_IO_PENDING; | 129 return net::ERR_IO_PENDING; |
| 133 } | 130 } |
| 134 int64 ret = forced_error_; | 131 int64 ret = forced_error_; |
| 135 clear_forced_error(); | 132 clear_forced_error(); |
| 136 return ret; | 133 return ret; |
| 137 } | 134 } |
| 138 | 135 |
| 139 } // namespace testing | 136 } // namespace testing |
| 140 | 137 |
| 141 } // namespace net | 138 } // namespace net |
| OLD | NEW |