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 3 // found in the LICENSE file. 4 5 #include "net/url_request/url_request_context_getter.h" 6 7 #include "base/location.h" 8 #include "base/single_thread_task_runner.h" 9 #include "net/url_request/url_request_context.h" 10 11 namespace net { 12 13 URLRequestContextGetter::URLRequestContextGetter() {} 14 15 URLRequestContextGetter::~URLRequestContextGetter() {} 16 17 void URLRequestContextGetter::OnDestruct() const { 18 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner = 19 GetNetworkTaskRunner(); 20 DCHECK(network_task_runner.get()); 21 if (network_task_runner.get()) { 22 if (network_task_runner->BelongsToCurrentThread()) { 23 delete this; 24 } else { 25 if (!network_task_runner->DeleteSoon(FROM_HERE, this)) { 26 // Can't force-delete the object here, because some derived classes 27 // can only be deleted on the owning thread, so just emit a warning to 28 // aid in debugging. 29 DLOG(WARNING) << "URLRequestContextGetter leaking due to no owning" 30 << " thread."; 31 } 32 } 33 } 34 // If no IO message loop proxy was available, we will just leak memory. 35 // This is also true if the IO thread is gone. 36 } 37 38 } // namespace net 39