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

Side by Side Diff: chrome/browser/managed_mode/managed_user_service.cc

Issue 288913003: Add permission request creator class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/managed_mode/managed_user_service.h" 5 #include "chrome/browser/managed_mode/managed_user_service.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "base/strings/string_number_conversions.h" 10 #include "base/strings/string_number_conversions.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "chrome/browser/browser_process.h" 12 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/chrome_notification_types.h" 13 #include "chrome/browser/chrome_notification_types.h"
14 #include "chrome/browser/extensions/extension_service.h" 14 #include "chrome/browser/extensions/extension_service.h"
15 #include "chrome/browser/managed_mode/custodian_profile_downloader_service.h" 15 #include "chrome/browser/managed_mode/custodian_profile_downloader_service.h"
16 #include "chrome/browser/managed_mode/custodian_profile_downloader_service_facto ry.h" 16 #include "chrome/browser/managed_mode/custodian_profile_downloader_service_facto ry.h"
17 #include "chrome/browser/managed_mode/managed_mode_site_list.h" 17 #include "chrome/browser/managed_mode/managed_mode_site_list.h"
18 #include "chrome/browser/managed_mode/managed_user_constants.h" 18 #include "chrome/browser/managed_mode/managed_user_constants.h"
19 #include "chrome/browser/managed_mode/managed_user_registration_utility.h" 19 #include "chrome/browser/managed_mode/managed_user_registration_utility.h"
20 #include "chrome/browser/managed_mode/managed_user_settings_service.h" 20 #include "chrome/browser/managed_mode/managed_user_settings_service.h"
21 #include "chrome/browser/managed_mode/managed_user_settings_service_factory.h" 21 #include "chrome/browser/managed_mode/managed_user_settings_service_factory.h"
22 #include "chrome/browser/managed_mode/managed_user_shared_settings_service.h" 22 #include "chrome/browser/managed_mode/managed_user_shared_settings_service.h"
23 #include "chrome/browser/managed_mode/managed_user_shared_settings_service_facto ry.h" 23 #include "chrome/browser/managed_mode/managed_user_shared_settings_service_facto ry.h"
24 #include "chrome/browser/managed_mode/managed_user_sync_service.h" 24 #include "chrome/browser/managed_mode/managed_user_sync_service.h"
25 #include "chrome/browser/managed_mode/managed_user_sync_service_factory.h" 25 #include "chrome/browser/managed_mode/managed_user_sync_service_factory.h"
26 #include "chrome/browser/managed_mode/permission_request_creator.h"
26 #include "chrome/browser/managed_mode/supervised_user_pref_mapping_service.h" 27 #include "chrome/browser/managed_mode/supervised_user_pref_mapping_service.h"
27 #include "chrome/browser/managed_mode/supervised_user_pref_mapping_service_facto ry.h" 28 #include "chrome/browser/managed_mode/supervised_user_pref_mapping_service_facto ry.h"
28 #include "chrome/browser/profiles/profile.h" 29 #include "chrome/browser/profiles/profile.h"
29 #include "chrome/browser/profiles/profile_info_cache.h" 30 #include "chrome/browser/profiles/profile_info_cache.h"
30 #include "chrome/browser/profiles/profile_manager.h" 31 #include "chrome/browser/profiles/profile_manager.h"
31 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 32 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
32 #include "chrome/browser/signin/signin_manager_factory.h" 33 #include "chrome/browser/signin/signin_manager_factory.h"
33 #include "chrome/browser/sync/profile_sync_service.h" 34 #include "chrome/browser/sync/profile_sync_service.h"
34 #include "chrome/browser/sync/profile_sync_service_factory.h" 35 #include "chrome/browser/sync/profile_sync_service_factory.h"
35 #include "chrome/browser/ui/browser.h" 36 #include "chrome/browser/ui/browser.h"
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 base::Bind(&ManagedModeURLFilter::SetManualURLs, 134 base::Bind(&ManagedModeURLFilter::SetManualURLs,
134 io_url_filter_, base::Owned(url_map.release()))); 135 io_url_filter_, base::Owned(url_map.release())));
135 } 136 }
136 137
137 ManagedUserService::ManagedUserService(Profile* profile) 138 ManagedUserService::ManagedUserService(Profile* profile)
138 : profile_(profile), 139 : profile_(profile),
139 waiting_for_sync_initialization_(false), 140 waiting_for_sync_initialization_(false),
140 is_profile_active_(false), 141 is_profile_active_(false),
141 elevated_for_testing_(false), 142 elevated_for_testing_(false),
142 did_shutdown_(false), 143 did_shutdown_(false),
144 waiting_for_permissions_(false),
143 weak_ptr_factory_(this) { 145 weak_ptr_factory_(this) {
144 } 146 }
145 147
146 ManagedUserService::~ManagedUserService() { 148 ManagedUserService::~ManagedUserService() {
147 DCHECK(did_shutdown_); 149 DCHECK(did_shutdown_);
148 } 150 }
149 151
150 void ManagedUserService::Shutdown() { 152 void ManagedUserService::Shutdown() {
151 did_shutdown_ = true; 153 did_shutdown_ = true;
152 if (ProfileIsManaged()) { 154 if (ProfileIsManaged()) {
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 ManagedModeURLFilter::FilteringBehavior behavior = 439 ManagedModeURLFilter::FilteringBehavior behavior =
438 ManagedModeURLFilter::BehaviorFromInt(behavior_value); 440 ManagedModeURLFilter::BehaviorFromInt(behavior_value);
439 url_filter_context_.SetDefaultFilteringBehavior(behavior); 441 url_filter_context_.SetDefaultFilteringBehavior(behavior);
440 } 442 }
441 443
442 void ManagedUserService::UpdateSiteLists() { 444 void ManagedUserService::UpdateSiteLists() {
443 url_filter_context_.LoadWhitelists(GetActiveSiteLists()); 445 url_filter_context_.LoadWhitelists(GetActiveSiteLists());
444 } 446 }
445 447
446 bool ManagedUserService::AccessRequestsEnabled() { 448 bool ManagedUserService::AccessRequestsEnabled() {
449 if (waiting_for_permissions_) {
450 return false;
451 }
452
447 ProfileSyncService* service = 453 ProfileSyncService* service =
448 ProfileSyncServiceFactory::GetForProfile(profile_); 454 ProfileSyncServiceFactory::GetForProfile(profile_);
449 GoogleServiceAuthError::State state = service->GetAuthError().state(); 455 GoogleServiceAuthError::State state = service->GetAuthError().state();
450 // We allow requesting access if Sync is working or has a transient error. 456 // We allow requesting access if Sync is working or has a transient error.
451 return (state == GoogleServiceAuthError::NONE || 457 return (state == GoogleServiceAuthError::NONE ||
452 state == GoogleServiceAuthError::CONNECTION_FAILED || 458 state == GoogleServiceAuthError::CONNECTION_FAILED ||
453 state == GoogleServiceAuthError::SERVICE_UNAVAILABLE); 459 state == GoogleServiceAuthError::SERVICE_UNAVAILABLE);
454 } 460 }
455 461
462 void ManagedUserService::OnPermissionRequestIssued(
463 const GoogleServiceAuthError& error) {
464 waiting_for_permissions_ = false;
465 // TODO(akuegel): Figure out how to show the result of issuing the permission
466 // in the UI.
467 }
468
456 void ManagedUserService::AddAccessRequest(const GURL& url) { 469 void ManagedUserService::AddAccessRequest(const GURL& url) {
457 // Normalize the URL. 470 // Normalize the URL.
458 GURL normalized_url = ManagedModeURLFilter::Normalize(url); 471 GURL normalized_url = ManagedModeURLFilter::Normalize(url);
459 472
460 // Escape the URL. 473 // Escape the URL.
461 std::string output(net::EscapeQueryParamValue(normalized_url.spec(), true)); 474 std::string output(net::EscapeQueryParamValue(normalized_url.spec(), true));
462 475
476 if (CommandLine::ForCurrentProcess()->HasSwitch(
477 switches::kPermissionRequestAPI)) {
478 waiting_for_permissions_ = true;
479 permissions_creator_->CreatePermissionRequest(
480 output,
Bernhard Bauer 2014/05/15 13:56:40 Nit: Indent (4 spaces)
Adrian Kuegel 2014/05/15 14:35:32 Done.
481 base::Bind(&ManagedUserService::OnPermissionRequestIssued,
482 weak_ptr_factory_.GetWeakPtr()));
483 return;
484 }
485
463 // Add the prefix. 486 // Add the prefix.
464 std::string key = ManagedUserSettingsService::MakeSplitSettingKey( 487 std::string key = ManagedUserSettingsService::MakeSplitSettingKey(
465 kManagedUserAccessRequestKeyPrefix, output); 488 kManagedUserAccessRequestKeyPrefix, output);
466 489
467 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue); 490 scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue);
468 491
469 // TODO(sergiu): Use sane time here when it's ready. 492 // TODO(sergiu): Use sane time here when it's ready.
470 dict->SetDouble(kManagedUserAccessRequestTime, base::Time::Now().ToJsTime()); 493 dict->SetDouble(kManagedUserAccessRequestTime, base::Time::Now().ToJsTime());
471 494
472 dict->SetString(kManagedUserName, 495 dict->SetString(kManagedUserName,
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 584
562 CommandLine* command_line = CommandLine::ForCurrentProcess(); 585 CommandLine* command_line = CommandLine::ForCurrentProcess();
563 if (command_line->HasSwitch(switches::kManagedUserSyncToken)) { 586 if (command_line->HasSwitch(switches::kManagedUserSyncToken)) {
564 InitSync( 587 InitSync(
565 command_line->GetSwitchValueASCII(switches::kManagedUserSyncToken)); 588 command_line->GetSwitchValueASCII(switches::kManagedUserSyncToken));
566 } 589 }
567 590
568 ProfileOAuth2TokenService* token_service = 591 ProfileOAuth2TokenService* token_service =
569 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_); 592 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_);
570 token_service->LoadCredentials(managed_users::kManagedUserPseudoEmail); 593 token_service->LoadCredentials(managed_users::kManagedUserPseudoEmail);
594 std::string account_id = SigninManagerFactory::GetForProfile(profile_)
595 ->GetAuthenticatedAccountId();
Bernhard Bauer 2014/05/15 13:56:40 This is going to be empty for a supervised user (b
Adrian Kuegel 2014/05/15 14:35:32 Right. This explains why fetching the access token
Bernhard Bauer 2014/05/15 15:04:54 An alternative would be to use ManagedUserSigninMa
Adrian Kuegel 2014/05/15 15:42:16 Right. I refactored this a bit, and pass now only
Bernhard Bauer 2014/05/15 15:58:18 Passing only the profile to Create() is okay, but
Adrian Kuegel 2014/05/16 13:21:57 Makes sense. Done.
596 permissions_creator_ = PermissionRequestCreator::Create(
597 token_service, account_id, profile_->GetRequestContext());
571 598
572 extensions::ExtensionSystem* extension_system = 599 extensions::ExtensionSystem* extension_system =
573 extensions::ExtensionSystem::Get(profile_); 600 extensions::ExtensionSystem::Get(profile_);
574 extensions::ManagementPolicy* management_policy = 601 extensions::ManagementPolicy* management_policy =
575 extension_system->management_policy(); 602 extension_system->management_policy();
576 if (management_policy) 603 if (management_policy)
577 extension_system->management_policy()->RegisterProvider(this); 604 extension_system->management_policy()->RegisterProvider(this);
578 605
579 registrar_.Add(this, 606 registrar_.Add(this,
580 chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, 607 chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED,
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 723
697 void ManagedUserService::OnBrowserSetLastActive(Browser* browser) { 724 void ManagedUserService::OnBrowserSetLastActive(Browser* browser) {
698 bool profile_became_active = profile_->IsSameProfile(browser->profile()); 725 bool profile_became_active = profile_->IsSameProfile(browser->profile());
699 if (!is_profile_active_ && profile_became_active) 726 if (!is_profile_active_ && profile_became_active)
700 content::RecordAction(UserMetricsAction("ManagedUsers_OpenProfile")); 727 content::RecordAction(UserMetricsAction("ManagedUsers_OpenProfile"));
701 else if (is_profile_active_ && !profile_became_active) 728 else if (is_profile_active_ && !profile_became_active)
702 content::RecordAction(UserMetricsAction("ManagedUsers_SwitchProfile")); 729 content::RecordAction(UserMetricsAction("ManagedUsers_SwitchProfile"));
703 730
704 is_profile_active_ = profile_became_active; 731 is_profile_active_ = profile_became_active;
705 } 732 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698