Index: components/constrained_window/constrained_window_views.cc |
diff --git a/chrome/browser/ui/views/constrained_window_views.cc b/components/constrained_window/constrained_window_views.cc |
similarity index 77% |
rename from chrome/browser/ui/views/constrained_window_views.cc |
rename to components/constrained_window/constrained_window_views.cc |
index 12505294de9f17564b4e38751921d880bc722092..bfc365f530f2cc1ebdcc17b72bbfb54251fff950 100644 |
--- a/chrome/browser/ui/views/constrained_window_views.cc |
+++ b/components/constrained_window/constrained_window_views.cc |
@@ -2,14 +2,13 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/ui/views/constrained_window_views.h" |
+#include "components/constrained_window/constrained_window_views.h" |
#include <algorithm> |
-#include "chrome/browser/ui/browser_finder.h" |
+#include "components/constrained_window/constrained_window_views_client.h" |
#include "components/web_modal/popup_manager.h" |
#include "components/web_modal/web_contents_modal_dialog_host.h" |
-#include "extensions/browser/guest_view/guest_view_base.h" |
#include "ui/views/border.h" |
#include "ui/views/widget/widget.h" |
#include "ui/views/widget/widget_observer.h" |
@@ -19,19 +18,22 @@ using web_modal::ModalDialogHost; |
using web_modal::ModalDialogHostObserver; |
namespace { |
+ |
+ConstrainedWindowViewsClient* client_ = NULL; |
msw
2014/10/22 21:32:43
nit: should this be |g_client|?
oshima
2014/10/22 22:39:09
Technically speaking, this is not global variable
msw
2014/10/23 18:49:05
Hmm, maybe just |constrained_window_views_client|
oshima
2014/10/23 20:54:47
Done.
|
+ |
// The name of a key to store on the window handle to associate |
-// BrowserModalDialogHostObserverViews with the Widget. |
-const char* const kBrowserModalDialogHostObserverViewsKey = |
- "__BROWSER_MODAL_DIALOG_HOST_OBSERVER_VIEWS__"; |
+// WidgetModalDialogHostObserverViews with the Widget. |
+const char* const kWidgetModalDialogHostObserverViewsKey = |
+ "__WIDGET_MODAL_DIALOG_HOST_OBSERVER_VIEWS__"; |
// Applies positioning changes from the ModalDialogHost to the Widget. |
-class BrowserModalDialogHostObserverViews |
+class WidgetModalDialogHostObserverViews |
: public views::WidgetObserver, |
public ModalDialogHostObserver { |
public: |
- BrowserModalDialogHostObserverViews(ModalDialogHost* host, |
- views::Widget* target_widget, |
- const char *const native_window_property) |
+ WidgetModalDialogHostObserverViews(ModalDialogHost* host, |
+ views::Widget* target_widget, |
+ const char *const native_window_property) |
: host_(host), |
target_widget_(target_widget), |
native_window_property_(native_window_property) { |
@@ -41,7 +43,7 @@ class BrowserModalDialogHostObserverViews |
target_widget_->AddObserver(this); |
} |
- virtual ~BrowserModalDialogHostObserverViews() { |
+ virtual ~WidgetModalDialogHostObserverViews() { |
if (host_) |
host_->RemoveObserver(this); |
target_widget_->RemoveObserver(this); |
@@ -55,7 +57,7 @@ class BrowserModalDialogHostObserverViews |
// WebContentsModalDialogHostObserver overrides |
virtual void OnPositionRequiresUpdate() override { |
- UpdateBrowserModalDialogPosition(target_widget_, host_); |
+ UpdateWidgetModalDialogPosition(target_widget_, host_); |
} |
virtual void OnHostDestroying() override { |
@@ -68,7 +70,7 @@ class BrowserModalDialogHostObserverViews |
views::Widget* target_widget_; |
const char* const native_window_property_; |
- DISALLOW_COPY_AND_ASSIGN(BrowserModalDialogHostObserverViews); |
+ DISALLOW_COPY_AND_ASSIGN(WidgetModalDialogHostObserverViews); |
}; |
void UpdateModalDialogPosition(views::Widget* widget, |
@@ -98,6 +100,13 @@ void UpdateModalDialogPosition(views::Widget* widget, |
} // namespace |
+// static |
+void SetConstrainedWindowViewsClient( |
+ scoped_ptr<ConstrainedWindowViewsClient> client) { |
+ delete client_; |
+ client_ = client.release(); |
+} |
+ |
void UpdateWebContentsModalDialogPosition( |
views::Widget* widget, |
web_modal::WebContentsModalDialogHost* dialog_host) { |
@@ -114,7 +123,7 @@ void UpdateWebContentsModalDialogPosition( |
UpdateModalDialogPosition(widget, dialog_host, size); |
} |
-void UpdateBrowserModalDialogPosition(views::Widget* widget, |
+void UpdateWidgetModalDialogPosition(views::Widget* widget, |
web_modal::ModalDialogHost* dialog_host) { |
msw
2014/10/22 21:32:43
nit fix indent
oshima
2014/10/22 22:39:09
Done.
|
UpdateModalDialogPosition(widget, dialog_host, |
widget->GetRootView()->GetPreferredSize()); |
@@ -123,13 +132,11 @@ void UpdateBrowserModalDialogPosition(views::Widget* widget, |
views::Widget* ShowWebModalDialogViews( |
views::WidgetDelegate* dialog, |
content::WebContents* initiator_web_contents) { |
- extensions::GuestViewBase* guest_view = |
- extensions::GuestViewBase::FromWebContents(initiator_web_contents); |
+ DCHECK(client_); |
// For embedded WebContents, use the embedder's WebContents for constrained |
// window. |
content::WebContents* web_contents = |
- guest_view && guest_view->embedder_web_contents() ? |
- guest_view->embedder_web_contents() : initiator_web_contents; |
+ client_->GetEmbedderWebContents(initiator_web_contents); |
views::Widget* widget = CreateWebModalDialogViews(dialog, web_contents); |
web_modal::PopupManager* popup_manager = |
web_modal::PopupManager::FromWebContents(web_contents); |
@@ -153,16 +160,13 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, |
views::DialogDelegate::CreateDialogWidget(dialog, NULL, parent); |
if (!dialog->UseNewStyleForThisDialog()) |
return widget; |
- |
- // Get the browser dialog management and hosting components from |parent|. |
- Browser* browser = chrome::FindBrowserWithWindow(parent); |
- if (browser) { |
- ChromeWebModalDialogManagerDelegate* manager = browser; |
- ModalDialogHost* host = manager->GetWebContentsModalDialogHost(); |
+ DCHECK(client_); |
+ ModalDialogHost* host = client_->GetModalDialogHost(parent); |
+ if (host) { |
DCHECK_EQ(parent, host->GetHostView()); |
ModalDialogHostObserver* dialog_host_observer = |
msw
2014/10/22 21:32:43
Huh, what's the ownership story here? Is this inte
oshima
2014/10/22 22:39:09
it's owned by the widget and deleted in OnWidgetCl
msw
2014/10/23 18:49:05
Acknowledged.
|
- new BrowserModalDialogHostObserverViews( |
- host, widget, kBrowserModalDialogHostObserverViewsKey); |
+ new WidgetModalDialogHostObserverViews( |
+ host, widget, kWidgetModalDialogHostObserverViewsKey); |
dialog_host_observer->OnPositionRequiresUpdate(); |
} |
return widget; |