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

Unified Diff: net/base/mock_file_stream.h

Issue 82273002: Fix various issues in RedirectToFileResourceHandler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rename test fixture Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/content_tests.gypi ('k') | net/base/mock_file_stream.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/mock_file_stream.h
diff --git a/net/base/mock_file_stream.h b/net/base/mock_file_stream.h
index a37b49546d4faeacf26dffacc4f287b9af4d1378..5b779d4027c7be1ad9a1bb7fb8ad156276fc805f 100644
--- a/net/base/mock_file_stream.h
+++ b/net/base/mock_file_stream.h
@@ -10,6 +10,7 @@
#include "base/basictypes.h"
#include "base/compiler_specific.h"
#include "base/files/file_path.h"
+#include "base/memory/weak_ptr.h"
#include "net/base/file_stream.h"
#include "net/base/net_errors.h"
@@ -21,11 +22,11 @@ namespace testing {
class MockFileStream : public net::FileStream {
public:
- MockFileStream(net::NetLog* net_log)
- : net::FileStream(net_log), forced_error_(net::OK) {}
-
- MockFileStream(base::PlatformFile file, int flags, net::NetLog* net_log)
- : net::FileStream(file, flags, net_log), forced_error_(net::OK) {}
+ explicit MockFileStream(net::NetLog* net_log);
+ MockFileStream(base::PlatformFile file, int flags, net::NetLog* net_log);
+ MockFileStream(base::PlatformFile file, int flags, net::NetLog* net_log,
+ const scoped_refptr<base::TaskRunner>& task_runner);
+ virtual ~MockFileStream();
// FileStream methods.
virtual int OpenSync(const base::FilePath& path, int open_flags) OVERRIDE;
@@ -46,11 +47,28 @@ class MockFileStream : public net::FileStream {
virtual int Flush(const CompletionCallback& callback) OVERRIDE;
virtual int FlushSync() OVERRIDE;
- void set_forced_error(int error) { forced_error_ = error; }
- void clear_forced_error() { forced_error_ = net::OK; }
+ void set_forced_error_async(int error) {
+ forced_error_ = error;
+ async_error_ = true;
+ }
+ void set_forced_error(int error) {
+ forced_error_ = error;
+ async_error_ = false;
+ }
+ void clear_forced_error() {
+ forced_error_ = net::OK;
+ async_error_ = false;
+ }
int forced_error() const { return forced_error_; }
const base::FilePath& get_path() const { return path_; }
+ // Throttles all asynchronous callbacks, including forced errors, until a
+ // matching ReleaseCallbacks call.
+ void ThrottleCallbacks();
+
+ // Resumes running asynchronous callbacks and runs any throttled callbacks.
+ void ReleaseCallbacks();
+
private:
int ReturnError(int function_error) {
if (forced_error_ != net::OK) {
@@ -72,8 +90,23 @@ class MockFileStream : public net::FileStream {
return function_error;
}
+ // Wrappers for callbacks to make them honor ThrottleCallbacks and
+ // ReleaseCallbacks.
+ void DoCallback(const CompletionCallback& callback, int result);
+ void DoCallback64(const Int64CompletionCallback& callback, int64 result);
+
+ // Depending on |async_error_|, either synchronously returns |forced_error_|
+ // asynchronously calls |callback| with |async_error_|.
+ int ErrorCallback(const CompletionCallback& callback);
+ int64 ErrorCallback64(const Int64CompletionCallback& callback);
+
int forced_error_;
+ bool async_error_;
+ bool throttled_;
+ base::Closure throttled_task_;
base::FilePath path_;
+
+ base::WeakPtrFactory<MockFileStream> weak_factory_;
};
} // namespace testing
« no previous file with comments | « content/content_tests.gypi ('k') | net/base/mock_file_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698