browser_view_browsertest.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
17d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Copyright (c) 2012 The Chromium Authors. All rights reserved. 27d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 37d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// found in the LICENSE file. 47d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 57d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "chrome/browser/ui/views/frame/browser_view.h" 67d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 77d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "chrome/browser/ui/browser_commands.h" 87d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h" 97d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "chrome/browser/ui/views/frame/top_container_view.h" 107d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "chrome/browser/ui/views/infobars/infobar_container_view.h" 117d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "chrome/browser/ui/views/location_bar/location_bar_view.h" 127d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "chrome/browser/ui/views/tabs/tab_strip.h" 137d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "chrome/browser/ui/views/toolbar_view.h" 147d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "chrome/test/base/in_process_browser_test.h" 157d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#include "ui/views/focus/focus_manager.h" 167d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 177d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgusing views::FocusManager; 187d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 197d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgtypedef InProcessBrowserTest BrowserViewTest; 207d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 217d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.orgIN_PROC_BROWSER_TEST_F(BrowserViewTest, Basics) { 22fa7f914e3bacba481b13da5cf2bc4c935567ebc4machenbach@chromium.org BrowserView* browser_view = static_cast<BrowserView*>(browser()->window()); 23fa7f914e3bacba481b13da5cf2bc4c935567ebc4machenbach@chromium.org views::View* top_container = browser_view->top_container(); 2406b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org 2506b2696801712948b665372a38f96b1f10be6997machenbach@chromium.org // Verify the view hierarchy. 267d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org EXPECT_EQ(top_container, browser_view->tabstrip()->parent()); 277d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org EXPECT_EQ(top_container, browser_view->toolbar()->parent()); 287d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org EXPECT_EQ(browser_view, browser_view->infobar_container()->parent()); 297d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 307d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // Bookmark bar is at the front of the view hierarchy. 317d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // TODO(jamescook): When top container supports the bookmark bar, the top 327d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // container will be frontmost. 337d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org EXPECT_EQ(browser_view->child_count() - 1, 347d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org browser_view->GetIndexOf(browser_view->bookmark_bar())); 357d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 367d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // Top container is stacked under bookmark bar. 377d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org EXPECT_EQ(browser_view->child_count() - 2, 387d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org browser_view->GetIndexOf(top_container)); 397d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 407d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // Verify basic layout. 417d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org EXPECT_EQ(0, top_container->x()); 427d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org EXPECT_EQ(0, top_container->y()); 437d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org EXPECT_EQ(browser_view->width(), top_container->width()); 447d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 457d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 467d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// Active window and focus testing is not reliable on Windows crbug.com/79493 477d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org// TODO(linux_aura) http://crbug.com/163931 487d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)) 497d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#define MAYBE_FullscreenClearsFocus DISABLED_FullscreenClearsFocus 507d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#else 517d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org#define MAYBE_FullscreenClearsFocus FullscreenClearsFocus 529e2b466e4b4a2026caefa79afe6737f1bad83a19machenbach@chromium.org#endif 539e2b466e4b4a2026caefa79afe6737f1bad83a19machenbach@chromium.orgIN_PROC_BROWSER_TEST_F(BrowserViewTest, MAYBE_FullscreenClearsFocus) { 549e2b466e4b4a2026caefa79afe6737f1bad83a19machenbach@chromium.org BrowserView* browser_view = static_cast<BrowserView*>(browser()->window()); 559e2b466e4b4a2026caefa79afe6737f1bad83a19machenbach@chromium.org LocationBarView* location_bar_view = browser_view->GetLocationBarView(); 569e2b466e4b4a2026caefa79afe6737f1bad83a19machenbach@chromium.org FocusManager* focus_manager = browser_view->GetFocusManager(); 579e2b466e4b4a2026caefa79afe6737f1bad83a19machenbach@chromium.org 589e2b466e4b4a2026caefa79afe6737f1bad83a19machenbach@chromium.org // Focus starts in the location bar or one of its children. 599e2b466e4b4a2026caefa79afe6737f1bad83a19machenbach@chromium.org EXPECT_TRUE(location_bar_view->Contains(focus_manager->GetFocusedView())); 607d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 617d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org chrome::ToggleFullscreenMode(browser()); 627d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org EXPECT_TRUE(browser_view->IsFullscreen()); 637d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org 647d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org // Focus is released from the location bar. 657d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org EXPECT_FALSE(location_bar_view->Contains(focus_manager->GetFocusedView())); 667d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org} 677d299ad4dc0ca26e0017b190b48362ad71328ce4machenbach@chromium.org