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

Side by Side Diff: content/browser/renderer_host/resource_queue_unittest.cc

Issue 8296017: Revert 105659 - Delay network requests on startup if any webRequest or webNavigation extensions a... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 2 months 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 | Annotate | Revision Log
« no previous file with comments | « content/browser/renderer_host/resource_queue.cc ('k') | net/url_request/url_request.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "base/memory/scoped_ptr.h" 5 #include "base/memory/scoped_ptr.h"
6 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "content/browser/browser_thread.h" 7 #include "content/browser/browser_thread.h"
8 #include "content/browser/mock_resource_context.h" 8 #include "content/browser/mock_resource_context.h"
9 #include "content/browser/renderer_host/dummy_resource_handler.h" 9 #include "content/browser/renderer_host/dummy_resource_handler.h"
10 #include "content/browser/renderer_host/global_request_id.h" 10 #include "content/browser/renderer_host/global_request_id.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 } 71 }
72 72
73 virtual void Initialize(ResourceQueue* resource_queue) { 73 virtual void Initialize(ResourceQueue* resource_queue) {
74 resource_queue_ = resource_queue; 74 resource_queue_ = resource_queue;
75 } 75 }
76 76
77 virtual bool ShouldDelayRequest( 77 virtual bool ShouldDelayRequest(
78 net::URLRequest* request, 78 net::URLRequest* request,
79 const ResourceDispatcherHostRequestInfo& request_info, 79 const ResourceDispatcherHostRequestInfo& request_info,
80 const GlobalRequestID& request_id) { 80 const GlobalRequestID& request_id) {
81 delayed_requests_.push_back(request_id);
81 return true; 82 return true;
82 } 83 }
83 84
84 virtual void WillShutdownResourceQueue() { 85 virtual void WillShutdownResourceQueue() {
85 resource_queue_ = NULL; 86 resource_queue_ = NULL;
86 } 87 }
87 88
88 void StartDelayedRequests() { 89 void StartDelayedRequests() {
89 if (resource_queue_) 90 if (!resource_queue_)
90 resource_queue_->StartDelayedRequests(this); 91 return;
92
93 for (RequestList::iterator i = delayed_requests_.begin();
94 i != delayed_requests_.end(); ++i) {
95 resource_queue_->StartDelayedRequest(this, *i);
96 }
91 } 97 }
92 98
93 private: 99 private:
94 typedef std::vector<GlobalRequestID> RequestList; 100 typedef std::vector<GlobalRequestID> RequestList;
95 101
96 ResourceQueue* resource_queue_; 102 ResourceQueue* resource_queue_;
97 103
104 RequestList delayed_requests_;
105
98 DISALLOW_COPY_AND_ASSIGN(AlwaysDelayingDelegate); 106 DISALLOW_COPY_AND_ASSIGN(AlwaysDelayingDelegate);
99 }; 107 };
100 108
101 class ResourceQueueTest : public testing::Test, 109 class ResourceQueueTest : public testing::Test,
102 public net::URLRequest::Delegate { 110 public net::URLRequest::Delegate {
103 public: 111 public:
104 ResourceQueueTest() 112 ResourceQueueTest()
105 : response_started_count_(0), 113 : response_started_count_(0),
106 message_loop_(MessageLoop::TYPE_IO), 114 message_loop_(MessageLoop::TYPE_IO),
107 ui_thread_(BrowserThread::UI, &message_loop_), 115 ui_thread_(BrowserThread::UI, &message_loop_),
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 queue.AddRequest(&request, *request_info.get()); 210 queue.AddRequest(&request, *request_info.get());
203 MessageLoop::current()->RunAllPending(); 211 MessageLoop::current()->RunAllPending();
204 EXPECT_EQ(0, response_started_count_); 212 EXPECT_EQ(0, response_started_count_);
205 always_delaying_delegate.StartDelayedRequests(); 213 always_delaying_delegate.StartDelayedRequests();
206 MessageLoop::current()->RunAllPending(); 214 MessageLoop::current()->RunAllPending();
207 EXPECT_EQ(1, response_started_count_); 215 EXPECT_EQ(1, response_started_count_);
208 216
209 queue.Shutdown(); 217 queue.Shutdown();
210 } 218 }
211 219
212 TEST_F(ResourceQueueTest, TwoDelayingDelegates) {
213 ResourceQueue queue;
214
215 AlwaysDelayingDelegate always_delaying_delegate1;
216 AlwaysDelayingDelegate always_delaying_delegate2;
217 InitializeQueue(
218 &queue, &always_delaying_delegate1, &always_delaying_delegate2);
219
220 net::URLRequest request(GURL(kTestUrl), this);
221 scoped_ptr<ResourceDispatcherHostRequestInfo> request_info(GetRequestInfo(0));
222 EXPECT_EQ(0, response_started_count_);
223 queue.AddRequest(&request, *request_info.get());
224 MessageLoop::current()->RunAllPending();
225 EXPECT_EQ(0, response_started_count_);
226
227 always_delaying_delegate1.StartDelayedRequests();
228 MessageLoop::current()->RunAllPending();
229 EXPECT_EQ(0, response_started_count_);
230
231 always_delaying_delegate2.StartDelayedRequests();
232 MessageLoop::current()->RunAllPending();
233 EXPECT_EQ(1, response_started_count_);
234
235 queue.Shutdown();
236 }
237
238 TEST_F(ResourceQueueTest, RemoveRequest) { 220 TEST_F(ResourceQueueTest, RemoveRequest) {
239 ResourceQueue queue; 221 ResourceQueue queue;
240 222
241 AlwaysDelayingDelegate delegate; 223 AlwaysDelayingDelegate delegate;
242 InitializeQueue(&queue, &delegate); 224 InitializeQueue(&queue, &delegate);
243 225
244 net::URLRequest request(GURL(kTestUrl), this); 226 net::URLRequest request(GURL(kTestUrl), this);
245 scoped_ptr<ResourceDispatcherHostRequestInfo> request_info(GetRequestInfo(0)); 227 scoped_ptr<ResourceDispatcherHostRequestInfo> request_info(GetRequestInfo(0));
246 GlobalRequestID request_id(request_info->child_id(), 228 GlobalRequestID request_id(request_info->child_id(),
247 request_info->request_id()); 229 request_info->request_id());
248 EXPECT_EQ(0, response_started_count_); 230 EXPECT_EQ(0, response_started_count_);
249 queue.AddRequest(&request, *request_info.get()); 231 queue.AddRequest(&request, *request_info.get());
250 MessageLoop::current()->RunAllPending(); 232 MessageLoop::current()->RunAllPending();
251 EXPECT_EQ(0, response_started_count_); 233 EXPECT_EQ(0, response_started_count_);
252 queue.RemoveRequest(request_id); 234 queue.RemoveRequest(request_id);
253 delegate.StartDelayedRequests(); 235 delegate.StartDelayedRequests();
254 MessageLoop::current()->RunAllPending(); 236 MessageLoop::current()->RunAllPending();
255 EXPECT_EQ(0, response_started_count_); 237 EXPECT_EQ(0, response_started_count_);
256 238
257 queue.Shutdown(); 239 queue.Shutdown();
258 240
259 MessageLoop::current()->RunAllPending(); 241 MessageLoop::current()->RunAllPending();
260 EXPECT_EQ(0, response_started_count_); 242 EXPECT_EQ(0, response_started_count_);
261 } 243 }
262 244
263 } // namespace 245 } // namespace
OLDNEW
« no previous file with comments | « content/browser/renderer_host/resource_queue.cc ('k') | net/url_request/url_request.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698