| Index: chrome/browser/ui/webui/supervised_user_internals_message_handler.cc
|
| diff --git a/chrome/browser/ui/webui/supervised_user_internals_message_handler.cc b/chrome/browser/ui/webui/supervised_user_internals_message_handler.cc
|
| index 6018d646028377c5c21829b4bac8400bdd1df039..63e4126215e0c89ed3db4fa3f0ffaf5c91afe5ad 100644
|
| --- a/chrome/browser/ui/webui/supervised_user_internals_message_handler.cc
|
| +++ b/chrome/browser/ui/webui/supervised_user_internals_message_handler.cc
|
| @@ -20,6 +20,7 @@
|
| #include "chrome/browser/supervised_user/supervised_user_service_factory.h"
|
| #include "chrome/browser/supervised_user/supervised_user_settings_service.h"
|
| #include "chrome/browser/supervised_user/supervised_user_settings_service_factory.h"
|
| +#include "chrome/browser/supervised_user/supervised_user_url_filter.h"
|
| #include "chrome/common/channel_info.h"
|
| #include "components/signin/core/browser/account_tracker_service.h"
|
| #include "components/supervised_user_error_page/supervised_user_error_page.h"
|
| @@ -114,61 +115,8 @@ std::string FilteringBehaviorReasonToString(
|
|
|
| } // namespace
|
|
|
| -// Helper class that lives on the IO thread, listens to the
|
| -// SupervisedUserURLFilter there, and posts results back to the UI thread.
|
| -class SupervisedUserInternalsMessageHandler::IOThreadHelper
|
| - : public base::RefCountedThreadSafe<IOThreadHelper,
|
| - BrowserThread::DeleteOnIOThread>,
|
| - public SupervisedUserURLFilter::Observer {
|
| - public:
|
| - using OnURLCheckedCallback =
|
| - base::Callback<void(const GURL&,
|
| - SupervisedUserURLFilter::FilteringBehavior,
|
| - supervised_user_error_page::FilteringBehaviorReason,
|
| - bool uncertain)>;
|
| -
|
| - IOThreadHelper(scoped_refptr<const SupervisedUserURLFilter> filter,
|
| - const OnURLCheckedCallback& callback)
|
| - : filter_(filter), callback_(callback) {
|
| - BrowserThread::PostTask(BrowserThread::IO,
|
| - FROM_HERE,
|
| - base::Bind(&IOThreadHelper::InitOnIOThread, this));
|
| - }
|
| -
|
| - private:
|
| - friend class base::DeleteHelper<IOThreadHelper>;
|
| - friend struct BrowserThread::DeleteOnThread<BrowserThread::IO>;
|
| - virtual ~IOThreadHelper() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - filter_->RemoveObserver(this);
|
| - }
|
| -
|
| - // SupervisedUserURLFilter::Observer:
|
| - void OnSiteListUpdated() override {}
|
| - void OnURLChecked(const GURL& url,
|
| - SupervisedUserURLFilter::FilteringBehavior behavior,
|
| - supervised_user_error_page::FilteringBehaviorReason reason,
|
| - bool uncertain) override {
|
| - BrowserThread::PostTask(BrowserThread::UI,
|
| - FROM_HERE,
|
| - base::Bind(callback_,
|
| - url, behavior, reason, uncertain));
|
| - }
|
| -
|
| - void InitOnIOThread() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| - filter_->AddObserver(this);
|
| - }
|
| -
|
| - scoped_refptr<const SupervisedUserURLFilter> filter_;
|
| - OnURLCheckedCallback callback_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(IOThreadHelper);
|
| -};
|
| -
|
| SupervisedUserInternalsMessageHandler::SupervisedUserInternalsMessageHandler()
|
| - : weak_factory_(this) {
|
| -}
|
| + : scoped_observer_(this), weak_factory_(this) {}
|
|
|
| SupervisedUserInternalsMessageHandler::
|
| ~SupervisedUserInternalsMessageHandler() {
|
| @@ -205,13 +153,10 @@ SupervisedUserInternalsMessageHandler::GetSupervisedUserService() {
|
| void SupervisedUserInternalsMessageHandler::HandleRegisterForEvents(
|
| const base::ListValue* args) {
|
| DCHECK(args->empty());
|
| + if (scoped_observer_.IsObservingSources())
|
| + return;
|
|
|
| - if (!io_thread_helper_.get()) {
|
| - io_thread_helper_ = new IOThreadHelper(
|
| - GetSupervisedUserService()->GetURLFilterForIOThread(),
|
| - base::Bind(&SupervisedUserInternalsMessageHandler::OnURLChecked,
|
| - weak_factory_.GetWeakPtr()));
|
| - }
|
| + scoped_observer_.Add(GetSupervisedUserService()->GetURLFilter());
|
| }
|
|
|
| void SupervisedUserInternalsMessageHandler::HandleGetBasicInfo(
|
| @@ -230,8 +175,7 @@ void SupervisedUserInternalsMessageHandler::HandleTryURL(
|
| if (!url.is_valid())
|
| return;
|
|
|
| - SupervisedUserURLFilter* filter =
|
| - GetSupervisedUserService()->GetURLFilterForUIThread();
|
| + SupervisedUserURLFilter* filter = GetSupervisedUserService()->GetURLFilter();
|
| std::map<std::string, base::string16> whitelists =
|
| filter->GetMatchingWhitelistTitles(url);
|
| filter->GetFilteringBehaviorForURLWithAsyncChecks(
|
| @@ -256,8 +200,7 @@ void SupervisedUserInternalsMessageHandler::SendBasicInfo() {
|
| profile->IsLegacySupervised());
|
| AddSectionEntry(section_profile, "Child", profile->IsChild());
|
|
|
| - SupervisedUserURLFilter* filter =
|
| - GetSupervisedUserService()->GetURLFilterForUIThread();
|
| + SupervisedUserURLFilter* filter = GetSupervisedUserService()->GetURLFilter();
|
|
|
| base::ListValue* section_filter = AddSection(section_list.get(), "Filter");
|
| AddSectionEntry(section_filter, "Blacklist active", filter->HasBlacklist());
|
| @@ -327,6 +270,8 @@ void SupervisedUserInternalsMessageHandler::OnTryURLResult(
|
| "chrome.supervised_user_internals.receiveTryURLResult", result);
|
| }
|
|
|
| +void SupervisedUserInternalsMessageHandler::OnSiteListUpdated() {}
|
| +
|
| void SupervisedUserInternalsMessageHandler::OnURLChecked(
|
| const GURL& url,
|
| SupervisedUserURLFilter::FilteringBehavior behavior,
|
|
|