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 11namespace { 12const int kBackgroundImages[] = IMAGE_GRID(IDR_OMNIBOX_EV_BUBBLE); 13} 14 15 16EVBubbleView::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 25EVBubbleView::~EVBubbleView() { 26} 27 28gfx::Size EVBubbleView::GetMinimumSize() const { 29 return GetMinimumSizeForPreferredSize(GetPreferredSize()); 30} 31 32bool 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 38void EVBubbleView::OnMouseReleased(const ui::MouseEvent& event) { 39 page_info_helper_.ProcessEvent(event); 40} 41 42void 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 49gfx::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 56gfx::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