| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <stack> | 5 #include <stack> |
| 6 #include <utility> | 6 #include <utility> |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 } | 55 } |
| 56 | 56 |
| 57 bool has_job() const { | 57 bool has_job() const { |
| 58 return job_ != NULL; | 58 return job_ != NULL; |
| 59 } | 59 } |
| 60 | 60 |
| 61 // net::URLRequestJobFactory implementation. | 61 // net::URLRequestJobFactory implementation. |
| 62 virtual net::URLRequestJob* MaybeCreateJobWithProtocolHandler( | 62 virtual net::URLRequestJob* MaybeCreateJobWithProtocolHandler( |
| 63 const std::string& scheme, | 63 const std::string& scheme, |
| 64 net::URLRequest* request, | 64 net::URLRequest* request, |
| 65 net::NetworkDelegate* network_delegate) const OVERRIDE { | 65 net::NetworkDelegate* network_delegate) const override { |
| 66 if (job_) { | 66 if (job_) { |
| 67 net::URLRequestJob* temp = job_; | 67 net::URLRequestJob* temp = job_; |
| 68 job_ = NULL; | 68 job_ = NULL; |
| 69 return temp; | 69 return temp; |
| 70 } else { | 70 } else { |
| 71 return new net::URLRequestErrorJob(request, | 71 return new net::URLRequestErrorJob(request, |
| 72 network_delegate, | 72 network_delegate, |
| 73 net::ERR_INTERNET_DISCONNECTED); | 73 net::ERR_INTERNET_DISCONNECTED); |
| 74 } | 74 } |
| 75 } | 75 } |
| 76 | 76 |
| 77 virtual bool IsHandledProtocol(const std::string& scheme) const OVERRIDE { | 77 virtual bool IsHandledProtocol(const std::string& scheme) const override { |
| 78 return scheme == "http"; | 78 return scheme == "http"; |
| 79 }; | 79 }; |
| 80 | 80 |
| 81 virtual bool IsHandledURL(const GURL& url) const OVERRIDE { | 81 virtual bool IsHandledURL(const GURL& url) const override { |
| 82 return url.SchemeIs("http"); | 82 return url.SchemeIs("http"); |
| 83 } | 83 } |
| 84 | 84 |
| 85 virtual bool IsSafeRedirectTarget(const GURL& location) const OVERRIDE { | 85 virtual bool IsSafeRedirectTarget(const GURL& location) const override { |
| 86 return false; | 86 return false; |
| 87 } | 87 } |
| 88 | 88 |
| 89 private: | 89 private: |
| 90 mutable net::URLRequestJob* job_; | 90 mutable net::URLRequestJob* job_; |
| 91 }; | 91 }; |
| 92 | 92 |
| 93 class AppCacheURLRequestJobTest : public testing::Test { | 93 class AppCacheURLRequestJobTest : public testing::Test { |
| 94 public: | 94 public: |
| 95 | 95 |
| 96 // Test Harness ------------------------------------------------------------- | 96 // Test Harness ------------------------------------------------------------- |
| 97 // TODO(michaeln): share this test harness with AppCacheResponseTest | 97 // TODO(michaeln): share this test harness with AppCacheResponseTest |
| 98 | 98 |
| 99 class MockStorageDelegate : public AppCacheStorage::Delegate { | 99 class MockStorageDelegate : public AppCacheStorage::Delegate { |
| 100 public: | 100 public: |
| 101 explicit MockStorageDelegate(AppCacheURLRequestJobTest* test) | 101 explicit MockStorageDelegate(AppCacheURLRequestJobTest* test) |
| 102 : loaded_info_id_(0), test_(test) { | 102 : loaded_info_id_(0), test_(test) { |
| 103 } | 103 } |
| 104 | 104 |
| 105 virtual void OnResponseInfoLoaded(AppCacheResponseInfo* info, | 105 virtual void OnResponseInfoLoaded(AppCacheResponseInfo* info, |
| 106 int64 response_id) OVERRIDE { | 106 int64 response_id) override { |
| 107 loaded_info_ = info; | 107 loaded_info_ = info; |
| 108 loaded_info_id_ = response_id; | 108 loaded_info_id_ = response_id; |
| 109 test_->ScheduleNextTask(); | 109 test_->ScheduleNextTask(); |
| 110 } | 110 } |
| 111 | 111 |
| 112 scoped_refptr<AppCacheResponseInfo> loaded_info_; | 112 scoped_refptr<AppCacheResponseInfo> loaded_info_; |
| 113 int64 loaded_info_id_; | 113 int64 loaded_info_id_; |
| 114 AppCacheURLRequestJobTest* test_; | 114 AppCacheURLRequestJobTest* test_; |
| 115 }; | 115 }; |
| 116 | 116 |
| 117 class MockURLRequestDelegate : public net::URLRequest::Delegate { | 117 class MockURLRequestDelegate : public net::URLRequest::Delegate { |
| 118 public: | 118 public: |
| 119 explicit MockURLRequestDelegate(AppCacheURLRequestJobTest* test) | 119 explicit MockURLRequestDelegate(AppCacheURLRequestJobTest* test) |
| 120 : test_(test), | 120 : test_(test), |
| 121 received_data_(new net::IOBuffer(kNumBlocks * kBlockSize)), | 121 received_data_(new net::IOBuffer(kNumBlocks * kBlockSize)), |
| 122 did_receive_headers_(false), amount_received_(0), | 122 did_receive_headers_(false), amount_received_(0), |
| 123 kill_after_amount_received_(0), kill_with_io_pending_(false) { | 123 kill_after_amount_received_(0), kill_with_io_pending_(false) { |
| 124 } | 124 } |
| 125 | 125 |
| 126 virtual void OnResponseStarted(net::URLRequest* request) OVERRIDE { | 126 virtual void OnResponseStarted(net::URLRequest* request) override { |
| 127 amount_received_ = 0; | 127 amount_received_ = 0; |
| 128 did_receive_headers_ = false; | 128 did_receive_headers_ = false; |
| 129 if (request->status().is_success()) { | 129 if (request->status().is_success()) { |
| 130 EXPECT_TRUE(request->response_headers()); | 130 EXPECT_TRUE(request->response_headers()); |
| 131 did_receive_headers_ = true; | 131 did_receive_headers_ = true; |
| 132 received_info_ = request->response_info(); | 132 received_info_ = request->response_info(); |
| 133 ReadSome(request); | 133 ReadSome(request); |
| 134 } else { | 134 } else { |
| 135 RequestComplete(); | 135 RequestComplete(); |
| 136 } | 136 } |
| 137 } | 137 } |
| 138 | 138 |
| 139 virtual void OnReadCompleted(net::URLRequest* request, | 139 virtual void OnReadCompleted(net::URLRequest* request, |
| 140 int bytes_read) OVERRIDE { | 140 int bytes_read) override { |
| 141 if (bytes_read > 0) { | 141 if (bytes_read > 0) { |
| 142 amount_received_ += bytes_read; | 142 amount_received_ += bytes_read; |
| 143 | 143 |
| 144 if (kill_after_amount_received_ && !kill_with_io_pending_) { | 144 if (kill_after_amount_received_ && !kill_with_io_pending_) { |
| 145 if (amount_received_ >= kill_after_amount_received_) { | 145 if (amount_received_ >= kill_after_amount_received_) { |
| 146 request->Cancel(); | 146 request->Cancel(); |
| 147 return; | 147 return; |
| 148 } | 148 } |
| 149 } | 149 } |
| 150 | 150 |
| (...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 854 RunTestOnIOThread(&AppCacheURLRequestJobTest::CancelRequest); | 854 RunTestOnIOThread(&AppCacheURLRequestJobTest::CancelRequest); |
| 855 } | 855 } |
| 856 | 856 |
| 857 TEST_F(AppCacheURLRequestJobTest, CancelRequestWithIOPending) { | 857 TEST_F(AppCacheURLRequestJobTest, CancelRequestWithIOPending) { |
| 858 RunTestOnIOThread(&AppCacheURLRequestJobTest::CancelRequestWithIOPending); | 858 RunTestOnIOThread(&AppCacheURLRequestJobTest::CancelRequestWithIOPending); |
| 859 } | 859 } |
| 860 | 860 |
| 861 } // namespace | 861 } // namespace |
| 862 | 862 |
| 863 } // namespace content | 863 } // namespace content |
| OLD | NEW |