diff options
Diffstat (limited to 'chromium/net/test')
32 files changed, 435 insertions, 190 deletions
diff --git a/chromium/net/test/ct_test_util.cc b/chromium/net/test/ct_test_util.cc index 9bc6f958da7..6f2a47e6da7 100644 --- a/chromium/net/test/ct_test_util.cc +++ b/chromium/net/test/ct_test_util.cc @@ -15,6 +15,7 @@ #include "base/strings/stringprintf.h" #include "net/cert/ct_serialization.h" #include "net/cert/ct_verify_result.h" +#include "net/cert/merkle_tree_leaf.h" #include "net/cert/signed_tree_head.h" #include "net/cert/x509_certificate.h" @@ -78,6 +79,8 @@ const char kDefaultDerTbsCert[] = "41310e300c0603550408130557616c65733110300e060355040713074572772057656e8201" "0030090603551d1304023000"; +const char kDefaultExtensions[] = "666f6f626172"; // "foobar" + const char kTestDigitallySigned[] = "0403004730450220606e10ae5c2d5a1b0aed49dc4937f48de71a4e9784e9c208dfbfe9ef53" "6cf7f2022100beb29c72d7d06d61d06bdb38a069469aa86fe12e18bb7cc45689a2c0187ef5" @@ -97,6 +100,8 @@ const char kEcP256PublicKey[] = const char kTestKeyId[] = "df1c2ec11500945247a96168325ddc5c7959e8f7c6d388fc002e0bbd3f74d764"; +const int64_t kTestTimestamp = INT64_C(1396877277237); + const char kTestSCTSignatureData[] = "30450220606e10ae5c2d5a1b0aed49dc4937f48de71a4e9784e9c208dfbfe9ef536cf7f202" "2100beb29c72d7d06d61d06bdb38a069469aa86fe12e18bb7cc45689a2c0187ef5a5"; @@ -155,7 +160,6 @@ const char kFakeOCSPResponseIssuerCert[] = "3ea1e11df2ccb357a5fed5220f9c6239e8946b9b7517707631d51ab996833d58a022cff5a6" "2169ac9258ec110efee78da9ab4a641e3b3c9ee5e8bd291460"; - const char kFakeOCSPExtensionValue[] = "74657374"; // "test" // For the sample STH @@ -166,7 +170,6 @@ const char kSampleSTHTreeHeadSignature[] = "6c7a20022100e38464f3c0fd066257b982074f7ac87655e0c8f714768a050b4be9a7b441cb" "d3"; size_t kSampleSTHTreeSize = 21u; -int64_t kSampleSTHTimestamp = INT64_C(1396877277237); } // namespace @@ -175,6 +178,13 @@ void GetX509CertLogEntry(LogEntry* entry) { entry->leaf_certificate = HexToBytes(kDefaultDerCert); } +void GetX509CertTreeLeaf(MerkleTreeLeaf* tree_leaf) { + tree_leaf->log_id = HexToBytes(kTestKeyId); + tree_leaf->timestamp = base::Time::FromJsTime(kTestTimestamp); + GetX509CertLogEntry(&tree_leaf->log_entry); + tree_leaf->extensions = HexToBytes(kDefaultExtensions); +} + std::string GetDerEncodedX509Cert() { return HexToBytes(kDefaultDerCert); } void GetPrecertLogEntry(LogEntry* entry) { @@ -184,6 +194,13 @@ void GetPrecertLogEntry(LogEntry* entry) { entry->tbs_certificate = HexToBytes(kDefaultDerTbsCert); } +void GetPrecertTreeLeaf(MerkleTreeLeaf* tree_leaf) { + tree_leaf->log_id = HexToBytes(kTestKeyId); + tree_leaf->timestamp = base::Time::FromJsTime(kTestTimestamp); + GetPrecertLogEntry(&tree_leaf->log_entry); + tree_leaf->extensions = HexToBytes(kDefaultExtensions); +} + std::string GetTestDigitallySigned() { return HexToBytes(kTestDigitallySigned); } @@ -204,7 +221,7 @@ void GetX509CertSCT(scoped_refptr<SignedCertificateTimestamp>* sct_ref) { CHECK(sct_ref != NULL); *sct_ref = new SignedCertificateTimestamp(); SignedCertificateTimestamp *const sct(sct_ref->get()); - sct->version = ct::SignedCertificateTimestamp::SCT_VERSION_1; + sct->version = ct::SignedCertificateTimestamp::V1; sct->log_id = HexToBytes(kTestKeyId); // Time the log issued a SCT for this certificate, which is // Fri Apr 5 10:04:16.089 2013 @@ -221,7 +238,7 @@ void GetPrecertSCT(scoped_refptr<SignedCertificateTimestamp>* sct_ref) { CHECK(sct_ref != NULL); *sct_ref = new SignedCertificateTimestamp(); SignedCertificateTimestamp *const sct(sct_ref->get()); - sct->version = ct::SignedCertificateTimestamp::SCT_VERSION_1; + sct->version = ct::SignedCertificateTimestamp::V1; sct->log_id = HexToBytes(kTestKeyId); // Time the log issued a SCT for this Precertificate, which is // Fri Apr 5 10:04:16.275 2013 @@ -258,7 +275,7 @@ std::string GetDerEncodedFakeOCSPResponseIssuerCert() { bool GetSampleSignedTreeHead(SignedTreeHead* sth) { sth->version = SignedTreeHead::V1; sth->timestamp = base::Time::UnixEpoch() + - base::TimeDelta::FromMilliseconds(kSampleSTHTimestamp); + base::TimeDelta::FromMilliseconds(kTestTimestamp); sth->tree_size = kSampleSTHTreeSize; std::string sha256_root_hash = GetSampleSTHSHA256RootHash(); memcpy(sth->sha256_root_hash, sha256_root_hash.c_str(), kSthRootHashLength); @@ -313,7 +330,7 @@ bool GetSampleSTHTreeHeadDecodedSignature(DigitallySigned* signature) { } std::string GetSampleSTHAsJson() { - return CreateSignedTreeHeadJsonString(kSampleSTHTreeSize, kSampleSTHTimestamp, + return CreateSignedTreeHeadJsonString(kSampleSTHTreeSize, kTestTimestamp, GetSampleSTHSHA256RootHash(), GetSampleSTHTreeHeadSignature()); } diff --git a/chromium/net/test/ct_test_util.h b/chromium/net/test/ct_test_util.h index d3df6e62d9b..649b87c0824 100644 --- a/chromium/net/test/ct_test_util.h +++ b/chromium/net/test/ct_test_util.h @@ -21,6 +21,7 @@ namespace ct { struct CTVerifyResult; struct DigitallySigned; struct LogEntry; +struct MerkleTreeLeaf; struct SignedTreeHead; // Note: unless specified otherwise, all test data is taken from Certificate @@ -29,6 +30,9 @@ struct SignedTreeHead; // Fills |entry| with test data for an X.509 entry. void GetX509CertLogEntry(LogEntry* entry); +// Fills |tree_leaf| with test data for an X.509 Merkle tree leaf. +void GetX509CertTreeLeaf(MerkleTreeLeaf* tree_leaf); + // Returns a DER-encoded X509 cert. The SCT provided by // GetX509CertSCT is signed over this certificate. std::string GetDerEncodedX509Cert(); @@ -36,6 +40,9 @@ std::string GetDerEncodedX509Cert(); // Fills |entry| with test data for a Precertificate entry. void GetPrecertLogEntry(LogEntry* entry); +// Fills |tree_leaf| with test data for a Precertificate Merkle tree leaf. +void GetPrecertTreeLeaf(MerkleTreeLeaf* tree_leaf); + // Returns the binary representation of a test DigitallySigned std::string GetTestDigitallySigned(); diff --git a/chromium/net/test/embedded_test_server/default_handlers.cc b/chromium/net/test/embedded_test_server/default_handlers.cc index 74967217f5f..1b49ceb61ca 100644 --- a/chromium/net/test/embedded_test_server/default_handlers.cc +++ b/chromium/net/test/embedded_test_server/default_handlers.cc @@ -21,7 +21,7 @@ #include "base/strings/string_split.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" -#include "base/thread_task_runner_handle.h" +#include "base/threading/thread_task_runner_handle.h" #include "base/time/time.h" #include "net/base/escape.h" #include "net/base/url_util.h" @@ -46,11 +46,11 @@ const char kLogoPath[] = "chrome/test/data/google/logo.gif"; // method: CONNECT // Responses with a BAD_REQUEST to any CONNECT requests. -scoped_ptr<HttpResponse> HandleDefaultConnect(const HttpRequest& request) { +std::unique_ptr<HttpResponse> HandleDefaultConnect(const HttpRequest& request) { if (request.method != METHOD_CONNECT) return nullptr; - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_code(HTTP_BAD_REQUEST); http_response->set_content( "Your client has issued a malformed or illegal request."); @@ -60,8 +60,8 @@ scoped_ptr<HttpResponse> HandleDefaultConnect(const HttpRequest& request) { // /cachetime // Returns a cacheable response. -scoped_ptr<HttpResponse> HandleCacheTime(const HttpRequest& request) { - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); +std::unique_ptr<HttpResponse> HandleCacheTime(const HttpRequest& request) { + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_content( "<html><head><title>Cache: max-age=60</title></head></html>"); http_response->set_content_type("text/html"); @@ -72,13 +72,13 @@ scoped_ptr<HttpResponse> HandleCacheTime(const HttpRequest& request) { // /echoheader | /echoheadercache // Responds with the headers echoed in the message body. // echoheader does not cache the results, while echoheadercache does. -scoped_ptr<HttpResponse> HandleEchoHeader(const std::string& url, - const std::string& cache_control, - const HttpRequest& request) { +std::unique_ptr<HttpResponse> HandleEchoHeader(const std::string& url, + const std::string& cache_control, + const HttpRequest& request) { if (!ShouldHandle(request, url)) return nullptr; - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); GURL request_url = request.GetURL(); if (request_url.has_query()) { @@ -98,8 +98,8 @@ scoped_ptr<HttpResponse> HandleEchoHeader(const std::string& url, // /echo?status=STATUS // Responds with the request body as the response body and // a status code of STATUS. -scoped_ptr<HttpResponse> HandleEcho(const HttpRequest& request) { - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); +std::unique_ptr<HttpResponse> HandleEcho(const HttpRequest& request) { + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); GURL request_url = request.GetURL(); if (request_url.has_query()) { @@ -119,8 +119,8 @@ scoped_ptr<HttpResponse> HandleEcho(const HttpRequest& request) { // /echotitle // Responds with the request body as the title. -scoped_ptr<HttpResponse> HandleEchoTitle(const HttpRequest& request) { - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); +std::unique_ptr<HttpResponse> HandleEchoTitle(const HttpRequest& request) { + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_content_type("text/html"); http_response->set_content("<html><head><title>" + request.content + "</title></head></html>"); @@ -129,8 +129,8 @@ scoped_ptr<HttpResponse> HandleEchoTitle(const HttpRequest& request) { // /echoall?QUERY // Responds with the list of QUERY and the request headers. -scoped_ptr<HttpResponse> HandleEchoAll(const HttpRequest& request) { - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); +std::unique_ptr<HttpResponse> HandleEchoAll(const HttpRequest& request) { + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); std::string body = "<html><head><style>" @@ -161,8 +161,8 @@ scoped_ptr<HttpResponse> HandleEchoAll(const HttpRequest& request) { // /set-cookie?COOKIES // Sets response cookies to be COOKIES. -scoped_ptr<HttpResponse> HandleSetCookie(const HttpRequest& request) { - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); +std::unique_ptr<HttpResponse> HandleSetCookie(const HttpRequest& request) { + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_content_type("text/html"); std::string content; GURL request_url = request.GetURL(); @@ -181,7 +181,7 @@ scoped_ptr<HttpResponse> HandleSetCookie(const HttpRequest& request) { // /set-many-cookies?N // Sets N cookies in the response. -scoped_ptr<HttpResponse> HandleSetManyCookies(const HttpRequest& request) { +std::unique_ptr<HttpResponse> HandleSetManyCookies(const HttpRequest& request) { std::string content; GURL request_url = request.GetURL(); @@ -189,7 +189,7 @@ scoped_ptr<HttpResponse> HandleSetManyCookies(const HttpRequest& request) { if (request_url.has_query()) num = std::atoi(request_url.query().c_str()); - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_content_type("text/html"); for (size_t i = 0; i < num; ++i) { http_response->AddCustomHeader("Set-Cookie", "a="); @@ -203,7 +203,8 @@ scoped_ptr<HttpResponse> HandleSetManyCookies(const HttpRequest& request) { // /expect-and-set-cookie?expect=EXPECTED&set=SET&data=DATA // Verifies that the request cookies match EXPECTED and then returns cookies // that match SET and a content that matches DATA. -scoped_ptr<HttpResponse> HandleExpectAndSetCookie(const HttpRequest& request) { +std::unique_ptr<HttpResponse> HandleExpectAndSetCookie( + const HttpRequest& request) { std::vector<std::string> received_cookies; if (request.headers.find("Cookie") != request.headers.end()) { received_cookies = @@ -225,7 +226,7 @@ scoped_ptr<HttpResponse> HandleExpectAndSetCookie(const HttpRequest& request) { } } - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_content_type("text/html"); if (got_all_expected) { for (const auto& cookie : query_list.at("set")) { @@ -246,12 +247,12 @@ scoped_ptr<HttpResponse> HandleExpectAndSetCookie(const HttpRequest& request) { // /set-header?HEADERS // Returns a response with HEADERS set as the response headers. -scoped_ptr<HttpResponse> HandleSetHeader(const HttpRequest& request) { +std::unique_ptr<HttpResponse> HandleSetHeader(const HttpRequest& request) { std::string content; GURL request_url = request.GetURL(); - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_content_type("text/html"); if (request_url.has_query()) { RequestQuery headers = ParseQuery(request_url); @@ -272,23 +273,23 @@ scoped_ptr<HttpResponse> HandleSetHeader(const HttpRequest& request) { // /nocontent // Returns a NO_CONTENT response. -scoped_ptr<HttpResponse> HandleNoContent(const HttpRequest& request) { - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); +std::unique_ptr<HttpResponse> HandleNoContent(const HttpRequest& request) { + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_code(HTTP_NO_CONTENT); return std::move(http_response); } // /close-socket // Immediately closes the connection. -scoped_ptr<HttpResponse> HandleCloseSocket(const HttpRequest& request) { - scoped_ptr<RawHttpResponse> http_response(new RawHttpResponse("", "")); +std::unique_ptr<HttpResponse> HandleCloseSocket(const HttpRequest& request) { + std::unique_ptr<RawHttpResponse> http_response(new RawHttpResponse("", "")); return std::move(http_response); } // /auth-basic?password=PASS&realm=REALM // Performs "Basic" HTTP authentication using expected password PASS and // realm REALM. -scoped_ptr<HttpResponse> HandleAuthBasic(const HttpRequest& request) { +std::unique_ptr<HttpResponse> HandleAuthBasic(const HttpRequest& request) { GURL request_url = request.GetURL(); RequestQuery query = ParseQuery(request_url); @@ -329,7 +330,7 @@ scoped_ptr<HttpResponse> HandleAuthBasic(const HttpRequest& request) { } } - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); if (!authed) { http_response->set_code(HTTP_UNAUTHORIZED); http_response->set_content_type("text/html"); @@ -378,7 +379,7 @@ scoped_ptr<HttpResponse> HandleAuthBasic(const HttpRequest& request) { // /auth-digest // Performs "Digest" HTTP authentication. -scoped_ptr<HttpResponse> HandleAuthDigest(const HttpRequest& request) { +std::unique_ptr<HttpResponse> HandleAuthDigest(const HttpRequest& request) { std::string nonce = base::MD5String( base::StringPrintf("privatekey%s", request.relative_url.c_str())); std::string opaque = base::MD5String("opaque"); @@ -446,7 +447,7 @@ scoped_ptr<HttpResponse> HandleAuthDigest(const HttpRequest& request) { } } - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); if (!authed) { http_response->set_code(HTTP_UNAUTHORIZED); http_response->set_content_type("text/html"); @@ -476,12 +477,12 @@ scoped_ptr<HttpResponse> HandleAuthDigest(const HttpRequest& request) { // /server-redirect?URL // Returns a server-redirect (301) to URL. -scoped_ptr<HttpResponse> HandleServerRedirect(const HttpRequest& request) { +std::unique_ptr<HttpResponse> HandleServerRedirect(const HttpRequest& request) { GURL request_url = request.GetURL(); std::string dest = net::UnescapeURLComponent(request_url.query(), kUnescapeAll); - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_code(HTTP_MOVED_PERMANENTLY); http_response->AddCustomHeader("Location", dest); http_response->set_content_type("text/html"); @@ -493,8 +494,9 @@ scoped_ptr<HttpResponse> HandleServerRedirect(const HttpRequest& request) { // /cross-site?URL // Returns a cross-site redirect to URL. -scoped_ptr<HttpResponse> HandleCrossSiteRedirect(EmbeddedTestServer* server, - const HttpRequest& request) { +std::unique_ptr<HttpResponse> HandleCrossSiteRedirect( + EmbeddedTestServer* server, + const HttpRequest& request) { if (!ShouldHandle(request, "/cross-site")) return nullptr; @@ -510,7 +512,7 @@ scoped_ptr<HttpResponse> HandleCrossSiteRedirect(EmbeddedTestServer* server, dest_all.substr(delimiter + 1).c_str()); } - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_code(HTTP_MOVED_PERMANENTLY); http_response->AddCustomHeader("Location", dest); http_response->set_content_type("text/html"); @@ -522,12 +524,12 @@ scoped_ptr<HttpResponse> HandleCrossSiteRedirect(EmbeddedTestServer* server, // /client-redirect?URL // Returns a meta redirect to URL. -scoped_ptr<HttpResponse> HandleClientRedirect(const HttpRequest& request) { +std::unique_ptr<HttpResponse> HandleClientRedirect(const HttpRequest& request) { GURL request_url = request.GetURL(); std::string dest = net::UnescapeURLComponent(request_url.query(), kUnescapeAll); - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_content_type("text/html"); http_response->set_content(base::StringPrintf( "<html><head><meta http-equiv=\"refresh\" content=\"0;url=%s\"></head>" @@ -538,8 +540,9 @@ scoped_ptr<HttpResponse> HandleClientRedirect(const HttpRequest& request) { // /defaultresponse // Returns a valid 200 response. -scoped_ptr<HttpResponse> HandleDefaultResponse(const HttpRequest& request) { - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); +std::unique_ptr<HttpResponse> HandleDefaultResponse( + const HttpRequest& request) { + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_content_type("text/html"); http_response->set_content("Default response given for path: " + request.relative_url); @@ -566,14 +569,15 @@ class DelayedHttpResponse : public BasicHttpResponse { // /slow?N // Returns a response to the server delayed by N seconds. -scoped_ptr<HttpResponse> HandleSlowServer(const HttpRequest& request) { +std::unique_ptr<HttpResponse> HandleSlowServer(const HttpRequest& request) { double delay = 1.0f; GURL request_url = request.GetURL(); if (request_url.has_query()) delay = std::atof(request_url.query().c_str()); - scoped_ptr<BasicHttpResponse> http_response(new DelayedHttpResponse(delay)); + std::unique_ptr<BasicHttpResponse> http_response( + new DelayedHttpResponse(delay)); http_response->set_content_type("text/plain"); http_response->set_content(base::StringPrintf("waited %.1f seconds", delay)); return std::move(http_response); diff --git a/chromium/net/test/embedded_test_server/embedded_test_server.cc b/chromium/net/test/embedded_test_server/embedded_test_server.cc index eb09b967867..c93ff0c7f8c 100644 --- a/chromium/net/test/embedded_test_server/embedded_test_server.cc +++ b/chromium/net/test/embedded_test_server/embedded_test_server.cc @@ -18,8 +18,8 @@ #include "base/stl_util.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" -#include "base/thread_task_runner_handle.h" #include "base/threading/thread_restrictions.h" +#include "base/threading/thread_task_runner_handle.h" #include "crypto/rsa_private_key.h" #include "net/base/ip_endpoint.h" #include "net/base/net_errors.h" @@ -131,7 +131,7 @@ void EmbeddedTestServer::InitializeSSLServerContext() { std::vector<uint8_t> key_vector; key_vector.assign(pem_tokenizer.data().begin(), pem_tokenizer.data().end()); - scoped_ptr<crypto::RSAPrivateKey> server_key( + std::unique_ptr<crypto::RSAPrivateKey> server_key( crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(key_vector)); context_ = CreateSSLServerContext(GetCertificate().get(), *server_key, ssl_config_); @@ -167,10 +167,13 @@ void EmbeddedTestServer::ShutdownOnIOThread() { } void EmbeddedTestServer::HandleRequest(HttpConnection* connection, - scoped_ptr<HttpRequest> request) { + std::unique_ptr<HttpRequest> request) { DCHECK(io_thread_->task_runner()->BelongsToCurrentThread()); - scoped_ptr<HttpResponse> response; + for (const auto& monitor : request_monitors_) + monitor.Run(*request); + + std::unique_ptr<HttpResponse> response; for (const auto& handler : request_handlers_) { response = handler.Run(*request); @@ -189,7 +192,8 @@ void EmbeddedTestServer::HandleRequest(HttpConnection* connection, if (!response) { LOG(WARNING) << "Request not handled. Returning 404: " << request->relative_url; - scoped_ptr<BasicHttpResponse> not_found_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> not_found_response( + new BasicHttpResponse); not_found_response->set_code(HTTP_NOT_FOUND); response = std::move(not_found_response); } @@ -283,20 +287,27 @@ void EmbeddedTestServer::AddDefaultHandlers(const base::FilePath& directory) { void EmbeddedTestServer::RegisterRequestHandler( const HandleRequestCallback& callback) { - // TODO(svaldez): Add check to prevent RegisterHandler from being called - // after the server has started. https://crbug.com/546060 + // TODO(svaldez): Add check to prevent RegisterRequestHandler from being + // called after the server has started. https://crbug.com/546060 request_handlers_.push_back(callback); } +void EmbeddedTestServer::RegisterRequestMonitor( + const MonitorRequestCallback& callback) { + // TODO(svaldez): Add check to prevent RegisterRequestMonitor from being + // called after the server has started. https://crbug.com/546060 + request_monitors_.push_back(callback); +} + void EmbeddedTestServer::RegisterDefaultHandler( const HandleRequestCallback& callback) { - // TODO(svaldez): Add check to prevent RegisterHandler from being called - // after the server has started. https://crbug.com/546060 + // TODO(svaldez): Add check to prevent RegisterDefaultHandler from being + // called after the server has started. https://crbug.com/546060 default_request_handlers_.push_back(callback); } -scoped_ptr<StreamSocket> EmbeddedTestServer::DoSSLUpgrade( - scoped_ptr<StreamSocket> connection) { +std::unique_ptr<StreamSocket> EmbeddedTestServer::DoSSLUpgrade( + std::unique_ptr<StreamSocket> connection) { DCHECK(io_thread_->task_runner()->BelongsToCurrentThread()); return context_->CreateSSLServerSocket(std::move(connection)); @@ -314,6 +325,18 @@ void EmbeddedTestServer::DoAcceptLoop() { } } +bool EmbeddedTestServer::FlushAllSocketsAndConnectionsOnUIThread() { + return PostTaskToIOThreadAndWait( + base::Bind(&EmbeddedTestServer::FlushAllSocketsAndConnections, + base::Unretained(this))); +} + +void EmbeddedTestServer::FlushAllSocketsAndConnections() { + STLDeleteContainerPairSecondPointers(connections_.begin(), + connections_.end()); + connections_.clear(); +} + void EmbeddedTestServer::OnAcceptCompleted(int rv) { DCHECK_NE(ERR_IO_PENDING, rv); HandleAcceptResult(std::move(accepted_socket_)); @@ -327,7 +350,8 @@ void EmbeddedTestServer::OnHandshakeDone(HttpConnection* connection, int rv) { DidClose(connection); } -void EmbeddedTestServer::HandleAcceptResult(scoped_ptr<StreamSocket> socket) { +void EmbeddedTestServer::HandleAcceptResult( + std::unique_ptr<StreamSocket> socket) { DCHECK(io_thread_->task_runner()->BelongsToCurrentThread()); if (connection_listener_) connection_listener_->AcceptedSocket(*socket); @@ -374,7 +398,7 @@ void EmbeddedTestServer::OnReadCompleted(HttpConnection* connection, int rv) { bool EmbeddedTestServer::HandleReadResult(HttpConnection* connection, int rv) { DCHECK(io_thread_->task_runner()->BelongsToCurrentThread()); if (connection_listener_) - connection_listener_->ReadFromSocket(*connection->socket_); + connection_listener_->ReadFromSocket(*connection->socket_, rv); if (rv <= 0) { DidClose(connection); return false; @@ -419,7 +443,7 @@ bool EmbeddedTestServer::PostTaskToIOThreadAndWait( // // To handle this situation, create temporary message loop to support the // PostTaskAndReply operation if the current thread as no message loop. - scoped_ptr<base::MessageLoop> temporary_loop; + std::unique_ptr<base::MessageLoop> temporary_loop; if (!base::MessageLoop::current()) temporary_loop.reset(new base::MessageLoop()); diff --git a/chromium/net/test/embedded_test_server/embedded_test_server.h b/chromium/net/test/embedded_test_server/embedded_test_server.h index 00952f9905d..3b9e253b906 100644 --- a/chromium/net/test/embedded_test_server/embedded_test_server.h +++ b/chromium/net/test/embedded_test_server/embedded_test_server.h @@ -8,6 +8,7 @@ #include <stdint.h> #include <map> +#include <memory> #include <string> #include <vector> @@ -16,7 +17,6 @@ #include "base/files/file_path.h" #include "base/macros.h" #include "base/memory/ref_counted.h" -#include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" #include "base/threading/thread.h" #include "base/threading/thread_checker.h" @@ -57,12 +57,12 @@ struct HttpRequest; // base::Bind(&FooTest::HandleRequest, base::Unretained(this))); // } // -// scoped_ptr<HttpResponse> HandleRequest(const HttpRequest& request) { +// std::unique_ptr<HttpResponse> HandleRequest(const HttpRequest& request) { // GURL absolute_url = test_server_->GetURL(request.relative_url); // if (absolute_url.path() != "/test") -// return scoped_ptr<HttpResponse>(); +// return std::unique_ptr<HttpResponse>(); // -// scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse()); +// std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse()); // http_response->set_code(test_server::SUCCESS); // http_response->set_content("hello"); // http_response->set_content_type("text/plain"); @@ -114,8 +114,11 @@ class EmbeddedTestServer { CERT_COMMON_NAME_IS_DOMAIN, }; - typedef base::Callback<scoped_ptr<HttpResponse>( - const HttpRequest& request)> HandleRequestCallback; + typedef base::Callback<std::unique_ptr<HttpResponse>( + const HttpRequest& request)> + HandleRequestCallback; + typedef base::Callback<void(const HttpRequest& request)> + MonitorRequestCallback; // Creates a http test server. Start() must be called to start the server. // |type| indicates the protocol type of the server (HTTP/HTTPS). @@ -132,7 +135,7 @@ class EmbeddedTestServer { // This is the equivalent of calling InitializeAndListen() followed by // StartAcceptingConnections(). // Returns whether a listening socket has been successfully created. - bool Start(); + bool Start() WARN_UNUSED_RESULT; // Starts listening for incoming connections but will not yet accept them. // Returns whether a listening socket has been succesfully created. @@ -206,16 +209,25 @@ class EmbeddedTestServer { // on UI thread. void RegisterRequestHandler(const HandleRequestCallback& callback); + // Adds request monitors. The |callback| is called before any handlers are + // called, but can not respond it. This is useful to monitor requests that + // will be handled by other request handlers. + void RegisterRequestMonitor(const MonitorRequestCallback& callback); + // Adds default handlers, including those added by AddDefaultHandlers, to be // tried after all other user-specified handlers have been tried. void RegisterDefaultHandler(const HandleRequestCallback& callback); + bool FlushAllSocketsAndConnectionsOnUIThread(); + void FlushAllSocketsAndConnections(); + private: // Shuts down the server. void ShutdownOnIOThread(); // Upgrade the TCP connection to one over SSL. - scoped_ptr<StreamSocket> DoSSLUpgrade(scoped_ptr<StreamSocket> connection); + std::unique_ptr<StreamSocket> DoSSLUpgrade( + std::unique_ptr<StreamSocket> connection); // Handles async callback when the SSL handshake has been completed. void OnHandshakeDone(HttpConnection* connection, int rv); @@ -226,7 +238,7 @@ class EmbeddedTestServer { void OnAcceptCompleted(int rv); // Adds the new |socket| to the list of clients and begins the reading // data. - void HandleAcceptResult(scoped_ptr<StreamSocket> socket); + void HandleAcceptResult(std::unique_ptr<StreamSocket> socket); // Attempts to read data from the |connection|'s socket. void ReadData(HttpConnection* connection); @@ -242,7 +254,7 @@ class EmbeddedTestServer { // Handles a request when it is parsed. It passes the request to registered // request handlers and sends a http response. void HandleRequest(HttpConnection* connection, - scoped_ptr<HttpRequest> request); + std::unique_ptr<HttpRequest> request); // Initializes the SSLServerContext so that SSLServerSocket connections may // share the same cache @@ -256,10 +268,10 @@ class EmbeddedTestServer { const bool is_using_ssl_; - scoped_ptr<base::Thread> io_thread_; + std::unique_ptr<base::Thread> io_thread_; - scoped_ptr<TCPServerSocket> listen_socket_; - scoped_ptr<StreamSocket> accepted_socket_; + std::unique_ptr<TCPServerSocket> listen_socket_; + std::unique_ptr<StreamSocket> accepted_socket_; EmbeddedTestServerConnectionListener* connection_listener_; uint16_t port_; @@ -269,15 +281,16 @@ class EmbeddedTestServer { // Owns the HttpConnection objects. std::map<StreamSocket*, HttpConnection*> connections_; - // Vector of registered and default request handlers. + // Vector of registered and default request handlers and monitors. std::vector<HandleRequestCallback> request_handlers_; + std::vector<MonitorRequestCallback> request_monitors_; std::vector<HandleRequestCallback> default_request_handlers_; base::ThreadChecker thread_checker_; net::SSLServerConfig ssl_config_; ServerCertificate cert_; - scoped_ptr<SSLServerContext> context_; + std::unique_ptr<SSLServerContext> context_; base::WeakPtrFactory<EmbeddedTestServer> weak_factory_; diff --git a/chromium/net/test/embedded_test_server/embedded_test_server_connection_listener.h b/chromium/net/test/embedded_test_server/embedded_test_server_connection_listener.h index 01d5415220d..d712aea4947 100644 --- a/chromium/net/test/embedded_test_server/embedded_test_server_connection_listener.h +++ b/chromium/net/test/embedded_test_server/embedded_test_server_connection_listener.h @@ -18,7 +18,7 @@ class EmbeddedTestServerConnectionListener { virtual void AcceptedSocket(const StreamSocket& socket) = 0; // Notified when a socket was read from by the EmbeddedTestServer. - virtual void ReadFromSocket(const StreamSocket& socket) = 0; + virtual void ReadFromSocket(const StreamSocket& socket, int rv) = 0; protected: EmbeddedTestServerConnectionListener() {} diff --git a/chromium/net/test/embedded_test_server/embedded_test_server_unittest.cc b/chromium/net/test/embedded_test_server/embedded_test_server_unittest.cc index bdd4a826d04..d3a10319962 100644 --- a/chromium/net/test/embedded_test_server/embedded_test_server_unittest.cc +++ b/chromium/net/test/embedded_test_server/embedded_test_server_unittest.cc @@ -7,6 +7,7 @@ #include <utility> #include "base/macros.h" +#include "base/memory/ptr_util.h" #include "base/memory/weak_ptr.h" #include "base/path_service.h" #include "base/run_loop.h" @@ -30,7 +31,7 @@ #include "net/url_request/url_request_test_util.h" #include "testing/gtest/include/gtest/gtest.h" -#if defined(USE_NSS_VERIFIER) +#if defined(USE_NSS_CERTS) #include "net/cert_net/nss_ocsp.h" #endif @@ -82,7 +83,7 @@ class TestConnectionListener // Get called from the EmbeddedTestServer thread to be notified that // a connection was read from. - void ReadFromSocket(const net::StreamSocket& connection) override { + void ReadFromSocket(const net::StreamSocket& connection, int rv) override { base::AutoLock lock(lock_); did_read_from_socket_ = true; } @@ -122,7 +123,7 @@ class EmbeddedTestServerTest } void SetUp() override { -#if defined(USE_NSS_VERIFIER) +#if defined(USE_NSS_CERTS) // This is needed so NSS's HTTP client functions are initialized on the // right thread. These tests create SSLClientSockets on a different thread. // TODO(davidben): Initialization can't be deferred to SSLClientSocket. See @@ -145,7 +146,7 @@ class EmbeddedTestServerTest void TearDown() override { if (server_->Started()) ASSERT_TRUE(server_->ShutdownAndWaitUntilComplete()); -#if defined(USE_NSS_VERIFIER) +#if defined(USE_NSS_CERTS) ShutdownNSSHttpIO(); #endif } @@ -167,16 +168,16 @@ class EmbeddedTestServerTest // Handles |request| sent to |path| and returns the response per |content|, // |content type|, and |code|. Saves the request URL for verification. - scoped_ptr<HttpResponse> HandleRequest(const std::string& path, - const std::string& content, - const std::string& content_type, - HttpStatusCode code, - const HttpRequest& request) { + std::unique_ptr<HttpResponse> HandleRequest(const std::string& path, + const std::string& content, + const std::string& content_type, + HttpStatusCode code, + const HttpRequest& request) { request_relative_url_ = request.relative_url; GURL absolute_url = server_->GetURL(request.relative_url); if (absolute_url.path() == path) { - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_code(code); http_response->set_content(content); http_response->set_content_type(content_type); @@ -193,7 +194,7 @@ class EmbeddedTestServerTest base::Thread io_thread_; scoped_refptr<TestURLRequestContextGetter> request_context_getter_; TestConnectionListener connection_listener_; - scoped_ptr<EmbeddedTestServer> server_; + std::unique_ptr<EmbeddedTestServer> server_; }; TEST_P(EmbeddedTestServerTest, GetBaseURL) { @@ -243,7 +244,7 @@ TEST_P(EmbeddedTestServerTest, RegisterRequestHandler) { HTTP_OK)); ASSERT_TRUE(server_->Start()); - scoped_ptr<URLFetcher> fetcher = + std::unique_ptr<URLFetcher> fetcher = URLFetcher::Create(server_->GetURL("/test?q=foo"), URLFetcher::GET, this); fetcher->SetRequestContext(request_context_getter_.get()); fetcher->Start(); @@ -264,7 +265,7 @@ TEST_P(EmbeddedTestServerTest, ServeFilesFromDirectory) { src_dir.AppendASCII("net").AppendASCII("data")); ASSERT_TRUE(server_->Start()); - scoped_ptr<URLFetcher> fetcher = + std::unique_ptr<URLFetcher> fetcher = URLFetcher::Create(server_->GetURL("/test.html"), URLFetcher::GET, this); fetcher->SetRequestContext(request_context_getter_.get()); fetcher->Start(); @@ -279,7 +280,7 @@ TEST_P(EmbeddedTestServerTest, ServeFilesFromDirectory) { TEST_P(EmbeddedTestServerTest, DefaultNotFoundResponse) { ASSERT_TRUE(server_->Start()); - scoped_ptr<URLFetcher> fetcher = URLFetcher::Create( + std::unique_ptr<URLFetcher> fetcher = URLFetcher::Create( server_->GetURL("/non-existent"), URLFetcher::GET, this); fetcher->SetRequestContext(request_context_getter_.get()); @@ -296,9 +297,9 @@ TEST_P(EmbeddedTestServerTest, ConnectionListenerAccept) { net::AddressList address_list; EXPECT_TRUE(server_->GetAddressList(&address_list)); - scoped_ptr<StreamSocket> socket = + std::unique_ptr<StreamSocket> socket = ClientSocketFactory::GetDefaultFactory()->CreateTransportClientSocket( - address_list, &net_log, NetLog::Source()); + address_list, NULL, &net_log, NetLog::Source()); TestCompletionCallback callback; ASSERT_EQ(OK, callback.GetResult(socket->Connect(callback.callback()))); @@ -311,7 +312,7 @@ TEST_P(EmbeddedTestServerTest, ConnectionListenerAccept) { TEST_P(EmbeddedTestServerTest, ConnectionListenerRead) { ASSERT_TRUE(server_->Start()); - scoped_ptr<URLFetcher> fetcher = URLFetcher::Create( + std::unique_ptr<URLFetcher> fetcher = URLFetcher::Create( server_->GetURL("/non-existent"), URLFetcher::GET, this); fetcher->SetRequestContext(request_context_getter_.get()); @@ -345,13 +346,13 @@ TEST_P(EmbeddedTestServerTest, ConcurrentFetches) { HTTP_NOT_FOUND)); ASSERT_TRUE(server_->Start()); - scoped_ptr<URLFetcher> fetcher1 = + std::unique_ptr<URLFetcher> fetcher1 = URLFetcher::Create(server_->GetURL("/test1"), URLFetcher::GET, this); fetcher1->SetRequestContext(request_context_getter_.get()); - scoped_ptr<URLFetcher> fetcher2 = + std::unique_ptr<URLFetcher> fetcher2 = URLFetcher::Create(server_->GetURL("/test2"), URLFetcher::GET, this); fetcher2->SetRequestContext(request_context_getter_.get()); - scoped_ptr<URLFetcher> fetcher3 = + std::unique_ptr<URLFetcher> fetcher3 = URLFetcher::Create(server_->GetURL("/test3"), URLFetcher::GET, this); fetcher3->SetRequestContext(request_context_getter_.get()); @@ -423,8 +424,9 @@ class InfiniteResponse : public BasicHttpResponse { DISALLOW_COPY_AND_ASSIGN(InfiniteResponse); }; -scoped_ptr<HttpResponse> HandleInfiniteRequest(const HttpRequest& request) { - return make_scoped_ptr(new InfiniteResponse); +std::unique_ptr<HttpResponse> HandleInfiniteRequest( + const HttpRequest& request) { + return base::WrapUnique(new InfiniteResponse); } } @@ -440,7 +442,7 @@ TEST_P(EmbeddedTestServerTest, CloseDuringWrite) { &HandlePrefixedRequest, "/infinite", base::Bind(&HandleInfiniteRequest))); ASSERT_TRUE(server_->Start()); - scoped_ptr<URLRequest> request = context.CreateRequest( + std::unique_ptr<URLRequest> request = context.CreateRequest( server_->GetURL("/infinite"), DEFAULT_PRIORITY, &cancel_delegate); request->Start(); cancel_delegate.WaitUntilDone(); @@ -496,7 +498,7 @@ typedef std::tr1::tuple<bool, bool, EmbeddedTestServer::Type> class EmbeddedTestServerThreadingTest : public testing::TestWithParam<ThreadingTestParams> { void SetUp() override { -#if defined(USE_NSS_VERIFIER) +#if defined(USE_NSS_CERTS) // This is needed so NSS's HTTP client functions are initialized on the // right thread. These tests create SSLClientSockets on a different thread. // TODO(davidben): Initialization can't be deferred to SSLClientSocket. See @@ -507,7 +509,7 @@ class EmbeddedTestServerThreadingTest } void TearDown() override { -#if defined(USE_NSS_VERIFIER) +#if defined(USE_NSS_CERTS) ShutdownNSSHttpIO(); #endif } @@ -534,7 +536,7 @@ class EmbeddedTestServerThreadingTestDelegate ASSERT_TRUE(io_thread.StartWithOptions(thread_options)); io_thread_runner = io_thread.task_runner(); - scoped_ptr<base::MessageLoop> loop; + std::unique_ptr<base::MessageLoop> loop; if (message_loop_present_on_initialize_) loop.reset(new base::MessageLoopForIO); @@ -548,7 +550,7 @@ class EmbeddedTestServerThreadingTestDelegate if (!loop) loop.reset(new base::MessageLoopForIO); - scoped_ptr<URLFetcher> fetcher = + std::unique_ptr<URLFetcher> fetcher = URLFetcher::Create(server.GetURL("/test?q=foo"), URLFetcher::GET, this); fetcher->SetRequestContext( new TestURLRequestContextGetter(loop->task_runner())); diff --git a/chromium/net/test/embedded_test_server/http_connection.cc b/chromium/net/test/embedded_test_server/http_connection.cc index ce95f4362d2..2f3e906a68a 100644 --- a/chromium/net/test/embedded_test_server/http_connection.cc +++ b/chromium/net/test/embedded_test_server/http_connection.cc @@ -12,7 +12,7 @@ namespace net { namespace test_server { -HttpConnection::HttpConnection(scoped_ptr<StreamSocket> socket, +HttpConnection::HttpConnection(std::unique_ptr<StreamSocket> socket, const HandleRequestCallback& callback) : socket_(std::move(socket)), callback_(callback), diff --git a/chromium/net/test/embedded_test_server/http_connection.h b/chromium/net/test/embedded_test_server/http_connection.h index 4f4e555f959..0b87fcb218d 100644 --- a/chromium/net/test/embedded_test_server/http_connection.h +++ b/chromium/net/test/embedded_test_server/http_connection.h @@ -5,10 +5,11 @@ #ifndef NET_TEST_EMBEDDED_TEST_SERVER_HTTP_CONNECTION_H_ #define NET_TEST_EMBEDDED_TEST_SERVER_HTTP_CONNECTION_H_ +#include <memory> + #include "base/callback.h" #include "base/macros.h" #include "base/memory/ref_counted.h" -#include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" #include "base/strings/string_piece.h" #include "net/base/completion_callback.h" @@ -28,14 +29,14 @@ class HttpResponse; // Calblack called when a request is parsed. Response should be sent // using HttpConnection::SendResponse() on the |connection| argument. typedef base::Callback<void(HttpConnection* connection, - scoped_ptr<HttpRequest> request)> + std::unique_ptr<HttpRequest> request)> HandleRequestCallback; // Wraps the connection socket. Accepts incoming data and sends responses. // If a valid request is parsed, then |callback_| is invoked. class HttpConnection { public: - HttpConnection(scoped_ptr<StreamSocket> socket, + HttpConnection(std::unique_ptr<StreamSocket> socket, const HandleRequestCallback& callback); ~HttpConnection(); @@ -61,7 +62,7 @@ class HttpConnection { base::WeakPtr<HttpConnection> GetWeakPtr(); - scoped_ptr<StreamSocket> socket_; + std::unique_ptr<StreamSocket> socket_; const HandleRequestCallback callback_; HttpRequestParser request_parser_; scoped_refptr<IOBufferWithSize> read_buf_; diff --git a/chromium/net/test/embedded_test_server/http_request.cc b/chromium/net/test/embedded_test_server/http_request.cc index a1332bee3b4..2c247c614a9 100644 --- a/chromium/net/test/embedded_test_server/http_request.cc +++ b/chromium/net/test/embedded_test_server/http_request.cc @@ -217,9 +217,9 @@ HttpRequestParser::ParseResult HttpRequestParser::ParseContent() { return WAITING; } -scoped_ptr<HttpRequest> HttpRequestParser::GetRequest() { +std::unique_ptr<HttpRequest> HttpRequestParser::GetRequest() { DCHECK_EQ(STATE_ACCEPTED, state_); - scoped_ptr<HttpRequest> result = std::move(http_request_); + std::unique_ptr<HttpRequest> result = std::move(http_request_); // Prepare for parsing a new request. state_ = STATE_HEADERS; diff --git a/chromium/net/test/embedded_test_server/http_request.h b/chromium/net/test/embedded_test_server/http_request.h index d9e54b8151b..b58f7749d8e 100644 --- a/chromium/net/test/embedded_test_server/http_request.h +++ b/chromium/net/test/embedded_test_server/http_request.h @@ -8,10 +8,10 @@ #include <stddef.h> #include <map> +#include <memory> #include <string> #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "base/strings/string_piece.h" #include "base/strings/string_util.h" #include "url/gurl.h" @@ -73,7 +73,7 @@ struct HttpRequest { // void OnDataChunkReceived(Socket* socket, const char* data, int size) { // parser.ProcessChunk(std::string(data, size)); // if (parser.ParseRequest() == HttpRequestParser::ACCEPTED) { -// scoped_ptr<HttpRequest> request = parser.GetRequest(); +// std::unique_ptr<HttpRequest> request = parser.GetRequest(); // (... process the request ...) // } class HttpRequestParser { @@ -106,7 +106,7 @@ class HttpRequestParser { // Retrieves parsed request. Can be only called, when the parser is in // STATE_ACCEPTED state. After calling it, the parser is ready to parse // another request. - scoped_ptr<HttpRequest> GetRequest(); + std::unique_ptr<HttpRequest> GetRequest(); private: HttpMethod GetMethodType(const std::string& token) const; @@ -124,14 +124,14 @@ class HttpRequestParser { // no line available. std::string ShiftLine(); - scoped_ptr<HttpRequest> http_request_; + std::unique_ptr<HttpRequest> http_request_; std::string buffer_; size_t buffer_position_; // Current position in the internal buffer. State state_; // Content length of the request currently being parsed. size_t declared_content_length_; - scoped_ptr<HttpChunkedDecoder> chunked_decoder_; + std::unique_ptr<HttpChunkedDecoder> chunked_decoder_; DISALLOW_COPY_AND_ASSIGN(HttpRequestParser); }; diff --git a/chromium/net/test/embedded_test_server/http_request_unittest.cc b/chromium/net/test/embedded_test_server/http_request_unittest.cc index ff2ae3cf968..64761cfb7fb 100644 --- a/chromium/net/test/embedded_test_server/http_request_unittest.cc +++ b/chromium/net/test/embedded_test_server/http_request_unittest.cc @@ -4,7 +4,8 @@ #include "net/test/embedded_test_server/http_request.h" -#include "base/memory/scoped_ptr.h" +#include <memory> + #include "testing/gtest/include/gtest/gtest.h" namespace net { @@ -34,7 +35,7 @@ TEST(HttpRequestTest, ParseRequest) { // Fetch the first request and validate it. { - scoped_ptr<HttpRequest> request = parser.GetRequest(); + std::unique_ptr<HttpRequest> request = parser.GetRequest(); EXPECT_EQ("/foobar.html", request->relative_url); EXPECT_EQ("POST", request->method_string); EXPECT_EQ(METHOD_POST, request->method); @@ -70,7 +71,7 @@ TEST(HttpRequestTest, ParseRequestWithEmptyBody) { parser.ProcessChunk("Content-Length: 0\r\n\r\n"); ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest()); - scoped_ptr<HttpRequest> request = parser.GetRequest(); + std::unique_ptr<HttpRequest> request = parser.GetRequest(); EXPECT_EQ("", request->content); EXPECT_TRUE(request->has_content); EXPECT_EQ(1u, request->headers.count("Content-Length")); @@ -88,7 +89,7 @@ TEST(HttpRequestTest, ParseRequestWithChunkedBody) { parser.ProcessChunk("0\r\n\r\n"); ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest()); - scoped_ptr<HttpRequest> request = parser.GetRequest(); + std::unique_ptr<HttpRequest> request = parser.GetRequest(); EXPECT_EQ("hello world", request->content); EXPECT_TRUE(request->has_content); EXPECT_EQ(1u, request->headers.count("Transfer-Encoding")); @@ -112,7 +113,7 @@ TEST(HttpRequestTest, ParseRequestWithChunkedBodySlow) { } // All chunked data has been sent, the last ParseRequest should give ACCEPTED. ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest()); - scoped_ptr<HttpRequest> request = parser.GetRequest(); + std::unique_ptr<HttpRequest> request = parser.GetRequest(); EXPECT_EQ("hello", request->content); EXPECT_TRUE(request->has_content); EXPECT_EQ(1u, request->headers.count("Transfer-Encoding")); @@ -125,7 +126,7 @@ TEST(HttpRequestTest, ParseRequestWithoutBody) { parser.ProcessChunk("POST /foobar.html HTTP/1.1\r\n\r\n"); ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest()); - scoped_ptr<HttpRequest> request = parser.GetRequest(); + std::unique_ptr<HttpRequest> request = parser.GetRequest(); EXPECT_EQ("", request->content); EXPECT_FALSE(request->has_content); } @@ -136,7 +137,7 @@ TEST(HttpRequestTest, ParseGet) { parser.ProcessChunk("GET /foobar.html HTTP/1.1\r\n\r\n"); ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest()); - scoped_ptr<HttpRequest> request = parser.GetRequest(); + std::unique_ptr<HttpRequest> request = parser.GetRequest(); EXPECT_EQ("/foobar.html", request->relative_url); EXPECT_EQ("GET", request->method_string); EXPECT_EQ(METHOD_GET, request->method); diff --git a/chromium/net/test/embedded_test_server/request_handler_util.cc b/chromium/net/test/embedded_test_server/request_handler_util.cc index db3f3a6fa0f..b555578f2a0 100644 --- a/chromium/net/test/embedded_test_server/request_handler_util.cc +++ b/chromium/net/test/embedded_test_server/request_handler_util.cc @@ -5,6 +5,7 @@ #include "net/test/embedded_test_server/request_handler_util.h" #include <stdlib.h> + #include <ctime> #include <sstream> #include <utility> @@ -12,6 +13,7 @@ #include "base/base64.h" #include "base/files/file_util.h" #include "base/format_macros.h" +#include "base/memory/ptr_util.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/threading/thread_restrictions.h" @@ -75,7 +77,7 @@ bool ShouldHandle(const HttpRequest& request, const std::string& path_prefix) { base::CompareCase::SENSITIVE); } -scoped_ptr<HttpResponse> HandlePrefixedRequest( +std::unique_ptr<HttpResponse> HandlePrefixedRequest( const std::string& prefix, const EmbeddedTestServer::HandleRequestCallback& handler, const HttpRequest& request) { @@ -118,8 +120,9 @@ void GetFilePathWithReplacements(const std::string& original_file_path, } // Handles |request| by serving a file from under |server_root|. -scoped_ptr<HttpResponse> HandleFileRequest(const base::FilePath& server_root, - const HttpRequest& request) { +std::unique_ptr<HttpResponse> HandleFileRequest( + const base::FilePath& server_root, + const HttpRequest& request) { // This is a test-only server. Ignore I/O thread restrictions. // TODO(svaldez): Figure out why thread is I/O restricted in the first place. base::ThreadRestrictions::ScopedAllowIO allow_io; @@ -139,7 +142,7 @@ scoped_ptr<HttpResponse> HandleFileRequest(const base::FilePath& server_root, RequestQuery query = ParseQuery(request_url); - scoped_ptr<BasicHttpResponse> failed_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> failed_response(new BasicHttpResponse); failed_response->set_code(HTTP_NOT_FOUND); if (query.find("expected_body") != query.end()) { @@ -197,11 +200,11 @@ scoped_ptr<HttpResponse> HandleFileRequest(const base::FilePath& server_root, if (!base::ReadFileToString(headers_path, &headers_contents)) return nullptr; - return make_scoped_ptr( + return base::WrapUnique( new RawHttpResponse(headers_contents, file_contents)); } - scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); + std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); http_response->set_code(HTTP_OK); if (request.headers.find("Range") != request.headers.end()) { diff --git a/chromium/net/test/embedded_test_server/request_handler_util.h b/chromium/net/test/embedded_test_server/request_handler_util.h index 2ed8d1383b4..fe86755c17f 100644 --- a/chromium/net/test/embedded_test_server/request_handler_util.h +++ b/chromium/net/test/embedded_test_server/request_handler_util.h @@ -6,12 +6,12 @@ #define NET_TEST_EMBEDDED_TEST_SERVER_REQUEST_HANDLER_UTIL_H_ #include <map> +#include <memory> #include <string> #include <vector> #include "base/files/file_path.h" #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "base/strings/string_split.h" #include "net/test/embedded_test_server/embedded_test_server.h" #include "net/test/embedded_test_server/http_response.h" @@ -34,7 +34,7 @@ using RequestQuery = std::map<std::string, std::vector<std::string>>; bool ShouldHandle(const HttpRequest& request, const std::string& prefix_path); // Calls |handler| if the |request| URL starts with |prefix|. -scoped_ptr<HttpResponse> HandlePrefixedRequest( +std::unique_ptr<HttpResponse> HandlePrefixedRequest( const std::string& prefix, const EmbeddedTestServer::HandleRequestCallback& handler, const HttpRequest& request); @@ -54,8 +54,9 @@ void GetFilePathWithReplacements(const std::string& original_path, std::string* replacement_path); // Handles |request| by serving a file from under |server_root|. -scoped_ptr<HttpResponse> HandleFileRequest(const base::FilePath& server_root, - const HttpRequest& request); +std::unique_ptr<HttpResponse> HandleFileRequest( + const base::FilePath& server_root, + const HttpRequest& request); } // namespace test_server } // namespace net diff --git a/chromium/net/test/net_test_suite.cc b/chromium/net/test/net_test_suite.cc index 561f149488e..8b0942b9303 100644 --- a/chromium/net/test/net_test_suite.cc +++ b/chromium/net/test/net_test_suite.cc @@ -10,7 +10,7 @@ #include "net/spdy/spdy_session.h" #include "testing/gtest/include/gtest/gtest.h" -#if defined(USE_NSS_VERIFIER) +#if defined(USE_NSS_CERTS) #include "net/cert_net/nss_ocsp.h" #endif @@ -33,7 +33,7 @@ void NetTestSuite::Initialize() { } void NetTestSuite::Shutdown() { -#if defined(USE_NSS_VERIFIER) +#if defined(USE_NSS_CERTS) net::ShutdownNSSHttpIO(); #endif diff --git a/chromium/net/test/net_test_suite.h b/chromium/net/test/net_test_suite.h index 92f079cde7f..6b154a8e4fc 100644 --- a/chromium/net/test/net_test_suite.h +++ b/chromium/net/test/net_test_suite.h @@ -5,6 +5,8 @@ #ifndef NET_TEST_NET_TEST_SUITE_H_ #define NET_TEST_NET_TEST_SUITE_H_ +#include <memory> + #include "base/memory/ref_counted.h" #include "base/test/test_suite.h" #include "build/build_config.h" @@ -41,8 +43,8 @@ class NetTestSuite : public base::TestSuite { void InitializeTestThreadNoNetworkChangeNotifier(); private: - scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; - scoped_ptr<base::MessageLoop> message_loop_; + std::unique_ptr<net::NetworkChangeNotifier> network_change_notifier_; + std::unique_ptr<base::MessageLoop> message_loop_; scoped_refptr<net::RuleBasedHostResolverProc> host_resolver_proc_; net::ScopedDefaultHostResolverProc scoped_host_resolver_proc_; }; diff --git a/chromium/net/test/python_utils.cc b/chromium/net/test/python_utils.cc index 7d137b7c411..208e1b924fc 100644 --- a/chromium/net/test/python_utils.cc +++ b/chromium/net/test/python_utils.cc @@ -4,6 +4,8 @@ #include "net/test/python_utils.h" +#include <memory> + #include "base/base_paths.h" #include "base/command_line.h" #include "base/environment.h" @@ -11,7 +13,6 @@ #include "base/files/file_util.h" #include "base/lazy_instance.h" #include "base/logging.h" -#include "base/memory/scoped_ptr.h" #include "base/path_service.h" #include "base/process/launch.h" #include "base/strings/string_util.h" @@ -24,7 +25,7 @@ const char kPythonPathEnv[] = "PYTHONPATH"; void AppendToPythonPath(const base::FilePath& dir) { - scoped_ptr<base::Environment> env(base::Environment::Create()); + std::unique_ptr<base::Environment> env(base::Environment::Create()); std::string old_path; std::string dir_path; #if defined(OS_WIN) diff --git a/chromium/net/test/python_utils_unittest.cc b/chromium/net/test/python_utils_unittest.cc index a713e72ff33..48eb9737675 100644 --- a/chromium/net/test/python_utils_unittest.cc +++ b/chromium/net/test/python_utils_unittest.cc @@ -2,16 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "net/test/python_utils.h" + +#include <memory> #include <string> #include "base/command_line.h" #include "base/environment.h" #include "base/files/file_path.h" -#include "base/memory/scoped_ptr.h" #include "base/process/launch.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" -#include "net/test/python_utils.h" #include "testing/gtest/include/gtest/gtest.h" TEST(PythonUtils, Append) { @@ -20,7 +21,7 @@ TEST(PythonUtils, Append) { const base::FilePath::CharType kAppendDir2[] = FILE_PATH_LITERAL("test/path_append2"); - scoped_ptr<base::Environment> env(base::Environment::Create()); + std::unique_ptr<base::Environment> env(base::Environment::Create()); std::string python_path; base::FilePath append_path1(kAppendDir1); diff --git a/chromium/net/test/run_all_unittests.cc b/chromium/net/test/run_all_unittests.cc index e5ea90043b7..20f5a68f4cd 100644 --- a/chromium/net/test/run_all_unittests.cc +++ b/chromium/net/test/run_all_unittests.cc @@ -10,6 +10,7 @@ #include "net/socket/ssl_server_socket.h" #include "net/spdy/spdy_session.h" #include "net/test/net_test_suite.h" +#include "url/url_features.h" #if defined(OS_ANDROID) #include "base/android/jni_android.h" @@ -20,7 +21,7 @@ #include "net/android/net_jni_registrar.h" #endif -#if defined(USE_ICU_ALTERNATIVES_ON_ANDROID) +#if BUILDFLAG(USE_PLATFORM_ICU_ALTERNATIVES) #include "url/android/url_jni_registrar.h" // nogncheck #endif @@ -42,7 +43,7 @@ int main(int argc, char** argv) { {"NetAndroid", net::android::RegisterJni}, {"TestFileUtil", base::RegisterContentUriTestUtils}, {"TestUiThreadAndroid", base::RegisterTestUiThreadAndroid}, -#if defined(USE_ICU_ALTERNATIVES_ON_ANDROID) +#if BUILDFLAG(USE_PLATFORM_ICU_ALTERNATIVES) {"UrlAndroid", url::android::RegisterJni}, #endif }; @@ -58,11 +59,6 @@ int main(int argc, char** argv) { NetTestSuite test_suite(argc, argv); ClientSocketPoolBaseHelper::set_connect_backup_jobs_enabled(false); -#if defined(OS_WIN) && !defined(USE_OPENSSL) - // We want to be sure to init NSPR on the main thread. - crypto::EnsureNSPRInit(); -#endif - // Enable support for SSL server sockets, which must be done while // single-threaded. net::EnableSSLServerSockets(); diff --git a/chromium/net/test/spawned_test_server/base_test_server.cc b/chromium/net/test/spawned_test_server/base_test_server.cc index ecf5af5d636..2ef7417b21a 100644 --- a/chromium/net/test/spawned_test_server/base_test_server.cc +++ b/chromium/net/test/spawned_test_server/base_test_server.cc @@ -114,8 +114,9 @@ bool GetLocalCertificatesDir(const base::FilePath& certificates_dir, return true; } -scoped_ptr<base::ListValue> GetTokenBindingParams(std::vector<int> params) { - scoped_ptr<base::ListValue> values(new base::ListValue()); +std::unique_ptr<base::ListValue> GetTokenBindingParams( + std::vector<int> params) { + std::unique_ptr<base::ListValue> values(new base::ListValue()); for (int param : params) { values->Append(new base::FundamentalValue(param)); } @@ -265,7 +266,8 @@ std::string BaseTestServer::GetScheme() const { bool BaseTestServer::GetAddressList(AddressList* address_list) const { DCHECK(address_list); - scoped_ptr<HostResolver> resolver(HostResolver::CreateDefaultResolver(NULL)); + std::unique_ptr<HostResolver> resolver( + HostResolver::CreateDefaultResolver(NULL)); HostResolver::RequestInfo info(host_port_pair_); // Limit the lookup to IPv4. When started with the default // address of kLocalhost, testserver.py only supports IPv4. @@ -406,7 +408,7 @@ void BaseTestServer::SetResourcePath(const base::FilePath& document_root, bool BaseTestServer::ParseServerData(const std::string& server_data) { VLOG(1) << "Server data: " << server_data; base::JSONReader json_reader; - scoped_ptr<base::Value> value(json_reader.ReadToValue(server_data)); + std::unique_ptr<base::Value> value(json_reader.ReadToValue(server_data)); if (!value.get() || !value->IsType(base::Value::TYPE_DICTIONARY)) { LOG(ERROR) << "Could not parse server data: " << json_reader.GetErrorMessage(); @@ -490,7 +492,7 @@ bool BaseTestServer::GenerateArguments(base::DictionaryValue* arguments) const { // Check the client certificate related arguments. if (ssl_options_.request_client_certificate) arguments->Set("ssl-client-auth", base::Value::CreateNullValue()); - scoped_ptr<base::ListValue> ssl_client_certs(new base::ListValue()); + std::unique_ptr<base::ListValue> ssl_client_certs(new base::ListValue()); std::vector<base::FilePath>::const_iterator it; for (it = ssl_options_.client_authorities.begin(); @@ -506,7 +508,7 @@ bool BaseTestServer::GenerateArguments(base::DictionaryValue* arguments) const { if (ssl_client_certs->GetSize()) arguments->Set("ssl-client-ca", ssl_client_certs.release()); - scoped_ptr<base::ListValue> client_cert_types(new base::ListValue()); + std::unique_ptr<base::ListValue> client_cert_types(new base::ListValue()); for (size_t i = 0; i < ssl_options_.client_cert_types.size(); i++) { client_cert_types->Append(new base::StringValue( GetClientCertType(ssl_options_.client_cert_types[i]))); @@ -527,12 +529,12 @@ bool BaseTestServer::GenerateArguments(base::DictionaryValue* arguments) const { } // Check key exchange argument. - scoped_ptr<base::ListValue> key_exchange_values(new base::ListValue()); + std::unique_ptr<base::ListValue> key_exchange_values(new base::ListValue()); GetKeyExchangesList(ssl_options_.key_exchanges, key_exchange_values.get()); if (key_exchange_values->GetSize()) arguments->Set("ssl-key-exchange", key_exchange_values.release()); // Check bulk cipher argument. - scoped_ptr<base::ListValue> bulk_cipher_values(new base::ListValue()); + std::unique_ptr<base::ListValue> bulk_cipher_values(new base::ListValue()); GetCiphersList(ssl_options_.bulk_ciphers, bulk_cipher_values.get()); if (bulk_cipher_values->GetSize()) arguments->Set("ssl-bulk-cipher", bulk_cipher_values.release()); @@ -558,7 +560,7 @@ bool BaseTestServer::GenerateArguments(base::DictionaryValue* arguments) const { base::Value::CreateNullValue()); } if (!ssl_options_.npn_protocols.empty()) { - scoped_ptr<base::ListValue> npn_protocols(new base::ListValue()); + std::unique_ptr<base::ListValue> npn_protocols(new base::ListValue()); for (const std::string& proto : ssl_options_.npn_protocols) { npn_protocols->Append(new base::StringValue(proto)); } @@ -574,7 +576,8 @@ bool BaseTestServer::GenerateArguments(base::DictionaryValue* arguments) const { base::Value::CreateNullValue()); } if (!ssl_options_.supported_token_binding_params.empty()) { - scoped_ptr<base::ListValue> token_binding_params(new base::ListValue()); + std::unique_ptr<base::ListValue> token_binding_params( + new base::ListValue()); arguments->Set( "token-binding-params", GetTokenBindingParams(ssl_options_.supported_token_binding_params)); diff --git a/chromium/net/test/spawned_test_server/base_test_server.h b/chromium/net/test/spawned_test_server/base_test_server.h index 60d37e1206f..48568010f65 100644 --- a/chromium/net/test/spawned_test_server/base_test_server.h +++ b/chromium/net/test/spawned_test_server/base_test_server.h @@ -7,6 +7,7 @@ #include <stdint.h> +#include <memory> #include <string> #include <utility> #include <vector> @@ -15,7 +16,6 @@ #include "base/files/file_path.h" #include "base/macros.h" #include "base/memory/ref_counted.h" -#include "base/memory/scoped_ptr.h" #include "net/base/host_port_pair.h" #include "net/ssl/ssl_client_cert_type.h" @@ -343,7 +343,7 @@ class BaseTestServer { HostPortPair host_port_pair_; // Holds the data sent from the server (e.g., port number). - scoped_ptr<base::DictionaryValue> server_data_; + std::unique_ptr<base::DictionaryValue> server_data_; // If |type_| is TYPE_HTTPS or TYPE_WSS, the TLS settings to use for the test // server. @@ -363,7 +363,7 @@ class BaseTestServer { // Disable creation of anonymous FTP user? bool no_anonymous_ftp_user_; - scoped_ptr<ScopedPortException> allowed_port_; + std::unique_ptr<ScopedPortException> allowed_port_; DISALLOW_COPY_AND_ASSIGN(BaseTestServer); }; diff --git a/chromium/net/test/spawned_test_server/remote_test_server.h b/chromium/net/test/spawned_test_server/remote_test_server.h index 0de5c7f63b4..788f68d2fb5 100644 --- a/chromium/net/test/spawned_test_server/remote_test_server.h +++ b/chromium/net/test/spawned_test_server/remote_test_server.h @@ -61,7 +61,7 @@ class RemoteTestServer : public BaseTestServer { // Helper to start and stop instances of the Python test server that runs on // the host machine. - scoped_ptr<SpawnerCommunicator> spawner_communicator_; + std::unique_ptr<SpawnerCommunicator> spawner_communicator_; DISALLOW_COPY_AND_ASSIGN(RemoteTestServer); }; diff --git a/chromium/net/test/spawned_test_server/spawner_communicator.cc b/chromium/net/test/spawned_test_server/spawner_communicator.cc index 8851f9f8bec..be23202e7a1 100644 --- a/chromium/net/test/spawned_test_server/spawner_communicator.cc +++ b/chromium/net/test/spawned_test_server/spawner_communicator.cc @@ -190,7 +190,7 @@ void SpawnerCommunicator::SendCommandAndWaitForResultOnIOThread( cur_request_->set_method("GET"); } else { cur_request_->set_method("POST"); - scoped_ptr<UploadElementReader> reader( + std::unique_ptr<UploadElementReader> reader( UploadOwnedBytesElementReader::CreateWithString(post_data)); cur_request_->set_upload( ElementsUploadDataStream::CreateWithReader(std::move(reader), 0)); @@ -340,7 +340,8 @@ bool SpawnerCommunicator::StartServer(const std::string& arguments, return false; // Check whether the data returned from spawner server is JSON-formatted. - scoped_ptr<base::Value> value = base::JSONReader::Read(server_return_data); + std::unique_ptr<base::Value> value = + base::JSONReader::Read(server_return_data); if (!value.get() || !value->IsType(base::Value::TYPE_DICTIONARY)) { LOG(ERROR) << "Invalid server data: " << server_return_data.c_str(); return false; diff --git a/chromium/net/test/spawned_test_server/spawner_communicator.h b/chromium/net/test/spawned_test_server/spawner_communicator.h index c066016ab13..445278257ab 100644 --- a/chromium/net/test/spawned_test_server/spawner_communicator.h +++ b/chromium/net/test/spawned_test_server/spawner_communicator.h @@ -7,10 +7,10 @@ #include <stdint.h> +#include <memory> #include <string> #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" #include "base/synchronization/waitable_event.h" #include "base/threading/thread.h" @@ -127,16 +127,16 @@ class SpawnerCommunicator : public URLRequest::Delegate { const uint16_t port_; // Helper to add |port_| to the list of the globally explicitly allowed ports. - scoped_ptr<ScopedPortException> allowed_port_; + std::unique_ptr<ScopedPortException> allowed_port_; // The next ID to use for |cur_request_| (monotonically increasing). int next_id_; // Request context used by |cur_request_|. - scoped_ptr<URLRequestContext> context_; + std::unique_ptr<URLRequestContext> context_; // The current (in progress) request, or NULL. - scoped_ptr<URLRequest> cur_request_; + std::unique_ptr<URLRequest> cur_request_; // Only gets/sets |is_running_| on user's thread to avoid race-condition. bool is_running_; diff --git a/chromium/net/test/url_request/ssl_certificate_error_job.cc b/chromium/net/test/url_request/ssl_certificate_error_job.cc index 83e7fd0c0a7..759d5453382 100644 --- a/chromium/net/test/url_request/ssl_certificate_error_job.cc +++ b/chromium/net/test/url_request/ssl_certificate_error_job.cc @@ -9,7 +9,7 @@ #include "base/bind.h" #include "base/macros.h" #include "base/strings/stringprintf.h" -#include "base/thread_task_runner_handle.h" +#include "base/threading/thread_task_runner_handle.h" #include "net/ssl/ssl_info.h" #include "net/url_request/url_request.h" #include "net/url_request/url_request_filter.h" @@ -55,7 +55,7 @@ void SSLCertificateErrorJob::AddUrlHandler() { URLRequestFilter* filter = URLRequestFilter::GetInstance(); filter->AddHostnameInterceptor( "https", kMockHostname, - scoped_ptr<URLRequestInterceptor>(new MockJobInterceptor())); + std::unique_ptr<URLRequestInterceptor>(new MockJobInterceptor())); } GURL SSLCertificateErrorJob::GetMockUrl() { diff --git a/chromium/net/test/url_request/url_request_failed_job.cc b/chromium/net/test/url_request/url_request_failed_job.cc index 890a0614261..68652ccb67f 100644 --- a/chromium/net/test/url_request/url_request_failed_job.cc +++ b/chromium/net/test/url_request/url_request_failed_job.cc @@ -10,7 +10,7 @@ #include "base/macros.h" #include "base/single_thread_task_runner.h" #include "base/strings/string_number_conversions.h" -#include "base/thread_task_runner_handle.h" +#include "base/threading/thread_task_runner_handle.h" #include "net/base/net_errors.h" #include "net/base/url_util.h" #include "net/http/http_response_headers.h" @@ -136,10 +136,10 @@ void URLRequestFailedJob::AddUrlHandlerForHostname( // Add |hostname| to URLRequestFilter for HTTP and HTTPS. filter->AddHostnameInterceptor( "http", hostname, - scoped_ptr<URLRequestInterceptor>(new MockJobInterceptor())); + std::unique_ptr<URLRequestInterceptor>(new MockJobInterceptor())); filter->AddHostnameInterceptor( "https", hostname, - scoped_ptr<URLRequestInterceptor>(new MockJobInterceptor())); + std::unique_ptr<URLRequestInterceptor>(new MockJobInterceptor())); } // static diff --git a/chromium/net/test/url_request/url_request_hanging_read_job.cc b/chromium/net/test/url_request/url_request_hanging_read_job.cc new file mode 100644 index 00000000000..09a4c5c71b7 --- /dev/null +++ b/chromium/net/test/url_request/url_request_hanging_read_job.cc @@ -0,0 +1,119 @@ +// Copyright 2016 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. + +#include "net/test/url_request/url_request_hanging_read_job.h" + +#include <string> + +#include "base/bind.h" +#include "base/location.h" +#include "base/memory/ptr_util.h" +#include "base/strings/stringprintf.h" +#include "base/threading/thread_task_runner_handle.h" +#include "net/http/http_response_headers.h" +#include "net/http/http_util.h" +#include "net/url_request/url_request.h" +#include "net/url_request/url_request_filter.h" + +namespace net { +namespace { + +const char kMockHostname[] = "mock.hanging.read"; + +GURL GetMockUrl(const std::string& scheme, const std::string& hostname) { + return GURL(scheme + "://" + hostname + "/"); +} + +class MockJobInterceptor : public URLRequestInterceptor { + public: + MockJobInterceptor() {} + ~MockJobInterceptor() override {} + + // URLRequestInterceptor implementation + URLRequestJob* MaybeInterceptRequest( + URLRequest* request, + NetworkDelegate* network_delegate) const override { + return new URLRequestHangingReadJob(request, network_delegate); + } + + private: + DISALLOW_COPY_AND_ASSIGN(MockJobInterceptor); +}; + +} // namespace + +URLRequestHangingReadJob::URLRequestHangingReadJob( + URLRequest* request, + NetworkDelegate* network_delegate) + : URLRequestJob(request, network_delegate), + content_length_(10), // non-zero content-length + weak_factory_(this) {} + +void URLRequestHangingReadJob::Start() { + // Start reading asynchronously so that all error reporting and data + // callbacks happen as they would for network requests. + base::ThreadTaskRunnerHandle::Get()->PostTask( + FROM_HERE, base::Bind(&URLRequestHangingReadJob::StartAsync, + weak_factory_.GetWeakPtr())); +} + +URLRequestHangingReadJob::~URLRequestHangingReadJob() {} + +int URLRequestHangingReadJob::ReadRawData(IOBuffer* buf, int buf_size) { + // Make read hang. It never completes. + return ERR_IO_PENDING; +} + +int URLRequestHangingReadJob::GetResponseCode() const { + HttpResponseInfo info; + GetResponseInfoConst(&info); + return info.headers->response_code(); +} + +// Public virtual version. +void URLRequestHangingReadJob::GetResponseInfo(HttpResponseInfo* info) { + // Forward to private const version. + GetResponseInfoConst(info); +} + +// Private const version. +void URLRequestHangingReadJob::GetResponseInfoConst( + HttpResponseInfo* info) const { + // Send back mock headers. + std::string raw_headers; + raw_headers.append( + "HTTP/1.1 200 OK\n" + "Content-type: text/plain\n"); + raw_headers.append( + base::StringPrintf("Content-Length: %1d\n", content_length_)); + info->headers = new HttpResponseHeaders(HttpUtil::AssembleRawHeaders( + raw_headers.c_str(), static_cast<int>(raw_headers.length()))); +} + +void URLRequestHangingReadJob::StartAsync() { + set_expected_content_size(content_length_); + NotifyHeadersComplete(); +} + +// static +void URLRequestHangingReadJob::AddUrlHandler() { + // Add |hostname| to URLRequestFilter for HTTP and HTTPS. + URLRequestFilter* filter = URLRequestFilter::GetInstance(); + filter->AddHostnameInterceptor("http", kMockHostname, + base::WrapUnique(new MockJobInterceptor())); + filter->AddHostnameInterceptor("https", kMockHostname, + base::WrapUnique(new MockJobInterceptor())); +} + +// static +GURL URLRequestHangingReadJob::GetMockHttpUrl() { + return GetMockUrl("http", kMockHostname); +} + +// static +GURL URLRequestHangingReadJob::GetMockHttpsUrl() { + return GetMockUrl("https", kMockHostname); +} + +} // namespace net diff --git a/chromium/net/test/url_request/url_request_hanging_read_job.h b/chromium/net/test/url_request/url_request_hanging_read_job.h new file mode 100644 index 00000000000..5e335bb333b --- /dev/null +++ b/chromium/net/test/url_request/url_request_hanging_read_job.h @@ -0,0 +1,48 @@ +// Copyright 2016 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_URL_REQUEST_URL_REQUEST_HANGING_READ_JOB_H_ +#define NET_URL_REQUEST_URL_REQUEST_HANGING_READ_JOB_H_ + +#include "base/macros.h" +#include "base/memory/weak_ptr.h" +#include "net/base/net_export.h" +#include "net/url_request/url_request_job.h" + +namespace net { + +class URLRequest; + +// A URLRequestJob that hangs when try to read response body. +class URLRequestHangingReadJob : public URLRequestJob { + public: + URLRequestHangingReadJob(URLRequest* request, + NetworkDelegate* network_delegate); + + void Start() override; + int ReadRawData(IOBuffer* buf, int buf_size) override; + int GetResponseCode() const override; + void GetResponseInfo(HttpResponseInfo* info) override; + + // Adds the testing URLs to the URLRequestFilter. + static void AddUrlHandler(); + + static GURL GetMockHttpUrl(); + static GURL GetMockHttpsUrl(); + + private: + void GetResponseInfoConst(HttpResponseInfo* info) const; + ~URLRequestHangingReadJob() override; + + void StartAsync(); + + const int content_length_; + base::WeakPtrFactory<URLRequestHangingReadJob> weak_factory_; + + DISALLOW_COPY_AND_ASSIGN(URLRequestHangingReadJob); +}; + +} // namespace net + +#endif // NET_URL_REQUEST_URL_REQUEST_SIMPLE_JOB_H_ diff --git a/chromium/net/test/url_request/url_request_mock_data_job.cc b/chromium/net/test/url_request/url_request_mock_data_job.cc index 8c67dc5cf53..8f2378b338c 100644 --- a/chromium/net/test/url_request/url_request_mock_data_job.cc +++ b/chromium/net/test/url_request/url_request_mock_data_job.cc @@ -7,10 +7,11 @@ #include "base/bind.h" #include "base/location.h" #include "base/macros.h" +#include "base/memory/ptr_util.h" #include "base/single_thread_task_runner.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" -#include "base/thread_task_runner_handle.h" +#include "base/threading/thread_task_runner_handle.h" #include "net/base/io_buffer.h" #include "net/base/url_util.h" #include "net/http/http_request_headers.h" @@ -182,9 +183,9 @@ void URLRequestMockDataJob::AddUrlHandlerForHostname( // Add |hostname| to URLRequestFilter for HTTP and HTTPS. URLRequestFilter* filter = URLRequestFilter::GetInstance(); filter->AddHostnameInterceptor("http", hostname, - make_scoped_ptr(new MockJobInterceptor())); + base::WrapUnique(new MockJobInterceptor())); filter->AddHostnameInterceptor("https", hostname, - make_scoped_ptr(new MockJobInterceptor())); + base::WrapUnique(new MockJobInterceptor())); } // static diff --git a/chromium/net/test/url_request/url_request_mock_http_job.cc b/chromium/net/test/url_request/url_request_mock_http_job.cc index cf2cc6c8d8f..bd893062411 100644 --- a/chromium/net/test/url_request/url_request_mock_http_job.cc +++ b/chromium/net/test/url_request/url_request_mock_http_job.cc @@ -120,19 +120,19 @@ GURL URLRequestMockHTTPJob::GetMockHttpsUrl(const std::string& path) { } // static -scoped_ptr<URLRequestInterceptor> URLRequestMockHTTPJob::CreateInterceptor( +std::unique_ptr<URLRequestInterceptor> URLRequestMockHTTPJob::CreateInterceptor( const base::FilePath& base_path, const scoped_refptr<base::SequencedWorkerPool>& worker_pool) { - return scoped_ptr<URLRequestInterceptor>( + return std::unique_ptr<URLRequestInterceptor>( new MockJobInterceptor(base_path, false, worker_pool)); } // static -scoped_ptr<URLRequestInterceptor> +std::unique_ptr<URLRequestInterceptor> URLRequestMockHTTPJob::CreateInterceptorForSingleFile( const base::FilePath& file, const scoped_refptr<base::SequencedWorkerPool>& worker_pool) { - return scoped_ptr<URLRequestInterceptor>( + return std::unique_ptr<URLRequestInterceptor>( new MockJobInterceptor(file, true, worker_pool)); } diff --git a/chromium/net/test/url_request/url_request_mock_http_job.h b/chromium/net/test/url_request/url_request_mock_http_job.h index 7a931fec5ca..41a12555d09 100644 --- a/chromium/net/test/url_request/url_request_mock_http_job.h +++ b/chromium/net/test/url_request/url_request_mock_http_job.h @@ -7,11 +7,11 @@ #ifndef NET_TEST_URL_REQUEST_URL_REQUEST_MOCK_HTTP_JOB_H_ #define NET_TEST_URL_REQUEST_URL_REQUEST_MOCK_HTTP_JOB_H_ +#include <memory> #include <string> #include "base/macros.h" #include "base/memory/ref_counted.h" -#include "base/memory/scoped_ptr.h" #include "net/url_request/url_request_file_job.h" #include "url/gurl.h" @@ -55,14 +55,14 @@ class URLRequestMockHTTPJob : public URLRequestFileJob { // URLRequestMockHTTPJob's responding like an HTTP server. |base_path| is the // file path leading to the root of the directory to use as the root of the // HTTP server. - static scoped_ptr<URLRequestInterceptor> CreateInterceptor( + static std::unique_ptr<URLRequestInterceptor> CreateInterceptor( const base::FilePath& base_path, const scoped_refptr<base::SequencedWorkerPool>& worker_pool); // Returns a URLRequestJobFactory::ProtocolHandler that serves // URLRequestMockHTTPJob's responding like an HTTP server. It responds to all // requests with the contents of |file|. - static scoped_ptr<URLRequestInterceptor> CreateInterceptorForSingleFile( + static std::unique_ptr<URLRequestInterceptor> CreateInterceptorForSingleFile( const base::FilePath& file, const scoped_refptr<base::SequencedWorkerPool>& worker_pool); diff --git a/chromium/net/test/url_request/url_request_slow_download_job.cc b/chromium/net/test/url_request/url_request_slow_download_job.cc index ac4beb07530..61fb8658814 100644 --- a/chromium/net/test/url_request/url_request_slow_download_job.cc +++ b/chromium/net/test/url_request/url_request_slow_download_job.cc @@ -12,7 +12,7 @@ #include "base/single_thread_task_runner.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" -#include "base/thread_task_runner_handle.h" +#include "base/threading/thread_task_runner_handle.h" #include "net/base/io_buffer.h" #include "net/base/net_errors.h" #include "net/http/http_response_headers.h" @@ -72,16 +72,16 @@ void URLRequestSlowDownloadJob::AddUrlHandler() { URLRequestFilter* filter = URLRequestFilter::GetInstance(); filter->AddUrlInterceptor( GURL(kUnknownSizeUrl), - scoped_ptr<URLRequestInterceptor>(new Interceptor())); + std::unique_ptr<URLRequestInterceptor>(new Interceptor())); filter->AddUrlInterceptor( GURL(kKnownSizeUrl), - scoped_ptr<URLRequestInterceptor>(new Interceptor())); + std::unique_ptr<URLRequestInterceptor>(new Interceptor())); filter->AddUrlInterceptor( GURL(kFinishDownloadUrl), - scoped_ptr<URLRequestInterceptor>(new Interceptor())); + std::unique_ptr<URLRequestInterceptor>(new Interceptor())); filter->AddUrlInterceptor( GURL(kErrorDownloadUrl), - scoped_ptr<URLRequestInterceptor>(new Interceptor())); + std::unique_ptr<URLRequestInterceptor>(new Interceptor())); } // static |