omnibox_popup_view_mac_unittest.mm revision 23730a6e56a168d1879203e4b3819bb36e3d8f1f
1// Copyright (c) 2012 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#import "chrome/browser/ui/cocoa/omnibox/omnibox_popup_view_mac.h" 6 7#include "base/memory/scoped_ptr.h" 8#include "base/strings/sys_string_conversions.h" 9#include "base/strings/utf_string_conversions.h" 10#include "chrome/browser/ui/cocoa/cocoa_profile_test.h" 11#import "chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.h" 12#include "chrome/test/base/testing_profile.h" 13#include "ui/gfx/font_list.h" 14#include "ui/gfx/rect.h" 15#include "ui/gfx/text_elider.h" 16 17namespace { 18 19class MockOmniboxPopupViewMac : public OmniboxPopupViewMac { 20 public: 21 MockOmniboxPopupViewMac(OmniboxView* omnibox_view, 22 OmniboxEditModel* edit_model, 23 NSTextField* field) 24 : OmniboxPopupViewMac(omnibox_view, edit_model, field) { 25 } 26 27 void SetResultCount(size_t count) { 28 ACMatches matches; 29 for (size_t i = 0; i < count; ++i) 30 matches.push_back(AutocompleteMatch()); 31 result_.Reset(); 32 result_.AppendMatches(matches); 33 } 34 35 protected: 36 virtual const AutocompleteResult& GetResult() const OVERRIDE { 37 return result_; 38 } 39 40 private: 41 AutocompleteResult result_; 42}; 43 44class OmniboxPopupViewMacTest : public CocoaProfileTest { 45 public: 46 OmniboxPopupViewMacTest() {} 47 48 private: 49 DISALLOW_COPY_AND_ASSIGN(OmniboxPopupViewMacTest); 50}; 51 52TEST_F(OmniboxPopupViewMacTest, UpdatePopupAppearance) { 53 base::scoped_nsobject<NSTextField> field( 54 [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 20)]); 55 [[test_window() contentView] addSubview:field]; 56 57 OmniboxViewMac view(NULL, profile(), NULL, NULL); 58 MockOmniboxPopupViewMac popup_view(&view, view.model(), field); 59 60 popup_view.UpdatePopupAppearance(); 61 EXPECT_FALSE(popup_view.IsOpen()); 62 EXPECT_EQ(0, [popup_view.matrix() numberOfRows]); 63 64 popup_view.SetResultCount(3); 65 popup_view.UpdatePopupAppearance(); 66 EXPECT_TRUE(popup_view.IsOpen()); 67 EXPECT_EQ(3, [popup_view.matrix() numberOfRows]); 68 69 int old_height = popup_view.GetTargetBounds().height(); 70 popup_view.SetResultCount(5); 71 popup_view.UpdatePopupAppearance(); 72 EXPECT_GT(popup_view.GetTargetBounds().height(), old_height); 73 EXPECT_EQ(5, [popup_view.matrix() numberOfRows]); 74 75 popup_view.SetResultCount(0); 76 popup_view.UpdatePopupAppearance(); 77 EXPECT_FALSE(popup_view.IsOpen()); 78 EXPECT_EQ(0, [popup_view.matrix() numberOfRows]); 79} 80 81} // namespace 82