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

Side by Side Diff: chrome/browser/policy/device_management_service.cc

Issue 10299002: Stop refcounting URLRequestContext. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Initialize to NULL Created 8 years, 7 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/policy/device_management_service.h" 5 #include "chrome/browser/policy/device_management_service.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 os_version.c_str()); 179 os_version.c_str());
180 return platform; 180 return platform;
181 } 181 }
182 182
183 // Custom request context implementation that allows to override the user agent, 183 // Custom request context implementation that allows to override the user agent,
184 // amongst others. Wraps a baseline request context from which we reuse the 184 // amongst others. Wraps a baseline request context from which we reuse the
185 // networking components. 185 // networking components.
186 class DeviceManagementRequestContext : public net::URLRequestContext { 186 class DeviceManagementRequestContext : public net::URLRequestContext {
187 public: 187 public:
188 explicit DeviceManagementRequestContext(net::URLRequestContext* base_context); 188 explicit DeviceManagementRequestContext(net::URLRequestContext* base_context);
189 virtual ~DeviceManagementRequestContext();
189 190
190 private: 191 private:
191 virtual ~DeviceManagementRequestContext();
192
193 // Overridden from net::URLRequestContext: 192 // Overridden from net::URLRequestContext:
194 virtual const std::string& GetUserAgent(const GURL& url) const OVERRIDE; 193 virtual const std::string& GetUserAgent(const GURL& url) const OVERRIDE;
195 }; 194 };
196 195
197 DeviceManagementRequestContext::DeviceManagementRequestContext( 196 DeviceManagementRequestContext::DeviceManagementRequestContext(
198 net::URLRequestContext* base_context) { 197 net::URLRequestContext* base_context) {
199 // Share resolver, proxy service and ssl bits with the baseline context. This 198 // Share resolver, proxy service and ssl bits with the baseline context. This
200 // is important so we don't make redundant requests (e.g. when resolving proxy 199 // is important so we don't make redundant requests (e.g. when resolving proxy
201 // auto configuration). 200 // auto configuration).
202 set_net_log(base_context->net_log()); 201 set_net_log(base_context->net_log());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 235
237 // Overridden from net::URLRequestContextGetter: 236 // Overridden from net::URLRequestContextGetter:
238 virtual net::URLRequestContext* GetURLRequestContext() OVERRIDE; 237 virtual net::URLRequestContext* GetURLRequestContext() OVERRIDE;
239 virtual scoped_refptr<base::MessageLoopProxy> GetIOMessageLoopProxy() 238 virtual scoped_refptr<base::MessageLoopProxy> GetIOMessageLoopProxy()
240 const OVERRIDE; 239 const OVERRIDE;
241 240
242 protected: 241 protected:
243 virtual ~DeviceManagementRequestContextGetter() {} 242 virtual ~DeviceManagementRequestContextGetter() {}
244 243
245 private: 244 private:
246 scoped_refptr<net::URLRequestContext> context_; 245 scoped_ptr<net::URLRequestContext> context_;
247 scoped_refptr<net::URLRequestContextGetter> base_context_getter_; 246 scoped_refptr<net::URLRequestContextGetter> base_context_getter_;
248 }; 247 };
249 248
250 249
251 net::URLRequestContext* 250 net::URLRequestContext*
252 DeviceManagementRequestContextGetter::GetURLRequestContext() { 251 DeviceManagementRequestContextGetter::GetURLRequestContext() {
253 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 252 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
254 if (!context_) { 253 if (!context_.get()) {
255 context_ = new DeviceManagementRequestContext( 254 context_.reset(new DeviceManagementRequestContext(
256 base_context_getter_->GetURLRequestContext()); 255 base_context_getter_->GetURLRequestContext()));
257 } 256 }
258 257
259 return context_.get(); 258 return context_.get();
260 } 259 }
261 260
262 scoped_refptr<base::MessageLoopProxy> 261 scoped_refptr<base::MessageLoopProxy>
263 DeviceManagementRequestContextGetter::GetIOMessageLoopProxy() const { 262 DeviceManagementRequestContextGetter::GetIOMessageLoopProxy() const {
264 return BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO); 263 return BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO);
265 } 264 }
266 265
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
586 } 585 }
587 } 586 }
588 587
589 const JobQueue::iterator elem = 588 const JobQueue::iterator elem =
590 std::find(queued_jobs_.begin(), queued_jobs_.end(), job); 589 std::find(queued_jobs_.begin(), queued_jobs_.end(), job);
591 if (elem != queued_jobs_.end()) 590 if (elem != queued_jobs_.end())
592 queued_jobs_.erase(elem); 591 queued_jobs_.erase(elem);
593 } 592 }
594 593
595 } // namespace policy 594 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/net/http_pipelining_compatibility_client.cc ('k') | chrome/browser/profiles/off_the_record_profile_io_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698