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

Side by Side Diff: content/browser/loader/test_resource_handler.cc

Issue 2552463002: Add more ResourceLoaderTests (Closed)
Patch Set: Merge Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "content/browser/loader/test_resource_handler.h" 5 #include "content/browser/loader/test_resource_handler.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "content/browser/loader/resource_controller.h" 8 #include "content/browser/loader/resource_controller.h"
9 #include "content/public/common/resource_response.h" 9 #include "content/public/common/resource_response.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
11 11
12 namespace content { 12 namespace content {
13 13
14 namespace {
15
16 class ScopedCallDepthTracker {
17 public:
18 explicit ScopedCallDepthTracker(int* call_depth) : call_depth_(call_depth) {
19 EXPECT_EQ(0, *call_depth_);
20 call_depth_[0]++;
Randy Smith (Not in Mondays) 2016/12/08 22:15:09 nit, suggestion: I find this a weird syntax for so
mmenke 2016/12/08 22:46:37 Works for me (I mostly like the [0] because, like
21 }
22
23 ~ScopedCallDepthTracker() {
24 EXPECT_EQ(1, *call_depth_);
25 call_depth_[0]--;
26 }
27
28 private:
29 int* const call_depth_;
30
31 DISALLOW_COPY_AND_ASSIGN(ScopedCallDepthTracker);
32 };
33
34 } // namespace
35
14 TestResourceHandler::TestResourceHandler(net::URLRequestStatus* request_status, 36 TestResourceHandler::TestResourceHandler(net::URLRequestStatus* request_status,
15 std::string* body) 37 std::string* body)
16 : ResourceHandler(nullptr), 38 : ResourceHandler(nullptr),
17 request_status_ptr_(request_status), 39 request_status_ptr_(request_status),
18 body_ptr_(body), 40 body_ptr_(body),
19 deferred_run_loop_(new base::RunLoop()) { 41 deferred_run_loop_(new base::RunLoop()) {
20 SetBufferSize(2048); 42 SetBufferSize(2048);
21 } 43 }
22 44
23 TestResourceHandler::TestResourceHandler() 45 TestResourceHandler::TestResourceHandler()
24 : TestResourceHandler(nullptr, nullptr) {} 46 : TestResourceHandler(nullptr, nullptr) {}
25 47
26 TestResourceHandler::~TestResourceHandler() {} 48 TestResourceHandler::~TestResourceHandler() {}
27 49
28 void TestResourceHandler::SetController(ResourceController* controller) { 50 void TestResourceHandler::SetController(ResourceController* controller) {
29 controller_ = controller; 51 controller_ = controller;
30 } 52 }
31 53
32 bool TestResourceHandler::OnRequestRedirected( 54 bool TestResourceHandler::OnRequestRedirected(
33 const net::RedirectInfo& redirect_info, 55 const net::RedirectInfo& redirect_info,
34 ResourceResponse* response, 56 ResourceResponse* response,
35 bool* defer) { 57 bool* defer) {
36 EXPECT_FALSE(canceled_); 58 EXPECT_FALSE(canceled_);
37 EXPECT_EQ(1, on_will_start_called_); 59 EXPECT_EQ(1, on_will_start_called_);
38 EXPECT_EQ(0, on_response_started_called_); 60 EXPECT_EQ(0, on_response_started_called_);
39 EXPECT_EQ(0, on_response_completed_called_); 61 EXPECT_EQ(0, on_response_completed_called_);
62 ScopedCallDepthTracker call_depth_tracker(&call_depth_);
63
40 ++on_request_redirected_called_; 64 ++on_request_redirected_called_;
41 65
42 if (!on_request_redirected_result_) { 66 if (!on_request_redirected_result_) {
43 canceled_ = true; 67 canceled_ = true;
44 return false; 68 return false;
45 } 69 }
46 70
47 *defer = defer_on_request_redirected_; 71 *defer = defer_on_request_redirected_;
48 defer_on_request_redirected_ = false; 72 defer_on_request_redirected_ = false;
49 if (*defer) 73 if (*defer)
50 deferred_run_loop_->Quit(); 74 deferred_run_loop_->Quit();
51 return true; 75 return true;
52 } 76 }
53 77
54 bool TestResourceHandler::OnResponseStarted(ResourceResponse* response, 78 bool TestResourceHandler::OnResponseStarted(ResourceResponse* response,
55 bool* defer) { 79 bool* defer) {
56 EXPECT_FALSE(canceled_); 80 EXPECT_FALSE(canceled_);
57 EXPECT_EQ(1, on_will_start_called_); 81 EXPECT_EQ(1, on_will_start_called_);
58 EXPECT_EQ(0, on_response_started_called_); 82 EXPECT_EQ(0, on_response_started_called_);
59 EXPECT_EQ(0, on_response_completed_called_); 83 EXPECT_EQ(0, on_response_completed_called_);
84 ScopedCallDepthTracker call_depth_tracker(&call_depth_);
85
60 ++on_response_started_called_; 86 ++on_response_started_called_;
61 87
62 EXPECT_FALSE(resource_response_); 88 EXPECT_FALSE(resource_response_);
63 resource_response_ = response; 89 resource_response_ = response;
64 90
65 if (!on_response_started_result_) { 91 if (!on_response_started_result_) {
66 canceled_ = true; 92 canceled_ = true;
67 return false; 93 return false;
68 } 94 }
69 95
70 *defer = defer_on_response_started_; 96 *defer = defer_on_response_started_;
71 defer_on_response_started_ = false; 97 defer_on_response_started_ = false;
72 if (*defer) 98 if (*defer)
73 deferred_run_loop_->Quit(); 99 deferred_run_loop_->Quit();
74 return true; 100 return true;
75 } 101 }
76 102
77 bool TestResourceHandler::OnWillStart(const GURL& url, bool* defer) { 103 bool TestResourceHandler::OnWillStart(const GURL& url, bool* defer) {
78 EXPECT_FALSE(canceled_); 104 EXPECT_FALSE(canceled_);
79 EXPECT_EQ(0, on_response_started_called_); 105 EXPECT_EQ(0, on_response_started_called_);
80 EXPECT_EQ(0, on_will_start_called_); 106 EXPECT_EQ(0, on_will_start_called_);
81 EXPECT_EQ(0, on_response_completed_called_); 107 EXPECT_EQ(0, on_response_completed_called_);
108 ScopedCallDepthTracker call_depth_tracker(&call_depth_);
109
82 ++on_will_start_called_; 110 ++on_will_start_called_;
83 111
84 start_url_ = url; 112 start_url_ = url;
85 113
86 if (!on_will_start_result_) { 114 if (!on_will_start_result_) {
87 canceled_ = true; 115 canceled_ = true;
88 return false; 116 return false;
89 } 117 }
90 118
91 *defer = defer_on_will_start_; 119 *defer = defer_on_will_start_;
92 if (*defer) 120 if (*defer)
93 deferred_run_loop_->Quit(); 121 deferred_run_loop_->Quit();
94 return true; 122 return true;
95 } 123 }
96 124
97 bool TestResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf, 125 bool TestResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf,
98 int* buf_size, 126 int* buf_size,
99 int min_size) { 127 int min_size) {
100 EXPECT_FALSE(canceled_); 128 EXPECT_FALSE(canceled_);
101 EXPECT_FALSE(expect_on_data_downloaded_); 129 EXPECT_FALSE(expect_on_data_downloaded_);
102 EXPECT_EQ(0, on_response_completed_called_); 130 EXPECT_EQ(0, on_response_completed_called_);
131 ScopedCallDepthTracker call_depth_tracker(&call_depth_);
132
103 ++on_will_read_called_; 133 ++on_will_read_called_;
104 134
105 *buf = buffer_; 135 *buf = buffer_;
106 *buf_size = buffer_size_; 136 *buf_size = buffer_size_;
107 memset(buffer_->data(), '\0', buffer_size_); 137 memset(buffer_->data(), '\0', buffer_size_);
108 if (!on_will_read_result_) 138 if (!on_will_read_result_)
109 canceled_ = true; 139 canceled_ = true;
110 return on_will_read_result_; 140 return on_will_read_result_;
111 } 141 }
112 142
113 bool TestResourceHandler::OnReadCompleted(int bytes_read, bool* defer) { 143 bool TestResourceHandler::OnReadCompleted(int bytes_read, bool* defer) {
114 EXPECT_FALSE(canceled_); 144 EXPECT_FALSE(canceled_);
115 EXPECT_FALSE(expect_on_data_downloaded_); 145 EXPECT_FALSE(expect_on_data_downloaded_);
116 EXPECT_EQ(1, on_will_start_called_); 146 EXPECT_EQ(1, on_will_start_called_);
117 EXPECT_EQ(1, on_response_started_called_); 147 EXPECT_EQ(1, on_response_started_called_);
118 EXPECT_EQ(0, on_response_completed_called_); 148 EXPECT_EQ(0, on_response_completed_called_);
119 EXPECT_EQ(0, on_read_eof_); 149 EXPECT_EQ(0, on_read_eof_);
150 ScopedCallDepthTracker call_depth_tracker(&call_depth_);
120 151
121 ++on_read_completed_called_; 152 ++on_read_completed_called_;
122 if (bytes_read == 0) 153 if (bytes_read == 0)
123 ++on_read_eof_; 154 ++on_read_eof_;
124 155
125 EXPECT_LE(static_cast<size_t>(bytes_read), buffer_size_); 156 EXPECT_LE(static_cast<size_t>(bytes_read), buffer_size_);
126 if (body_ptr_) 157 if (body_ptr_)
127 body_ptr_->append(buffer_->data(), bytes_read); 158 body_ptr_->append(buffer_->data(), bytes_read);
128 body_.append(buffer_->data(), bytes_read); 159 body_.append(buffer_->data(), bytes_read);
129 160
(...skipping 10 matching lines...) Expand all
140 171
141 if (*defer) 172 if (*defer)
142 deferred_run_loop_->Quit(); 173 deferred_run_loop_->Quit();
143 174
144 return true; 175 return true;
145 } 176 }
146 177
147 void TestResourceHandler::OnResponseCompleted( 178 void TestResourceHandler::OnResponseCompleted(
148 const net::URLRequestStatus& status, 179 const net::URLRequestStatus& status,
149 bool* defer) { 180 bool* defer) {
181 ScopedCallDepthTracker call_depth_tracker(&call_depth_);
182
150 EXPECT_EQ(0, on_response_completed_called_); 183 EXPECT_EQ(0, on_response_completed_called_);
151 if (status.is_success() && !expect_on_data_downloaded_ && expect_eof_read_) 184 if (status.is_success() && !expect_on_data_downloaded_ && expect_eof_read_)
152 EXPECT_EQ(1, on_read_eof_); 185 EXPECT_EQ(1, on_read_eof_);
153 186
154 ++on_response_completed_called_; 187 ++on_response_completed_called_;
155 188
156 if (request_status_ptr_) 189 if (request_status_ptr_)
157 *request_status_ptr_ = status; 190 *request_status_ptr_ = status;
158 final_status_ = status; 191 final_status_ = status;
159 *defer = defer_on_response_completed_; 192 *defer = defer_on_response_completed_;
160 defer_on_response_completed_ = false; 193 defer_on_response_completed_ = false;
161 194
162 if (*defer) 195 if (*defer)
163 deferred_run_loop_->Quit(); 196 deferred_run_loop_->Quit();
164 response_complete_run_loop_.Quit(); 197 response_complete_run_loop_.Quit();
165 } 198 }
166 199
167 void TestResourceHandler::OnDataDownloaded(int bytes_downloaded) { 200 void TestResourceHandler::OnDataDownloaded(int bytes_downloaded) {
168 EXPECT_TRUE(expect_on_data_downloaded_); 201 EXPECT_TRUE(expect_on_data_downloaded_);
169 total_bytes_downloaded_ += bytes_downloaded; 202 total_bytes_downloaded_ += bytes_downloaded;
170 } 203 }
171 204
172 void TestResourceHandler::Resume() { 205 void TestResourceHandler::Resume() {
206 ScopedCallDepthTracker call_depth_tracker(&call_depth_);
173 controller_->Resume(); 207 controller_->Resume();
174 } 208 }
175 209
176 void TestResourceHandler::CancelWithError(net::Error net_error) { 210 void TestResourceHandler::CancelWithError(net::Error net_error) {
211 ScopedCallDepthTracker call_depth_tracker(&call_depth_);
177 canceled_ = true; 212 canceled_ = true;
178 controller_->CancelWithError(net_error); 213 controller_->CancelWithError(net_error);
179 } 214 }
180 215
181 void TestResourceHandler::SetBufferSize(int buffer_size) { 216 void TestResourceHandler::SetBufferSize(int buffer_size) {
182 buffer_ = new net::IOBuffer(buffer_size); 217 buffer_ = new net::IOBuffer(buffer_size);
183 buffer_size_ = buffer_size; 218 buffer_size_ = buffer_size;
184 memset(buffer_->data(), '\0', buffer_size); 219 memset(buffer_->data(), '\0', buffer_size);
185 } 220 }
186 221
187 void TestResourceHandler::WaitUntilDeferred() { 222 void TestResourceHandler::WaitUntilDeferred() {
188 deferred_run_loop_->Run(); 223 deferred_run_loop_->Run();
189 deferred_run_loop_.reset(new base::RunLoop()); 224 deferred_run_loop_.reset(new base::RunLoop());
190 } 225 }
191 226
192 void TestResourceHandler::WaitUntilResponseComplete() { 227 void TestResourceHandler::WaitUntilResponseComplete() {
193 response_complete_run_loop_.Run(); 228 response_complete_run_loop_.Run();
194 } 229 }
195 230
196 } // namespace content 231 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698