browser_view_unittest.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/ui/views/frame/browser_view.h"
6
7#include "base/memory/scoped_ptr.h"
8
9#include "chrome/test/base/browser_with_test_window_test.h"
10#include "chrome/test/base/scoped_testing_local_state.h"
11#include "chrome/test/base/testing_browser_process.h"
12#include "grit/theme_resources.h"
13#include "testing/gtest/include/gtest/gtest.h"
14
15#if defined(OS_CHROMEOS)
16#include "chrome/browser/chromeos/input_method/input_method_configuration.h"
17#include "chrome/browser/chromeos/input_method/mock_input_method_manager.h"
18#endif
19
20class BrowserViewTest : public BrowserWithTestWindowTest {
21 public:
22  BrowserViewTest();
23  virtual ~BrowserViewTest() {}
24
25  // BrowserWithTestWindowTest overrides:
26  virtual void SetUp() OVERRIDE;
27  virtual void TearDown() OVERRIDE;
28  virtual BrowserWindow* CreateBrowserWindow() OVERRIDE;
29
30  BrowserView* browser_view() { return browser_view_; }
31
32 private:
33  BrowserView* browser_view_;  // Not owned.
34  scoped_ptr<ScopedTestingLocalState> local_state_;
35  DISALLOW_COPY_AND_ASSIGN(BrowserViewTest);
36};
37
38BrowserViewTest::BrowserViewTest()
39    : browser_view_(NULL) {
40}
41
42void BrowserViewTest::SetUp() {
43  local_state_.reset(
44      new ScopedTestingLocalState(TestingBrowserProcess::GetGlobal()));
45#if defined(OS_CHROMEOS)
46  chromeos::input_method::InitializeForTesting(
47      new chromeos::input_method::MockInputMethodManager);
48#endif
49  BrowserWithTestWindowTest::SetUp();
50  browser_view_ = static_cast<BrowserView*>(browser()->window());
51  // Memory ownership is tricky here. BrowserView has taken ownership of
52  // |browser|, so BrowserWithTestWindowTest cannot continue to own it.
53  ASSERT_TRUE(release_browser());
54}
55
56void BrowserViewTest::TearDown() {
57  // Ensure the Browser is reset before BrowserWithTestWindowTest cleans up
58  // the Profile.
59  browser_view_->GetWidget()->CloseNow();
60  browser_view_ = NULL;
61  BrowserWithTestWindowTest::TearDown();
62#if defined(OS_CHROMEOS)
63  chromeos::input_method::Shutdown();
64#endif
65  local_state_.reset(NULL);
66}
67
68BrowserWindow* BrowserViewTest::CreateBrowserWindow() {
69  // Allow BrowserWithTestWindowTest to use Browser to create the default
70  // BrowserView and BrowserFrame.
71  return NULL;
72}
73
74// Test basic construction and initialization.
75TEST_F(BrowserViewTest, BrowserView) {
76  // The window is owned by the native widget, not the test class.
77  EXPECT_FALSE(window());
78  // |browser_view_| owns the Browser, not the test class.
79  EXPECT_FALSE(browser());
80  EXPECT_TRUE(browser_view()->browser());
81
82  // Test initial state.
83  EXPECT_TRUE(browser_view()->IsTabStripVisible());
84  EXPECT_FALSE(browser_view()->IsOffTheRecord());
85  EXPECT_EQ(IDR_OTR_ICON, browser_view()->GetOTRIconResourceID());
86  EXPECT_FALSE(browser_view()->IsGuestSession());
87  EXPECT_FALSE(browser_view()->ShouldShowAvatar());
88  EXPECT_TRUE(browser_view()->IsBrowserTypeNormal());
89  EXPECT_FALSE(browser_view()->IsFullscreen());
90  EXPECT_FALSE(browser_view()->IsBookmarkBarVisible());
91  EXPECT_FALSE(browser_view()->IsBookmarkBarAnimating());
92
93  // Ensure we've initialized enough to run Layout().
94  browser_view()->Layout();
95  // TDOO(jamescook): Layout assertions.
96}
97