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. 4 5 #include "chrome/browser/custom_handlers/register_protocol_handler_permission_request.h" 6 7 #include "base/strings/utf_string_conversions.h" 8 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 9 #include "chrome/grit/generated_resources.h" 10 #include "content/public/browser/user_metrics.h" 11 #include "grit/theme_resources.h" 12 #include "ui/base/l10n/l10n_util.h" 13 14 namespace { 15 16 base::string16 GetProtocolName( 17 const ProtocolHandler& handler) { 18 if (handler.protocol() == "mailto") 19 return l10n_util::GetStringUTF16(IDS_REGISTER_PROTOCOL_HANDLER_MAILTO_NAME); 20 if (handler.protocol() == "webcal") 21 return l10n_util::GetStringUTF16(IDS_REGISTER_PROTOCOL_HANDLER_WEBCAL_NAME); 22 return base::UTF8ToUTF16(handler.protocol()); 23 } 24 25 } // namespace 26 27 RegisterProtocolHandlerPermissionRequest 28 ::RegisterProtocolHandlerPermissionRequest( 29 ProtocolHandlerRegistry* registry, 30 const ProtocolHandler& handler, 31 GURL url, 32 bool user_gesture) 33 : registry_(registry), 34 handler_(handler), 35 url_(url), 36 user_gesture_(user_gesture) {} 37 38 RegisterProtocolHandlerPermissionRequest:: 39 ~RegisterProtocolHandlerPermissionRequest() {} 40 41 int RegisterProtocolHandlerPermissionRequest::GetIconID() const { 42 return IDR_REGISTER_PROTOCOL_HANDLER; 43 } 44 45 base::string16 46 RegisterProtocolHandlerPermissionRequest::GetMessageText() const { 47 ProtocolHandler old_handler = registry_->GetHandlerFor(handler_.protocol()); 48 return old_handler.IsEmpty() ? 49 l10n_util::GetStringFUTF16( 50 IDS_REGISTER_PROTOCOL_HANDLER_CONFIRM, 51 base::UTF8ToUTF16(handler_.url().host()), 52 GetProtocolName(handler_)) : 53 l10n_util::GetStringFUTF16( 54 IDS_REGISTER_PROTOCOL_HANDLER_CONFIRM_REPLACE, 55 base::UTF8ToUTF16(handler_.url().host()), 56 GetProtocolName(handler_), 57 base::UTF8ToUTF16(old_handler.url().host())); 58 } 59 60 base::string16 61 RegisterProtocolHandlerPermissionRequest::GetMessageTextFragment() const { 62 ProtocolHandler old_handler = registry_->GetHandlerFor(handler_.protocol()); 63 return old_handler.IsEmpty() ? 64 l10n_util::GetStringFUTF16( 65 IDS_REGISTER_PROTOCOL_HANDLER_CONFIRM_FRAGMENT, 66 GetProtocolName(handler_)) : 67 l10n_util::GetStringFUTF16( 68 IDS_REGISTER_PROTOCOL_HANDLER_CONFIRM_REPLACE_FRAGMENT, 69 GetProtocolName(handler_), 70 base::UTF8ToUTF16(old_handler.url().host())); 71 } 72 73 bool RegisterProtocolHandlerPermissionRequest::HasUserGesture() const { 74 return user_gesture_; 75 } 76 77 GURL RegisterProtocolHandlerPermissionRequest::GetRequestingHostname() const { 78 return url_; 79 } 80 81 void RegisterProtocolHandlerPermissionRequest::PermissionGranted() { 82 content::RecordAction( 83 base::UserMetricsAction("RegisterProtocolHandler.Infobar_Accept")); 84 registry_->OnAcceptRegisterProtocolHandler(handler_); 85 } 86 87 void RegisterProtocolHandlerPermissionRequest::PermissionDenied() { 88 content::RecordAction( 89 base::UserMetricsAction("RegisterProtocolHandler.InfoBar_Deny")); 90 registry_->OnIgnoreRegisterProtocolHandler(handler_); 91 } 92 93 void RegisterProtocolHandlerPermissionRequest::Cancelled() { 94 content::RecordAction( 95 base::UserMetricsAction("RegisterProtocolHandler.InfoBar_Deny")); 96 registry_->OnIgnoreRegisterProtocolHandler(handler_); 97 } 98 99 void RegisterProtocolHandlerPermissionRequest::RequestFinished() { 100 delete this; 101 } 102