| // 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_CONTENT_H_ |
| #define CHROME_FRAME_INFOBARS_INFOBAR_CONTENT_H_ |
| |
| #include <windows.h> |
| |
| // Provides an interface between content to be displayed in an infobar and the |
| // infobar facility. Pass an instance of your implementation to |
| // InfobarManager::Show, which will result in a call to InstallInFrame to |
| // initialize the InfobarContent. |
| // |
| // The instance will be deleted by the infobar facility when it is no longer |
| // being displayed (or immediately, in the case of a failure to display). |
| class InfobarContent { |
| public: |
| // Provides access to the content's parent window and allows the |
| // InfobarContent to close itself, such as in response to user interaction. |
| class Frame { |
| public: |
| virtual ~Frame() {} |
| |
| // Returns the window in which the content should display itself. |
| virtual HWND GetFrameWindow() = 0; |
| |
| // Initiates closing of the infobar. |
| virtual void CloseInfobar() = 0; |
| }; // class Frame |
| |
| virtual ~InfobarContent() {} |
| |
| // Prepares the content to display in the provided frame. |
| // |
| // The frame pointer remains valid until the InfobarContent instance is |
| // deleted. |
| virtual bool InstallInFrame(Frame* frame) = 0; |
| |
| // Provides the content with the dimensions available to it for display. |
| // Dimensions are relative to the origin of the frame window. |
| virtual void SetDimensions(const RECT& dimensions) = 0; |
| |
| // Finds the desired value for one dimension given a fixed value for the other |
| // dimension. The fixed dimension parameter is non-zero whereas the requested |
| // dimension parameter will be zero. |
| virtual size_t GetDesiredSize(size_t width, size_t height) = 0; |
| }; // class InfobarContent |
| |
| #endif // CHROME_FRAME_INFOBARS_INFOBAR_CONTENT_H_ |