| // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_FRAME_INFOBARS_INFOBAR_MANAGER_H_ |
| #define CHROME_FRAME_INFOBARS_INFOBAR_MANAGER_H_ |
| |
| #include <windows.h> |
| |
| class InfobarContent; |
| |
| enum InfobarType { |
| FIRST_INFOBAR_TYPE = 0, |
| TOP_INFOBAR = 0, // Infobar at the top. |
| BOTTOM_INFOBAR = 1, // Infobar at the bottom. |
| END_OF_INFOBAR_TYPE = 2 |
| }; |
| |
| // Creates and manages infobars at the top or bottom of an IE content window. |
| // Instances must only be retrieved and used within the UI thread of the IE |
| // content window. |
| class InfobarManager { |
| public: |
| // Returns an InfobarManager for the specified IE tab window. Caller does not |
| // own the pointer (resources will be freed when the window is destroyed). |
| // |
| // The pointer may be invalidated by further processing of window events, and |
| // as such should be immediately discarded after use. |
| // |
| // Returns NULL in case of failure. |
| static InfobarManager* Get(HWND tab_window); |
| |
| virtual ~InfobarManager(); |
| |
| // Shows the supplied content in an infobar of the specified type. |
| // Normally, InfobarContent::InstallInFrame will be called with an interface |
| // the content may use to interact with the Infobar facility. |
| // |
| // InfobarContent is deleted when the Infobar facility is finished with the |
| // content (either through failure or when successfully hidden). |
| virtual bool Show(InfobarContent* content, InfobarType type) = 0; |
| |
| // Hides the infobar of the specified type. |
| virtual void Hide(InfobarType type) = 0; |
| |
| // Hides all infobars. |
| virtual void HideAll() = 0; |
| }; // class InfobarManager |
| |
| #endif // CHROME_FRAME_INFOBARS_INFOBAR_MANAGER_H_ |