| Index: chrome/browser/ui/webui/settings/protocol_handlers_handler.cc
|
| diff --git a/chrome/browser/ui/webui/options/handler_options_handler.cc b/chrome/browser/ui/webui/settings/protocol_handlers_handler.cc
|
| similarity index 65%
|
| copy from chrome/browser/ui/webui/options/handler_options_handler.cc
|
| copy to chrome/browser/ui/webui/settings/protocol_handlers_handler.cc
|
| index 0e5ea47773ccf5c383087ac1f52bba846da501d2..1d101970a90e471b141ec4e4a6b7fdf6affec6cd 100644
|
| --- a/chrome/browser/ui/webui/options/handler_options_handler.cc
|
| +++ b/chrome/browser/ui/webui/settings/protocol_handlers_handler.cc
|
| @@ -1,8 +1,8 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/browser/ui/webui/options/handler_options_handler.h"
|
| +#include "chrome/browser/ui/webui/settings/protocol_handlers_handler.h"
|
|
|
| #include <memory>
|
| #include <utility>
|
| @@ -22,66 +22,46 @@
|
| #include "components/prefs/pref_service.h"
|
| #include "content/public/browser/web_ui.h"
|
|
|
| -namespace options {
|
| +namespace settings {
|
|
|
| -HandlerOptionsHandler::HandlerOptionsHandler() {
|
| +ProtocolHandlersHandler::ProtocolHandlersHandler() {
|
| }
|
|
|
| -HandlerOptionsHandler::~HandlerOptionsHandler() {
|
| +ProtocolHandlersHandler::~ProtocolHandlersHandler() {
|
| }
|
|
|
| -void HandlerOptionsHandler::GetLocalizedValues(
|
| - base::DictionaryValue* localized_strings) {
|
| - DCHECK(localized_strings);
|
| -
|
| - static OptionsStringResource resources[] = {
|
| - { "handlersTabLabel", IDS_HANDLERS_TAB_LABEL },
|
| - { "handlersAllow", IDS_HANDLERS_ALLOW_RADIO },
|
| - { "handlersBlock", IDS_HANDLERS_DONOTALLOW_RADIO },
|
| - { "handlersTypeColumnHeader", IDS_HANDLERS_TYPE_COLUMN_HEADER },
|
| - { "handlersSiteColumnHeader", IDS_HANDLERS_SITE_COLUMN_HEADER },
|
| - { "handlersRemoveLink", IDS_HANDLERS_REMOVE_HANDLER_LINK },
|
| - { "handlersNoneHandler", IDS_HANDLERS_NONE_HANDLER },
|
| - { "handlersActiveHeading", IDS_HANDLERS_ACTIVE_HEADING },
|
| - { "handlersIgnoredHeading", IDS_HANDLERS_IGNORED_HEADING },
|
| - };
|
| - RegisterTitle(localized_strings, "handlersPage",
|
| - IDS_HANDLER_OPTIONS_WINDOW_TITLE);
|
| - RegisterStrings(localized_strings, resources, arraysize(resources));
|
| -
|
| - localized_strings->SetString("handlersLearnMoreUrl",
|
| - chrome::kLearnMoreRegisterProtocolHandlerURL);
|
| -}
|
| -
|
| -void HandlerOptionsHandler::InitializeHandler() {
|
| +void ProtocolHandlersHandler::OnJavascriptAllowed() {
|
| notification_registrar_.Add(
|
| this, chrome::NOTIFICATION_PROTOCOL_HANDLER_REGISTRY_CHANGED,
|
| content::Source<Profile>(Profile::FromWebUI(web_ui())));
|
| }
|
|
|
| -void HandlerOptionsHandler::InitializePage() {
|
| - UpdateHandlerList();
|
| +void ProtocolHandlersHandler::OnJavascriptDisallowed() {
|
| + notification_registrar_.RemoveAll();
|
| }
|
|
|
| -void HandlerOptionsHandler::RegisterMessages() {
|
| +void ProtocolHandlersHandler::RegisterMessages() {
|
| + web_ui()->RegisterMessageCallback("initializeProtocolHandlerList",
|
| + base::Bind(&ProtocolHandlersHandler::InitializeProtocolHandlerList,
|
| + base::Unretained(this)));
|
| web_ui()->RegisterMessageCallback("clearDefault",
|
| - base::Bind(&HandlerOptionsHandler::ClearDefault,
|
| + base::Bind(&ProtocolHandlersHandler::ClearDefault,
|
| base::Unretained(this)));
|
| web_ui()->RegisterMessageCallback("removeHandler",
|
| - base::Bind(&HandlerOptionsHandler::RemoveHandler,
|
| + base::Bind(&ProtocolHandlersHandler::RemoveHandler,
|
| base::Unretained(this)));
|
| web_ui()->RegisterMessageCallback("setHandlersEnabled",
|
| - base::Bind(&HandlerOptionsHandler::SetHandlersEnabled,
|
| + base::Bind(&ProtocolHandlersHandler::SetHandlersEnabled,
|
| base::Unretained(this)));
|
| web_ui()->RegisterMessageCallback("setDefault",
|
| - base::Bind(&HandlerOptionsHandler::SetDefault,
|
| + base::Bind(&ProtocolHandlersHandler::SetDefault,
|
| base::Unretained(this)));
|
| web_ui()->RegisterMessageCallback("removeIgnoredHandler",
|
| - base::Bind(&HandlerOptionsHandler::RemoveIgnoredHandler,
|
| + base::Bind(&ProtocolHandlersHandler::RemoveIgnoredHandler,
|
| base::Unretained(this)));
|
| }
|
|
|
| -ProtocolHandlerRegistry* HandlerOptionsHandler::GetProtocolHandlerRegistry() {
|
| +ProtocolHandlerRegistry* ProtocolHandlersHandler::GetProtocolHandlerRegistry() {
|
| return ProtocolHandlerRegistryFactory::GetForBrowserContext(
|
| Profile::FromWebUI(web_ui()));
|
| }
|
| @@ -91,15 +71,16 @@ static void GetHandlersAsListValue(
|
| base::ListValue* handler_list) {
|
| ProtocolHandlerRegistry::ProtocolHandlerList::const_iterator handler;
|
| for (handler = handlers.begin(); handler != handlers.end(); ++handler) {
|
| - std::unique_ptr<base::ListValue> handler_value(new base::ListValue());
|
| - handler_value->AppendString(handler->protocol());
|
| - handler_value->AppendString(handler->url().spec());
|
| - handler_value->AppendString(handler->url().host());
|
| + std::unique_ptr<base::DictionaryValue> handler_value(
|
| + new base::DictionaryValue());
|
| + handler_value->SetString("protocol", handler->protocol());
|
| + handler_value->SetString("spec", handler->url().spec());
|
| + handler_value->SetString("host", handler->url().host());
|
| handler_list->Append(std::move(handler_value));
|
| }
|
| }
|
|
|
| -void HandlerOptionsHandler::GetHandlersForProtocol(
|
| +void ProtocolHandlersHandler::GetHandlersForProtocol(
|
| const std::string& protocol,
|
| base::DictionaryValue* handlers_value) {
|
| ProtocolHandlerRegistry* registry = GetProtocolHandlerRegistry();
|
| @@ -120,14 +101,14 @@ void HandlerOptionsHandler::GetHandlersForProtocol(
|
| handlers_value->Set("handlers", handlers_list);
|
| }
|
|
|
| -void HandlerOptionsHandler::GetIgnoredHandlers(base::ListValue* handlers) {
|
| +void ProtocolHandlersHandler::GetIgnoredHandlers(base::ListValue* handlers) {
|
| ProtocolHandlerRegistry* registry = GetProtocolHandlerRegistry();
|
| ProtocolHandlerRegistry::ProtocolHandlerList ignored_handlers =
|
| registry->GetIgnoredHandlers();
|
| return GetHandlersAsListValue(ignored_handlers, handlers);
|
| }
|
|
|
| -void HandlerOptionsHandler::UpdateHandlerList() {
|
| +void ProtocolHandlersHandler::UpdateHandlerList() {
|
| ProtocolHandlerRegistry* registry = GetProtocolHandlerRegistry();
|
| std::vector<std::string> protocols;
|
| registry->GetRegisteredProtocols(&protocols);
|
| @@ -143,13 +124,29 @@ void HandlerOptionsHandler::UpdateHandlerList() {
|
|
|
| std::unique_ptr<base::ListValue> ignored_handlers(new base::ListValue());
|
| GetIgnoredHandlers(ignored_handlers.get());
|
| - web_ui()->CallJavascriptFunctionUnsafe("HandlerOptions.setHandlers",
|
| - handlers);
|
| - web_ui()->CallJavascriptFunctionUnsafe("HandlerOptions.setIgnoredHandlers",
|
| - *ignored_handlers);
|
| + CallJavascriptFunction("cr.webUIListenerCallback",
|
| + base::StringValue("setProtocolHandlers"),
|
| + handlers);
|
| + CallJavascriptFunction("cr.webUIListenerCallback",
|
| + base::StringValue("setIgnoredProtocolHandlers"),
|
| + *ignored_handlers);
|
| +}
|
| +
|
| +void ProtocolHandlersHandler::InitializeProtocolHandlerList(
|
| + const base::ListValue* args) {
|
| + AllowJavascript();
|
| + SendHandlersEnabledValue();
|
| + UpdateHandlerList();
|
| +}
|
| +
|
| +void ProtocolHandlersHandler::SendHandlersEnabledValue() {
|
| + CallJavascriptFunction("cr.webUIListenerCallback",
|
| + base::StringValue("setHandlersEnabled"),
|
| + base::FundamentalValue(
|
| + GetProtocolHandlerRegistry()->enabled()));
|
| }
|
|
|
| -void HandlerOptionsHandler::RemoveHandler(const base::ListValue* args) {
|
| +void ProtocolHandlersHandler::RemoveHandler(const base::ListValue* args) {
|
| const base::ListValue* list;
|
| if (!args->GetList(0, &list)) {
|
| NOTREACHED();
|
| @@ -164,7 +161,8 @@ void HandlerOptionsHandler::RemoveHandler(const base::ListValue* args) {
|
| // then.
|
| }
|
|
|
| -void HandlerOptionsHandler::RemoveIgnoredHandler(const base::ListValue* args) {
|
| +void ProtocolHandlersHandler::RemoveIgnoredHandler(
|
| + const base::ListValue* args) {
|
| const base::ListValue* list;
|
| if (!args->GetList(0, &list)) {
|
| NOTREACHED();
|
| @@ -175,7 +173,7 @@ void HandlerOptionsHandler::RemoveIgnoredHandler(const base::ListValue* args) {
|
| GetProtocolHandlerRegistry()->RemoveIgnoredHandler(handler);
|
| }
|
|
|
| -void HandlerOptionsHandler::SetHandlersEnabled(const base::ListValue* args) {
|
| +void ProtocolHandlersHandler::SetHandlersEnabled(const base::ListValue* args) {
|
| bool enabled = true;
|
| CHECK(args->GetBoolean(0, &enabled));
|
| if (enabled)
|
| @@ -184,7 +182,7 @@ void HandlerOptionsHandler::SetHandlersEnabled(const base::ListValue* args) {
|
| GetProtocolHandlerRegistry()->Disable();
|
| }
|
|
|
| -void HandlerOptionsHandler::ClearDefault(const base::ListValue* args) {
|
| +void ProtocolHandlersHandler::ClearDefault(const base::ListValue* args) {
|
| const base::Value* value;
|
| CHECK(args->Get(0, &value));
|
| std::string protocol_to_clear;
|
| @@ -192,7 +190,7 @@ void HandlerOptionsHandler::ClearDefault(const base::ListValue* args) {
|
| GetProtocolHandlerRegistry()->ClearDefault(protocol_to_clear);
|
| }
|
|
|
| -void HandlerOptionsHandler::SetDefault(const base::ListValue* args) {
|
| +void ProtocolHandlersHandler::SetDefault(const base::ListValue* args) {
|
| const base::ListValue* list;
|
| CHECK(args->GetList(0, &list));
|
| const ProtocolHandler& handler(ParseHandlerFromArgs(list));
|
| @@ -200,7 +198,7 @@ void HandlerOptionsHandler::SetDefault(const base::ListValue* args) {
|
| GetProtocolHandlerRegistry()->OnAcceptRegisterProtocolHandler(handler);
|
| }
|
|
|
| -ProtocolHandler HandlerOptionsHandler::ParseHandlerFromArgs(
|
| +ProtocolHandler ProtocolHandlersHandler::ParseHandlerFromArgs(
|
| const base::ListValue* args) const {
|
| base::string16 protocol;
|
| base::string16 url;
|
| @@ -211,12 +209,13 @@ ProtocolHandler HandlerOptionsHandler::ParseHandlerFromArgs(
|
| GURL(base::UTF16ToUTF8(url)));
|
| }
|
|
|
| -void HandlerOptionsHandler::Observe(
|
| +void ProtocolHandlersHandler::Observe(
|
| int type,
|
| const content::NotificationSource& source,
|
| const content::NotificationDetails& details) {
|
| DCHECK_EQ(chrome::NOTIFICATION_PROTOCOL_HANDLER_REGISTRY_CHANGED, type);
|
| + SendHandlersEnabledValue();
|
| UpdateHandlerList();
|
| }
|
|
|
| -} // namespace options
|
| +} // namespace settings
|
|
|