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 f3c6ad03427cef82c5916b9e545ad67aac23ba5f..740f42b0be56e96be6ecec23cdd2aa08e2d0be17 100644 |
--- a/chrome/browser/supervised_user/supervised_user_service.cc |
+++ b/chrome/browser/supervised_user/supervised_user_service.cc |
@@ -107,6 +107,13 @@ void CreateURLAccessRequest( |
creator->CreateURLAccessRequest(url, callback); |
} |
+void CreateReportUrlRequest( |
+ const GURL& url, |
+ ReportUrlRequestCreator* creator, |
+ const SupervisedUserService::SuccessCallback& callback) { |
+ creator->CreateReportUrlRequest(url, callback); |
+} |
+ |
void CreateExtensionUpdateRequest( |
const std::string& id, |
PermissionRequestCreator* creator, |
@@ -256,6 +263,14 @@ void SupervisedUserService::AddURLAccessRequest( |
callback, 0); |
} |
+void SupervisedUserService::AddReportUrlRequest( |
+ const GURL& url, |
+ const SuccessCallback& callback) { |
+ AddReportUrlRequestInternal( |
+ base::Bind(CreateReportUrlRequest, url), |
+ callback, 0); |
+} |
+ |
void SupervisedUserService::AddExtensionUpdateRequest( |
const std::string& extension_id, |
const base::Version& version, |
@@ -396,6 +411,11 @@ void SupervisedUserService::AddPermissionRequestCreator( |
permissions_creators_.push_back(creator.release()); |
} |
+void SupervisedUserService::AddReportUrlRequestCreator( |
+ scoped_ptr<ReportUrlRequestCreator> creator) { |
+ report_url_creators_.push_back(std::move(creator)); |
+} |
+ |
SupervisedUserService::URLFilterContext::URLFilterContext() |
: ui_url_filter_(new SupervisedUserURLFilter), |
io_url_filter_(new SupervisedUserURLFilter) {} |
@@ -601,6 +621,7 @@ void SupervisedUserService::SetActive(bool active) { |
#endif |
} else { |
permissions_creators_.clear(); |
+ report_url_creators_.clear(); |
pref_change_registrar_.Remove( |
prefs::kDefaultSupervisedUserFilteringBehavior); |
@@ -754,6 +775,35 @@ void SupervisedUserService::OnPermissionRequestIssued( |
AddPermissionRequestInternal(create_request, callback, index + 1); |
} |
+void SupervisedUserService::AddReportUrlRequestInternal( |
+ const CreateReportUrlRequestCallback& report_url_request, |
+ const SuccessCallback& callback, |
+ size_t index) { |
+ if (index >= report_url_creators_.size()) { |
+ callback.Run(false); |
+ return; |
+ } |
+ |
+ report_url_request.Run( |
+ report_url_creators_[index].get(), |
+ base::Bind(&SupervisedUserService::OnReportUrlRequestIssues, |
+ weak_ptr_factory_.GetWeakPtr(), report_url_request, |
+ callback, index)); |
+} |
+ |
+void SupervisedUserService::OnReportUrlRequestIssues( |
+ const CreateReportUrlRequestCallback& report_url_request, |
+ const SuccessCallback& callback, |
+ size_t index, |
+ bool success) { |
+ if (success) { |
+ callback.Run(true); |
+ return; |
+ } |
+ |
+ AddReportUrlRequestInternal(report_url_request, callback, index + 1); |
+} |
+ |
void SupervisedUserService::OnSupervisedUserIdChanged() { |
SetActive(ProfileIsSupervised()); |
} |