Chromium Code Reviews| 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/location_bar_view.h" | 5 #include "chrome/browser/ui/views/location_bar/location_bar_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 37 #include "chrome/browser/ui/view_ids.h" | 37 #include "chrome/browser/ui/view_ids.h" |
| 38 #include "chrome/browser/ui/views/bookmarks/bookmark_prompt_view.h" | 38 #include "chrome/browser/ui/views/bookmarks/bookmark_prompt_view.h" |
| 39 #include "chrome/browser/ui/views/browser_dialogs.h" | 39 #include "chrome/browser/ui/views/browser_dialogs.h" |
| 40 #include "chrome/browser/ui/views/extensions/extension_popup.h" | 40 #include "chrome/browser/ui/views/extensions/extension_popup.h" |
| 41 #include "chrome/browser/ui/views/location_bar/autofill_credit_card_view.h" | 41 #include "chrome/browser/ui/views/location_bar/autofill_credit_card_view.h" |
| 42 #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h" | 42 #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h" |
| 43 #include "chrome/browser/ui/views/location_bar/ev_bubble_view.h" | 43 #include "chrome/browser/ui/views/location_bar/ev_bubble_view.h" |
| 44 #include "chrome/browser/ui/views/location_bar/keyword_hint_view.h" | 44 #include "chrome/browser/ui/views/location_bar/keyword_hint_view.h" |
| 45 #include "chrome/browser/ui/views/location_bar/location_bar_layout.h" | 45 #include "chrome/browser/ui/views/location_bar/location_bar_layout.h" |
| 46 #include "chrome/browser/ui/views/location_bar/location_icon_view.h" | 46 #include "chrome/browser/ui/views/location_bar/location_icon_view.h" |
| 47 #include "chrome/browser/ui/views/location_bar/mic_search_view.h" | |
| 48 #include "chrome/browser/ui/views/location_bar/open_pdf_in_reader_view.h" | 47 #include "chrome/browser/ui/views/location_bar/open_pdf_in_reader_view.h" |
| 49 #include "chrome/browser/ui/views/location_bar/page_action_image_view.h" | 48 #include "chrome/browser/ui/views/location_bar/page_action_image_view.h" |
| 50 #include "chrome/browser/ui/views/location_bar/page_action_with_badge_view.h" | 49 #include "chrome/browser/ui/views/location_bar/page_action_with_badge_view.h" |
| 51 #include "chrome/browser/ui/views/location_bar/script_bubble_icon_view.h" | 50 #include "chrome/browser/ui/views/location_bar/script_bubble_icon_view.h" |
| 52 #include "chrome/browser/ui/views/location_bar/selected_keyword_view.h" | 51 #include "chrome/browser/ui/views/location_bar/selected_keyword_view.h" |
| 53 #include "chrome/browser/ui/views/location_bar/star_view.h" | 52 #include "chrome/browser/ui/views/location_bar/star_view.h" |
| 54 #include "chrome/browser/ui/views/location_bar/zoom_bubble_view.h" | 53 #include "chrome/browser/ui/views/location_bar/zoom_bubble_view.h" |
| 55 #include "chrome/browser/ui/views/location_bar/zoom_view.h" | 54 #include "chrome/browser/ui/views/location_bar/zoom_view.h" |
| 56 #include "chrome/browser/ui/views/omnibox/omnibox_view_views.h" | 55 #include "chrome/browser/ui/views/omnibox/omnibox_view_views.h" |
| 57 #include "chrome/browser/ui/views/omnibox/omnibox_views.h" | 56 #include "chrome/browser/ui/views/omnibox/omnibox_views.h" |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 72 #include "ui/base/theme_provider.h" | 71 #include "ui/base/theme_provider.h" |
| 73 #include "ui/gfx/canvas.h" | 72 #include "ui/gfx/canvas.h" |
| 74 #include "ui/gfx/color_utils.h" | 73 #include "ui/gfx/color_utils.h" |
| 75 #include "ui/gfx/image/image.h" | 74 #include "ui/gfx/image/image.h" |
| 76 #include "ui/gfx/image/image_skia_operations.h" | 75 #include "ui/gfx/image/image_skia_operations.h" |
| 77 #include "ui/gfx/skia_util.h" | 76 #include "ui/gfx/skia_util.h" |
| 78 #include "ui/native_theme/native_theme.h" | 77 #include "ui/native_theme/native_theme.h" |
| 79 #include "ui/views/background.h" | 78 #include "ui/views/background.h" |
| 80 #include "ui/views/border.h" | 79 #include "ui/views/border.h" |
| 81 #include "ui/views/button_drag_utils.h" | 80 #include "ui/views/button_drag_utils.h" |
| 81 #include "ui/views/controls/button/image_button.h" | |
| 82 #include "ui/views/controls/label.h" | 82 #include "ui/views/controls/label.h" |
| 83 #include "ui/views/controls/textfield/textfield.h" | 83 #include "ui/views/controls/textfield/textfield.h" |
| 84 #include "ui/views/widget/widget.h" | 84 #include "ui/views/widget/widget.h" |
| 85 #include "ui/views/window/non_client_view.h" | 85 #include "ui/views/window/non_client_view.h" |
| 86 | 86 |
| 87 #if defined(OS_WIN) | 87 #if defined(OS_WIN) |
| 88 #include "base/win/scoped_hdc.h" | 88 #include "base/win/scoped_hdc.h" |
| 89 #include "base/win/scoped_select_object.h" | 89 #include "base/win/scoped_select_object.h" |
| 90 #include "ui/native_theme/native_theme_win.h" | 90 #include "ui/native_theme/native_theme_win.h" |
| 91 #endif | 91 #endif |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 220 browser_->search_model()->AddObserver(this); | 220 browser_->search_model()->AddObserver(this); |
| 221 } | 221 } |
| 222 | 222 |
| 223 LocationBarView::~LocationBarView() { | 223 LocationBarView::~LocationBarView() { |
| 224 if (template_url_service_) | 224 if (template_url_service_) |
| 225 template_url_service_->RemoveObserver(this); | 225 template_url_service_->RemoveObserver(this); |
| 226 if (browser_) | 226 if (browser_) |
| 227 browser_->search_model()->RemoveObserver(this); | 227 browser_->search_model()->RemoveObserver(this); |
| 228 } | 228 } |
| 229 | 229 |
| 230 // static | |
| 231 void LocationBarView::InitTouchableLocationBarView(views::View* view) { | |
| 232 int horizontal_padding = GetBuiltInHorizontalPaddingForChildViews(); | |
| 233 if (horizontal_padding != 0) { | |
| 234 view->set_border(views::Border::CreateEmptyBorder( | |
| 235 3, horizontal_padding, 3, horizontal_padding)); | |
| 236 } | |
| 237 } | |
| 238 | |
| 230 void LocationBarView::Init() { | 239 void LocationBarView::Init() { |
| 231 // We need to be in a Widget, otherwise GetNativeTheme() may change and we're | 240 // We need to be in a Widget, otherwise GetNativeTheme() may change and we're |
| 232 // not prepared for that. | 241 // not prepared for that. |
| 233 DCHECK(GetWidget()); | 242 DCHECK(GetWidget()); |
| 234 | 243 |
| 235 location_icon_view_ = new LocationIconView(this); | 244 location_icon_view_ = new LocationIconView(this); |
| 236 location_icon_view_->set_drag_controller(this); | 245 location_icon_view_->set_drag_controller(this); |
| 237 AddChildView(location_icon_view_); | 246 AddChildView(location_icon_view_); |
| 238 | 247 |
| 239 // Determine the main font. | 248 // Determine the main font. |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 307 ToolbarModel::NONE, LocationBarView::DEEMPHASIZED_TEXT)); | 316 ToolbarModel::NONE, LocationBarView::DEEMPHASIZED_TEXT)); |
| 308 suggested_text_view_->SetVisible(false); | 317 suggested_text_view_->SetVisible(false); |
| 309 AddChildView(suggested_text_view_); | 318 AddChildView(suggested_text_view_); |
| 310 | 319 |
| 311 keyword_hint_view_ = new KeywordHintView( | 320 keyword_hint_view_ = new KeywordHintView( |
| 312 profile_, font, font_y_offset, | 321 profile_, font, font_y_offset, |
| 313 GetColor(ToolbarModel::NONE, LocationBarView::DEEMPHASIZED_TEXT), | 322 GetColor(ToolbarModel::NONE, LocationBarView::DEEMPHASIZED_TEXT), |
| 314 background_color); | 323 background_color); |
| 315 AddChildView(keyword_hint_view_); | 324 AddChildView(keyword_hint_view_); |
| 316 | 325 |
| 317 mic_search_view_ = new MicSearchView(this); | 326 mic_search_view_ = new views::ImageButton(this); |
| 327 mic_search_view_->set_id(VIEW_ID_MIC_SEARCH_BUTTON); | |
| 328 mic_search_view_->set_accessibility_focusable(true); | |
| 329 mic_search_view_->SetTooltipText( | |
| 330 l10n_util::GetStringUTF16(IDS_TOOLTIP_MIC_SEARCH)); | |
| 331 mic_search_view_->SetImage( | |
| 332 views::Button::STATE_NORMAL, | |
| 333 ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( | |
| 334 IDR_OMNIBOX_MIC_SEARCH)); | |
| 335 mic_search_view_->SetImageAlignment(views::ImageButton::ALIGN_CENTER, | |
| 336 views::ImageButton::ALIGN_MIDDLE); | |
| 318 mic_search_view_->SetVisible(false); | 337 mic_search_view_->SetVisible(false); |
| 338 InitTouchableLocationBarView(mic_search_view_); | |
| 319 AddChildView(mic_search_view_); | 339 AddChildView(mic_search_view_); |
| 320 | 340 |
| 321 for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { | 341 for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { |
| 322 ContentSettingImageView* content_blocked_view = | 342 ContentSettingImageView* content_blocked_view = |
| 323 new ContentSettingImageView(static_cast<ContentSettingsType>(i), this, | 343 new ContentSettingImageView(static_cast<ContentSettingsType>(i), this, |
| 324 bubble_font, bubble_font_y_offset, | 344 bubble_font, bubble_font_y_offset, |
| 325 text_color, background_color); | 345 text_color, background_color); |
| 326 content_setting_views_.push_back(content_blocked_view); | 346 content_setting_views_.push_back(content_blocked_view); |
| 327 content_blocked_view->SetVisible(false); | 347 content_blocked_view->SetVisible(false); |
| 328 AddChildView(content_blocked_view); | 348 AddChildView(content_blocked_view); |
| (...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 709 } else if (model_->GetSecurityLevel(false) == ToolbarModel::EV_SECURE) { | 729 } else if (model_->GetSecurityLevel(false) == ToolbarModel::EV_SECURE) { |
| 710 ev_bubble_view_->SetLabel(model_->GetEVCertName()); | 730 ev_bubble_view_->SetLabel(model_->GetEVCertName()); |
| 711 // The largest fraction of the omnibox that can be taken by the EV bubble. | 731 // The largest fraction of the omnibox that can be taken by the EV bubble. |
| 712 const double kMaxBubbleFraction = 0.5; | 732 const double kMaxBubbleFraction = 0.5; |
| 713 leading_decorations.AddDecoration(bubble_location_y, bubble_height, false, | 733 leading_decorations.AddDecoration(bubble_location_y, bubble_height, false, |
| 714 kMaxBubbleFraction, kBubblePadding, | 734 kMaxBubbleFraction, kBubblePadding, |
| 715 item_padding, 0, ev_bubble_view_); | 735 item_padding, 0, ev_bubble_view_); |
| 716 } else { | 736 } else { |
| 717 leading_decorations.AddDecoration( | 737 leading_decorations.AddDecoration( |
| 718 vertical_edge_thickness(), location_height, | 738 vertical_edge_thickness(), location_height, |
| 719 location_icon_view_->GetBuiltInHorizontalPadding(), | 739 GetBuiltInHorizontalPaddingForChildViews(), |
| 720 location_icon_view_); | 740 location_icon_view_); |
| 721 } | 741 } |
| 722 | 742 |
| 723 if (star_view_ && star_view_->visible()) { | 743 if (star_view_ && star_view_->visible()) { |
| 724 trailing_decorations.AddDecoration( | 744 trailing_decorations.AddDecoration( |
| 725 vertical_edge_thickness(), location_height, | 745 vertical_edge_thickness(), location_height, |
| 726 star_view_->GetBuiltInHorizontalPadding(), star_view_); | 746 GetBuiltInHorizontalPaddingForChildViews(), star_view_); |
| 727 } | 747 } |
| 728 if (script_bubble_icon_view_ && script_bubble_icon_view_->visible()) { | 748 if (script_bubble_icon_view_ && script_bubble_icon_view_->visible()) { |
| 729 trailing_decorations.AddDecoration( | 749 trailing_decorations.AddDecoration( |
| 730 vertical_edge_thickness(), location_height, | 750 vertical_edge_thickness(), location_height, |
| 731 script_bubble_icon_view_->GetBuiltInHorizontalPadding(), | 751 GetBuiltInHorizontalPaddingForChildViews(), |
| 732 script_bubble_icon_view_); | 752 script_bubble_icon_view_); |
| 733 } | 753 } |
| 734 if (open_pdf_in_reader_view_ && open_pdf_in_reader_view_->visible()) { | 754 if (open_pdf_in_reader_view_ && open_pdf_in_reader_view_->visible()) { |
| 735 trailing_decorations.AddDecoration( | 755 trailing_decorations.AddDecoration( |
| 736 vertical_edge_thickness(), location_height, | 756 vertical_edge_thickness(), location_height, |
| 737 open_pdf_in_reader_view_->GetBuiltInHorizontalPadding(), | 757 GetBuiltInHorizontalPaddingForChildViews(), |
| 738 open_pdf_in_reader_view_); | 758 open_pdf_in_reader_view_); |
| 739 } | 759 } |
| 740 for (PageActionViews::const_iterator i(page_action_views_.begin()); | 760 for (PageActionViews::const_iterator i(page_action_views_.begin()); |
| 741 i != page_action_views_.end(); ++i) { | 761 i != page_action_views_.end(); ++i) { |
| 742 if ((*i)->visible()) { | 762 if ((*i)->visible()) { |
| 743 trailing_decorations.AddDecoration( | 763 trailing_decorations.AddDecoration( |
| 744 vertical_edge_thickness(), location_height, | 764 vertical_edge_thickness(), location_height, |
| 745 (*i)->GetBuiltInHorizontalPadding(), (*i)); | 765 GetBuiltInHorizontalPaddingForChildViews(), (*i)); |
| 746 } | 766 } |
| 747 } | 767 } |
| 748 if (zoom_view_->visible()) { | 768 if (zoom_view_->visible()) { |
| 749 trailing_decorations.AddDecoration(vertical_edge_thickness(), | 769 trailing_decorations.AddDecoration(vertical_edge_thickness(), |
| 750 location_height, 0, zoom_view_); | 770 location_height, 0, zoom_view_); |
| 751 } | 771 } |
| 752 for (ContentSettingViews::const_reverse_iterator i( | 772 for (ContentSettingViews::const_reverse_iterator i( |
| 753 content_setting_views_.rbegin()); i != content_setting_views_.rend(); | 773 content_setting_views_.rbegin()); i != content_setting_views_.rend(); |
| 754 ++i) { | 774 ++i) { |
| 755 if ((*i)->visible()) { | 775 if ((*i)->visible()) { |
| 756 trailing_decorations.AddDecoration( | 776 trailing_decorations.AddDecoration( |
| 757 bubble_location_y, bubble_height, false, 0, item_padding, | 777 bubble_location_y, bubble_height, false, 0, item_padding, |
| 758 item_padding, (*i)->GetBuiltInHorizontalPadding(), (*i)); | 778 item_padding, GetBuiltInHorizontalPaddingForChildViews(), (*i)); |
| 759 } | 779 } |
| 760 } | 780 } |
| 761 if (autofill_credit_card_view_->visible()) { | 781 if (autofill_credit_card_view_->visible()) { |
| 762 trailing_decorations.AddDecoration(vertical_edge_thickness(), | 782 trailing_decorations.AddDecoration(vertical_edge_thickness(), |
| 763 location_height, 0, | 783 location_height, 0, |
| 764 autofill_credit_card_view_); | 784 autofill_credit_card_view_); |
| 765 } | 785 } |
| 766 if (mic_search_view_->visible()) { | 786 if (mic_search_view_->visible()) { |
| 767 trailing_decorations.AddDecoration(vertical_edge_thickness(), | 787 trailing_decorations.AddDecoration(vertical_edge_thickness(), |
| 768 location_height, 0, mic_search_view_); | 788 location_height, 0, mic_search_view_); |
| (...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1075 } | 1095 } |
| 1076 | 1096 |
| 1077 WebContents* LocationBarView::GetWebContents() const { | 1097 WebContents* LocationBarView::GetWebContents() const { |
| 1078 return delegate_->GetWebContents(); | 1098 return delegate_->GetWebContents(); |
| 1079 } | 1099 } |
| 1080 | 1100 |
| 1081 gfx::Rect LocationBarView::GetOmniboxBounds() const { | 1101 gfx::Rect LocationBarView::GetOmniboxBounds() const { |
| 1082 return bounds(); | 1102 return bounds(); |
| 1083 } | 1103 } |
| 1084 | 1104 |
| 1105 // static | |
| 1106 int LocationBarView::GetBuiltInHorizontalPaddingForChildViews() { | |
| 1107 return (ui::GetDisplayLayout() == ui::LAYOUT_TOUCH) ? GetItemPadding() / 2 | |
|
Peter Kasting
2013/08/09 20:57:28
Nit: Break after '?', not before ':'.
tfarina
2013/08/10 02:13:40
this is clang-format not me.
Peter Kasting
2013/08/10 07:27:21
I don't care. clang-format is wrong. Do not form
tfarina
2013/08/10 19:11:31
Done.
| |
| 1108 : 0; | |
| 1109 } | |
| 1110 | |
| 1085 int LocationBarView::GetHorizontalEdgeThickness() const { | 1111 int LocationBarView::GetHorizontalEdgeThickness() const { |
| 1086 // In maximized popup mode, there isn't any edge. | 1112 // In maximized popup mode, there isn't any edge. |
| 1087 return (is_popup_mode_ && browser_ && browser_->window() && | 1113 return (is_popup_mode_ && browser_ && browser_->window() && |
| 1088 browser_->window()->IsMaximized()) ? 0 : vertical_edge_thickness(); | 1114 browser_->window()->IsMaximized()) ? 0 : vertical_edge_thickness(); |
| 1089 } | 1115 } |
| 1090 | 1116 |
| 1091 void LocationBarView::RefreshContentSettingViews() { | 1117 void LocationBarView::RefreshContentSettingViews() { |
| 1092 for (ContentSettingViews::const_iterator i(content_setting_views_.begin()); | 1118 for (ContentSettingViews::const_iterator i(content_setting_views_.begin()); |
| 1093 i != content_setting_views_.end(); ++i) { | 1119 i != content_setting_views_.end(); ++i) { |
| 1094 (*i)->Update(model_->GetInputInProgress() ? NULL : GetWebContents()); | 1120 (*i)->Update(model_->GetInputInProgress() ? NULL : GetWebContents()); |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1230 const ToolbarModel::SecurityLevel security_level = | 1256 const ToolbarModel::SecurityLevel security_level = |
| 1231 model_->GetSecurityLevel(false); | 1257 model_->GetSecurityLevel(false); |
| 1232 const SkColor text_color = GetColor(security_level, TEXT); | 1258 const SkColor text_color = GetColor(security_level, TEXT); |
| 1233 const SkColor background_color = GetColor(security_level, BACKGROUND); | 1259 const SkColor background_color = GetColor(security_level, BACKGROUND); |
| 1234 | 1260 |
| 1235 for (PageActionViews::const_iterator | 1261 for (PageActionViews::const_iterator |
| 1236 page_action_view = page_action_views_.begin(); | 1262 page_action_view = page_action_views_.begin(); |
| 1237 page_action_view != page_action_views_.end(); | 1263 page_action_view != page_action_views_.end(); |
| 1238 ++page_action_view) { | 1264 ++page_action_view) { |
| 1239 gfx::Rect bounds = (*page_action_view)->bounds(); | 1265 gfx::Rect bounds = (*page_action_view)->bounds(); |
| 1240 int horizontal_padding = GetItemPadding() - | 1266 int horizontal_padding = |
| 1241 (*page_action_view)->GetBuiltInHorizontalPadding(); | 1267 GetItemPadding() - GetBuiltInHorizontalPaddingForChildViews(); |
| 1242 // Make the bounding rectangle include the whole vertical range of the | 1268 // Make the bounding rectangle include the whole vertical range of the |
| 1243 // location bar, and the mid-point pixels between adjacent page actions. | 1269 // location bar, and the mid-point pixels between adjacent page actions. |
| 1244 // | 1270 // |
| 1245 // For odd horizontal_paddings, "horizontal_padding + 1" includes the | 1271 // For odd horizontal_paddings, "horizontal_padding + 1" includes the |
| 1246 // mid-point between two page actions in the bounding rectangle. For even | 1272 // mid-point between two page actions in the bounding rectangle. For even |
| 1247 // paddings, the +1 is dropped, which is right since there is no pixel at | 1273 // paddings, the +1 is dropped, which is right since there is no pixel at |
| 1248 // the mid-point. | 1274 // the mid-point. |
| 1249 bounds.Inset(-(horizontal_padding + 1) / 2, 0); | 1275 bounds.Inset(-(horizontal_padding + 1) / 2, 0); |
| 1250 location_bar_util::PaintExtensionActionBackground( | 1276 location_bar_util::PaintExtensionActionBackground( |
| 1251 *(*page_action_view)->image_view()->page_action(), | 1277 *(*page_action_view)->image_view()->page_action(), |
| (...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1506 int LocationBarView::GetInternalHeight(bool use_preferred_size) { | 1532 int LocationBarView::GetInternalHeight(bool use_preferred_size) { |
| 1507 int total_height = | 1533 int total_height = |
| 1508 use_preferred_size ? GetPreferredSize().height() : height(); | 1534 use_preferred_size ? GetPreferredSize().height() : height(); |
| 1509 return std::max(total_height - (vertical_edge_thickness() * 2), 0); | 1535 return std::max(total_height - (vertical_edge_thickness() * 2), 0); |
| 1510 } | 1536 } |
| 1511 | 1537 |
| 1512 bool LocationBarView::HasValidSuggestText() const { | 1538 bool LocationBarView::HasValidSuggestText() const { |
| 1513 return suggested_text_view_->visible() && | 1539 return suggested_text_view_->visible() && |
| 1514 !suggested_text_view_->size().IsEmpty(); | 1540 !suggested_text_view_->size().IsEmpty(); |
| 1515 } | 1541 } |
| OLD | NEW |