Home | History | Annotate | Download | only in custom_handlers
      1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_CUSTOM_HANDLERS_REGISTER_PROTOCOL_HANDLER_INFOBAR_DELEGATE_H_
      6 #define CHROME_BROWSER_CUSTOM_HANDLERS_REGISTER_PROTOCOL_HANDLER_INFOBAR_DELEGATE_H_
      7 
      8 #include "base/strings/string16.h"
      9 #include "chrome/browser/infobars/confirm_infobar_delegate.h"
     10 #include "chrome/common/custom_handlers/protocol_handler.h"
     11 
     12 class InfoBarService;
     13 class ProtocolHandlerRegistry;
     14 
     15 // An InfoBar delegate that enables the user to allow or deny storing credit
     16 // card information gathered from a form submission.
     17 class RegisterProtocolHandlerInfoBarDelegate : public ConfirmInfoBarDelegate {
     18  public:
     19   // Creates a new register protocol handler infobar delegate.  Searches
     20   // |infobar_service| for an existing delegate for the same |handler|; replaces
     21   // it with the new delegate if found, otherwise adds the new infobar to
     22   // |infobar_service|.
     23   static void Create(InfoBarService* infobar_service,
     24                      ProtocolHandlerRegistry* registry,
     25                      const ProtocolHandler& handler);
     26 
     27  private:
     28   RegisterProtocolHandlerInfoBarDelegate(InfoBarService* infobar_service,
     29                                          ProtocolHandlerRegistry* registry,
     30                                          const ProtocolHandler& handler);
     31   virtual ~RegisterProtocolHandlerInfoBarDelegate();
     32 
     33   // ConfirmInfoBarDelegate:
     34   virtual InfoBarAutomationType GetInfoBarAutomationType() const OVERRIDE;
     35   virtual Type GetInfoBarType() const OVERRIDE;
     36   virtual RegisterProtocolHandlerInfoBarDelegate*
     37       AsRegisterProtocolHandlerInfoBarDelegate() OVERRIDE;
     38   virtual string16 GetMessageText() const OVERRIDE;
     39   virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE;
     40   virtual bool NeedElevation(InfoBarButton button) const OVERRIDE;
     41   virtual bool Accept() OVERRIDE;
     42   virtual bool Cancel() OVERRIDE;
     43   virtual string16 GetLinkText() const OVERRIDE;
     44   virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE;
     45 
     46   // Returns a user-friendly name for the protocol of this protocol handler.
     47   string16 GetProtocolName(const ProtocolHandler& handler) const;
     48 
     49   ProtocolHandlerRegistry* registry_;
     50   ProtocolHandler handler_;
     51 
     52   DISALLOW_COPY_AND_ASSIGN(RegisterProtocolHandlerInfoBarDelegate);
     53 };
     54 
     55 #endif  // CHROME_BROWSER_CUSTOM_HANDLERS_REGISTER_PROTOCOL_HANDLER_INFOBAR_DELEGATE_H_
     56