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

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

Issue 2239753002: Added a ForceYouTubeRestrict policy and deprecated the old ForceYouTubeSafetyMode policy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Upped id to 347 and chrome version to 55 Created 4 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
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/net/chrome_network_delegate.h" 5 #include "chrome/browser/net/chrome_network_delegate.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdlib.h> 8 #include <stdlib.h>
9 9
10 #include <vector> 10 #include <vector>
(...skipping 14 matching lines...) Expand all
25 #include "base/strings/string_number_conversions.h" 25 #include "base/strings/string_number_conversions.h"
26 #include "base/strings/string_util.h" 26 #include "base/strings/string_util.h"
27 #include "base/time/time.h" 27 #include "base/time/time.h"
28 #include "build/build_config.h" 28 #include "build/build_config.h"
29 #include "chrome/browser/browser_process.h" 29 #include "chrome/browser/browser_process.h"
30 #include "chrome/browser/content_settings/cookie_settings_factory.h" 30 #include "chrome/browser/content_settings/cookie_settings_factory.h"
31 #include "chrome/browser/content_settings/tab_specific_content_settings.h" 31 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
32 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 32 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
33 #include "chrome/browser/net/chrome_extensions_network_delegate.h" 33 #include "chrome/browser/net/chrome_extensions_network_delegate.h"
34 #include "chrome/browser/net/request_source_bandwidth_histograms.h" 34 #include "chrome/browser/net/request_source_bandwidth_histograms.h"
35 #include "chrome/browser/net/safe_search_util.h"
36 #include "chrome/browser/profiles/profile_manager.h" 35 #include "chrome/browser/profiles/profile_manager.h"
37 #include "chrome/browser/task_manager/task_manager_interface.h" 36 #include "chrome/browser/task_manager/task_manager_interface.h"
38 #include "chrome/common/chrome_constants.h" 37 #include "chrome/common/chrome_constants.h"
39 #include "chrome/common/features.h" 38 #include "chrome/common/features.h"
40 #include "chrome/common/pref_names.h" 39 #include "chrome/common/pref_names.h"
41 #include "components/content_settings/core/browser/cookie_settings.h" 40 #include "components/content_settings/core/browser/cookie_settings.h"
42 #include "components/data_usage/core/data_use_aggregator.h" 41 #include "components/data_usage/core/data_use_aggregator.h"
43 #include "components/domain_reliability/monitor.h" 42 #include "components/domain_reliability/monitor.h"
44 #include "components/policy/core/browser/url_blacklist_manager.h" 43 #include "components/policy/core/browser/url_blacklist_manager.h"
45 #include "components/prefs/pref_member.h" 44 #include "components/prefs/pref_member.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 } 138 }
140 } 139 }
141 } 140 }
142 141
143 } // namespace 142 } // namespace
144 143
145 ChromeNetworkDelegate::ChromeNetworkDelegate( 144 ChromeNetworkDelegate::ChromeNetworkDelegate(
146 extensions::EventRouterForwarder* event_router, 145 extensions::EventRouterForwarder* event_router,
147 BooleanPrefMember* enable_referrers, 146 BooleanPrefMember* enable_referrers,
148 const metrics::UpdateUsagePrefCallbackType& metrics_data_use_forwarder) 147 const metrics::UpdateUsagePrefCallbackType& metrics_data_use_forwarder)
149 : profile_(NULL), 148 : profile_(nullptr),
150 enable_referrers_(enable_referrers), 149 enable_referrers_(enable_referrers),
151 enable_do_not_track_(NULL), 150 enable_do_not_track_(nullptr),
152 force_google_safe_search_(NULL), 151 force_google_safe_search_(nullptr),
153 force_youtube_safety_mode_(NULL), 152 force_youtube_restrict_(nullptr),
154 allowed_domains_for_apps_(nullptr), 153 allowed_domains_for_apps_(nullptr),
155 url_blacklist_manager_(NULL), 154 url_blacklist_manager_(nullptr),
156 domain_reliability_monitor_(NULL), 155 domain_reliability_monitor_(nullptr),
157 data_use_measurement_(metrics_data_use_forwarder), 156 data_use_measurement_(metrics_data_use_forwarder),
158 experimental_web_platform_features_enabled_( 157 experimental_web_platform_features_enabled_(
159 base::CommandLine::ForCurrentProcess()->HasSwitch( 158 base::CommandLine::ForCurrentProcess()->HasSwitch(
160 switches::kEnableExperimentalWebPlatformFeatures)), 159 switches::kEnableExperimentalWebPlatformFeatures)),
161 data_use_aggregator_(nullptr), 160 data_use_aggregator_(nullptr),
162 is_data_usage_off_the_record_(true) { 161 is_data_usage_off_the_record_(true) {
163 DCHECK(enable_referrers); 162 DCHECK(enable_referrers);
164 extensions_delegate_.reset( 163 extensions_delegate_.reset(
165 ChromeExtensionsNetworkDelegate::Create(event_router)); 164 ChromeExtensionsNetworkDelegate::Create(event_router));
166 } 165 }
(...skipping 20 matching lines...) Expand all
187 bool is_data_usage_off_the_record) { 186 bool is_data_usage_off_the_record) {
188 data_use_aggregator_ = data_use_aggregator; 187 data_use_aggregator_ = data_use_aggregator;
189 is_data_usage_off_the_record_ = is_data_usage_off_the_record; 188 is_data_usage_off_the_record_ = is_data_usage_off_the_record;
190 } 189 }
191 190
192 // static 191 // static
193 void ChromeNetworkDelegate::InitializePrefsOnUIThread( 192 void ChromeNetworkDelegate::InitializePrefsOnUIThread(
194 BooleanPrefMember* enable_referrers, 193 BooleanPrefMember* enable_referrers,
195 BooleanPrefMember* enable_do_not_track, 194 BooleanPrefMember* enable_do_not_track,
196 BooleanPrefMember* force_google_safe_search, 195 BooleanPrefMember* force_google_safe_search,
197 BooleanPrefMember* force_youtube_safety_mode, 196 IntegerPrefMember* force_youtube_restrict,
198 StringPrefMember* allowed_domains_for_apps, 197 StringPrefMember* allowed_domains_for_apps,
199 PrefService* pref_service) { 198 PrefService* pref_service) {
200 DCHECK_CURRENTLY_ON(BrowserThread::UI); 199 DCHECK_CURRENTLY_ON(BrowserThread::UI);
201 enable_referrers->Init(prefs::kEnableReferrers, pref_service); 200 enable_referrers->Init(prefs::kEnableReferrers, pref_service);
202 enable_referrers->MoveToThread( 201 enable_referrers->MoveToThread(
203 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); 202 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO));
204 if (enable_do_not_track) { 203 if (enable_do_not_track) {
205 enable_do_not_track->Init(prefs::kEnableDoNotTrack, pref_service); 204 enable_do_not_track->Init(prefs::kEnableDoNotTrack, pref_service);
206 enable_do_not_track->MoveToThread( 205 enable_do_not_track->MoveToThread(
207 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); 206 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO));
208 } 207 }
209 if (force_google_safe_search) { 208 if (force_google_safe_search) {
210 force_google_safe_search->Init(prefs::kForceGoogleSafeSearch, pref_service); 209 force_google_safe_search->Init(prefs::kForceGoogleSafeSearch, pref_service);
211 force_google_safe_search->MoveToThread( 210 force_google_safe_search->MoveToThread(
212 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); 211 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO));
213 } 212 }
214 if (force_youtube_safety_mode) { 213 if (force_youtube_restrict) {
215 force_youtube_safety_mode->Init(prefs::kForceYouTubeSafetyMode, 214 force_youtube_restrict->Init(prefs::kForceYouTubeRestrict, pref_service);
216 pref_service); 215 force_youtube_restrict->MoveToThread(
217 force_youtube_safety_mode->MoveToThread(
218 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); 216 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO));
219 } 217 }
220 if (allowed_domains_for_apps) { 218 if (allowed_domains_for_apps) {
221 allowed_domains_for_apps->Init(prefs::kAllowedDomainsForApps, pref_service); 219 allowed_domains_for_apps->Init(prefs::kAllowedDomainsForApps, pref_service);
222 allowed_domains_for_apps->MoveToThread( 220 allowed_domains_for_apps->MoveToThread(
223 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); 221 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO));
224 } 222 }
225 } 223 }
226 224
227 // static 225 // static
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 true); 306 true);
309 } 307 }
310 308
311 return rv; 309 return rv;
312 } 310 }
313 311
314 int ChromeNetworkDelegate::OnBeforeStartTransaction( 312 int ChromeNetworkDelegate::OnBeforeStartTransaction(
315 net::URLRequest* request, 313 net::URLRequest* request,
316 const net::CompletionCallback& callback, 314 const net::CompletionCallback& callback,
317 net::HttpRequestHeaders* headers) { 315 net::HttpRequestHeaders* headers) {
318 if (force_youtube_safety_mode_ && force_youtube_safety_mode_->GetValue()) 316 if (force_youtube_restrict_ &&
319 safe_search_util::ForceYouTubeSafetyMode(request, headers); 317 force_youtube_restrict_->GetValue() !=
Thiemo Nagel 2016/10/05 17:38:14 In my understanding, the static cast can blow up (
ljusten (tachyonic) 2016/10/06 10:14:45 I believe you're right. If the compiler decides to
Thiemo Nagel 2016/10/06 14:05:57 Afaiu, it's UB whenever the int is outside the enu
318 static_cast<int>(safe_search_util::YouTubeRestrictMode::kOff)) {
319 safe_search_util::ForceYouTubeRestrict(
320 request, headers, static_cast<safe_search_util::YouTubeRestrictMode>(
321 force_youtube_restrict_->GetValue()));
322 }
320 323
321 return extensions_delegate_->OnBeforeStartTransaction(request, callback, 324 return extensions_delegate_->OnBeforeStartTransaction(request, callback,
322 headers); 325 headers);
323 } 326 }
324 327
325 void ChromeNetworkDelegate::OnStartTransaction( 328 void ChromeNetworkDelegate::OnStartTransaction(
326 net::URLRequest* request, 329 net::URLRequest* request,
327 const net::HttpRequestHeaders& headers) { 330 const net::HttpRequestHeaders& headers) {
328 extensions_delegate_->OnStartTransaction(request, headers); 331 extensions_delegate_->OnStartTransaction(request, headers);
329 } 332 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 const net::AuthChallengeInfo& auth_info, 412 const net::AuthChallengeInfo& auth_info,
410 const AuthCallback& callback, 413 const AuthCallback& callback,
411 net::AuthCredentials* credentials) { 414 net::AuthCredentials* credentials) {
412 return extensions_delegate_->OnAuthRequired( 415 return extensions_delegate_->OnAuthRequired(
413 request, auth_info, callback, credentials); 416 request, auth_info, callback, credentials);
414 } 417 }
415 418
416 bool ChromeNetworkDelegate::OnCanGetCookies( 419 bool ChromeNetworkDelegate::OnCanGetCookies(
417 const net::URLRequest& request, 420 const net::URLRequest& request,
418 const net::CookieList& cookie_list) { 421 const net::CookieList& cookie_list) {
419 // NULL during tests, or when we're running in the system context. 422 // nullptr during tests, or when we're running in the system context.
420 if (!cookie_settings_.get()) 423 if (!cookie_settings_.get())
421 return true; 424 return true;
422 425
423 bool allow = cookie_settings_->IsReadingCookieAllowed( 426 bool allow = cookie_settings_->IsReadingCookieAllowed(
424 request.url(), request.first_party_for_cookies()); 427 request.url(), request.first_party_for_cookies());
425 428
426 int render_process_id = -1; 429 int render_process_id = -1;
427 int render_frame_id = -1; 430 int render_frame_id = -1;
428 if (content::ResourceRequestInfo::GetRenderFrameForRequest( 431 if (content::ResourceRequestInfo::GetRenderFrameForRequest(
429 &request, &render_process_id, &render_frame_id)) { 432 &request, &render_process_id, &render_frame_id)) {
430 BrowserThread::PostTask( 433 BrowserThread::PostTask(
431 BrowserThread::UI, FROM_HERE, 434 BrowserThread::UI, FROM_HERE,
432 base::Bind(&TabSpecificContentSettings::CookiesRead, 435 base::Bind(&TabSpecificContentSettings::CookiesRead,
433 render_process_id, render_frame_id, 436 render_process_id, render_frame_id,
434 request.url(), request.first_party_for_cookies(), 437 request.url(), request.first_party_for_cookies(),
435 cookie_list, !allow)); 438 cookie_list, !allow));
436 } 439 }
437 440
438 return allow; 441 return allow;
439 } 442 }
440 443
441 bool ChromeNetworkDelegate::OnCanSetCookie(const net::URLRequest& request, 444 bool ChromeNetworkDelegate::OnCanSetCookie(const net::URLRequest& request,
442 const std::string& cookie_line, 445 const std::string& cookie_line,
443 net::CookieOptions* options) { 446 net::CookieOptions* options) {
444 // NULL during tests, or when we're running in the system context. 447 // nullptr during tests, or when we're running in the system context.
445 if (!cookie_settings_.get()) 448 if (!cookie_settings_.get())
446 return true; 449 return true;
447 450
448 bool allow = cookie_settings_->IsSettingCookieAllowed( 451 bool allow = cookie_settings_->IsSettingCookieAllowed(
449 request.url(), request.first_party_for_cookies()); 452 request.url(), request.first_party_for_cookies());
450 453
451 int render_process_id = -1; 454 int render_process_id = -1;
452 int render_frame_id = -1; 455 int render_frame_id = -1;
453 if (content::ResourceRequestInfo::GetRenderFrameForRequest( 456 if (content::ResourceRequestInfo::GetRenderFrameForRequest(
454 &request, &render_process_id, &render_frame_id)) { 457 &request, &render_process_id, &render_frame_id)) {
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 } 543 }
541 544
542 DVLOG(1) << "File access denied - " << path.value().c_str(); 545 DVLOG(1) << "File access denied - " << path.value().c_str();
543 return false; 546 return false;
544 #endif // !defined(OS_CHROMEOS) && !defined(OS_ANDROID) 547 #endif // !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
545 } 548 }
546 549
547 bool ChromeNetworkDelegate::OnCanEnablePrivacyMode( 550 bool ChromeNetworkDelegate::OnCanEnablePrivacyMode(
548 const GURL& url, 551 const GURL& url,
549 const GURL& first_party_for_cookies) const { 552 const GURL& first_party_for_cookies) const {
550 // NULL during tests, or when we're running in the system context. 553 // nullptr during tests, or when we're running in the system context.
551 if (!cookie_settings_.get()) 554 if (!cookie_settings_.get())
552 return false; 555 return false;
553 556
554 bool reading_cookie_allowed = cookie_settings_->IsReadingCookieAllowed( 557 bool reading_cookie_allowed = cookie_settings_->IsReadingCookieAllowed(
555 url, first_party_for_cookies); 558 url, first_party_for_cookies);
556 bool setting_cookie_allowed = cookie_settings_->IsSettingCookieAllowed( 559 bool setting_cookie_allowed = cookie_settings_->IsSettingCookieAllowed(
557 url, first_party_for_cookies); 560 url, first_party_for_cookies);
558 bool privacy_mode = !(reading_cookie_allowed && setting_cookie_allowed); 561 bool privacy_mode = !(reading_cookie_allowed && setting_cookie_allowed);
559 return privacy_mode; 562 return privacy_mode;
560 } 563 }
(...skipping 24 matching lines...) Expand all
585 if (!data_use_aggregator_) 588 if (!data_use_aggregator_)
586 return; 589 return;
587 590
588 if (is_data_usage_off_the_record_) { 591 if (is_data_usage_off_the_record_) {
589 data_use_aggregator_->ReportOffTheRecordDataUse(tx_bytes, rx_bytes); 592 data_use_aggregator_->ReportOffTheRecordDataUse(tx_bytes, rx_bytes);
590 return; 593 return;
591 } 594 }
592 595
593 data_use_aggregator_->ReportDataUse(request, tx_bytes, rx_bytes); 596 data_use_aggregator_->ReportDataUse(request, tx_bytes, rx_bytes);
594 } 597 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698