1dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// Use of this source code is governed by a BSD-style license that can be 3dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// found in the LICENSE file. 4dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#ifndef CHROME_BROWSER_TAB_CONTENTS_CONFIRM_INFOBAR_DELEGATE_H_ 6dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#define CHROME_BROWSER_TAB_CONTENTS_CONFIRM_INFOBAR_DELEGATE_H_ 7dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#pragma once 8dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 9dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "base/basictypes.h" 10dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "base/compiler_specific.h" 11dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "base/string16.h" 12dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/tab_contents/infobar_delegate.h" 13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// An interface derived from InfoBarDelegate implemented by objects wishing to 15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen// control a ConfirmInfoBar. 16dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass ConfirmInfoBarDelegate : public InfoBarDelegate { 17dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen public: 18dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen enum InfoBarButton { 19dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen BUTTON_NONE = 0, 20dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen BUTTON_OK = 1 << 0, 21dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen BUTTON_CANCEL = 1 << 1, 22dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen }; 23dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Returns the message string to be displayed for the InfoBar. 25dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual string16 GetMessageText() const = 0; 26dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 27dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Return the buttons to be shown for this InfoBar. 28dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual int GetButtons() const; 29dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 30dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Return the label for the specified button. The default implementation 31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // returns "OK" for the OK button and "Cancel" for the Cancel button. 32dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual string16 GetButtonLabel(InfoBarButton button) const; 33dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 34dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Return whether or not the specified button needs elevation. 35dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual bool NeedElevation(InfoBarButton button) const; 36dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Called when the OK button is pressed. If the function returns true, the 38dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // InfoBarDelegate should be removed from the associated TabContents. 39dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual bool Accept(); 40dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 41dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Called when the Cancel button is pressed. If the function returns true, 42dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // the InfoBarDelegate should be removed from the associated TabContents. 43dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual bool Cancel(); 44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 45dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Returns the text of the link to be displayed, if any. Otherwise returns 46dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // and empty string. 47dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual string16 GetLinkText(); 48dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 49dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Called when the Link is clicked. The |disposition| specifies how the 50dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // resulting document should be loaded (based on the event flags present when 51dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // the link was clicked). This function returns true if the InfoBar should be 52dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // closed now or false if it should remain until the user explicitly closes 53dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // it. 54dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Will only be called if GetLinkText() returns non-empty string. 55dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual bool LinkClicked(WindowOpenDisposition disposition); 56dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 57dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen protected: 58dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen explicit ConfirmInfoBarDelegate(TabContents* contents); 59dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual ~ConfirmInfoBarDelegate(); 60dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 61dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen private: 62dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // InfoBarDelegate: 63dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual InfoBar* CreateInfoBar() OVERRIDE; 64dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual bool EqualsDelegate(InfoBarDelegate* delegate) const OVERRIDE; 65dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual ConfirmInfoBarDelegate* AsConfirmInfoBarDelegate() OVERRIDE; 66dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 67dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen DISALLOW_COPY_AND_ASSIGN(ConfirmInfoBarDelegate); 68dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen}; 69dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 70dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#endif // CHROME_BROWSER_TAB_CONTENTS_CONFIRM_INFOBAR_DELEGATE_H_ 71