diff options
author | beng@google.com <beng@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-09-13 19:40:50 +0000 |
---|---|---|
committer | beng@google.com <beng@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-09-13 19:40:50 +0000 |
commit | fb8f5e9fe66c66122b14fc3de2e9a97b786dd787 (patch) | |
tree | 1dcbf497a86aa56d96dfeeead9ccb2ac4d40415b /chrome/browser/views/tab_contents_container_view.h | |
parent | 5e41359d62d6742eecc04cf8cf487ff8c896bfbb (diff) | |
download | chromium_src-fb8f5e9fe66c66122b14fc3de2e9a97b786dd787.zip chromium_src-fb8f5e9fe66c66122b14fc3de2e9a97b786dd787.tar.gz chromium_src-fb8f5e9fe66c66122b14fc3de2e9a97b786dd787.tar.bz2 |
Move more UI stuff into browser/views
B=2205
Review URL: http://codereview.chromium.org/2825
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@2169 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views/tab_contents_container_view.h')
-rw-r--r-- | chrome/browser/views/tab_contents_container_view.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/chrome/browser/views/tab_contents_container_view.h b/chrome/browser/views/tab_contents_container_view.h new file mode 100644 index 0000000..c904b73 --- /dev/null +++ b/chrome/browser/views/tab_contents_container_view.h @@ -0,0 +1,80 @@ +// Copyright (c) 2006-2008 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 CHROME_BROWSER_VIEWS_TAB_CONTENTS_CONTAINER_VIEW_H__ +#define CHROME_BROWSER_VIEWS_TAB_CONTENTS_CONTAINER_VIEW_H__ + +namespace ChromeView { +class KeyEvent; +class View; +} +class RenderViewHost; +class TabContents; + +#include "chrome/common/notification_service.h" +#include "chrome/views/focus_manager.h" +#include "chrome/views/hwnd_view.h" + +// This View contains the TabContents. +// It takes care of linking the TabContents to the browser RootView so that the +// focus can traverse from one to the other when pressing Tab/Shift-Tab. +class TabContentsContainerView : public ChromeViews::HWNDView, + public NotificationObserver { + public: + TabContentsContainerView(); + virtual ~TabContentsContainerView(); + + // Make the specified tab visible. + void SetTabContents(TabContents* tab_contents); + TabContents* GetTabContents() const { return tab_contents_; } + + // Overridden from View. + virtual ChromeViews::FocusTraversable* GetFocusTraversable(); + virtual bool IsFocusable() const; + virtual void Focus(); + virtual void RequestFocus(); + virtual void AboutToRequestFocusFromTabTraversal(bool reverse); + virtual bool CanProcessTabKeyEvents(); + + // Overridden from HWNDView. + virtual ChromeViews::FocusTraversable* GetFocusTraversableParent(); + virtual ChromeViews::View* GetFocusTraversableParentView(); + + // NotificationObserver implementation. + virtual void Observe(NotificationType type, + const NotificationSource& source, + const NotificationDetails& details); + + // Returns the MSAA role of the current view. The role is what assistive + // technologies (ATs) use to determine what behavior to expect from a given + // control. + bool GetAccessibleRole(VARIANT* role); + + protected: + // Web content should be given first crack at accelerators. This function + // returns false if the current tab is a webcontents. + virtual bool ShouldLookupAccelerators(const ChromeViews::KeyEvent& e); + + private: + // Add or remove observers for events that we care about. + void AddObservers(); + void RemoveObservers(); + + // Called when the RenderViewHost of the hosted TabContents has changed, e.g. + // to show an interstitial page. + void RenderViewHostChanged(RenderViewHost* old_host, + RenderViewHost* new_host); + + // Called when a TabContents is destroyed. This gives us a chance to clean + // up our internal state if the TabContents is somehow destroyed before we + // get notified. + void TabContentsDestroyed(TabContents* contents); + + // The current TabContents shown. + TabContents* tab_contents_; + + DISALLOW_EVIL_CONSTRUCTORS(TabContentsContainerView); +}; + +#endif // #ifndef CHROME_BROWSER_VIEWS_TAB_CONTENTS_CONTAINER_VIEW_H__ |