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

Side by Side Diff: android_webview/browser/aw_browser_context.cc

Issue 1890203002: Implement Web Restrictions in WebView. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Respond to comments, and fix a possible race in displaying error page Created 4 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
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 "android_webview/browser/aw_browser_context.h" 5 #include "android_webview/browser/aw_browser_context.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "android_webview/browser/aw_browser_policy_connector.h" 9 #include "android_webview/browser/aw_browser_policy_connector.h"
10 #include "android_webview/browser/aw_form_database_service.h" 10 #include "android_webview/browser/aw_form_database_service.h"
(...skipping 14 matching lines...) Expand all
25 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_serv ice.h" 25 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_serv ice.h"
26 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_sett ings.h" 26 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_sett ings.h"
27 #include "components/data_reduction_proxy/core/browser/data_store.h" 27 #include "components/data_reduction_proxy/core/browser/data_store.h"
28 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_param s.h" 28 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_param s.h"
29 #include "components/metrics/metrics_service.h" 29 #include "components/metrics/metrics_service.h"
30 #include "components/policy/core/browser/browser_policy_connector_base.h" 30 #include "components/policy/core/browser/browser_policy_connector_base.h"
31 #include "components/policy/core/browser/configuration_policy_pref_store.h" 31 #include "components/policy/core/browser/configuration_policy_pref_store.h"
32 #include "components/policy/core/browser/url_blacklist_manager.h" 32 #include "components/policy/core/browser/url_blacklist_manager.h"
33 #include "components/pref_registry/pref_registry_syncable.h" 33 #include "components/pref_registry/pref_registry_syncable.h"
34 #include "components/prefs/in_memory_pref_store.h" 34 #include "components/prefs/in_memory_pref_store.h"
35 #include "components/prefs/pref_change_registrar.h"
35 #include "components/prefs/pref_service.h" 36 #include "components/prefs/pref_service.h"
36 #include "components/prefs/pref_service_factory.h" 37 #include "components/prefs/pref_service_factory.h"
37 #include "components/url_formatter/url_fixer.h" 38 #include "components/url_formatter/url_fixer.h"
38 #include "components/user_prefs/user_prefs.h" 39 #include "components/user_prefs/user_prefs.h"
39 #include "components/visitedlink/browser/visitedlink_master.h" 40 #include "components/visitedlink/browser/visitedlink_master.h"
40 #include "content/public/browser/browser_thread.h" 41 #include "content/public/browser/browser_thread.h"
41 #include "content/public/browser/ssl_host_state_delegate.h" 42 #include "content/public/browser/ssl_host_state_delegate.h"
42 #include "content/public/browser/storage_partition.h" 43 #include "content/public/browser/storage_partition.h"
43 #include "content/public/browser/web_contents.h" 44 #include "content/public/browser/web_contents.h"
44 #include "net/proxy/proxy_config_service_android.h" 45 #include "net/proxy/proxy_config_service_android.h"
45 #include "net/proxy/proxy_service.h" 46 #include "net/proxy/proxy_service.h"
46 47
47 using base::FilePath; 48 using base::FilePath;
48 using content::BrowserThread; 49 using content::BrowserThread;
49 50
50 namespace android_webview { 51 namespace android_webview {
51 52
52 namespace prefs { 53 namespace prefs {
53 54
54 // String that specifies the Android account type to use for Negotiate 55 // String that specifies the Android account type to use for Negotiate
55 // authentication. 56 // authentication.
56 const char kAuthAndroidNegotiateAccountType[] = 57 const char kAuthAndroidNegotiateAccountType[] =
57 "auth.android_negotiate_account_type"; 58 "auth.android_negotiate_account_type";
58 59
59 // Whitelist containing servers for which Integrated Authentication is enabled. 60 // Whitelist containing servers for which Integrated Authentication is enabled.
60 const char kAuthServerWhitelist[] = "auth.server_whitelist"; 61 const char kAuthServerWhitelist[] = "auth.server_whitelist";
61 62
63 const char kWebRestrictionsAuthority[] = "web_restrictions_authority";
64
62 } // namespace prefs 65 } // namespace prefs
63 66
64 namespace { 67 namespace {
65 // Name of the preference that governs enabling the Data Reduction Proxy. 68 // Name of the preference that governs enabling the Data Reduction Proxy.
66 const char kDataReductionProxyEnabled[] = "data_reduction_proxy.enabled"; 69 const char kDataReductionProxyEnabled[] = "data_reduction_proxy.enabled";
67 70
68 // Shows notifications which correspond to PersistentPrefStore's reading errors. 71 // Shows notifications which correspond to PersistentPrefStore's reading errors.
69 void HandleReadError(PersistentPrefStore::PrefReadError error) { 72 void HandleReadError(PersistentPrefStore::PrefReadError error) {
70 } 73 }
71 74
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 // anonymously identify logs. Every WebView-using app on every device 259 // anonymously identify logs. Every WebView-using app on every device
257 // is given a GUID, stored in this file in the app's data directory. 260 // is given a GUID, stored in this file in the app's data directory.
258 const FilePath guid_file_path = 261 const FilePath guid_file_path =
259 GetPath().Append(FILE_PATH_LITERAL("metrics_guid")); 262 GetPath().Append(FILE_PATH_LITERAL("metrics_guid"));
260 263
261 AwMetricsServiceClient::GetInstance()->Initialize( 264 AwMetricsServiceClient::GetInstance()->Initialize(
262 user_pref_service_.get(), 265 user_pref_service_.get(),
263 content::BrowserContext::GetDefaultStoragePartition(this)-> 266 content::BrowserContext::GetDefaultStoragePartition(this)->
264 GetURLRequestContext(), 267 GetURLRequestContext(),
265 guid_file_path); 268 guid_file_path);
269 web_restriction_provider_.reset(
270 new web_restrictions::WebRestrictionsClient());
271 pref_change_registrar_->Add(
272 prefs::kWebRestrictionsAuthority,
273 base::Bind(&AwBrowserContext::OnWebRestrictionsAuthorityChanged,
274 base::Unretained(this)));
275 web_restriction_provider_->SetAuthority(
276 user_pref_service_->GetString(prefs::kWebRestrictionsAuthority));
277 }
278
279 void AwBrowserContext::OnWebRestrictionsAuthorityChanged() {
280 web_restriction_provider_->SetAuthority(
281 user_pref_service_->GetString(prefs::kWebRestrictionsAuthority));
266 } 282 }
267 283
268 void AwBrowserContext::AddVisitedURLs(const std::vector<GURL>& urls) { 284 void AwBrowserContext::AddVisitedURLs(const std::vector<GURL>& urls) {
269 DCHECK(visitedlink_master_); 285 DCHECK(visitedlink_master_);
270 visitedlink_master_->AddURLs(urls); 286 visitedlink_master_->AddURLs(urls);
271 } 287 }
272 288
273 AwQuotaManagerBridge* AwBrowserContext::GetQuotaManagerBridge() { 289 AwQuotaManagerBridge* AwBrowserContext::GetQuotaManagerBridge() {
274 if (!quota_manager_bridge_.get()) { 290 if (!quota_manager_bridge_.get()) {
275 quota_manager_bridge_ = native_factory_->CreateAwQuotaManagerBridge(this); 291 quota_manager_bridge_ = native_factory_->CreateAwQuotaManagerBridge(this);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 // the manager_delegate. We don't use the rest of Autofill, which is why it is 327 // the manager_delegate. We don't use the rest of Autofill, which is why it is
312 // hardcoded as disabled here. 328 // hardcoded as disabled here.
313 pref_registry->RegisterBooleanPref(autofill::prefs::kAutofillEnabled, false); 329 pref_registry->RegisterBooleanPref(autofill::prefs::kAutofillEnabled, false);
314 pref_registry->RegisterBooleanPref(kDataReductionProxyEnabled, false); 330 pref_registry->RegisterBooleanPref(kDataReductionProxyEnabled, false);
315 data_reduction_proxy::RegisterSimpleProfilePrefs(pref_registry); 331 data_reduction_proxy::RegisterSimpleProfilePrefs(pref_registry);
316 policy::URLBlacklistManager::RegisterProfilePrefs(pref_registry); 332 policy::URLBlacklistManager::RegisterProfilePrefs(pref_registry);
317 333
318 pref_registry->RegisterStringPref(prefs::kAuthServerWhitelist, std::string()); 334 pref_registry->RegisterStringPref(prefs::kAuthServerWhitelist, std::string());
319 pref_registry->RegisterStringPref(prefs::kAuthAndroidNegotiateAccountType, 335 pref_registry->RegisterStringPref(prefs::kAuthAndroidNegotiateAccountType,
320 std::string()); 336 std::string());
337 pref_registry->RegisterStringPref(prefs::kWebRestrictionsAuthority,
338 std::string());
321 339
322 metrics::MetricsService::RegisterPrefs(pref_registry); 340 metrics::MetricsService::RegisterPrefs(pref_registry);
323 341
324 PrefServiceFactory pref_service_factory; 342 PrefServiceFactory pref_service_factory;
325 pref_service_factory.set_user_prefs(make_scoped_refptr( 343 pref_service_factory.set_user_prefs(make_scoped_refptr(
326 new InMemoryPrefStore())); 344 new InMemoryPrefStore()));
327 pref_service_factory.set_managed_prefs( 345 pref_service_factory.set_managed_prefs(
328 make_scoped_refptr(new policy::ConfigurationPolicyPrefStore( 346 make_scoped_refptr(new policy::ConfigurationPolicyPrefStore(
329 browser_policy_connector_->GetPolicyService(), 347 browser_policy_connector_->GetPolicyService(),
330 browser_policy_connector_->GetHandlerList(), 348 browser_policy_connector_->GetHandlerList(),
331 policy::POLICY_LEVEL_MANDATORY))); 349 policy::POLICY_LEVEL_MANDATORY)));
332 pref_service_factory.set_read_error_callback(base::Bind(&HandleReadError)); 350 pref_service_factory.set_read_error_callback(base::Bind(&HandleReadError));
333 user_pref_service_ = pref_service_factory.Create(pref_registry); 351 user_pref_service_ = pref_service_factory.Create(pref_registry);
352 pref_change_registrar_.reset(new PrefChangeRegistrar);
353 pref_change_registrar_->Init(user_pref_service_.get());
334 354
335 user_prefs::UserPrefs::Set(this, user_pref_service_.get()); 355 user_prefs::UserPrefs::Set(this, user_pref_service_.get());
336 } 356 }
337 357
338 std::unique_ptr<content::ZoomLevelDelegate> 358 std::unique_ptr<content::ZoomLevelDelegate>
339 AwBrowserContext::CreateZoomLevelDelegate( 359 AwBrowserContext::CreateZoomLevelDelegate(
340 const base::FilePath& partition_path) { 360 const base::FilePath& partition_path) {
341 return nullptr; 361 return nullptr;
342 } 362 }
343 363
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 return NULL; 451 return NULL;
432 } 452 }
433 453
434 policy::URLBlacklistManager* AwBrowserContext::GetURLBlacklistManager() { 454 policy::URLBlacklistManager* AwBrowserContext::GetURLBlacklistManager() {
435 // Should not be called until the end of PreMainMessageLoopRun, where 455 // Should not be called until the end of PreMainMessageLoopRun, where
436 // blacklist_manager_ is initialized. 456 // blacklist_manager_ is initialized.
437 DCHECK(blacklist_manager_); 457 DCHECK(blacklist_manager_);
438 return blacklist_manager_.get(); 458 return blacklist_manager_.get();
439 } 459 }
440 460
461 web_restrictions::WebRestrictionsClient*
462 AwBrowserContext::GetWebRestrictionProvider() {
463 DCHECK(web_restriction_provider_);
464 return web_restriction_provider_.get();
465 }
466
441 void AwBrowserContext::RebuildTable( 467 void AwBrowserContext::RebuildTable(
442 const scoped_refptr<URLEnumerator>& enumerator) { 468 const scoped_refptr<URLEnumerator>& enumerator) {
443 // Android WebView rebuilds from WebChromeClient.getVisitedHistory. The client 469 // Android WebView rebuilds from WebChromeClient.getVisitedHistory. The client
444 // can change in the lifetime of this WebView and may not yet be set here. 470 // can change in the lifetime of this WebView and may not yet be set here.
445 // Therefore this initialization path is not used. 471 // Therefore this initialization path is not used.
446 enumerator->OnComplete(true); 472 enumerator->OnComplete(true);
447 } 473 }
448 474
449 void AwBrowserContext::CreateDataReductionProxyStatisticsIfNecessary() { 475 void AwBrowserContext::CreateDataReductionProxyStatisticsIfNecessary() {
450 DCHECK(user_pref_service_.get()); 476 DCHECK(user_pref_service_.get());
451 DCHECK(GetDataReductionProxySettings()); 477 DCHECK(GetDataReductionProxySettings());
452 data_reduction_proxy::DataReductionProxyService* 478 data_reduction_proxy::DataReductionProxyService*
453 data_reduction_proxy_service = 479 data_reduction_proxy_service =
454 GetDataReductionProxySettings()->data_reduction_proxy_service(); 480 GetDataReductionProxySettings()->data_reduction_proxy_service();
455 DCHECK(data_reduction_proxy_service); 481 DCHECK(data_reduction_proxy_service);
456 if (data_reduction_proxy_service->compression_stats()) 482 if (data_reduction_proxy_service->compression_stats())
457 return; 483 return;
458 // We don't care about commit_delay for now. It is just a dummy value. 484 // We don't care about commit_delay for now. It is just a dummy value.
459 base::TimeDelta commit_delay = base::TimeDelta::FromMinutes(60); 485 base::TimeDelta commit_delay = base::TimeDelta::FromMinutes(60);
460 data_reduction_proxy_service->EnableCompressionStatisticsLogging( 486 data_reduction_proxy_service->EnableCompressionStatisticsLogging(
461 user_pref_service_.get(), 487 user_pref_service_.get(),
462 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI), 488 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
463 commit_delay); 489 commit_delay);
464 } 490 }
465 491
466 } // namespace android_webview 492 } // namespace android_webview
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698