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