summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-09 00:39:35 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-09 00:39:35 +0000
commit3a3cf4d1334d48a2668f544c8160736c323e430a (patch)
tree010ca1aefe8ba48c599cd4acde087f94d4b99518 /chrome/browser
parent45336e532867061a431a27df87b89555c396135f (diff)
downloadchromium_src-3a3cf4d1334d48a2668f544c8160736c323e430a.zip
chromium_src-3a3cf4d1334d48a2668f544c8160736c323e430a.tar.gz
chromium_src-3a3cf4d1334d48a2668f544c8160736c323e430a.tar.bz2
Aura: Set focusable on textfield but not on location bar
Aura uses views textfield and needs to set focusable on omnibox instead of location bar. I used "views::Widget::IsPureViews" instead of ifdef because this allow us to provide a flag to enable views textfield on widnows. BUG=106632 TEST=BrowserFocusTest pass Review URL: http://codereview.chromium.org/8832002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@113709 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/browser_focus_uitest.cc22
-rw-r--r--chrome/browser/ui/views/frame/browser_view.cc2
-rw-r--r--chrome/browser/ui/views/frame/browser_view_layout.cc2
-rw-r--r--chrome/browser/ui/views/location_bar/location_bar_view.cc22
-rw-r--r--chrome/browser/ui/views/location_bar/location_bar_view.h7
-rw-r--r--chrome/browser/ui/views/omnibox/omnibox_view_views.cc8
-rw-r--r--chrome/browser/ui/views/omnibox/omnibox_view_views.h7
7 files changed, 54 insertions, 16 deletions
diff --git a/chrome/browser/browser_focus_uitest.cc b/chrome/browser/browser_focus_uitest.cc
index f777b6f..629ca09 100644
--- a/chrome/browser/browser_focus_uitest.cc
+++ b/chrome/browser/browser_focus_uitest.cc
@@ -50,22 +50,20 @@
#include "base/string_util.h"
#endif
-#if defined(OS_LINUX)
-#define MAYBE_FocusTraversal FocusTraversal
-#define MAYBE_FocusTraversalOnInterstitial FocusTraversalOnInterstitial
-// TODO(jcampan): http://crbug.com/23683
-#define MAYBE_TabsRememberFocusFindInPage FAILS_TabsRememberFocusFindInPage
-#elif defined(OS_MACOSX)
-// TODO(suzhe): http://crbug.com/60973 (following two tests)
+#if defined(OS_MACOSX)
+// TODO(suzhe): http://crbug.com/60973
#define MAYBE_FocusTraversal DISABLED_FocusTraversal
#define MAYBE_FocusTraversalOnInterstitial DISABLED_FocusTraversalOnInterstitial
-// TODO(suzhe): http://crbug.com/49737
-#define MAYBE_TabsRememberFocusFindInPage FAILS_TabsRememberFocusFindInPage
-#elif defined(OS_WIN)
-// Disabled, http://crbug.com/62543.
+#else
#define MAYBE_FocusTraversal FocusTraversal
-// Disabled, http://crbug.com/62544.
#define MAYBE_FocusTraversalOnInterstitial FocusTraversalOnInterstitial
+#endif
+
+#if defined(OS_LINUX) || defined(OS_MACOSX)
+// TODO(jcampan): http://crbug.com/23683 for linux.
+// TODO(suzhe): http://crbug.com/49737 for mac.
+#define MAYBE_TabsRememberFocusFindInPage FAILS_TabsRememberFocusFindInPage
+#elif defined(OS_WIN)
// Flaky, http://crbug.com/62537.
#define MAYBE_TabsRememberFocusFindInPage FLAKY_TabsRememberFocusFindInPage
#endif
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index f0363a9..5dae6d5 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -875,7 +875,7 @@ void BrowserView::SetFocusToLocationBar(bool select_all) {
#endif
LocationBarView* location_bar = GetLocationBarView();
- if (location_bar->IsFocusableInRootView()) {
+ if (location_bar->IsLocationEntryFocusableInRootView()) {
// Location bar got focus.
location_bar->FocusLocation(select_all);
} else {
diff --git a/chrome/browser/ui/views/frame/browser_view_layout.cc b/chrome/browser/ui/views/frame/browser_view_layout.cc
index d9e2d2b..70478a2 100644
--- a/chrome/browser/ui/views/frame/browser_view_layout.cc
+++ b/chrome/browser/ui/views/frame/browser_view_layout.cc
@@ -323,7 +323,7 @@ int BrowserViewLayout::LayoutTabStripRegion() {
int BrowserViewLayout::LayoutToolbar(int top) {
int browser_view_width = vertical_layout_rect_.width();
bool toolbar_visible = browser_view_->IsToolbarVisible();
- toolbar_->location_bar()->set_focusable(toolbar_visible);
+ toolbar_->location_bar()->SetLocationEntryFocusable(toolbar_visible);
int y = top;
y -= (toolbar_visible && browser_view_->IsTabStripVisible()) ?
kToolbarTabStripVerticalOverlap : 0;
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc
index 5ee8ed6..b495217 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.cc
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -57,7 +57,6 @@
#include "ui/gfx/image/image.h"
#include "ui/gfx/skia_util.h"
#include "ui/views/controls/label.h"
-#include "ui/views/controls/textfield/native_textfield_views.h"
#include "ui/views/drag_utils.h"
#if !defined(OS_CHROMEOS)
@@ -77,6 +76,12 @@ TabContents* GetTabContentsFromDelegate(LocationBarView::Delegate* delegate) {
return wrapper ? wrapper->tab_contents() : NULL;
}
+// A utility function to cast OmniboxView to OmniboxViewViews.
+OmniboxViewViews* AsViews(OmniboxView* view) {
+ DCHECK(views::Widget::IsPureViews());
+ return static_cast<OmniboxViewViews*>(view);
+}
+
} // namespace
// static
@@ -134,7 +139,6 @@ LocationBarView::LocationBarView(Browser* browser,
template_url_service_(NULL),
animation_offset_(0) {
set_id(VIEW_ID_LOCATION_BAR);
- set_focusable(true);
if (mode_ == NORMAL) {
painter_.reset(
@@ -193,6 +197,7 @@ void LocationBarView::Init() {
browser_->command_updater(),
mode_ == POPUP,
this));
+ SetLocationEntryFocusable(true);
location_entry_view_ = location_entry_->AddToView(this);
location_entry_view_->set_id(VIEW_ID_AUTOCOMPLETE);
@@ -444,6 +449,19 @@ string16 LocationBarView::GetInstantSuggestion() const {
}
#endif
+void LocationBarView::SetLocationEntryFocusable(bool focusable) {
+ if (views::Widget::IsPureViews())
+ AsViews(location_entry_.get())->SetLocationEntryFocusable(focusable);
+ else
+ set_focusable(focusable);
+}
+
+bool LocationBarView::IsLocationEntryFocusableInRootView() const {
+ return views::Widget::IsPureViews() ?
+ AsViews(location_entry_.get())->IsLocationEntryFocusableInRootView() :
+ views::View::IsFocusableInRootView();
+}
+
gfx::Size LocationBarView::GetPreferredSize() {
return gfx::Size(0, GetThemeProvider()->GetBitmapNamed(mode_ == POPUP ?
IDR_LOCATIONBG_POPUPMODE_CENTER : IDR_LOCATIONBG_C)->height());
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.h b/chrome/browser/ui/views/location_bar/location_bar_view.h
index 6578725..8d00e17 100644
--- a/chrome/browser/ui/views/location_bar/location_bar_view.h
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.h
@@ -168,6 +168,13 @@ class LocationBarView : public LocationBar,
string16 GetInstantSuggestion() const;
#endif
+ // Sets whether the location entry can accept focus.
+ void SetLocationEntryFocusable(bool focusable);
+
+ // Returns true if the location entry is focusable and visible in
+ // the root view.
+ bool IsLocationEntryFocusableInRootView() const;
+
// Sizing functions
virtual gfx::Size GetPreferredSize() OVERRIDE;
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
index eb71f3b..808241c 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -293,6 +293,14 @@ void OmniboxViewViews::HandleFocusOut() {
controller_->OnKillFocus();
}
+void OmniboxViewViews::SetLocationEntryFocusable(bool focusable) {
+ textfield_->set_focusable(focusable);
+}
+
+bool OmniboxViewViews::IsLocationEntryFocusableInRootView() const {
+ return textfield_->IsFocusableInRootView();
+}
+
////////////////////////////////////////////////////////////////////////////////
// OmniboxViewViews, views::View implementation:
void OmniboxViewViews::Layout() {
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.h b/chrome/browser/ui/views/omnibox/omnibox_view_views.h
index f9c165d..1ef4931 100644
--- a/chrome/browser/ui/views/omnibox/omnibox_view_views.h
+++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.h
@@ -68,6 +68,13 @@ class OmniboxViewViews : public views::View,
void HandleFocusIn();
void HandleFocusOut();
+ // Sets whether the location entry can accept focus.
+ void SetLocationEntryFocusable(bool focusable);
+
+ // Returns true if the location entry is focusable and visible in
+ // the root view.
+ bool IsLocationEntryFocusableInRootView() const;
+
// Implements views::View
virtual void Layout() OVERRIDE;
virtual void GetAccessibleState(ui::AccessibleViewState* state) OVERRIDE;