| Index: net/spdy/spdy_network_transaction_unittest.cc
|
| diff --git a/net/spdy/spdy_network_transaction_unittest.cc b/net/spdy/spdy_network_transaction_unittest.cc
|
| index bce3feb82271246a222a59a186ef30cbb19354e2..3ac38cbc7b4d9406a7bec1e7ea24c1af5e4409f0 100644
|
| --- a/net/spdy/spdy_network_transaction_unittest.cc
|
| +++ b/net/spdy/spdy_network_transaction_unittest.cc
|
| @@ -1128,6 +1128,46 @@ TEST_P(SpdyNetworkTransactionTest, CancelledTransaction) {
|
| helper.VerifyDataNotConsumed();
|
| }
|
|
|
| +// Verify that the client sends a Rst Frame upon cancelling the stream.
|
| +TEST_P(SpdyNetworkTransactionTest, CancelledTransactionSendRst) {
|
| + scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST));
|
| + scoped_ptr<spdy::SpdyFrame> rst(
|
| + ConstructSpdyRstStream(1, spdy::CANCEL));
|
| + MockWrite writes[] = {
|
| + CreateMockWrite(*req, 1),
|
| + CreateMockWrite(*rst, 3),
|
| + };
|
| +
|
| + scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
|
| + MockRead reads[] = {
|
| + CreateMockRead(*resp, 2),
|
| + MockRead(true, 0, 0, 4) // EOF
|
| + };
|
| +
|
| + scoped_refptr<OrderedSocketData> data(
|
| + new OrderedSocketData(reads, arraysize(reads),
|
| + writes, arraysize(writes)));
|
| +
|
| + NormalSpdyTransactionHelper helper(CreateGetRequest(),
|
| + BoundNetLog(),
|
| + GetParam());
|
| + helper.AddData(data.get());
|
| + helper.RunPreTestSetup();
|
| + HttpNetworkTransaction* trans = helper.trans();
|
| +
|
| + TestCompletionCallback callback;
|
| +
|
| + int rv = trans->Start(&CreateGetRequest(), &callback, BoundNetLog());
|
| + EXPECT_EQ(ERR_IO_PENDING, rv);
|
| + rv = callback.WaitForResult();
|
| + helper.ResetTrans(); // Cancel the transaction.
|
| +
|
| + // Finish running rest of tasks.
|
| + MessageLoop::current()->RunAllPending();
|
| + data->CompleteRead();
|
| + helper.VerifyDataConsumed();
|
| +}
|
| +
|
| class SpdyNetworkTransactionTest::StartTransactionCallback
|
| : public CallbackRunner< Tuple1<int> > {
|
| public:
|
| @@ -1696,8 +1736,11 @@ TEST_P(SpdyNetworkTransactionTest, DecompressFailureOnSynReply) {
|
|
|
| scoped_ptr<spdy::SpdyFrame> compressed(
|
| ConstructSpdyGet(NULL, 0, true, 1, LOWEST));
|
| + scoped_ptr<spdy::SpdyFrame> rst(
|
| + ConstructSpdyRstStream(1, spdy::PROTOCOL_ERROR));
|
| MockWrite writes[] = {
|
| CreateMockWrite(*compressed),
|
| + CreateMockWrite(*rst),
|
| };
|
|
|
| scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1));
|
| @@ -1705,7 +1748,6 @@ TEST_P(SpdyNetworkTransactionTest, DecompressFailureOnSynReply) {
|
| MockRead reads[] = {
|
| CreateMockRead(*resp),
|
| CreateMockRead(*body),
|
| - MockRead(true, 0, 0) // EOF
|
| };
|
|
|
| scoped_refptr<DelayedSocketData> data(
|
| @@ -1715,7 +1757,7 @@ TEST_P(SpdyNetworkTransactionTest, DecompressFailureOnSynReply) {
|
| BoundNetLog(), GetParam());
|
| helper.RunToCompletion(data.get());
|
| TransactionHelperResult out = helper.output();
|
| - EXPECT_EQ(ERR_SYN_REPLY_NOT_RECEIVED, out.rv);
|
| + EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, out.rv);
|
| data->Reset();
|
|
|
| EnableCompression(false);
|
|
|