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