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

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

Issue 8308003: Revert 105661 - Revert 105659 - Delay network requests on startup if any webRequest or webNavigat... (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);
82 return true; 81 return true;
83 } 82 }
84 83
85 virtual void WillShutdownResourceQueue() { 84 virtual void WillShutdownResourceQueue() {
86 resource_queue_ = NULL; 85 resource_queue_ = NULL;
87 } 86 }
88 87
89 void StartDelayedRequests() { 88 void StartDelayedRequests() {
90 if (!resource_queue_) 89 if (resource_queue_)
91 return; 90 resource_queue_->StartDelayedRequests(this);
92
93 for (RequestList::iterator i = delayed_requests_.begin();
94 i != delayed_requests_.end(); ++i) {
95 resource_queue_->StartDelayedRequest(this, *i);
96 }
97 } 91 }
98 92
99 private: 93 private:
100 typedef std::vector<GlobalRequestID> RequestList; 94 typedef std::vector<GlobalRequestID> RequestList;
101 95
102 ResourceQueue* resource_queue_; 96 ResourceQueue* resource_queue_;
103 97
104 RequestList delayed_requests_;
105
106 DISALLOW_COPY_AND_ASSIGN(AlwaysDelayingDelegate); 98 DISALLOW_COPY_AND_ASSIGN(AlwaysDelayingDelegate);
107 }; 99 };
108 100
109 class ResourceQueueTest : public testing::Test, 101 class ResourceQueueTest : public testing::Test,
110 public net::URLRequest::Delegate { 102 public net::URLRequest::Delegate {
111 public: 103 public:
112 ResourceQueueTest() 104 ResourceQueueTest()
113 : response_started_count_(0), 105 : response_started_count_(0),
114 message_loop_(MessageLoop::TYPE_IO), 106 message_loop_(MessageLoop::TYPE_IO),
115 ui_thread_(BrowserThread::UI, &message_loop_), 107 ui_thread_(BrowserThread::UI, &message_loop_),
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 queue.AddRequest(&request, *request_info.get()); 202 queue.AddRequest(&request, *request_info.get());
211 MessageLoop::current()->RunAllPending(); 203 MessageLoop::current()->RunAllPending();
212 EXPECT_EQ(0, response_started_count_); 204 EXPECT_EQ(0, response_started_count_);
213 always_delaying_delegate.StartDelayedRequests(); 205 always_delaying_delegate.StartDelayedRequests();
214 MessageLoop::current()->RunAllPending(); 206 MessageLoop::current()->RunAllPending();
215 EXPECT_EQ(1, response_started_count_); 207 EXPECT_EQ(1, response_started_count_);
216 208
217 queue.Shutdown(); 209 queue.Shutdown();
218 } 210 }
219 211
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
220 TEST_F(ResourceQueueTest, RemoveRequest) { 238 TEST_F(ResourceQueueTest, RemoveRequest) {
221 ResourceQueue queue; 239 ResourceQueue queue;
222 240
223 AlwaysDelayingDelegate delegate; 241 AlwaysDelayingDelegate delegate;
224 InitializeQueue(&queue, &delegate); 242 InitializeQueue(&queue, &delegate);
225 243
226 net::URLRequest request(GURL(kTestUrl), this); 244 net::URLRequest request(GURL(kTestUrl), this);
227 scoped_ptr<ResourceDispatcherHostRequestInfo> request_info(GetRequestInfo(0)); 245 scoped_ptr<ResourceDispatcherHostRequestInfo> request_info(GetRequestInfo(0));
228 GlobalRequestID request_id(request_info->child_id(), 246 GlobalRequestID request_id(request_info->child_id(),
229 request_info->request_id()); 247 request_info->request_id());
230 EXPECT_EQ(0, response_started_count_); 248 EXPECT_EQ(0, response_started_count_);
231 queue.AddRequest(&request, *request_info.get()); 249 queue.AddRequest(&request, *request_info.get());
232 MessageLoop::current()->RunAllPending(); 250 MessageLoop::current()->RunAllPending();
233 EXPECT_EQ(0, response_started_count_); 251 EXPECT_EQ(0, response_started_count_);
234 queue.RemoveRequest(request_id); 252 queue.RemoveRequest(request_id);
235 delegate.StartDelayedRequests(); 253 delegate.StartDelayedRequests();
236 MessageLoop::current()->RunAllPending(); 254 MessageLoop::current()->RunAllPending();
237 EXPECT_EQ(0, response_started_count_); 255 EXPECT_EQ(0, response_started_count_);
238 256
239 queue.Shutdown(); 257 queue.Shutdown();
240 258
241 MessageLoop::current()->RunAllPending(); 259 MessageLoop::current()->RunAllPending();
242 EXPECT_EQ(0, response_started_count_); 260 EXPECT_EQ(0, response_started_count_);
243 } 261 }
244 262
245 } // namespace 263 } // 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