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

Unified Diff: components/web_modal/single_popup_manager.h

Issue 287123002: [WebModals] New API for browser-scoped popup management. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tweaks Created 6 years, 6 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: components/web_modal/single_popup_manager.h
diff --git a/components/web_modal/single_popup_manager.h b/components/web_modal/single_popup_manager.h
new file mode 100644
index 0000000000000000000000000000000000000000..26a4f0b94b5c33bff1b214a1acfd5d3b3c84d6ed
--- /dev/null
+++ b/components/web_modal/single_popup_manager.h
@@ -0,0 +1,95 @@
+// Copyright 2014 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 COMPONENTS_WEB_MODAL_SINGLE_POPUP_MANAGER_H_
+#define COMPONENTS_WEB_MODAL_SINGLE_POPUP_MANAGER_H_
+
+#include "components/web_modal/native_web_contents_modal_dialog.h"
+
+namespace content {
+class WebContents;
+}
+
+namespace web_modal {
+
+// Interface from SinglePopupManager to PopupManager.
+class SinglePopupManagerDelegate {
Finnur 2014/06/30 13:53:36 I kind of would have expected to see this class wi
Greg Billock 2014/07/01 00:53:05 Not really. It's descending from the modal dlg mgr
+ public:
+ SinglePopupManagerDelegate() {}
+ virtual ~SinglePopupManagerDelegate() {}
+
+ // Notify the delegate that the dialog is closing. The
+ // calling SinglePopupManager will be deleted before the end of this call.
+ virtual void WillClose(NativePopup popup) = 0;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(SinglePopupManagerDelegate);
+};
+
+// Provides an interface for platform-specific UI implementation for popups.
+// Each object will manage a single NativePopup window during its lifecycle.
+// The rule of thumb is that only one popup will be shown at a time per tab.
+// (Exceptions exist.)
+//
+// Implementation classes should accept a NativePopup at construction time
+// and register to be notified when the dialog is closing, so that it can
+// notify its delegate (WillClose method).
+class SinglePopupManager {
+ public:
+ virtual ~SinglePopupManager() {}
+
+ // If the manager returns non-null to this call, it is bound to a particular
+ // tab and will be hidden and shown if that tab visibility changes.
+ virtual content::WebContents* GetBoundWebContents() = 0;
+
+ // Makes the popup visible.
+ virtual void Show() = 0;
+
+ // Hides the popup without closing it.
+ virtual void Hide() = 0;
+
+ // Closes the popup.
+ // This method must call WillClose() on the delegate.
+ // Important note: this object will be deleted at the close of that
+ // invocation.
+ virtual void Close() = 0;
+
+ // Sets focus on the popup.
+ virtual void Focus() = 0;
+
+ virtual void Pulse() = 0;
Finnur 2014/06/30 13:53:36 nit: Pulsate the popup, in order to draw the user'
Greg Billock 2014/07/01 00:53:05 Done.
+
+ // Returns the popup under management by this object.
+ virtual NativePopup popup() = 0;
+
+ // Returns true if the popup under management was initiated by a user
+ // gesture. When this is true, the popup manager will hide any existing
+ // popups and move the newly-created NativePopup to the top of the display
+ // queue.
+ virtual bool HasUserGesture() = 0;
+
+ // Returns true if the popup under management is tolerant of being overlapped
+ // by other popups. This may be true for large web-modals which cover most of
+ // the window real estate (e.g. print preview).
+ virtual bool MayBeOverlapped() = 0;
+
+ // Returns true if the popup under management should close if there is a
+ // navigation underneath it, including the showing of any interstitial
+ // content. Popups which relate to the web content being displayed will
+ // ordinarily set this to true.
+ // TODO(gbillock): should be generalized in code location or by splitting
+ // the API to support the same-origin logic in WCMDM::DidNavigateMainFrame.
+ // TBD right now because we're not sure which knobs need to be set here.
+ virtual bool ShouldCloseOnNavigation() = 0;
+
+ protected:
+ SinglePopupManager() {}
Finnur 2014/06/30 13:53:36 nit: You have two ctors and two dtors in this .h f
Greg Billock 2014/07/01 00:53:05 These are interface stubs, which my impression was
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(SinglePopupManager);
+};
+
+} // namespace web_modal
+
+#endif // COMPONENTS_WEB_MODAL_SINGLE_POPUP_MANAGER_H_

Powered by Google App Engine
This is Rietveld 408576698