1 // Copyright 2018 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/extensions/api/messaging/incognito_connectability_infobar_delegate.h" 6 7 #include "chrome/browser/infobars/infobar_service.h" 8 #include "components/infobars/core/infobar.h" 9 #include "components/strings/grit/components_strings.h" 10 #include "ui/base/l10n/l10n_util.h" 11 12 namespace extensions { 13 14 // static Create(InfoBarService * infobar_service,const base::string16 & message,const IncognitoConnectabilityInfoBarDelegate::InfoBarCallback & callback)15infobars::InfoBar* IncognitoConnectabilityInfoBarDelegate::Create( 16 InfoBarService* infobar_service, 17 const base::string16& message, 18 const IncognitoConnectabilityInfoBarDelegate::InfoBarCallback& callback) { 19 return infobar_service->AddInfoBar(infobar_service->CreateConfirmInfoBar( 20 std::unique_ptr<ConfirmInfoBarDelegate>( 21 new IncognitoConnectabilityInfoBarDelegate(message, callback)))); 22 } 23 IncognitoConnectabilityInfoBarDelegate(const base::string16 & message,const InfoBarCallback & callback)24IncognitoConnectabilityInfoBarDelegate::IncognitoConnectabilityInfoBarDelegate( 25 const base::string16& message, 26 const InfoBarCallback& callback) 27 : message_(message), answered_(false), callback_(callback) {} 28 29 IncognitoConnectabilityInfoBarDelegate:: ~IncognitoConnectabilityInfoBarDelegate()30 ~IncognitoConnectabilityInfoBarDelegate() { 31 if (!answered_) { 32 // The infobar has closed without the user expressing an explicit 33 // preference. The current request should be denied but further requests 34 // should show an interactive prompt. 35 callback_.Run(IncognitoConnectability::ScopedAlertTracker::INTERACTIVE); 36 } 37 } 38 39 infobars::InfoBarDelegate::InfoBarIdentifier GetIdentifier() const40IncognitoConnectabilityInfoBarDelegate::GetIdentifier() const { 41 return INCOGNITO_CONNECTABILITY_INFOBAR_DELEGATE; 42 } 43 GetMessageText() const44base::string16 IncognitoConnectabilityInfoBarDelegate::GetMessageText() const { 45 return message_; 46 } 47 GetButtonLabel(InfoBarButton button) const48base::string16 IncognitoConnectabilityInfoBarDelegate::GetButtonLabel( 49 InfoBarButton button) const { 50 return l10n_util::GetStringUTF16((button == BUTTON_OK) ? IDS_PERMISSION_ALLOW 51 : IDS_PERMISSION_DENY); 52 } 53 Accept()54bool IncognitoConnectabilityInfoBarDelegate::Accept() { 55 callback_.Run(IncognitoConnectability::ScopedAlertTracker::ALWAYS_ALLOW); 56 answered_ = true; 57 return true; 58 } 59 Cancel()60bool IncognitoConnectabilityInfoBarDelegate::Cancel() { 61 callback_.Run(IncognitoConnectability::ScopedAlertTracker::ALWAYS_DENY); 62 answered_ = true; 63 return true; 64 } 65 66 } // namespace extensions 67