| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/location_bar/ev_bubble_view.h" | 5 #include "chrome/browser/ui/views/location_bar/ev_bubble_view.h" |
| 6 #include "grit/theme_resources.h" | 6 #include "grit/theme_resources.h" |
| 7 #include "ui/views/controls/label.h" |
| 7 #include "ui/views/painter.h" | 8 #include "ui/views/painter.h" |
| 8 | 9 |
| 9 | 10 |
| 10 namespace { | 11 namespace { |
| 11 const int kBackgroundImages[] = IMAGE_GRID(IDR_OMNIBOX_EV_BUBBLE); | 12 const int kBackgroundImages[] = IMAGE_GRID(IDR_OMNIBOX_EV_BUBBLE); |
| 12 } | 13 } |
| 13 | 14 |
| 14 | 15 |
| 15 EVBubbleView::EVBubbleView(const gfx::FontList& font_list, | 16 EVBubbleView::EVBubbleView(const gfx::FontList& font_list, |
| 16 SkColor text_color, | 17 SkColor text_color, |
| 17 SkColor parent_background_color, | 18 SkColor parent_background_color, |
| 18 LocationBarView* location_bar) | 19 LocationBarView* location_bar) |
| 19 : IconLabelBubbleView(kBackgroundImages, NULL, IDR_OMNIBOX_HTTPS_VALID, | 20 : IconLabelBubbleView(kBackgroundImages, NULL, IDR_OMNIBOX_HTTPS_VALID, |
| 20 font_list, text_color, parent_background_color, true), | 21 font_list, text_color, parent_background_color, true), |
| 21 page_info_helper_(this, location_bar) { | 22 page_info_helper_(this, location_bar) { |
| 22 } | 23 } |
| 23 | 24 |
| 24 EVBubbleView::~EVBubbleView() { | 25 EVBubbleView::~EVBubbleView() { |
| 25 } | 26 } |
| 26 | 27 |
| 27 gfx::Size EVBubbleView::GetMinimumSize() { | 28 gfx::Size EVBubbleView::GetMinimumSize() { |
| 28 // Height will be ignored by the LocationBarView. | 29 return GetMinimumSizeForPreferredSize(GetPreferredSize()); |
| 29 gfx::Size minimum(GetPreferredSize()); | |
| 30 static const int kMinBubbleWidth = 150; | |
| 31 minimum.SetToMax(gfx::Size(kMinBubbleWidth, 0)); | |
| 32 return minimum; | |
| 33 } | 30 } |
| 34 | 31 |
| 35 bool EVBubbleView::OnMousePressed(const ui::MouseEvent& event) { | 32 bool EVBubbleView::OnMousePressed(const ui::MouseEvent& event) { |
| 36 // We want to show the dialog on mouse release; that is the standard behavior | 33 // We want to show the dialog on mouse release; that is the standard behavior |
| 37 // for buttons. | 34 // for buttons. |
| 38 return true; | 35 return true; |
| 39 } | 36 } |
| 40 | 37 |
| 41 void EVBubbleView::OnMouseReleased(const ui::MouseEvent& event) { | 38 void EVBubbleView::OnMouseReleased(const ui::MouseEvent& event) { |
| 42 page_info_helper_.ProcessEvent(event); | 39 page_info_helper_.ProcessEvent(event); |
| 43 } | 40 } |
| 44 | 41 |
| 45 void EVBubbleView::OnGestureEvent(ui::GestureEvent* event) { | 42 void EVBubbleView::OnGestureEvent(ui::GestureEvent* event) { |
| 46 if (event->type() == ui::ET_GESTURE_TAP) { | 43 if (event->type() == ui::ET_GESTURE_TAP) { |
| 47 page_info_helper_.ProcessEvent(*event); | 44 page_info_helper_.ProcessEvent(*event); |
| 48 event->SetHandled(); | 45 event->SetHandled(); |
| 49 } | 46 } |
| 50 } | 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 } |
| OLD | NEW |