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

Side by Side Diff: chrome/browser/net/chrome_network_delegate.cc

Issue 7747018: Introduced the URLBlacklistManager, and wired it to various places. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased, reviewed Created 9 years, 3 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) 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 "chrome/browser/net/chrome_network_delegate.h" 5 #include "chrome/browser/net/chrome_network_delegate.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 8 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
9 #include "chrome/browser/extensions/extension_event_router_forwarder.h" 9 #include "chrome/browser/extensions/extension_event_router_forwarder.h"
10 #include "chrome/browser/extensions/extension_info_map.h" 10 #include "chrome/browser/extensions/extension_info_map.h"
11 #include "chrome/browser/extensions/extension_proxy_api.h" 11 #include "chrome/browser/extensions/extension_proxy_api.h"
12 #include "chrome/browser/extensions/extension_webrequest_api.h" 12 #include "chrome/browser/extensions/extension_webrequest_api.h"
13 #include "chrome/browser/policy/url_blacklist_manager.h"
13 #include "chrome/browser/prefs/pref_member.h" 14 #include "chrome/browser/prefs/pref_member.h"
14 #include "chrome/browser/task_manager/task_manager.h" 15 #include "chrome/browser/task_manager/task_manager.h"
15 #include "chrome/common/pref_names.h" 16 #include "chrome/common/pref_names.h"
16 #include "content/browser/browser_thread.h" 17 #include "content/browser/browser_thread.h"
17 #include "net/base/host_port_pair.h" 18 #include "net/base/host_port_pair.h"
18 #include "net/base/net_errors.h" 19 #include "net/base/net_errors.h"
20 #include "net/base/net_log.h"
19 #include "net/http/http_request_headers.h" 21 #include "net/http/http_request_headers.h"
20 #include "net/http/http_response_headers.h" 22 #include "net/http/http_response_headers.h"
21 #include "net/url_request/url_request.h" 23 #include "net/url_request/url_request.h"
22 24
23 namespace { 25 namespace {
24 26
25 // If the |request| failed due to problems with a proxy, forward the error to 27 // If the |request| failed due to problems with a proxy, forward the error to
26 // the proxy extension API. 28 // the proxy extension API.
27 void ForwardProxyErrors(net::URLRequest* request, 29 void ForwardProxyErrors(net::URLRequest* request,
28 ExtensionEventRouterForwarder* event_router, 30 ExtensionEventRouterForwarder* event_router,
29 void* profile) { 31 void* profile) {
30 if (request->status().status() == net::URLRequestStatus::FAILED) { 32 if (request->status().status() == net::URLRequestStatus::FAILED) {
31 switch (request->status().os_error()) { 33 switch (request->status().os_error()) {
32 case net::ERR_PROXY_AUTH_UNSUPPORTED: 34 case net::ERR_PROXY_AUTH_UNSUPPORTED:
33 case net::ERR_PROXY_CONNECTION_FAILED: 35 case net::ERR_PROXY_CONNECTION_FAILED:
34 case net::ERR_TUNNEL_CONNECTION_FAILED: 36 case net::ERR_TUNNEL_CONNECTION_FAILED:
35 ExtensionProxyEventRouter::GetInstance()->OnProxyError( 37 ExtensionProxyEventRouter::GetInstance()->OnProxyError(
36 event_router, profile, request->status().os_error()); 38 event_router, profile, request->status().os_error());
37 } 39 }
38 } 40 }
39 } 41 }
40 42
41 } // namespace 43 } // namespace
42 44
43 ChromeNetworkDelegate::ChromeNetworkDelegate( 45 ChromeNetworkDelegate::ChromeNetworkDelegate(
44 ExtensionEventRouterForwarder* event_router, 46 ExtensionEventRouterForwarder* event_router,
45 ExtensionInfoMap* extension_info_map, 47 ExtensionInfoMap* extension_info_map,
48 const policy::URLBlacklistManager* url_blacklist_manager,
46 void* profile, 49 void* profile,
47 BooleanPrefMember* enable_referrers) 50 BooleanPrefMember* enable_referrers)
48 : event_router_(event_router), 51 : event_router_(event_router),
49 profile_(profile), 52 profile_(profile),
50 extension_info_map_(extension_info_map), 53 extension_info_map_(extension_info_map),
51 enable_referrers_(enable_referrers) { 54 enable_referrers_(enable_referrers),
55 url_blacklist_manager_(url_blacklist_manager) {
52 DCHECK(event_router); 56 DCHECK(event_router);
53 DCHECK(enable_referrers); 57 DCHECK(enable_referrers);
54 } 58 }
55 59
56 ChromeNetworkDelegate::~ChromeNetworkDelegate() {} 60 ChromeNetworkDelegate::~ChromeNetworkDelegate() {}
57 61
58 // static 62 // static
59 void ChromeNetworkDelegate::InitializeReferrersEnabled( 63 void ChromeNetworkDelegate::InitializeReferrersEnabled(
60 BooleanPrefMember* enable_referrers, 64 BooleanPrefMember* enable_referrers,
61 PrefService* pref_service) { 65 PrefService* pref_service) {
62 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 66 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
63 enable_referrers->Init(prefs::kEnableReferrers, pref_service, NULL); 67 enable_referrers->Init(prefs::kEnableReferrers, pref_service, NULL);
64 enable_referrers->MoveToThread(BrowserThread::IO); 68 enable_referrers->MoveToThread(BrowserThread::IO);
65 } 69 }
66 70
67 int ChromeNetworkDelegate::OnBeforeURLRequest( 71 int ChromeNetworkDelegate::OnBeforeURLRequest(
68 net::URLRequest* request, 72 net::URLRequest* request,
69 net::CompletionCallback* callback, 73 net::CompletionCallback* callback,
70 GURL* new_url) { 74 GURL* new_url) {
75 // TODO(joaodasilva): This prevents extensions from seeing URLs that are
76 // blocked. However, an extension might redirect the request to another URL,
77 // which is not blocked.
78 if (url_blacklist_manager_ &&
79 url_blacklist_manager_->IsURLBlocked(request->url())) {
80 // URL access blocked by policy.
81 scoped_refptr<net::NetLog::EventParameters> params;
82 params = new net::NetLogStringParameter("url", request->url().spec());
83 request->net_log().AddEvent(
84 net::NetLog::TYPE_CHROME_POLICY_ABORTED_REQUEST, params);
85 return net::ERR_NETWORK_ACCESS_DENIED;
86 }
87
71 if (!enable_referrers_->GetValue()) 88 if (!enable_referrers_->GetValue())
72 request->set_referrer(std::string()); 89 request->set_referrer(std::string());
73 return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRequest( 90 return ExtensionWebRequestEventRouter::GetInstance()->OnBeforeRequest(
74 profile_, extension_info_map_.get(), request, callback, new_url); 91 profile_, extension_info_map_.get(), request, callback, new_url);
75 } 92 }
76 93
77 int ChromeNetworkDelegate::OnBeforeSendHeaders( 94 int ChromeNetworkDelegate::OnBeforeSendHeaders(
78 net::URLRequest* request, 95 net::URLRequest* request,
79 net::CompletionCallback* callback, 96 net::CompletionCallback* callback,
80 net::HttpRequestHeaders* headers) { 97 net::HttpRequestHeaders* headers) {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 ExtensionProxyEventRouter::GetInstance()->OnPACScriptError( 154 ExtensionProxyEventRouter::GetInstance()->OnPACScriptError(
138 event_router_.get(), profile_, line_number, error); 155 event_router_.get(), profile_, line_number, error);
139 } 156 }
140 157
141 void ChromeNetworkDelegate::OnAuthRequired( 158 void ChromeNetworkDelegate::OnAuthRequired(
142 net::URLRequest* request, 159 net::URLRequest* request,
143 const net::AuthChallengeInfo& auth_info) { 160 const net::AuthChallengeInfo& auth_info) {
144 ExtensionWebRequestEventRouter::GetInstance()->OnAuthRequired( 161 ExtensionWebRequestEventRouter::GetInstance()->OnAuthRequired(
145 profile_, extension_info_map_.get(), request, auth_info); 162 profile_, extension_info_map_.get(), request, auth_info);
146 } 163 }
OLDNEW
« no previous file with comments | « chrome/browser/net/chrome_network_delegate.h ('k') | chrome/browser/policy/url_blacklist_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698