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