Index: chrome/browser/ui/views/tab_contents/tab_contents_container_native.cc |
diff --git a/chrome/browser/ui/views/tab_contents/tab_contents_container.cc b/chrome/browser/ui/views/tab_contents/tab_contents_container_native.cc |
similarity index 41% |
copy from chrome/browser/ui/views/tab_contents/tab_contents_container.cc |
copy to chrome/browser/ui/views/tab_contents/tab_contents_container_native.cc |
index 06c34002c3e5c112a86377f3b46517c997e719ee..63cba3d5d9657d86a59e34f3d51de79e7416e351 100644 |
--- a/chrome/browser/ui/views/tab_contents/tab_contents_container.cc |
+++ b/chrome/browser/ui/views/tab_contents/tab_contents_container_native.cc |
@@ -1,4 +1,4 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Copyright (c) 2010 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. |
@@ -13,12 +13,9 @@ |
#include "chrome/common/notification_details.h" |
#include "chrome/common/notification_source.h" |
-#if defined(TOUCH_UI) |
-#include "chrome/browser/ui/views/tab_contents/native_tab_contents_container_gtk.h" |
-#include "chrome/browser/ui/views/tab_contents/tab_contents_view_views.h" |
-#include "views/border.h" |
-#include "views/fill_layout.h" |
-#endif |
+// Some of this class is implemented in tab_contents_container.cc, where |
+// the implementation doesn't vary between a pure views approach and a |
+// native view host approach. See the header file for details. |
//////////////////////////////////////////////////////////////////////////////// |
// TabContentsContainer, public: |
@@ -30,156 +27,60 @@ TabContentsContainer::TabContentsContainer() |
SetID(VIEW_ID_TAB_CONTAINER); |
} |
-TabContentsContainer::~TabContentsContainer() { |
- if (tab_contents_) |
- RemoveObservers(); |
-} |
- |
void TabContentsContainer::ChangeTabContents(TabContents* contents) { |
if (tab_contents_) { |
-#if !defined(TOUCH_UI) |
native_container_->DetachContents(tab_contents_); |
-#else |
- views::View *v = static_cast<TabContentsViewViews*>(tab_contents_->view()); |
- RemoveChildView(v); |
-#endif |
tab_contents_->WasHidden(); |
RemoveObservers(); |
} |
-#if !defined(TOUCH_UI) |
TabContents* old_contents = tab_contents_; |
-#endif |
tab_contents_ = contents; |
// When detaching the last tab of the browser ChangeTabContents is invoked |
// with NULL. Don't attempt to do anything in that case. |
if (tab_contents_) { |
-#if defined(TOUCH_UI) |
- views::View *v = static_cast<TabContentsViewViews*>(contents->view()); |
- // Guard against re-adding ourselves, which happens because the NULL |
- // value is ignored by the pre-existing if() above. |
- if (v->GetParent() != this) { |
- AddChildView(v); |
- SetLayoutManager(new views::FillLayout()); |
- Layout(); |
- } |
-#else |
RenderWidgetHostViewChanged( |
old_contents ? old_contents->GetRenderWidgetHostView() : NULL, |
tab_contents_->GetRenderWidgetHostView()); |
native_container_->AttachContents(tab_contents_); |
-#endif |
AddObservers(); |
} |
} |
void TabContentsContainer::TabContentsFocused(TabContents* tab_contents) { |
- if (native_container_) |
- native_container_->TabContentsFocused(tab_contents); |
+ native_container_->TabContentsFocused(tab_contents); |
} |
void TabContentsContainer::SetFastResize(bool fast_resize) { |
- if (native_container_) |
- native_container_->SetFastResize(fast_resize); |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
-// TabContentsContainer, NotificationObserver implementation: |
- |
-void TabContentsContainer::Observe(NotificationType type, |
- const NotificationSource& source, |
- const NotificationDetails& details) { |
- if (type == NotificationType::RENDER_VIEW_HOST_CHANGED) { |
- RenderViewHostSwitchedDetails* switched_details = |
- Details<RenderViewHostSwitchedDetails>(details).ptr(); |
- RenderViewHostChanged(switched_details->old_host, |
- switched_details->new_host); |
- } else if (type == NotificationType::TAB_CONTENTS_DESTROYED) { |
- TabContentsDestroyed(Source<TabContents>(source).ptr()); |
- } else { |
- NOTREACHED(); |
- } |
+ native_container_->SetFastResize(fast_resize); |
} |
//////////////////////////////////////////////////////////////////////////////// |
// TabContentsContainer, View overrides: |
void TabContentsContainer::Layout() { |
-#if defined(TOUCH_UI) |
- views::View::Layout(); |
-#else |
- if (native_container_) { |
sky
2011/01/12 19:06:53
You need this if.
Alex Nicolaou
2011/01/13 15:56:29
Oh :( You're right, this pre-exists my previous ch
|
- if (reserved_area_delegate_) |
- reserved_area_delegate_->UpdateReservedContentsRect(this); |
- native_container_->GetView()->SetBounds(0, 0, width(), height()); |
- native_container_->GetView()->Layout(); |
- } |
-#endif |
-} |
- |
-AccessibilityTypes::Role TabContentsContainer::GetAccessibleRole() { |
- return AccessibilityTypes::ROLE_WINDOW; |
+ if (reserved_area_delegate_) |
+ reserved_area_delegate_->UpdateReservedContentsRect(this); |
+ native_container_->GetView()->SetBounds(0, 0, width(), height()); |
+ native_container_->GetView()->Layout(); |
} |
void TabContentsContainer::ViewHierarchyChanged(bool is_add, |
views::View* parent, |
views::View* child) { |
-#if defined(TOUCH_UI) |
- views::View::ViewHierarchyChanged(is_add, parent, child); |
-#else |
if (is_add && child == this) { |
native_container_ = NativeTabContentsContainer::CreateNativeContainer(this); |
AddChildView(native_container_->GetView()); |
} |
-#endif |
} |
//////////////////////////////////////////////////////////////////////////////// |
// TabContentsContainer, private: |
-void TabContentsContainer::AddObservers() { |
- // TabContents can change their RenderViewHost and hence the HWND that is |
- // shown and getting focused. We need to keep track of that so we install |
- // the focus subclass on the shown HWND so we intercept focus change events. |
- registrar_.Add(this, |
- NotificationType::RENDER_VIEW_HOST_CHANGED, |
- Source<NavigationController>(&tab_contents_->controller())); |
- |
- registrar_.Add(this, |
- NotificationType::TAB_CONTENTS_DESTROYED, |
- Source<TabContents>(tab_contents_)); |
-} |
- |
-void TabContentsContainer::RemoveObservers() { |
- registrar_.RemoveAll(); |
-} |
- |
void TabContentsContainer::RenderViewHostChanged(RenderViewHost* old_host, |
RenderViewHost* new_host) { |
-#if defined(TOUCH_UI) |
- NOTIMPLEMENTED(); // TODO(anicolao) |
-#else |
if (new_host) { |
RenderWidgetHostViewChanged( |
old_host ? old_host->view() : NULL, new_host->view()); |
} |
native_container_->RenderViewHostChanged(old_host, new_host); |
-#endif |
-} |
- |
-void TabContentsContainer::TabContentsDestroyed(TabContents* contents) { |
- // Sometimes, a TabContents is destroyed before we know about it. This allows |
- // us to clean up our state in case this happens. |
- DCHECK(contents == tab_contents_); |
- ChangeTabContents(NULL); |
-} |
- |
-void TabContentsContainer::RenderWidgetHostViewChanged( |
- RenderWidgetHostView* old_view, RenderWidgetHostView* new_view) { |
- // Carry over the reserved rect, if possible. |
- if (old_view && new_view) { |
- new_view->set_reserved_contents_rect(old_view->reserved_contents_rect()); |
- } else { |
- if (reserved_area_delegate_) |
- reserved_area_delegate_->UpdateReservedContentsRect(this); |
- } |
} |