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 #include "chrome/browser/ui/views/location_bar/ev_bubble_view.h" 6 #include "grit/theme_resources.h" 7 #include "ui/views/controls/label.h" 8 #include "ui/views/painter.h" 9 10 11 namespace { 12 const int kBackgroundImages[] = IMAGE_GRID(IDR_OMNIBOX_EV_BUBBLE); 13 } 14 15 16 EVBubbleView::EVBubbleView(const gfx::FontList& font_list, 17 SkColor text_color, 18 SkColor parent_background_color, 19 LocationBarView* location_bar) 20 : IconLabelBubbleView(kBackgroundImages, NULL, IDR_OMNIBOX_HTTPS_VALID, 21 font_list, text_color, parent_background_color, true), 22 page_info_helper_(this, location_bar) { 23 } 24 25 EVBubbleView::~EVBubbleView() { 26 } 27 28 gfx::Size EVBubbleView::GetMinimumSize() const { 29 return GetMinimumSizeForPreferredSize(GetPreferredSize()); 30 } 31 32 bool EVBubbleView::OnMousePressed(const ui::MouseEvent& event) { 33 // We want to show the dialog on mouse release; that is the standard behavior 34 // for buttons. 35 return true; 36 } 37 38 void EVBubbleView::OnMouseReleased(const ui::MouseEvent& event) { 39 page_info_helper_.ProcessEvent(event); 40 } 41 42 void EVBubbleView::OnGestureEvent(ui::GestureEvent* event) { 43 if (event->type() == ui::ET_GESTURE_TAP) { 44 page_info_helper_.ProcessEvent(*event); 45 event->SetHandled(); 46 } 47 } 48 49 gfx::Size EVBubbleView::GetMinimumSizeForLabelText( 50 const base::string16& text) const { 51 views::Label label(text, font_list()); 52 return GetMinimumSizeForPreferredSize( 53 GetSizeForLabelWidth(label.GetPreferredSize().width())); 54 } 55 56 gfx::Size EVBubbleView::GetMinimumSizeForPreferredSize(gfx::Size size) const { 57 const int kMinCharacters = 10; 58 size.SetToMin( 59 GetSizeForLabelWidth(font_list().GetExpectedTextWidth(kMinCharacters))); 60 return size; 61 } 62