// Copyright 2018 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. #ifndef CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_STREAM_FILE_H_ #define CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_STREAM_FILE_H_ #include "base/files/file.h" #include "base/memory/scoped_refptr.h" #include "content/browser/devtools/devtools_io_context.h" #include namespace content { class DevToolsStreamFile : public DevToolsIOContext::Stream { public: static scoped_refptr Create(DevToolsIOContext* context, bool binary); const std::string& handle() const { return handle_; } void Append(std::unique_ptr data); private: DevToolsStreamFile(DevToolsIOContext* context, bool binary); ~DevToolsStreamFile() override; void Read(off_t position, size_t max_size, ReadCallback callback) override; void ReadOnFileSequence(off_t pos, size_t max_size, ReadCallback callback); void AppendOnFileSequence(std::unique_ptr data); bool InitOnFileSequenceIfNeeded(); const std::string handle_; const bool binary_; base::File file_; scoped_refptr task_runner_; bool had_errors_; off_t last_read_pos_; }; } // namespace content #endif // CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_STREAM_FILE_H_