OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/test/embedded_test_server/default_handlers.h" | 5 #include "net/test/embedded_test_server/default_handlers.h" |
6 | 6 |
7 #include <stdlib.h> | 7 #include <stdlib.h> |
8 #include <ctime> | 8 #include <ctime> |
9 #include <map> | 9 #include <map> |
10 #include <sstream> | 10 #include <sstream> |
11 #include <string> | 11 #include <string> |
12 #include <utility> | 12 #include <utility> |
13 | 13 |
14 #include "base/base64.h" | 14 #include "base/base64.h" |
| 15 #include "base/bind.h" |
| 16 #include "base/bind_helpers.h" |
15 #include "base/files/file_path.h" | 17 #include "base/files/file_path.h" |
16 #include "base/files/file_util.h" | 18 #include "base/files/file_util.h" |
17 #include "base/format_macros.h" | 19 #include "base/format_macros.h" |
18 #include "base/macros.h" | 20 #include "base/macros.h" |
19 #include "base/md5.h" | 21 #include "base/md5.h" |
20 #include "base/memory/ptr_util.h" | 22 #include "base/memory/ptr_util.h" |
21 #include "base/path_service.h" | 23 #include "base/path_service.h" |
22 #include "base/strings/string_split.h" | 24 #include "base/strings/string_split.h" |
23 #include "base/strings/string_util.h" | 25 #include "base/strings/string_util.h" |
24 #include "base/strings/stringprintf.h" | 26 #include "base/strings/stringprintf.h" |
(...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 delay = std::atof(request_url.query().c_str()); | 595 delay = std::atof(request_url.query().c_str()); |
594 | 596 |
595 std::unique_ptr<BasicHttpResponse> http_response( | 597 std::unique_ptr<BasicHttpResponse> http_response( |
596 new DelayedHttpResponse(delay)); | 598 new DelayedHttpResponse(delay)); |
597 http_response->set_content_type("text/plain"); | 599 http_response->set_content_type("text/plain"); |
598 http_response->set_content(base::StringPrintf("waited %.1f seconds", delay)); | 600 http_response->set_content(base::StringPrintf("waited %.1f seconds", delay)); |
599 return std::move(http_response); | 601 return std::move(http_response); |
600 } | 602 } |
601 | 603 |
602 // Never returns a response. | 604 // Never returns a response. |
603 class HungHttpResponse : public BasicHttpResponse { | 605 class HungHttpResponse : public HttpResponse { |
604 public: | 606 public: |
605 HungHttpResponse() {} | 607 HungHttpResponse() {} |
606 | 608 |
607 void SendResponse(const SendBytesCallback& send, | 609 void SendResponse(const SendBytesCallback& send, |
608 const SendCompleteCallback& done) override {} | 610 const SendCompleteCallback& done) override {} |
609 | 611 |
610 private: | 612 private: |
611 DISALLOW_COPY_AND_ASSIGN(HungHttpResponse); | 613 DISALLOW_COPY_AND_ASSIGN(HungHttpResponse); |
612 }; | 614 }; |
613 | 615 |
614 // /hung | 616 // /hung |
615 // Never returns a response. | 617 // Never returns a response. |
616 std::unique_ptr<HttpResponse> HandleHungResponse(const HttpRequest& request) { | 618 std::unique_ptr<HttpResponse> HandleHungResponse(const HttpRequest& request) { |
617 return base::MakeUnique<HungHttpResponse>(); | 619 return base::MakeUnique<HungHttpResponse>(); |
618 } | 620 } |
619 | 621 |
| 622 // Return headers, then hangs. |
| 623 class HungAfterHeadersHttpResponse : public HttpResponse { |
| 624 public: |
| 625 HungAfterHeadersHttpResponse() {} |
| 626 |
| 627 void SendResponse(const SendBytesCallback& send, |
| 628 const SendCompleteCallback& done) override { |
| 629 send.Run("HTTP/1.1 OK\r\n\r\n", base::Bind(&base::DoNothing)); |
| 630 } |
| 631 |
| 632 private: |
| 633 DISALLOW_COPY_AND_ASSIGN(HungAfterHeadersHttpResponse); |
| 634 }; |
| 635 |
| 636 // /hung-after-headers |
| 637 // Never returns a response. |
| 638 std::unique_ptr<HttpResponse> HandleHungAfterHeadersResponse( |
| 639 const HttpRequest& request) { |
| 640 return base::MakeUnique<HungAfterHeadersHttpResponse>(); |
| 641 } |
| 642 |
620 } // anonymous namespace | 643 } // anonymous namespace |
621 | 644 |
622 #define PREFIXED_HANDLER(prefix, handler) \ | 645 #define PREFIXED_HANDLER(prefix, handler) \ |
623 base::Bind(&HandlePrefixedRequest, prefix, base::Bind(handler)) | 646 base::Bind(&HandlePrefixedRequest, prefix, base::Bind(handler)) |
624 | 647 |
625 void RegisterDefaultHandlers(EmbeddedTestServer* server) { | 648 void RegisterDefaultHandlers(EmbeddedTestServer* server) { |
626 server->RegisterDefaultHandler(base::Bind(&HandleDefaultConnect)); | 649 server->RegisterDefaultHandler(base::Bind(&HandleDefaultConnect)); |
627 | 650 |
628 server->RegisterDefaultHandler( | 651 server->RegisterDefaultHandler( |
629 PREFIXED_HANDLER("/cachetime", &HandleCacheTime)); | 652 PREFIXED_HANDLER("/cachetime", &HandleCacheTime)); |
(...skipping 25 matching lines...) Expand all Loading... |
655 server->RegisterDefaultHandler( | 678 server->RegisterDefaultHandler( |
656 PREFIXED_HANDLER("/server-redirect", &HandleServerRedirect)); | 679 PREFIXED_HANDLER("/server-redirect", &HandleServerRedirect)); |
657 server->RegisterDefaultHandler(base::Bind(&HandleCrossSiteRedirect, server)); | 680 server->RegisterDefaultHandler(base::Bind(&HandleCrossSiteRedirect, server)); |
658 server->RegisterDefaultHandler( | 681 server->RegisterDefaultHandler( |
659 PREFIXED_HANDLER("/client-redirect", &HandleClientRedirect)); | 682 PREFIXED_HANDLER("/client-redirect", &HandleClientRedirect)); |
660 server->RegisterDefaultHandler( | 683 server->RegisterDefaultHandler( |
661 PREFIXED_HANDLER("/defaultresponse", &HandleDefaultResponse)); | 684 PREFIXED_HANDLER("/defaultresponse", &HandleDefaultResponse)); |
662 server->RegisterDefaultHandler(PREFIXED_HANDLER("/slow", &HandleSlowServer)); | 685 server->RegisterDefaultHandler(PREFIXED_HANDLER("/slow", &HandleSlowServer)); |
663 server->RegisterDefaultHandler( | 686 server->RegisterDefaultHandler( |
664 PREFIXED_HANDLER("/hung", &HandleHungResponse)); | 687 PREFIXED_HANDLER("/hung", &HandleHungResponse)); |
| 688 server->RegisterDefaultHandler( |
| 689 PREFIXED_HANDLER("/hung-after-headers", &HandleHungAfterHeadersResponse)); |
665 | 690 |
666 // TODO(svaldez): HandleDownload | 691 // TODO(svaldez): HandleDownload |
667 // TODO(svaldez): HandleDownloadFinish | 692 // TODO(svaldez): HandleDownloadFinish |
668 // TODO(svaldez): HandleZipFile | 693 // TODO(svaldez): HandleZipFile |
669 // TODO(svaldez): HandleSSLManySmallRecords | 694 // TODO(svaldez): HandleSSLManySmallRecords |
670 // TODO(svaldez): HandleChunkedServer | 695 // TODO(svaldez): HandleChunkedServer |
671 // TODO(svaldez): HandleGetSSLSessionCache | 696 // TODO(svaldez): HandleGetSSLSessionCache |
672 // TODO(svaldez): HandleGetChannelID | 697 // TODO(svaldez): HandleGetChannelID |
673 // TODO(svaldez): HandleGetClientCert | 698 // TODO(svaldez): HandleGetClientCert |
674 // TODO(svaldez): HandleClientCipherList | 699 // TODO(svaldez): HandleClientCipherList |
675 // TODO(svaldez): HandleEchoMultipartPost | 700 // TODO(svaldez): HandleEchoMultipartPost |
676 } | 701 } |
677 | 702 |
678 #undef PREFIXED_HANDLER | 703 #undef PREFIXED_HANDLER |
679 | 704 |
680 } // namespace test_server | 705 } // namespace test_server |
681 } // namespace net | 706 } // namespace net |
OLD | NEW |