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(Whence whence, int64 offset, | 36 int MockFileStream::Seek(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 |