// 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 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_