register_protocol_handler_infobar_delegate.h revision 7dbb3d5cf0c15f500944d211057644d6a2f37371
154da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant// Copyright (c) 2012 The Chromium Authors. All rights reserved.
254da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant// Use of this source code is governed by a BSD-style license that can be
354da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant// found in the LICENSE file.
454da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant#ifndef CHROME_BROWSER_CUSTOM_HANDLERS_REGISTER_PROTOCOL_HANDLER_INFOBAR_DELEGATE_H_
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant#define CHROME_BROWSER_CUSTOM_HANDLERS_REGISTER_PROTOCOL_HANDLER_INFOBAR_DELEGATE_H_
754da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant
854da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant#include "base/strings/string16.h"
954da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant#include "chrome/browser/infobars/confirm_infobar_delegate.h"
1054da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant#include "chrome/common/custom_handlers/protocol_handler.h"
1154da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant
1254da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnantclass InfoBarService;
1354da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnantclass ProtocolHandlerRegistry;
1454da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant
1554da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant// An InfoBar delegate that enables the user to allow or deny storing credit
1654da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant// card information gathered from a form submission.
1754da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnantclass RegisterProtocolHandlerInfoBarDelegate : public ConfirmInfoBarDelegate {
1854da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant public:
1954da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  // Creates a new RPH delegate.  Searches |infobar_service| for an existing
2054da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  // delegate for the same |handler|; replaces it with the new delegate if
2154da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  // found, otherwise adds the new infobar to |infobar_service|.
2254da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  static void Create(InfoBarService* infobar_service,
2354da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant                     ProtocolHandlerRegistry* registry,
2454da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant                     const ProtocolHandler& handler);
2554da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant
2654da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant private:
2754da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  RegisterProtocolHandlerInfoBarDelegate(InfoBarService* infobar_service,
2854da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant                                         ProtocolHandlerRegistry* registry,
2954da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant                                         const ProtocolHandler& handler);
3054da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  virtual ~RegisterProtocolHandlerInfoBarDelegate();
3154da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant
3254da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  // ConfirmInfoBarDelegate:
3354da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  virtual InfoBarAutomationType GetInfoBarAutomationType() const OVERRIDE;
3454da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  virtual Type GetInfoBarType() const OVERRIDE;
357de47902d08e6cd08977b573b134f21b5782fc4bHoward Hinnant  virtual RegisterProtocolHandlerInfoBarDelegate*
367de47902d08e6cd08977b573b134f21b5782fc4bHoward Hinnant      AsRegisterProtocolHandlerInfoBarDelegate() OVERRIDE;
3754da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  virtual string16 GetMessageText() const OVERRIDE;
3854da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE;
3954da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  virtual bool NeedElevation(InfoBarButton button) const OVERRIDE;
4054da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  virtual bool Accept() OVERRIDE;
4154da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  virtual bool Cancel() OVERRIDE;
4254da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  virtual string16 GetLinkText() const OVERRIDE;
4354da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE;
4454da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant
457de47902d08e6cd08977b573b134f21b5782fc4bHoward Hinnant  // Returns a user-friendly name for the protocol of this protocol handler.
467de47902d08e6cd08977b573b134f21b5782fc4bHoward Hinnant  string16 GetProtocolName(const ProtocolHandler& handler) const;
4754da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant
4854da338f59b56e267dd6d1c0981e3c607c94c2b7Howard Hinnant  ProtocolHandlerRegistry* registry_;
49  ProtocolHandler handler_;
50
51  DISALLOW_COPY_AND_ASSIGN(RegisterProtocolHandlerInfoBarDelegate);
52};
53
54#endif  // CHROME_BROWSER_CUSTOM_HANDLERS_REGISTER_PROTOCOL_HANDLER_INFOBAR_DELEGATE_H_
55