Index: chrome/browser/ui/gtk/web_contents_modal_dialog_manager_gtk.cc |
diff --git a/chrome/browser/ui/gtk/web_contents_modal_dialog_manager_gtk.cc b/chrome/browser/ui/gtk/web_contents_modal_dialog_manager_gtk.cc |
deleted file mode 100644 |
index 6d6dc6cab265c560051ce937999c32909cbccc21..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/gtk/web_contents_modal_dialog_manager_gtk.cc |
+++ /dev/null |
@@ -1,160 +0,0 @@ |
-// Copyright (c) 2013 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. |
- |
-#include "chrome/browser/ui/gtk/gtk_util.h" |
-#include "chrome/browser/ui/gtk/tab_contents/chrome_web_contents_view_delegate_gtk.h" |
-#include "components/web_modal/native_web_contents_modal_dialog_manager.h" |
-#include "components/web_modal/web_contents_modal_dialog_manager.h" |
-#include "content/public/browser/browser_thread.h" |
-#include "ui/base/gtk/focus_store_gtk.h" |
- |
-using web_modal::NativeWebContentsModalDialog; |
-using web_modal::NativeWebContentsModalDialogManagerDelegate; |
- |
-namespace { |
- |
-// Web contents modal dialog manager implementation for the GTK port. Unlike the |
-// Win32 system, ConstrainedWindowGtk doesn't draw draggable fake windows and |
-// instead just centers the dialog. It is thus an order of magnitude simpler. |
-class NativeWebContentsModalDialogManagerGtk |
- : public web_modal::NativeWebContentsModalDialogManager { |
- public: |
- NativeWebContentsModalDialogManagerGtk( |
- NativeWebContentsModalDialogManagerDelegate* native_delegate) |
- : native_delegate_(native_delegate), |
- shown_widget_(NULL) { |
- } |
- |
- virtual ~NativeWebContentsModalDialogManagerGtk() { |
- } |
- |
- // NativeWebContentsModalDialogManager overrides |
- virtual void ManageDialog(NativeWebContentsModalDialog dialog) OVERRIDE { |
- DCHECK(g_object_is_floating(GetGtkWidget(dialog))); |
- g_object_ref_sink(GetGtkWidget(dialog)); |
- |
- g_signal_connect(GetGtkWidget(dialog), "hierarchy-changed", |
- G_CALLBACK(OnHierarchyChangedThunk), this); |
- g_signal_connect(GetGtkWidget(dialog), |
- "destroy", |
- G_CALLBACK(OnDestroyThunk), |
- this); |
- } |
- |
- virtual void ShowDialog(NativeWebContentsModalDialog dialog) OVERRIDE { |
- GtkWidget* widget = GetGtkWidget(dialog); |
- |
- // Any previously-shown widget should be destroyed before showing a new |
- // widget. |
- DCHECK(shown_widget_ == widget || shown_widget_ == NULL); |
- gtk_widget_show_all(widget); |
- |
- if (!shown_widget_) { |
- // We collaborate with WebContentsView and stick ourselves in the |
- // WebContentsView's floating container. |
- ContainingView()->AttachWebContentsModalDialog(widget); |
- } |
- |
- shown_widget_ = widget; |
- } |
- |
- virtual void HideDialog(NativeWebContentsModalDialog dialog) OVERRIDE { |
- gtk_widget_hide(GetGtkWidget(dialog)); |
- } |
- |
- virtual void CloseDialog(NativeWebContentsModalDialog dialog) OVERRIDE { |
- gtk_widget_destroy(GetGtkWidget(dialog)); |
- } |
- |
- virtual void FocusDialog(NativeWebContentsModalDialog dialog) OVERRIDE { |
- GtkWidget* focus_widget = |
- reinterpret_cast<GtkWidget*>( |
- g_object_get_data(G_OBJECT(GetGtkWidget(dialog)), "focus_widget")); |
- |
- if (!focus_widget) |
- return; |
- |
- // The user may have focused another tab. In this case do not grab focus |
- // until this tab is refocused. |
- if (gtk_util::IsWidgetAncestryVisible(focus_widget)) |
- gtk_widget_grab_focus(focus_widget); |
- else |
- ContainingView()->focus_store()->SetWidget(focus_widget); |
- } |
- |
- virtual void PulseDialog(NativeWebContentsModalDialog dialog) OVERRIDE { |
- } |
- |
- virtual void HostChanged( |
- web_modal::WebContentsModalDialogHost* new_host) OVERRIDE { |
- } |
- |
- private: |
- typedef ChromeWebContentsViewDelegateGtk TabContentsViewType; |
- |
- GtkWidget* GetGtkWidget(NativeWebContentsModalDialog dialog) { |
- return GTK_WIDGET(dialog); |
- } |
- |
- // Returns the View that we collaborate with to position ourselves. |
- TabContentsViewType* ContainingView() const { |
- // WebContents may be destroyed already on tab shutdown. |
- content::WebContents* web_contents = native_delegate_->GetWebContents(); |
- return web_contents ? |
- ChromeWebContentsViewDelegateGtk::GetFor(web_contents) : NULL; |
- } |
- |
- CHROMEGTK_CALLBACK_1(NativeWebContentsModalDialogManagerGtk, |
- void, |
- OnHierarchyChanged, |
- GtkWidget*); |
- CHROMEGTK_CALLBACK_0(NativeWebContentsModalDialogManagerGtk, void, OnDestroy); |
- |
- NativeWebContentsModalDialogManagerDelegate* native_delegate_; |
- |
- // The widget currently being shown. |
- GtkWidget* shown_widget_; |
- |
- DISALLOW_COPY_AND_ASSIGN(NativeWebContentsModalDialogManagerGtk); |
-}; |
- |
-void NativeWebContentsModalDialogManagerGtk::OnHierarchyChanged( |
- GtkWidget* sender, |
- GtkWidget* previous_toplevel) { |
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
- |
- if (!gtk_widget_is_toplevel(gtk_widget_get_toplevel(sender))) |
- return; |
- |
- FocusDialog(sender); |
-} |
- |
-void NativeWebContentsModalDialogManagerGtk::OnDestroy( |
- GtkWidget* sender) { |
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
- |
- if (shown_widget_ == sender) { |
- // The containing view may already be destroyed on tab shutdown. |
- if (ContainingView()) |
- ContainingView()->RemoveWebContentsModalDialog(sender); |
- |
- shown_widget_ = NULL; |
- } |
- |
- native_delegate_->WillClose(sender); |
- |
- g_object_unref(sender); |
-} |
- |
-} // namespace |
- |
-namespace web_modal { |
- |
-NativeWebContentsModalDialogManager* |
- WebContentsModalDialogManager::CreateNativeManager( |
- NativeWebContentsModalDialogManagerDelegate* native_delegate) { |
- return new NativeWebContentsModalDialogManagerGtk(native_delegate); |
-} |
- |
-} // namespace web_modal |