Index: chrome/browser/ui/views/location_bar/location_bar_view.cc |
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc |
index 87fc383129d84feeff7705866f15aeb3e0af0482..8e3c40b3411291169b8d8baede1edad19c20d493 100644 |
--- a/chrome/browser/ui/views/location_bar/location_bar_view.cc |
+++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc |
@@ -212,6 +212,9 @@ LocationBarView::LocationBarView(Browser* browser, |
origin_chip_view_(NULL), |
location_icon_view_(NULL), |
ev_bubble_view_(NULL), |
+ good_bubble_view_(NULL), |
+ dubious_bubble_view_(NULL), |
+ bad_bubble_view_(NULL), |
ime_inline_autocomplete_view_(NULL), |
selected_keyword_view_(NULL), |
suggested_text_view_(NULL), |
@@ -294,12 +297,31 @@ void LocationBarView::Init() { |
const SkColor background_color = |
GetColor(ToolbarModel::NONE, LocationBarView::BACKGROUND); |
+ |
ev_bubble_view_ = new EVBubbleView( |
bubble_font_list, GetColor(ToolbarModel::EV_SECURE, SECURITY_TEXT), |
background_color, this); |
ev_bubble_view_->set_drag_controller(this); |
AddChildView(ev_bubble_view_); |
+ good_bubble_view_ = new EVBubbleView( |
+ bubble_font_list, GetColor(ToolbarModel::SECURE, SECURITY_TEXT), |
+ background_color, this); |
+ good_bubble_view_->set_drag_controller(this); |
+ AddChildView(good_bubble_view_); |
+ |
+ dubious_bubble_view_ = new EVBubbleView( |
+ bubble_font_list, GetColor(ToolbarModel::SECURITY_WARNING, SECURITY_TEXT), |
+ background_color, this); |
+ dubious_bubble_view_->set_drag_controller(this); |
+ AddChildView(dubious_bubble_view_); |
+ |
+ bad_bubble_view_ = new EVBubbleView( |
+ bubble_font_list, GetColor(ToolbarModel::SECURITY_ERROR, SECURITY_TEXT), |
+ background_color, this); |
+ bad_bubble_view_->set_drag_controller(this); |
+ AddChildView(bad_bubble_view_); |
+ |
// Initialize the Omnibox view. |
omnibox_view_ = new OmniboxViewViews( |
this, profile(), command_updater(), |
@@ -697,6 +719,9 @@ void LocationBarView::Layout() { |
selected_keyword_view_->SetVisible(false); |
location_icon_view_->SetVisible(false); |
ev_bubble_view_->SetVisible(false); |
+ good_bubble_view_->SetVisible(false); |
+ dubious_bubble_view_->SetVisible(false); |
+ bad_bubble_view_->SetVisible(false); |
keyword_hint_view_->SetVisible(false); |
LocationBarLayout leading_decorations( |
@@ -751,6 +776,28 @@ void LocationBarView::Layout() { |
leading_decorations.AddDecoration(bubble_location_y, bubble_height, false, |
kMaxBubbleFraction, kBubblePadding, |
kItemPadding, ev_bubble_view_); |
+ } else if (ShouldShowGoodBubble()) { |
+ good_bubble_view_->SetLabel(GetToolbarModel()->GetOriginDisplayName()); |
+ // The largest fraction of the omnibox that can be taken by the Good bubble. |
+ const double kMaxBubbleFraction = 0.5; |
+ leading_decorations.AddDecoration(bubble_location_y, bubble_height, false, |
+ kMaxBubbleFraction, kBubblePadding, |
+ kItemPadding, good_bubble_view_); |
+ } else if (ShouldShowDubiousBubble()) { |
+ dubious_bubble_view_->SetLabel(GetToolbarModel()->GetOriginDisplayName()); |
+ // The largest fraction of the omnibox that can be taken by the Dubious |
+ // bubble. |
+ const double kMaxBubbleFraction = 0.5; |
+ leading_decorations.AddDecoration(bubble_location_y, bubble_height, false, |
+ kMaxBubbleFraction, kBubblePadding, |
+ kItemPadding, dubious_bubble_view_); |
+ } else if (ShouldShowBadBubble()) { |
+ bad_bubble_view_->SetLabel(GetToolbarModel()->GetOriginDisplayName()); |
+ // The largest fraction of the omnibox that can be taken by the Bad bubble. |
+ const double kMaxBubbleFraction = 0.5; |
+ leading_decorations.AddDecoration(bubble_location_y, bubble_height, false, |
+ kMaxBubbleFraction, kBubblePadding, |
+ kItemPadding, bad_bubble_view_); |
} else if (!origin_chip_view_->visible()) { |
leading_decorations.AddDecoration( |
vertical_edge_thickness(), location_height, |
@@ -1288,6 +1335,27 @@ bool LocationBarView::ShouldShowEVBubble() const { |
(GetToolbarModel()->GetSecurityLevel(false) == ToolbarModel::EV_SECURE); |
} |
+bool LocationBarView::ShouldShowGoodBubble() const { |
+ return !chrome::ShouldDisplayOriginChip() && |
+ (GetToolbarModel()->GetSecurityLevel(false) == ToolbarModel::SECURE); |
+} |
+ |
+bool LocationBarView::ShouldShowDubiousBubble() const { |
+ ToolbarModel::SecurityLevel security = |
+ GetToolbarModel()->GetSecurityLevel(false); |
+ return !chrome::ShouldDisplayOriginChip() && |
+ (security == ToolbarModel::SECURITY_POLICY_WARNING || |
+ security == ToolbarModel::SECURITY_WARNING); |
+} |
+ |
+bool LocationBarView::ShouldShowBadBubble() const { |
+ ToolbarModel::SecurityLevel security = |
+ GetToolbarModel()->GetSecurityLevel(false); |
+ return !chrome::ShouldDisplayOriginChip() && |
+ (security == ToolbarModel::NONE || |
+ security == ToolbarModel::SECURITY_ERROR); |
+} |
+ |
double LocationBarView::GetValueForAnimation(bool hide) const { |
int calculated_offset; |
const gfx::Tween::Type tween_type = hide ? kHideTweenType : kShowTweenType; |