Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9439)

Unified Diff: chrome/browser/views/extensions/extension_popup.h

Issue 1001002: Initial support for inspecting extension popups. (Closed)
Patch Set: pre submit Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/views/extensions/extension_popup.h
diff --git a/chrome/browser/views/extensions/extension_popup.h b/chrome/browser/views/extensions/extension_popup.h
index 6969fc2d38c64f5c994fdb658a0ee526f66b0906..f44ace3253ef55bad9fa0dc9dd6c39497fd70008 100644
--- a/chrome/browser/views/extensions/extension_popup.h
+++ b/chrome/browser/views/extensions/extension_popup.h
@@ -23,9 +23,20 @@ class Widget;
}
class ExtensionPopup : public BrowserBubble,
+ public BrowserBubble::Delegate,
public NotificationObserver,
- public ExtensionView::Container {
+ public ExtensionView::Container,
+ public base::RefCounted<ExtensionPopup> {
public:
+ // Observer to ExtensionPopup events.
+ class Observer {
+ public:
+ // Called when the ExtensionPopup has closed. Note that it
+ // is ref-counted, and thus will be released shortly after
+ // making this delegate call.
+ virtual void ExtensionPopupClosed(ExtensionPopup* popup) {}
+ };
+
enum PopupChrome {
BUBBLE_CHROME,
RECTANGLE_CHROME
@@ -47,6 +58,8 @@ class ExtensionPopup : public BrowserBubble,
// If |arrow_location| is BOTTOM_*, then the popup 'pops up', otherwise
// the popup 'drops down'.
// Pass |activate_on_show| as true to activate the popup window.
+ // Pass |inspect_with_devtools| as true to pin the popup open and show the
+ // devtools window for it.
// The |chrome| argument controls the chrome that surrounds the pop-up.
// Passing BUBBLE_CHROME will give the pop-up a bubble-like appearance,
// including the arrow mentioned above. Passing RECTANGLE_CHROME will give
@@ -62,7 +75,20 @@ class ExtensionPopup : public BrowserBubble,
const gfx::Rect& relative_to,
BubbleBorder::ArrowLocation arrow_location,
bool activate_on_show,
- PopupChrome chrome);
+ bool inspect_with_devtools,
+ PopupChrome chrome,
+ Observer* observer);
+
+ // Closes the ExtensionPopup (this will cause the delegate
+ // ExtensionPopupClosed to fire.
+ void Close();
+
+ // Some clients wish to do their own custom focus change management. If this
+ // is set to false, then the ExtensionPopup will not do anything in response
+ // to the BubbleLostFocus() calls it gets from the BrowserBubble.
+ void set_close_on_lost_focus(bool close_on_lost_focus) {
+ close_on_lost_focus_ = close_on_lost_focus;
+ }
ExtensionHost* host() const { return extension_host_.get(); }
@@ -71,6 +97,13 @@ class ExtensionPopup : public BrowserBubble,
virtual void Show(bool activate);
virtual void ResizeToView();
+ // BrowserBubble::Delegate methods.
+ virtual void BubbleBrowserWindowMoved(BrowserBubble* bubble);
+ virtual void BubbleBrowserWindowClosing(BrowserBubble* bubble);
+ virtual void BubbleGotFocus(BrowserBubble* bubble);
+ virtual void BubbleLostFocus(BrowserBubble* bubble,
+ bool lost_focus_to_child);
+
// NotificationObserver overrides.
virtual void Observe(NotificationType type,
const NotificationSource& source,
@@ -93,7 +126,9 @@ class ExtensionPopup : public BrowserBubble,
const gfx::Rect& relative_to,
BubbleBorder::ArrowLocation arrow_location,
bool activate_on_show,
- PopupChrome chrome);
+ bool inspect_with_devtools,
+ PopupChrome chrome,
+ Observer* observer);
// Gives the desired bounds (in screen coordinates) given the rect to point
// to and the size of the contained contents. Includes all of the
@@ -110,6 +145,16 @@ class ExtensionPopup : public BrowserBubble,
// Flag used to indicate if the pop-up should be activated upon first display.
bool activate_on_show_;
+ // Flag used to indicate if the pop-up should open a devtools window once
+ // it is shown inspecting it.
+ bool inspect_with_devtools_;
+
+ // If false, ignore BrowserBubble::Delegate::BubbleLostFocus() calls.
+ bool close_on_lost_focus_;
+
+ // Whether the ExtensionPopup is current going about closing itself.
+ bool closing_;
+
NotificationRegistrar registrar_;
// A separate widget and associated pieces to draw a border behind the
@@ -123,6 +168,9 @@ class ExtensionPopup : public BrowserBubble,
// The type of chrome associated with the popup window.
PopupChrome popup_chrome_;
+ // The observer of this popup.
+ Observer* observer_;
+
// A cached copy of the arrow-position for the bubble chrome.
// If a black-border was requested, we still need this value to determine
// the position of the pop-up in relation to |relative_to_|.
« no previous file with comments | « chrome/browser/views/extensions/extension_action_context_menu.cc ('k') | chrome/browser/views/extensions/extension_popup.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698