// Copyright 2020 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 NET_HTTP_TEST_UPLOAD_DATA_STREAM_NOT_ALLOW_HTTP1_H_
#define NET_HTTP_TEST_UPLOAD_DATA_STREAM_NOT_ALLOW_HTTP1_H_

#include "net/base/upload_data_stream.h"

namespace net {

// UploadDataStreamNotAllowHTTP1 simply disallows HTTP/1 and uploads content.
class UploadDataStreamNotAllowHTTP1 : public UploadDataStream {
 public:
  explicit UploadDataStreamNotAllowHTTP1(const std::string& content)
      : UploadDataStream(true, 0), content_(content) {}
  UploadDataStreamNotAllowHTTP1(const UploadDataStreamNotAllowHTTP1&) = delete;
  UploadDataStreamNotAllowHTTP1& operator=(
      const UploadDataStreamNotAllowHTTP1&) = delete;

  bool AllowHTTP1() const override;

 private:
  int InitInternal(const NetLogWithSource& net_log) override;
  int ReadInternal(IOBuffer* buf, int buf_len) override;
  void ResetInternal() override;

  std::string content_;
};

}  // namespace net

#endif  // NET_HTTP_TEST_UPLOAD_DATA_STREAM_NOT_ALLOW_HTTP1_H_