[go: nahoru, domu]

blob: 7163f48fd265ff79e286cbce224a5a4271c21d61 [file] [log] [blame]
eroman@chromium.org59a38022012-03-22 02:29:131// Copyright (c) 2012 The Chromium Authors. All rights reserved.
eroman@chromium.orgbe180c802009-10-23 06:33:312// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
sanjeevr@chromium.orgabe2c032011-03-31 18:49:345#include "net/url_request/url_request_context_getter.h"
6
reillyg4c58f9e2016-03-12 04:52:367#include "base/debug/leak_annotations.h"
ajwong@chromium.orgc62dd9d2011-09-21 18:05:418#include "base/location.h"
sergeyu@chromium.org4969b0122012-06-16 01:58:289#include "base/single_thread_task_runner.h"
eroman@chromium.orgbe180c802009-10-23 06:33:3110#include "net/url_request/url_request_context.h"
mmenke367538332015-05-09 15:40:5311#include "net/url_request/url_request_context_getter_observer.h"
eroman@chromium.orgbe180c802009-10-23 06:33:3112
sanjeevr@chromium.orgabe2c032011-03-31 18:49:3413namespace net {
mmenke367538332015-05-09 15:40:5314
15void URLRequestContextGetter::AddObserver(
16 URLRequestContextGetterObserver* observer) {
17 DCHECK(GetNetworkTaskRunner()->BelongsToCurrentThread());
18 observer_list_.AddObserver(observer);
19}
20
21void URLRequestContextGetter::RemoveObserver(
22 URLRequestContextGetterObserver* observer) {
23 DCHECK(GetNetworkTaskRunner()->BelongsToCurrentThread());
24 observer_list_.RemoveObserver(observer);
25}
sanjeevr@chromium.org83a7d2eb2010-05-03 21:46:1926
willchan@chromium.org77feb462011-05-16 23:37:2527URLRequestContextGetter::URLRequestContextGetter() {}
erg@google.com20f0487a2010-09-30 20:06:3028
29URLRequestContextGetter::~URLRequestContextGetter() {}
30
mpcomplete@chromium.org00ed48f2010-10-22 22:19:2431void URLRequestContextGetter::OnDestruct() const {
sergeyu@chromium.org4969b0122012-06-16 01:58:2832 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner =
33 GetNetworkTaskRunner();
rsleevi@chromium.org90499482013-06-01 00:39:5034 DCHECK(network_task_runner.get());
35 if (network_task_runner.get()) {
sergeyu@chromium.org4969b0122012-06-16 01:58:2836 if (network_task_runner->BelongsToCurrentThread()) {
sanjeevr@chromium.org83a7d2eb2010-05-03 21:46:1937 delete this;
sergeyu@chromium.org4969b0122012-06-16 01:58:2838 } else {
atwilson@chromium.orga33393c2012-08-15 23:52:2939 if (!network_task_runner->DeleteSoon(FROM_HERE, this)) {
40 // Can't force-delete the object here, because some derived classes
41 // can only be deleted on the owning thread, so just emit a warning to
42 // aid in debugging.
wezc59596d12017-02-23 00:04:5643#if !defined(NDEBUG)
atwilson@chromium.orga33393c2012-08-15 23:52:2944 DLOG(WARNING) << "URLRequestContextGetter leaking due to no owning"
wezc59596d12017-02-23 00:04:5645 << " thread. Created at: " << created_at.ToString();
46#endif // !defined(NDEBUG)
reillyg4c58f9e2016-03-12 04:52:3647 // Let LSan know we know this is a leak. https://crbug.com/594130
48 ANNOTATE_LEAKING_OBJECT_PTR(this);
atwilson@chromium.orga33393c2012-08-15 23:52:2949 }
sergeyu@chromium.org4969b0122012-06-16 01:58:2850 }
sanjeevr@chromium.org83a7d2eb2010-05-03 21:46:1951 }
thestig529ad8a2016-07-08 20:30:1252 // If no IO task runner was available, we will just leak memory.
sanjeevr@chromium.org83a7d2eb2010-05-03 21:46:1953 // This is also true if the IO thread is gone.
54}
sanjeevr@chromium.orgabe2c032011-03-31 18:49:3455
mmenke367538332015-05-09 15:40:5356void URLRequestContextGetter::NotifyContextShuttingDown() {
57 DCHECK(GetNetworkTaskRunner()->BelongsToCurrentThread());
58
59 // Once shutdown starts, this must always return NULL.
60 DCHECK(!GetURLRequestContext());
61
ericwilligers9d64a5f2016-10-18 00:28:4962 for (auto& observer : observer_list_)
63 observer.OnContextShuttingDown();
mmenke367538332015-05-09 15:40:5364}
65
rdsmith@chromium.org034dc29f2014-05-27 12:55:2766TrivialURLRequestContextGetter::TrivialURLRequestContextGetter(
ttuttle859dc7a2015-04-23 19:42:2967 URLRequestContext* context,
rdsmith@chromium.org034dc29f2014-05-27 12:55:2768 const scoped_refptr<base::SingleThreadTaskRunner>& main_task_runner)
ttuttle859dc7a2015-04-23 19:42:2969 : context_(context), main_task_runner_(main_task_runner) {
70}
rdsmith@chromium.org034dc29f2014-05-27 12:55:2771
72TrivialURLRequestContextGetter::~TrivialURLRequestContextGetter() {}
73
ttuttle859dc7a2015-04-23 19:42:2974URLRequestContext* TrivialURLRequestContextGetter::GetURLRequestContext() {
rdsmith@chromium.org034dc29f2014-05-27 12:55:2775 return context_;
76}
77
78scoped_refptr<base::SingleThreadTaskRunner>
79TrivialURLRequestContextGetter::GetNetworkTaskRunner() const {
80 return main_task_runner_;
81}
82
83
sanjeevr@chromium.orgabe2c032011-03-31 18:49:3484} // namespace net