Index: chrome/browser/tab_contents/tab_contents_view_gtk.cc |
diff --git a/chrome/browser/tab_contents/tab_contents_view_gtk.cc b/chrome/browser/tab_contents/tab_contents_view_gtk.cc |
index 4284f6409a4696bbdaec88917ab4555cae268333..d297b99fcc0081d61a023c463a230c73581e44fe 100644 |
--- a/chrome/browser/tab_contents/tab_contents_view_gtk.cc |
+++ b/chrome/browser/tab_contents/tab_contents_view_gtk.cc |
@@ -13,11 +13,9 @@ |
#include "base/string_util.h" |
#include "base/utf_string_conversions.h" |
#include "build/build_config.h" |
-#include "chrome/browser/browser_shutdown.h" |
#include "chrome/browser/tab_contents/render_view_context_menu_gtk.h" |
#include "chrome/browser/tab_contents/web_drag_bookmark_handler_gtk.h" |
#include "chrome/browser/ui/gtk/constrained_window_gtk.h" |
-#include "chrome/browser/ui/gtk/sad_tab_gtk.h" |
#include "content/browser/renderer_host/render_view_host.h" |
#include "content/browser/renderer_host/render_view_host_factory.h" |
#include "content/browser/renderer_host/render_widget_host_view_gtk.h" |
@@ -26,8 +24,6 @@ |
#include "content/browser/tab_contents/tab_contents_delegate.h" |
#include "content/browser/tab_contents/web_drag_dest_gtk.h" |
#include "content/browser/tab_contents/web_drag_source_gtk.h" |
-#include "content/public/browser/notification_source.h" |
-#include "content/public/browser/notification_types.h" |
#include "ui/base/gtk/gtk_expanded_container.h" |
#include "ui/base/gtk/gtk_floating_container.h" |
#include "ui/gfx/point.h" |
@@ -81,7 +77,8 @@ TabContentsViewGtk::TabContentsViewGtk(TabContents* tab_contents) |
: tab_contents_(tab_contents), |
floating_(gtk_floating_container_new()), |
expanded_(gtk_expanded_container_new()), |
- constrained_window_(NULL) { |
+ constrained_window_(NULL), |
+ overlaid_view_(NULL) { |
gtk_widget_set_name(expanded_, "chrome-tab-contents-view"); |
g_signal_connect(expanded_, "size-allocate", |
G_CALLBACK(OnSizeAllocateThunk), this); |
@@ -93,8 +90,6 @@ TabContentsViewGtk::TabContentsViewGtk(TabContents* tab_contents) |
gtk_container_add(GTK_CONTAINER(floating_.get()), expanded_); |
gtk_widget_show(expanded_); |
gtk_widget_show(floating_.get()); |
- registrar_.Add(this, content::NOTIFICATION_TAB_CONTENTS_CONNECTED, |
- content::Source<TabContents>(tab_contents)); |
drag_source_.reset(new content::WebDragSourceGtk(tab_contents)); |
} |
@@ -198,20 +193,6 @@ void TabContentsViewGtk::SetPageTitle(const string16& title) { |
void TabContentsViewGtk::OnTabCrashed(base::TerminationStatus status, |
int error_code) { |
- // Only show the sad tab if we're not in browser shutdown, so that TabContents |
- // objects that are not in a browser (e.g., HTML dialogs) and thus are |
- // visible do not flash a sad tab page. |
- if (browser_shutdown::GetShutdownType() != browser_shutdown::NOT_VALID) |
- return; |
- |
- if (tab_contents_ != NULL && !sad_tab_.get()) { |
- sad_tab_.reset(new SadTabGtk( |
- tab_contents_, |
- status == base::TERMINATION_STATUS_PROCESS_WAS_KILLED ? |
- SadTabGtk::KILLED : SadTabGtk::CRASHED)); |
- InsertIntoContentArea(sad_tab_->widget()); |
- gtk_widget_show(sad_tab_->widget()); |
- } |
} |
void TabContentsViewGtk::SizeContents(const gfx::Size& size) { |
@@ -279,6 +260,19 @@ void TabContentsViewGtk::GetViewBounds(gfx::Rect* out) const { |
out->SetRect(x, y, w, h); |
} |
+void TabContentsViewGtk::InstallOverlayView(gfx::NativeView view) { |
+ DCHECK(!overlaid_view_); |
+ overlaid_view_ = view; |
+ InsertIntoContentArea(view); |
+ gtk_widget_show(view); |
+} |
+ |
+void TabContentsViewGtk::RemoveOverlayView() { |
+ DCHECK(overlaid_view_); |
+ gtk_container_remove(GTK_CONTAINER(expanded_), overlaid_view_); |
+ overlaid_view_ = NULL; |
+} |
+ |
void TabContentsViewGtk::SetFocusedWidget(GtkWidget* widget) { |
focus_store_.SetWidget(widget); |
} |
@@ -301,24 +295,6 @@ void TabContentsViewGtk::TakeFocus(bool reverse) { |
} |
} |
-void TabContentsViewGtk::Observe(int type, |
- const content::NotificationSource& source, |
- const content::NotificationDetails& details) { |
- switch (type) { |
- case content::NOTIFICATION_TAB_CONTENTS_CONNECTED: { |
- // No need to remove the SadTabGtk's widget from the container since |
- // the new RenderWidgetHostViewGtk instance already removed all the |
- // vbox's children. |
- sad_tab_.reset(); |
- break; |
- } |
- default: |
- NOTREACHED() << "Got a notification we didn't register for."; |
- break; |
- } |
-} |
- |
- |
void TabContentsViewGtk::CreateNewWindow( |
int route_id, |
const ViewHostMsg_CreateWindow_Params& params) { |