• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
EVBubbleView(const gfx::FontList & font_list,SkColor text_color,SkColor parent_background_color,LocationBarView * location_bar)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 
~EVBubbleView()25 EVBubbleView::~EVBubbleView() {
26 }
27 
GetMinimumSize() const28 gfx::Size EVBubbleView::GetMinimumSize() const {
29   return GetMinimumSizeForPreferredSize(GetPreferredSize());
30 }
31 
OnMousePressed(const ui::MouseEvent & event)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 
OnMouseReleased(const ui::MouseEvent & event)38 void EVBubbleView::OnMouseReleased(const ui::MouseEvent& event) {
39   page_info_helper_.ProcessEvent(event);
40 }
41 
OnGestureEvent(ui::GestureEvent * event)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 
GetMinimumSizeForLabelText(const base::string16 & text) const49 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 
GetMinimumSizeForPreferredSize(gfx::Size size) const56 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