| Index: chrome/browser/extensions/extension_popup_host.h
|
| ===================================================================
|
| --- chrome/browser/extensions/extension_popup_host.h (revision 0)
|
| +++ chrome/browser/extensions/extension_popup_host.h (revision 0)
|
| @@ -0,0 +1,104 @@
|
| +// Copyright (c) 2009 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_BROWSER_EXTENSIONS_EXTENSION_POPUP_HOST_H_
|
| +#define CHROME_BROWSER_EXTENSIONS_EXTENSION_POPUP_HOST_H_
|
| +
|
| +#include "base/scoped_ptr.h"
|
| +#include "build/build_config.h"
|
| +#if defined(TOOLKIT_VIEWS)
|
| +#include "chrome/browser/views/browser_bubble.h"
|
| +#endif
|
| +#include "chrome/common/notification_observer.h"
|
| +#include "chrome/common/notification_registrar.h"
|
| +
|
| +#if defined(TOOLKIT_VIEWS)
|
| +class ExtensionPopup;
|
| +#endif
|
| +
|
| +class Browser;
|
| +class Profile;
|
| +class RenderViewHost;
|
| +
|
| +// ExtensionPopupHost objects implement the environment necessary to host
|
| +// ExtensionPopup views. This class manages the creation and life-time
|
| +// of extension pop-up views.
|
| +class ExtensionPopupHost : // NOLINT
|
| +#if defined(TOOLKIT_VIEWS)
|
| + public BrowserBubble::Delegate,
|
| +#endif
|
| + public NotificationObserver {
|
| + public:
|
| + // Classes wishing to host pop-ups should inherit from this class, and
|
| + // implement the virtual methods below. This class manages the lifetime
|
| + // of an ExtensionPopupHost instance.
|
| + class PopupDelegate {
|
| + public:
|
| + PopupDelegate() {}
|
| + virtual ~PopupDelegate() {}
|
| + virtual Browser* GetBrowser() = 0;
|
| + virtual RenderViewHost* GetRenderViewHost() = 0;
|
| +
|
| + // Constructs, or returns the existing ExtensionPopupHost instance.
|
| + ExtensionPopupHost* popup_host();
|
| + private:
|
| + scoped_ptr<ExtensionPopupHost> popup_host_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(PopupDelegate);
|
| + };
|
| +
|
| + explicit ExtensionPopupHost(PopupDelegate* delegate);
|
| + virtual ~ExtensionPopupHost();
|
| +
|
| + // Dismiss the hosted pop-up, if one is present.
|
| + void DismissPopup();
|
| +
|
| +#if defined(TOOLKIT_VIEWS)
|
| + ExtensionPopup* child_popup() const { return child_popup_; }
|
| + void set_child_popup(ExtensionPopup* popup) {
|
| + // An extension may only have one popup active at a given time.
|
| + DismissPopup();
|
| + child_popup_ = popup;
|
| + }
|
| +
|
| + // BrowserBubble::Delegate implementation.
|
| + // Called when the Browser Window that this bubble is attached to moves.
|
| + virtual void BubbleBrowserWindowMoved(BrowserBubble* bubble);
|
| +
|
| + // Called with the Browser Window that this bubble is attached to is
|
| + // about to close.
|
| + virtual void BubbleBrowserWindowClosing(BrowserBubble* bubble);
|
| +
|
| + // Called when the bubble became active / got focus.
|
| + virtual void BubbleGotFocus(BrowserBubble* bubble);
|
| +
|
| + // Called when the bubble became inactive / lost focus.
|
| + virtual void BubbleLostFocus(BrowserBubble* bubble);
|
| +#endif // defined(TOOLKIT_VIEWS)
|
| +
|
| + // NotificationObserver implementation.
|
| + virtual void Observe(NotificationType type,
|
| + const NotificationSource& source,
|
| + const NotificationDetails& details);
|
| +
|
| + private:
|
| +#if defined(TOOLKIT_VIEWS)
|
| + // A popup view that is anchored to and owned by this ExtensionHost. However,
|
| + // the popup contains its own separate ExtensionHost
|
| + ExtensionPopup* child_popup_;
|
| +#endif
|
| +
|
| + NotificationRegistrar registrar_;
|
| +
|
| + // Non-owning pointer to the delegate for this host.
|
| + PopupDelegate* delegate_;
|
| +
|
| + // Boolean value used to ensure that the host only registers for event
|
| + // notifications once.
|
| + bool listeners_registered_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ExtensionPopupHost);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_POPUP_HOST_H_
|
|
|
| Property changes on: chrome\browser\extensions\extension_popup_host.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|