Chromium Code Reviews| Index: chrome/browser/supervised_user/supervised_user_service.cc |
| diff --git a/chrome/browser/supervised_user/supervised_user_service.cc b/chrome/browser/supervised_user/supervised_user_service.cc |
| index e464400c0cc5618681451f5eba6191d746681cc7..37e06acfc606533976f1ae0401d94a4586abd50d 100644 |
| --- a/chrome/browser/supervised_user/supervised_user_service.cc |
| +++ b/chrome/browser/supervised_user/supervised_user_service.cc |
| @@ -225,6 +225,42 @@ void SupervisedUserService::URLFilterContext::InitAsyncURLChecker( |
| io_url_filter_, context, cx)); |
| } |
| +class SupervisedUserService::SendPermissionRequestHelper { |
| + public: |
| + virtual ~SendPermissionRequestHelper() {} |
| + |
| + virtual void SendPermissionRequest(PermissionRequestCreator* creator, |
|
Bernhard Bauer
2015/03/02 23:09:59
Nice! Now that I see this, I'm wondering though wh
Marc Treib
2015/03/03 10:04:50
You're right, it's much less boilerplate with call
|
| + const SuccessCallback& callback) = 0; |
| +}; |
| + |
| +class SupervisedUserService::SendURLAccessRequestHelper |
| + : public SupervisedUserService::SendPermissionRequestHelper { |
| + public: |
| + explicit SendURLAccessRequestHelper(const GURL& url) : url_(url) {} |
| + |
| + void SendPermissionRequest(PermissionRequestCreator* creator, |
| + const SuccessCallback& callback) override { |
| + creator->CreateURLAccessRequest(url_, callback); |
| + } |
| + |
| + private: |
| + const GURL url_; |
| +}; |
| + |
| +class SupervisedUserService::SendExtensionUpdateRequestHelper |
| + : public SupervisedUserService::SendPermissionRequestHelper { |
| + public: |
| + explicit SendExtensionUpdateRequestHelper(const std::string& id) : id_(id) {} |
| + |
| + void SendPermissionRequest(PermissionRequestCreator* creator, |
| + const SuccessCallback& callback) override { |
| + creator->CreateExtensionUpdateRequest(id_, callback); |
| + } |
| + |
| + private: |
| + const std::string id_; |
| +}; |
| + |
| SupervisedUserService::SupervisedUserService(Profile* profile) |
| : includes_sync_sessions_type_(true), |
| profile_(profile), |
| @@ -531,8 +567,8 @@ size_t SupervisedUserService::FindEnabledPermissionRequestCreator( |
| return permissions_creators_.size(); |
| } |
| -void SupervisedUserService::AddAccessRequestInternal( |
| - const GURL& url, |
| +void SupervisedUserService::AddPermissionRequestInternal( |
| + scoped_ptr<SendPermissionRequestHelper> helper, |
| const SuccessCallback& callback, |
| size_t index) { |
| // Find a permission request creator that is enabled. |
| @@ -542,14 +578,15 @@ void SupervisedUserService::AddAccessRequestInternal( |
| return; |
| } |
| - permissions_creators_[next_index]->CreatePermissionRequest( |
| - url, |
| + helper->SendPermissionRequest( |
| + permissions_creators_[next_index], |
| base::Bind(&SupervisedUserService::OnPermissionRequestIssued, |
| - weak_ptr_factory_.GetWeakPtr(), url, callback, next_index)); |
| + weak_ptr_factory_.GetWeakPtr(), base::Passed(&helper), |
|
Marc Treib
2015/03/02 18:26:00
This is ugly: The base::Passed nulls the helper, b
Bernhard Bauer
2015/03/02 23:09:59
Wait, how would we call the method before its argu
Marc Treib
2015/03/03 10:04:50
Thinking about this again, it probably depends on
|
| + callback, next_index)); |
| } |
| void SupervisedUserService::OnPermissionRequestIssued( |
| - const GURL& url, |
| + scoped_ptr<SendPermissionRequestHelper> helper, |
| const SuccessCallback& callback, |
| size_t index, |
| bool success) { |
| @@ -558,7 +595,7 @@ void SupervisedUserService::OnPermissionRequestIssued( |
| return; |
| } |
| - AddAccessRequestInternal(url, callback, index + 1); |
| + AddPermissionRequestInternal(helper.Pass(), callback, index + 1); |
| } |
| void SupervisedUserService::OnSupervisedUserIdChanged() { |
| @@ -631,10 +668,21 @@ bool SupervisedUserService::AccessRequestsEnabled() { |
| return FindEnabledPermissionRequestCreator(0) < permissions_creators_.size(); |
| } |
| -void SupervisedUserService::AddAccessRequest(const GURL& url, |
| - const SuccessCallback& callback) { |
| - AddAccessRequestInternal(SupervisedUserURLFilter::Normalize(url), callback, |
| - 0); |
| +void SupervisedUserService::AddURLAccessRequest( |
| + const GURL& url, |
| + const SuccessCallback& callback) { |
| + AddPermissionRequestInternal( |
| + make_scoped_ptr(new SendURLAccessRequestHelper( |
| + SupervisedUserURLFilter::Normalize(url))), |
| + callback, 0); |
| +} |
| + |
| +void SupervisedUserService::AddExtensionUpdateRequest( |
| + const std::string& extension_id, |
| + const SuccessCallback& callback) { |
| + AddPermissionRequestInternal( |
| + make_scoped_ptr(new SendExtensionUpdateRequestHelper(extension_id)), |
| + callback, 0); |
| } |
| void SupervisedUserService::InitSync(const std::string& refresh_token) { |