123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- // 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 <stdint.h>
- #include "base/compiler_specific.h"
- #include "base/files/file_path.h"
- #include "base/memory/weak_ptr.h"
- #include "net/base/completion_once_callback.h"
- #include "net/base/file_stream.h"
- #include "net/base/net_errors.h"
- namespace net {
- class IOBuffer;
- namespace testing {
- class MockFileStream : public FileStream {
- public:
- explicit MockFileStream(const scoped_refptr<base::TaskRunner>& task_runner);
- MockFileStream(base::File file,
- const scoped_refptr<base::TaskRunner>& task_runner);
- ~MockFileStream() override;
- // FileStream methods.
- int Seek(int64_t offset, Int64CompletionOnceCallback callback) override;
- int Read(IOBuffer* buf,
- int buf_len,
- CompletionOnceCallback callback) override;
- int Write(IOBuffer* buf,
- int buf_len,
- CompletionOnceCallback callback) override;
- int Flush(CompletionOnceCallback callback) override;
- 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_ = 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_ != OK) {
- int ret = forced_error_;
- clear_forced_error();
- return ret;
- }
- return function_error;
- }
- int64_t ReturnError64(int64_t function_error) {
- if (forced_error_ != OK) {
- int64_t ret = forced_error_;
- clear_forced_error();
- return ret;
- }
- return function_error;
- }
- // Wrappers for callbacks to make them honor ThrottleCallbacks and
- // ReleaseCallbacks.
- void DoCallback(CompletionOnceCallback callback, int result);
- void DoCallback64(Int64CompletionOnceCallback callback, int64_t result);
- // Depending on |async_error_|, either synchronously returns |forced_error_|
- // asynchronously calls |callback| with |async_error_|.
- int ErrorCallback(CompletionOnceCallback callback);
- int64_t ErrorCallback64(Int64CompletionOnceCallback callback);
- int forced_error_ = OK;
- bool async_error_ = false;
- bool throttled_ = false;
- base::OnceClosure throttled_task_;
- base::FilePath path_;
- base::WeakPtrFactory<MockFileStream> weak_factory_{this};
- };
- } // namespace testing
- } // namespace net
- #endif // NET_BASE_MOCK_FILE_STREAM_H_
|