// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // This file defines MockFileStream, a test class for FileStream. #ifndef NET_BASE_MOCK_FILE_STREAM_H_ #define NET_BASE_MOCK_FILE_STREAM_H_ #include "base/basictypes.h" #include "base/compiler_specific.h" #include "base/files/file_path.h" #include "net/base/file_stream.h" #include "net/base/net_errors.h" namespace net { class IOBuffer; 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) {} // FileStream methods. virtual int OpenSync(const base::FilePath& path, int open_flags) OVERRIDE; virtual int Seek(net::Whence whence, int64 offset, const Int64CompletionCallback& callback) OVERRIDE; virtual int64 SeekSync(net::Whence whence, int64 offset) OVERRIDE; virtual int64 Available() OVERRIDE; virtual int Read(IOBuffer* buf, int buf_len, const CompletionCallback& callback) OVERRIDE; virtual int ReadSync(char* buf, int buf_len) OVERRIDE; virtual int ReadUntilComplete(char *buf, int buf_len) OVERRIDE; virtual int Write(IOBuffer* buf, int buf_len, const CompletionCallback& callback) OVERRIDE; virtual int WriteSync(const char* buf, int buf_len) OVERRIDE; virtual int64 Truncate(int64 bytes) OVERRIDE; 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; } int forced_error() const { return forced_error_; } const base::FilePath& get_path() const { return path_; } private: int ReturnError(int function_error) { if (forced_error_ != net::OK) { int ret = forced_error_; clear_forced_error(); return ret; } return function_error; } int64 ReturnError64(int64 function_error) { if (forced_error_ != net::OK) { int64 ret = forced_error_; clear_forced_error(); return ret; } return function_error; } int forced_error_; base::FilePath path_; }; } // namespace testing } // namespace net #endif // NET_BASE_MOCK_FILE_STREAM_H_