| Index: components/cronet/ios/test/cronet_bidirectional_stream_test.mm
|
| diff --git a/components/cronet/ios/test/cronet_bidirectional_stream_test.mm b/components/cronet/ios/test/cronet_bidirectional_stream_test.mm
|
| index f55c86ceb8e9eb4e9dd4b6e790cec4428158e269..70ba2cb011ff64f3fa8d36f9666d3c9445200dc0 100644
|
| --- a/components/cronet/ios/test/cronet_bidirectional_stream_test.mm
|
| +++ b/components/cronet/ios/test/cronet_bidirectional_stream_test.mm
|
| @@ -15,9 +15,9 @@
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/sys_string_conversions.h"
|
| #include "base/synchronization/waitable_event.h"
|
| -#include "components/cronet/ios/cronet_c_for_grpc.h"
|
| #include "components/cronet/ios/cronet_environment.h"
|
| #include "components/cronet/ios/test/quic_test_server.h"
|
| +#include "components/grpc_support/include/c_for_grpc.h"
|
| #include "net/base/mac/url_conversions.h"
|
| #include "net/base/net_errors.h"
|
| #include "net/cert/mock_cert_verifier.h"
|
| @@ -28,12 +28,12 @@
|
|
|
| namespace {
|
|
|
| -cronet_bidirectional_stream_header kTestHeaders[] = {
|
| +bidirectional_stream_header kTestHeaders[] = {
|
| {"header1", "foo"},
|
| {"header2", "bar"},
|
| };
|
| -const cronet_bidirectional_stream_header_array kTestHeadersArray = {
|
| - 2, 2, kTestHeaders};
|
| +const bidirectional_stream_header_array kTestHeadersArray = {2, 2,
|
| + kTestHeaders};
|
| } // namespace
|
|
|
| namespace cronet {
|
| @@ -69,7 +69,7 @@ class CronetBidirectionalStreamTest : public ::testing::TestWithParam<bool> {
|
|
|
| cronet_environment_->Start();
|
|
|
| - cronet_engine_.obj = cronet_environment_;
|
| + stream_engine_.obj = cronet_environment_->GetURLRequestContextGetter();
|
| }
|
|
|
| StartQuicTestServer();
|
| @@ -81,15 +81,15 @@ class CronetBidirectionalStreamTest : public ::testing::TestWithParam<bool> {
|
| cronet_environment_->StopNetLog();
|
| }
|
|
|
| - cronet_engine* engine() { return &cronet_engine_; }
|
| + stream_engine* engine() { return &stream_engine_; }
|
|
|
| private:
|
| static CronetEnvironment* cronet_environment_;
|
| - static cronet_engine cronet_engine_;
|
| + static stream_engine stream_engine_;
|
| };
|
|
|
| CronetEnvironment* CronetBidirectionalStreamTest::cronet_environment_ = nullptr;
|
| -cronet_engine CronetBidirectionalStreamTest::cronet_engine_ = {0};
|
| +stream_engine CronetBidirectionalStreamTest::stream_engine_ = {0};
|
|
|
| class TestBidirectionalStreamCallback {
|
| public:
|
| @@ -107,7 +107,7 @@ class TestBidirectionalStreamCallback {
|
|
|
| struct WriteData {
|
| std::string buffer;
|
| - // If |flush| is true, then cronet_bidirectional_stream_flush() will be
|
| + // If |flush| is true, then bidirectional_stream_flush() will be
|
| // called after writing of the |buffer|.
|
| bool flush;
|
|
|
| @@ -117,7 +117,7 @@ class TestBidirectionalStreamCallback {
|
| DISALLOW_COPY_AND_ASSIGN(WriteData);
|
| };
|
|
|
| - cronet_bidirectional_stream* stream;
|
| + bidirectional_stream* stream;
|
| base::WaitableEvent stream_done_event;
|
|
|
| // Test parameters.
|
| @@ -152,13 +152,12 @@ class TestBidirectionalStreamCallback {
|
| }
|
|
|
| static TestBidirectionalStreamCallback* FromStream(
|
| - cronet_bidirectional_stream* stream) {
|
| + bidirectional_stream* stream) {
|
| DCHECK(stream);
|
| return (TestBidirectionalStreamCallback*)stream->annotation;
|
| }
|
|
|
| - virtual bool MaybeCancel(cronet_bidirectional_stream* stream,
|
| - ResponseStep step) {
|
| + virtual bool MaybeCancel(bidirectional_stream* stream, ResponseStep step) {
|
| DCHECK_EQ(stream, this->stream);
|
| response_step = step;
|
| DLOG(WARNING) << "Step: " << step;
|
| @@ -166,8 +165,8 @@ class TestBidirectionalStreamCallback {
|
| if (step != cancel_from_step)
|
| return false;
|
|
|
| - cronet_bidirectional_stream_cancel(stream);
|
| - cronet_bidirectional_stream_write(stream, "abc", 3, false);
|
| + bidirectional_stream_cancel(stream);
|
| + bidirectional_stream_write(stream, "abc", 3, false);
|
|
|
| return true;
|
| }
|
| @@ -181,26 +180,26 @@ class TestBidirectionalStreamCallback {
|
| write_data.push_back(base::MakeUnique<WriteData>(data, flush));
|
| }
|
|
|
| - virtual void MaybeWriteNextData(cronet_bidirectional_stream* stream) {
|
| + virtual void MaybeWriteNextData(bidirectional_stream* stream) {
|
| DCHECK_EQ(stream, this->stream);
|
| if (write_data.empty())
|
| return;
|
| for (const auto& data : write_data) {
|
| - cronet_bidirectional_stream_write(stream, data->buffer.c_str(),
|
| - data->buffer.size(),
|
| - data == write_data.back());
|
| + bidirectional_stream_write(stream, data->buffer.c_str(),
|
| + data->buffer.size(),
|
| + data == write_data.back());
|
| if (data->flush) {
|
| - cronet_bidirectional_stream_flush(stream);
|
| + bidirectional_stream_flush(stream);
|
| break;
|
| }
|
| }
|
| }
|
|
|
| - cronet_bidirectional_stream_callback* callback() const { return &s_callback; }
|
| + bidirectional_stream_callback* callback() const { return &s_callback; }
|
|
|
| private:
|
| // C callbacks.
|
| - static void on_stream_ready_callback(cronet_bidirectional_stream* stream) {
|
| + static void on_stream_ready_callback(bidirectional_stream* stream) {
|
| TestBidirectionalStreamCallback* test = FromStream(stream);
|
| if (test->MaybeCancel(stream, ON_STREAM_READY))
|
| return;
|
| @@ -208,8 +207,8 @@ class TestBidirectionalStreamCallback {
|
| }
|
|
|
| static void on_response_headers_received_callback(
|
| - cronet_bidirectional_stream* stream,
|
| - const cronet_bidirectional_stream_header_array* headers,
|
| + bidirectional_stream* stream,
|
| + const bidirectional_stream_header_array* headers,
|
| const char* negotiated_protocol) {
|
| TestBidirectionalStreamCallback* test = FromStream(stream);
|
| ASSERT_EQ(test->expected_negotiated_protocol,
|
| @@ -221,11 +220,11 @@ class TestBidirectionalStreamCallback {
|
| if (test->MaybeCancel(stream, ON_RESPONSE_STARTED))
|
| return;
|
| test->read_buffer = new char[test->read_buffer_size];
|
| - cronet_bidirectional_stream_read(stream, test->read_buffer,
|
| - test->read_buffer_size);
|
| + bidirectional_stream_read(stream, test->read_buffer,
|
| + test->read_buffer_size);
|
| }
|
|
|
| - static void on_read_completed_callback(cronet_bidirectional_stream* stream,
|
| + static void on_read_completed_callback(bidirectional_stream* stream,
|
| char* data,
|
| int count) {
|
| TestBidirectionalStreamCallback* test = FromStream(stream);
|
| @@ -234,11 +233,11 @@ class TestBidirectionalStreamCallback {
|
| return;
|
| if (count == 0)
|
| return;
|
| - cronet_bidirectional_stream_read(stream, test->read_buffer,
|
| - test->read_buffer_size);
|
| + bidirectional_stream_read(stream, test->read_buffer,
|
| + test->read_buffer_size);
|
| }
|
|
|
| - static void on_write_completed_callback(cronet_bidirectional_stream* stream,
|
| + static void on_write_completed_callback(bidirectional_stream* stream,
|
| const char* data) {
|
| TestBidirectionalStreamCallback* test = FromStream(stream);
|
| ASSERT_EQ(test->write_data.front()->buffer.c_str(), data);
|
| @@ -251,8 +250,8 @@ class TestBidirectionalStreamCallback {
|
| }
|
|
|
| static void on_response_trailers_received_callback(
|
| - cronet_bidirectional_stream* stream,
|
| - const cronet_bidirectional_stream_header_array* trailers) {
|
| + bidirectional_stream* stream,
|
| + const bidirectional_stream_header_array* trailers) {
|
| TestBidirectionalStreamCallback* test = FromStream(stream);
|
| for (size_t i = 0; i < trailers->count; ++i) {
|
| test->response_trailers[trailers->headers[i].key] =
|
| @@ -263,40 +262,38 @@ class TestBidirectionalStreamCallback {
|
| return;
|
| }
|
|
|
| - static void on_succeded_callback(cronet_bidirectional_stream* stream) {
|
| + static void on_succeded_callback(bidirectional_stream* stream) {
|
| TestBidirectionalStreamCallback* test = FromStream(stream);
|
| ASSERT_TRUE(test->write_data.empty());
|
| test->MaybeCancel(stream, ON_SUCCEEDED);
|
| test->SignalDone();
|
| }
|
|
|
| - static void on_failed_callback(cronet_bidirectional_stream* stream,
|
| - int net_error) {
|
| + static void on_failed_callback(bidirectional_stream* stream, int net_error) {
|
| TestBidirectionalStreamCallback* test = FromStream(stream);
|
| test->net_error = net_error;
|
| test->MaybeCancel(stream, ON_FAILED);
|
| test->SignalDone();
|
| }
|
|
|
| - static void on_canceled_callback(cronet_bidirectional_stream* stream) {
|
| + static void on_canceled_callback(bidirectional_stream* stream) {
|
| TestBidirectionalStreamCallback* test = FromStream(stream);
|
| test->MaybeCancel(stream, ON_CANCELED);
|
| test->SignalDone();
|
| }
|
|
|
| - static cronet_bidirectional_stream_callback s_callback;
|
| + static bidirectional_stream_callback s_callback;
|
| };
|
|
|
| -cronet_bidirectional_stream_callback
|
| - TestBidirectionalStreamCallback::s_callback = {
|
| - on_stream_ready_callback,
|
| - on_response_headers_received_callback,
|
| - on_read_completed_callback,
|
| - on_write_completed_callback,
|
| - on_response_trailers_received_callback,
|
| - on_succeded_callback,
|
| - on_failed_callback,
|
| - on_canceled_callback};
|
| +bidirectional_stream_callback TestBidirectionalStreamCallback::s_callback = {
|
| + on_stream_ready_callback,
|
| + on_response_headers_received_callback,
|
| + on_read_completed_callback,
|
| + on_write_completed_callback,
|
| + on_response_trailers_received_callback,
|
| + on_succeded_callback,
|
| + on_failed_callback,
|
| + on_canceled_callback};
|
|
|
| TestBidirectionalStreamCallback::WriteData::WriteData(const std::string& data,
|
| bool flush_after)
|
| @@ -310,13 +307,12 @@ TEST_P(CronetBidirectionalStreamTest, StartExampleBidiStream) {
|
| test.AddWriteData("world!");
|
| // Use small read buffer size to test that response is split properly.
|
| test.read_buffer_size = 2;
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| - &kTestHeadersArray, false);
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| + &kTestHeadersArray, false);
|
| test.BlockForDone();
|
| ASSERT_EQ(std::string(kHelloStatus), test.response_headers[kStatusHeader]);
|
| ASSERT_EQ(std::string(kHelloHeaderValue),
|
| @@ -328,7 +324,7 @@ TEST_P(CronetBidirectionalStreamTest, StartExampleBidiStream) {
|
| ASSERT_EQ(std::string(kHelloBodyValue), base::JoinString(test.read_data, ""));
|
| ASSERT_EQ(std::string(kHelloTrailerValue),
|
| test.response_trailers[kHelloTrailerName]);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, SimplePutWithEmptyWriteDataAtTheEnd) {
|
| @@ -336,13 +332,12 @@ TEST_P(CronetBidirectionalStreamTest, SimplePutWithEmptyWriteDataAtTheEnd) {
|
| test.AddWriteData("Hello, ");
|
| test.AddWriteData("world!");
|
| test.AddWriteData("");
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "PUT",
|
| - &kTestHeadersArray, false);
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "PUT",
|
| + &kTestHeadersArray, false);
|
| test.BlockForDone();
|
| ASSERT_EQ(std::string(kHelloStatus), test.response_headers[kStatusHeader]);
|
| ASSERT_EQ(std::string(kHelloHeaderValue),
|
| @@ -351,21 +346,20 @@ TEST_P(CronetBidirectionalStreamTest, SimplePutWithEmptyWriteDataAtTheEnd) {
|
| ASSERT_EQ(std::string(kHelloBodyValue), test.read_data.front());
|
| ASSERT_EQ(std::string(kHelloTrailerValue),
|
| test.response_trailers[kHelloTrailerName]);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, SimpleGetWithFlush) {
|
| TestBidirectionalStreamCallback test;
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_disable_auto_flush(test.stream, true);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| + bidirectional_stream_disable_auto_flush(test.stream, true);
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| // Flush before start is ignored.
|
| - cronet_bidirectional_stream_flush(test.stream);
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "GET",
|
| - &kTestHeadersArray, true);
|
| + bidirectional_stream_flush(test.stream);
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "GET",
|
| + &kTestHeadersArray, true);
|
| test.BlockForDone();
|
| ASSERT_EQ(std::string(kHelloStatus), test.response_headers[kStatusHeader]);
|
| ASSERT_EQ(std::string(kHelloHeaderValue),
|
| @@ -375,8 +369,8 @@ TEST_P(CronetBidirectionalStreamTest, SimpleGetWithFlush) {
|
| ASSERT_EQ(std::string(kHelloTrailerValue),
|
| test.response_trailers[kHelloTrailerName]);
|
| // Flush after done is ignored.
|
| - cronet_bidirectional_stream_flush(test.stream);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_flush(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, SimplePostWithFlush) {
|
| @@ -384,16 +378,15 @@ TEST_P(CronetBidirectionalStreamTest, SimplePostWithFlush) {
|
| test.AddWriteData("Test String", false);
|
| test.AddWriteData("1234567890", false);
|
| test.AddWriteData("woot!", true);
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_disable_auto_flush(test.stream, true);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| + bidirectional_stream_disable_auto_flush(test.stream, true);
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| // Flush before start is ignored.
|
| - cronet_bidirectional_stream_flush(test.stream);
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| - &kTestHeadersArray, false);
|
| + bidirectional_stream_flush(test.stream);
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| + &kTestHeadersArray, false);
|
| test.BlockForDone();
|
| ASSERT_EQ(std::string(kHelloStatus), test.response_headers[kStatusHeader]);
|
| ASSERT_EQ(std::string(kHelloHeaderValue),
|
| @@ -403,8 +396,8 @@ TEST_P(CronetBidirectionalStreamTest, SimplePostWithFlush) {
|
| ASSERT_EQ(std::string(kHelloTrailerValue),
|
| test.response_trailers[kHelloTrailerName]);
|
| // Flush after done is ignored.
|
| - cronet_bidirectional_stream_flush(test.stream);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_flush(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, SimplePostWithFlushTwice) {
|
| @@ -415,16 +408,15 @@ TEST_P(CronetBidirectionalStreamTest, SimplePostWithFlushTwice) {
|
| test.AddWriteData("Test String", false);
|
| test.AddWriteData("1234567890", false);
|
| test.AddWriteData("woot!", true);
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_disable_auto_flush(test.stream, true);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| + bidirectional_stream_disable_auto_flush(test.stream, true);
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| // Flush before start is ignored.
|
| - cronet_bidirectional_stream_flush(test.stream);
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| - &kTestHeadersArray, false);
|
| + bidirectional_stream_flush(test.stream);
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| + &kTestHeadersArray, false);
|
| test.BlockForDone();
|
| ASSERT_EQ(std::string(kHelloStatus), test.response_headers[kStatusHeader]);
|
| ASSERT_EQ(std::string(kHelloHeaderValue),
|
| @@ -434,8 +426,8 @@ TEST_P(CronetBidirectionalStreamTest, SimplePostWithFlushTwice) {
|
| ASSERT_EQ(std::string(kHelloTrailerValue),
|
| test.response_trailers[kHelloTrailerName]);
|
| // Flush after done is ignored.
|
| - cronet_bidirectional_stream_flush(test.stream);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_flush(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, SimplePostWithFlushAfterOneWrite) {
|
| @@ -443,16 +435,15 @@ TEST_P(CronetBidirectionalStreamTest, SimplePostWithFlushAfterOneWrite) {
|
| test.AddWriteData("Test String", false);
|
| test.AddWriteData("1234567890", false);
|
| test.AddWriteData("woot!", true);
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_disable_auto_flush(test.stream, true);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| + bidirectional_stream_disable_auto_flush(test.stream, true);
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| // Flush before start is ignored.
|
| - cronet_bidirectional_stream_flush(test.stream);
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| - &kTestHeadersArray, false);
|
| + bidirectional_stream_flush(test.stream);
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| + &kTestHeadersArray, false);
|
| test.BlockForDone();
|
| ASSERT_EQ(std::string(kHelloStatus), test.response_headers[kStatusHeader]);
|
| ASSERT_EQ(std::string(kHelloHeaderValue),
|
| @@ -462,14 +453,14 @@ TEST_P(CronetBidirectionalStreamTest, SimplePostWithFlushAfterOneWrite) {
|
| ASSERT_EQ(std::string(kHelloTrailerValue),
|
| test.response_trailers[kHelloTrailerName]);
|
| // Flush after done is ignored.
|
| - cronet_bidirectional_stream_flush(test.stream);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_flush(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, TestDelayedFlush) {
|
| class CustomTestBidirectionalStreamCallback
|
| : public TestBidirectionalStreamCallback {
|
| - void MaybeWriteNextData(cronet_bidirectional_stream* stream) override {
|
| + void MaybeWriteNextData(bidirectional_stream* stream) override {
|
| DCHECK_EQ(stream, this->stream);
|
| if (write_data.empty())
|
| return;
|
| @@ -478,17 +469,17 @@ TEST_P(CronetBidirectionalStreamTest, TestDelayedFlush) {
|
| // EndOfStream is set with "6" but not flushed, so it is not sent.
|
| if (write_data.front()->buffer == "1") {
|
| for (const auto& data : write_data) {
|
| - cronet_bidirectional_stream_write(stream, data->buffer.c_str(),
|
| - data->buffer.size(),
|
| - data == write_data.back());
|
| + bidirectional_stream_write(stream, data->buffer.c_str(),
|
| + data->buffer.size(),
|
| + data == write_data.back());
|
| if (data->flush) {
|
| - cronet_bidirectional_stream_flush(stream);
|
| + bidirectional_stream_flush(stream);
|
| }
|
| }
|
| }
|
| // Flush the final buffer with endOfStream flag.
|
| if (write_data.front()->buffer == "6")
|
| - cronet_bidirectional_stream_flush(stream);
|
| + bidirectional_stream_flush(stream);
|
| }
|
| };
|
|
|
| @@ -499,96 +490,89 @@ TEST_P(CronetBidirectionalStreamTest, TestDelayedFlush) {
|
| test.AddWriteData("4", false);
|
| test.AddWriteData("5", true);
|
| test.AddWriteData("6", false);
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_disable_auto_flush(test.stream, true);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| + bidirectional_stream_disable_auto_flush(test.stream, true);
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| // Flush before start is ignored.
|
| - cronet_bidirectional_stream_flush(test.stream);
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| - &kTestHeadersArray, false);
|
| + bidirectional_stream_flush(test.stream);
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| + &kTestHeadersArray, false);
|
| test.BlockForDone();
|
| // Flush after done is ignored.
|
| - cronet_bidirectional_stream_flush(test.stream);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_flush(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, CancelOnRead) {
|
| TestBidirectionalStreamCallback test;
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| test.cancel_from_step = TestBidirectionalStreamCallback::ON_READ_COMPLETED;
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| - &kTestHeadersArray, true);
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| + &kTestHeadersArray, true);
|
| test.BlockForDone();
|
| ASSERT_EQ(std::string(kHelloStatus), test.response_headers[kStatusHeader]);
|
| ASSERT_EQ(std::string(kHelloBodyValue), test.read_data.front());
|
| ASSERT_EQ(TestBidirectionalStreamCallback::ON_CANCELED, test.response_step);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, CancelOnResponse) {
|
| TestBidirectionalStreamCallback test;
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| test.cancel_from_step = TestBidirectionalStreamCallback::ON_RESPONSE_STARTED;
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| - &kTestHeadersArray, true);
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| + &kTestHeadersArray, true);
|
| test.BlockForDone();
|
| ASSERT_EQ(std::string(kHelloStatus), test.response_headers[kStatusHeader]);
|
| ASSERT_TRUE(test.read_data.empty());
|
| ASSERT_EQ(TestBidirectionalStreamCallback::ON_CANCELED, test.response_step);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, CancelOnSucceeded) {
|
| TestBidirectionalStreamCallback test;
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| test.cancel_from_step = TestBidirectionalStreamCallback::ON_SUCCEEDED;
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| - &kTestHeadersArray, true);
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| + &kTestHeadersArray, true);
|
| test.BlockForDone();
|
| ASSERT_EQ(std::string(kHelloStatus), test.response_headers[kStatusHeader]);
|
| ASSERT_EQ(std::string(kHelloBodyValue), test.read_data.front());
|
| ASSERT_EQ(TestBidirectionalStreamCallback::ON_SUCCEEDED, test.response_step);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, ReadFailsBeforeRequestStarted) {
|
| TestBidirectionalStreamCallback test;
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| char read_buffer[1];
|
| - cronet_bidirectional_stream_read(test.stream, read_buffer,
|
| - sizeof(read_buffer));
|
| + bidirectional_stream_read(test.stream, read_buffer, sizeof(read_buffer));
|
| test.BlockForDone();
|
| ASSERT_TRUE(test.read_data.empty());
|
| ASSERT_EQ(TestBidirectionalStreamCallback::ON_FAILED, test.response_step);
|
| ASSERT_EQ(net::ERR_UNEXPECTED, test.net_error);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest,
|
| StreamFailBeforeReadIsExecutedOnNetworkThread) {
|
| class CustomTestBidirectionalStreamCallback
|
| : public TestBidirectionalStreamCallback {
|
| - bool MaybeCancel(cronet_bidirectional_stream* stream,
|
| - ResponseStep step) override {
|
| + bool MaybeCancel(bidirectional_stream* stream, ResponseStep step) override {
|
| if (step == ResponseStep::ON_READ_COMPLETED) {
|
| // Shut down the server, and the stream should error out.
|
| // The second call to ShutdownQuicTestServer is no-op.
|
| @@ -602,39 +586,36 @@ TEST_P(CronetBidirectionalStreamTest,
|
| test.AddWriteData("Hello, ");
|
| test.AddWriteData("world!");
|
| test.read_buffer_size = 2;
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| - &kTestHeadersArray, false);
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| + &kTestHeadersArray, false);
|
| test.BlockForDone();
|
| ASSERT_EQ(TestBidirectionalStreamCallback::ON_FAILED, test.response_step);
|
| ASSERT_EQ(net::ERR_QUIC_PROTOCOL_ERROR, test.net_error);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, WriteFailsBeforeRequestStarted) {
|
| TestBidirectionalStreamCallback test;
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| - cronet_bidirectional_stream_write(test.stream, "1", 1, false);
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| + bidirectional_stream_write(test.stream, "1", 1, false);
|
| test.BlockForDone();
|
| ASSERT_TRUE(test.read_data.empty());
|
| ASSERT_EQ(TestBidirectionalStreamCallback::ON_FAILED, test.response_step);
|
| ASSERT_EQ(net::ERR_UNEXPECTED, test.net_error);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, StreamFailAfterStreamReadyCallback) {
|
| class CustomTestBidirectionalStreamCallback
|
| : public TestBidirectionalStreamCallback {
|
| - bool MaybeCancel(cronet_bidirectional_stream* stream,
|
| - ResponseStep step) override {
|
| + bool MaybeCancel(bidirectional_stream* stream, ResponseStep step) override {
|
| if (step == ResponseStep::ON_STREAM_READY) {
|
| // Shut down the server, and the stream should error out.
|
| // The second call to ShutdownQuicTestServer is no-op.
|
| @@ -646,26 +627,24 @@ TEST_P(CronetBidirectionalStreamTest, StreamFailAfterStreamReadyCallback) {
|
|
|
| CustomTestBidirectionalStreamCallback test;
|
| test.AddWriteData("Test String");
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| - &kTestHeadersArray, false);
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| + &kTestHeadersArray, false);
|
| test.BlockForDone();
|
| ASSERT_EQ(TestBidirectionalStreamCallback::ON_FAILED, test.response_step);
|
| ASSERT_TRUE(test.net_error == net::ERR_QUIC_PROTOCOL_ERROR ||
|
| test.net_error == net::ERR_QUIC_HANDSHAKE_FAILED);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest,
|
| StreamFailBeforeWriteIsExecutedOnNetworkThread) {
|
| class CustomTestBidirectionalStreamCallback
|
| : public TestBidirectionalStreamCallback {
|
| - bool MaybeCancel(cronet_bidirectional_stream* stream,
|
| - ResponseStep step) override {
|
| + bool MaybeCancel(bidirectional_stream* stream, ResponseStep step) override {
|
| if (step == ResponseStep::ON_WRITE_COMPLETED) {
|
| // Shut down the server, and the stream should error out.
|
| // The second call to ShutdownQuicTestServer is no-op.
|
| @@ -679,35 +658,33 @@ TEST_P(CronetBidirectionalStreamTest,
|
| test.AddWriteData("Test String");
|
| test.AddWriteData("1234567890");
|
| test.AddWriteData("woot!");
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| - cronet_bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| - &kTestHeadersArray, false);
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| + bidirectional_stream_start(test.stream, kTestServerUrl, 0, "POST",
|
| + &kTestHeadersArray, false);
|
| test.BlockForDone();
|
| ASSERT_EQ(TestBidirectionalStreamCallback::ON_FAILED, test.response_step);
|
| ASSERT_TRUE(test.net_error == net::ERR_QUIC_PROTOCOL_ERROR ||
|
| test.net_error == net::ERR_QUIC_HANDSHAKE_FAILED);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| TEST_P(CronetBidirectionalStreamTest, FailedResolution) {
|
| TestBidirectionalStreamCallback test;
|
| - test.stream =
|
| - cronet_bidirectional_stream_create(engine(), &test, test.callback());
|
| + test.stream = bidirectional_stream_create(engine(), &test, test.callback());
|
| DCHECK(test.stream);
|
| - cronet_bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| - GetParam());
|
| + bidirectional_stream_delay_request_headers_until_flush(test.stream,
|
| + GetParam());
|
| test.cancel_from_step = TestBidirectionalStreamCallback::ON_FAILED;
|
| - cronet_bidirectional_stream_start(test.stream, "https://notfound.example.com",
|
| - 0, "GET", &kTestHeadersArray, true);
|
| + bidirectional_stream_start(test.stream, "https://notfound.example.com", 0,
|
| + "GET", &kTestHeadersArray, true);
|
| test.BlockForDone();
|
| ASSERT_TRUE(test.read_data.empty());
|
| ASSERT_EQ(TestBidirectionalStreamCallback::ON_FAILED, test.response_step);
|
| ASSERT_EQ(net::ERR_NAME_NOT_RESOLVED, test.net_error);
|
| - cronet_bidirectional_stream_destroy(test.stream);
|
| + bidirectional_stream_destroy(test.stream);
|
| }
|
|
|
| INSTANTIATE_TEST_CASE_P(CronetBidirectionalStreamDelayRequestHeadersUntilFlush,
|
|
|