Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(714)

Side by Side Diff: net/http/http_cache_unittest.cc

Issue 23856018: Changes to HttpNetworkTransaction for WebSocket Handshake (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Standardised condition for WebSocket handshake. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_cache.h" 5 #include "net/http/http_cache.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 14 matching lines...) Expand all
25 #include "net/http/http_request_headers.h" 25 #include "net/http/http_request_headers.h"
26 #include "net/http/http_request_info.h" 26 #include "net/http/http_request_info.h"
27 #include "net/http/http_response_headers.h" 27 #include "net/http/http_response_headers.h"
28 #include "net/http/http_response_info.h" 28 #include "net/http/http_response_info.h"
29 #include "net/http/http_transaction.h" 29 #include "net/http/http_transaction.h"
30 #include "net/http/http_transaction_delegate.h" 30 #include "net/http/http_transaction_delegate.h"
31 #include "net/http/http_transaction_unittest.h" 31 #include "net/http/http_transaction_unittest.h"
32 #include "net/http/http_util.h" 32 #include "net/http/http_util.h"
33 #include "net/http/mock_http_cache.h" 33 #include "net/http/mock_http_cache.h"
34 #include "net/ssl/ssl_cert_request_info.h" 34 #include "net/ssl/ssl_cert_request_info.h"
35 #include "net/websockets/websocket_handshake_stream_base.h"
35 #include "testing/gtest/include/gtest/gtest.h" 36 #include "testing/gtest/include/gtest/gtest.h"
36 37
37 using base::Time; 38 using base::Time;
38 39
39 namespace { 40 namespace {
40 41
41 // Tests the load timing values of a request that goes through a 42 // Tests the load timing values of a request that goes through a
42 // MockNetworkTransaction. 43 // MockNetworkTransaction.
43 void TestLoadTimingNetworkRequest(const net::LoadTimingInfo& load_timing_info) { 44 void TestLoadTimingNetworkRequest(const net::LoadTimingInfo& load_timing_info) {
44 EXPECT_FALSE(load_timing_info.socket_reused); 45 EXPECT_FALSE(load_timing_info.socket_reused);
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 }; 568 };
568 569
569 struct Context { 570 struct Context {
570 Context() : result(net::ERR_IO_PENDING) {} 571 Context() : result(net::ERR_IO_PENDING) {}
571 572
572 int result; 573 int result;
573 net::TestCompletionCallback callback; 574 net::TestCompletionCallback callback;
574 scoped_ptr<net::HttpTransaction> trans; 575 scoped_ptr<net::HttpTransaction> trans;
575 }; 576 };
576 577
578 class FakeWebSocketHandshakeStreamFactory
579 : public net::WebSocketHandshakeStreamBase::Factory {
580 public:
581 virtual ~FakeWebSocketHandshakeStreamFactory() {}
582 virtual net::WebSocketHandshakeStreamBase* CreateBasicStream(
583 net::ClientSocketHandle* connect, bool using_proxy) OVERRIDE {
584 return NULL;
585 }
586 virtual net::WebSocketHandshakeStreamBase* CreateSpdyStream(
587 const base::WeakPtr<net::SpdySession>& session,
588 bool use_relative_url) OVERRIDE {
589 return NULL;
590 }
591 };
592
577 } // namespace 593 } // namespace
578 594
579 595
580 //----------------------------------------------------------------------------- 596 //-----------------------------------------------------------------------------
581 // Tests. 597 // Tests.
582 598
583 TEST(HttpCache, CreateThenDestroy) { 599 TEST(HttpCache, CreateThenDestroy) {
584 MockHttpCache cache; 600 MockHttpCache cache;
585 601
586 scoped_ptr<net::HttpTransaction> trans; 602 scoped_ptr<net::HttpTransaction> trans;
(...skipping 5704 matching lines...) Expand 10 before | Expand all | Expand 10 after
6291 if (cache.network_layer()->last_transaction()) { 6307 if (cache.network_layer()->last_transaction()) {
6292 EXPECT_EQ(net::LOW, 6308 EXPECT_EQ(net::LOW,
6293 cache.network_layer()->last_create_transaction_priority()); 6309 cache.network_layer()->last_create_transaction_priority());
6294 EXPECT_EQ(net::HIGHEST, 6310 EXPECT_EQ(net::HIGHEST,
6295 cache.network_layer()->last_transaction()->priority()); 6311 cache.network_layer()->last_transaction()->priority());
6296 } 6312 }
6297 6313
6298 EXPECT_EQ(net::OK, callback.WaitForResult()); 6314 EXPECT_EQ(net::OK, callback.WaitForResult());
6299 } 6315 }
6300 6316
6317 // Make sure that calling SetWebSocketHandshakeStreamFactory on a cache
6318 // transaction passes on its factory updates to its underlying network
6319 // transaction.
6320 TEST(HttpCache, SetWebSocketHandshakeStreamFactory) {
6321 MockHttpCache cache;
6322
6323 FakeWebSocketHandshakeStreamFactory factory;
6324 scoped_ptr<net::HttpTransaction> trans;
6325 EXPECT_EQ(net::OK, cache.http_cache()->CreateTransaction(
6326 net::IDLE, &trans, NULL));
6327 ASSERT_TRUE(trans.get());
6328
6329 EXPECT_FALSE(cache.network_layer()->last_transaction());
6330
6331 net::HttpRequestInfo info;
6332 info.url = GURL(kSimpleGET_Transaction.url);
6333 net::TestCompletionCallback callback;
6334 EXPECT_EQ(net::ERR_IO_PENDING,
6335 trans->Start(&info, callback.callback(), net::BoundNetLog()));
6336
6337 ASSERT_TRUE(cache.network_layer()->last_transaction());
6338 EXPECT_FALSE(cache.network_layer()->last_transaction()->
6339 websocket_handshake_stream_factory());
6340 trans->SetWebSocketHandshakeStreamFactory(&factory);
6341 EXPECT_EQ(&factory,
6342 cache.network_layer()->last_transaction()->
6343 websocket_handshake_stream_factory());
6344 EXPECT_EQ(net::OK, callback.WaitForResult());
6345 }
6346
6301 // Make sure that a cache transaction passes on its priority to 6347 // Make sure that a cache transaction passes on its priority to
6302 // newly-created network transactions. 6348 // newly-created network transactions.
6303 TEST(HttpCache, SetPriorityNewTransaction) { 6349 TEST(HttpCache, SetPriorityNewTransaction) {
6304 MockHttpCache cache; 6350 MockHttpCache cache;
6305 AddMockTransaction(&kRangeGET_TransactionOK); 6351 AddMockTransaction(&kRangeGET_TransactionOK);
6306 6352
6307 std::string raw_headers("HTTP/1.1 200 OK\n" 6353 std::string raw_headers("HTTP/1.1 200 OK\n"
6308 "Last-Modified: Sat, 18 Apr 2007 01:10:43 GMT\n" 6354 "Last-Modified: Sat, 18 Apr 2007 01:10:43 GMT\n"
6309 "ETag: \"foo\"\n" 6355 "ETag: \"foo\"\n"
6310 "Accept-Ranges: bytes\n" 6356 "Accept-Ranges: bytes\n"
(...skipping 26 matching lines...) Expand all
6337 trans->SetPriority(net::HIGHEST); 6383 trans->SetPriority(net::HIGHEST);
6338 // Should trigger a new network transaction and pick up the new 6384 // Should trigger a new network transaction and pick up the new
6339 // priority. 6385 // priority.
6340 ReadAndVerifyTransaction(trans.get(), transaction); 6386 ReadAndVerifyTransaction(trans.get(), transaction);
6341 6387
6342 EXPECT_EQ(net::HIGHEST, 6388 EXPECT_EQ(net::HIGHEST,
6343 cache.network_layer()->last_create_transaction_priority()); 6389 cache.network_layer()->last_create_transaction_priority());
6344 6390
6345 RemoveMockTransaction(&kRangeGET_TransactionOK); 6391 RemoveMockTransaction(&kRangeGET_TransactionOK);
6346 } 6392 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698