1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/custom_handlers/register_protocol_handler_permission_request.h"
7 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
9 #include "content/public/browser/user_metrics.h"
10 #include "grit/generated_resources.h"
11 #include "ui/base/l10n/l10n_util.h"
15 base::string16 GetProtocolName(
16 const ProtocolHandler& handler) {
17 if (handler.protocol() == "mailto")
18 return l10n_util::GetStringUTF16(IDS_REGISTER_PROTOCOL_HANDLER_MAILTO_NAME);
19 if (handler.protocol() == "webcal")
20 return l10n_util::GetStringUTF16(IDS_REGISTER_PROTOCOL_HANDLER_WEBCAL_NAME);
21 return base::UTF8ToUTF16(handler.protocol());
26 RegisterProtocolHandlerPermissionRequest
27 ::RegisterProtocolHandlerPermissionRequest(
28 ProtocolHandlerRegistry* registry,
29 const ProtocolHandler& handler)
30 : registry_(registry),
33 RegisterProtocolHandlerPermissionRequest::
34 ~RegisterProtocolHandlerPermissionRequest() {}
37 RegisterProtocolHandlerPermissionRequest::GetMessageText() const {
38 ProtocolHandler old_handler = registry_->GetHandlerFor(handler_.protocol());
39 return old_handler.IsEmpty() ?
40 l10n_util::GetStringFUTF16(IDS_REGISTER_PROTOCOL_HANDLER_CONFIRM,
41 handler_.title(), base::UTF8ToUTF16(handler_.url().host()),
42 GetProtocolName(handler_)) :
43 l10n_util::GetStringFUTF16(IDS_REGISTER_PROTOCOL_HANDLER_CONFIRM_REPLACE,
44 handler_.title(), base::UTF8ToUTF16(handler_.url().host()),
45 GetProtocolName(handler_), old_handler.title());
49 RegisterProtocolHandlerPermissionRequest::GetMessageTextFragment() const {
50 ProtocolHandler old_handler = registry_->GetHandlerFor(handler_.protocol());
51 return old_handler.IsEmpty() ?
52 l10n_util::GetStringFUTF16(IDS_REGISTER_PROTOCOL_HANDLER_CONFIRM_FRAGMENT,
53 GetProtocolName(handler_)) :
54 l10n_util::GetStringFUTF16(
55 IDS_REGISTER_PROTOCOL_HANDLER_CONFIRM_REPLACE_FRAGMENT,
56 GetProtocolName(handler_), old_handler.title());
59 base::string16 RegisterProtocolHandlerPermissionRequest::
60 GetAlternateAcceptButtonText() const {
61 return l10n_util::GetStringFUTF16(IDS_REGISTER_PROTOCOL_HANDLER_ACCEPT,
65 base::string16 RegisterProtocolHandlerPermissionRequest::
66 GetAlternateDenyButtonText() const {
67 return l10n_util::GetStringFUTF16(IDS_REGISTER_PROTOCOL_HANDLER_DENY,
71 void RegisterProtocolHandlerPermissionRequest::PermissionGranted() {
72 content::RecordAction(
73 base::UserMetricsAction("RegisterProtocolHandler.Infobar_Accept"));
74 registry_->OnAcceptRegisterProtocolHandler(handler_);
77 void RegisterProtocolHandlerPermissionRequest::PermissionDenied() {
78 content::RecordAction(
79 base::UserMetricsAction("RegisterProtocolHandler.InfoBar_Deny"));
80 registry_->OnIgnoreRegisterProtocolHandler(handler_);
83 void RegisterProtocolHandlerPermissionRequest::Cancelled() {
84 content::RecordAction(
85 base::UserMetricsAction("RegisterProtocolHandler.InfoBar_Deny"));
86 registry_->OnIgnoreRegisterProtocolHandler(handler_);
89 void RegisterProtocolHandlerPermissionRequest::RequestFinished() {