Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: chrome/browser/ui/views/location_bar/location_bar_view.cc

Issue 1998493002: Update omnibox chips in MD (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: slight refactor Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/i18n/rtl.h" 10 #include "base/i18n/rtl.h"
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 std::max(GetPreferredSize().height() - (vertical_padding * 2), 0); 211 std::max(GetPreferredSize().height() - (vertical_padding * 2), 0);
212 font_list = font_list.DeriveWithHeightUpperBound(location_height); 212 font_list = font_list.DeriveWithHeightUpperBound(location_height);
213 213
214 // Determine the font for use inside the bubbles. 214 // Determine the font for use inside the bubbles.
215 const int bubble_padding = 215 const int bubble_padding =
216 GetLayoutConstant(LOCATION_BAR_BUBBLE_VERTICAL_PADDING) + 216 GetLayoutConstant(LOCATION_BAR_BUBBLE_VERTICAL_PADDING) +
217 GetLayoutConstant(LOCATION_BAR_BUBBLE_FONT_VERTICAL_PADDING); 217 GetLayoutConstant(LOCATION_BAR_BUBBLE_FONT_VERTICAL_PADDING);
218 const int bubble_height = location_height - (bubble_padding * 2); 218 const int bubble_height = location_height - (bubble_padding * 2);
219 gfx::FontList bubble_font_list = 219 gfx::FontList bubble_font_list =
220 font_list.DeriveWithHeightUpperBound(bubble_height); 220 font_list.DeriveWithHeightUpperBound(bubble_height);
221 gfx::FontList chip_font_list = ui::MaterialDesignController::IsModeMaterial()
222 ? font_list
223 : bubble_font_list;
221 224
222 const SkColor background_color = GetColor(BACKGROUND); 225 const SkColor background_color = GetColor(BACKGROUND);
223 location_icon_view_ = 226 location_icon_view_ =
224 new LocationIconView(bubble_font_list, background_color, this); 227 new LocationIconView(chip_font_list, background_color, this);
225 location_icon_view_->set_drag_controller(this); 228 location_icon_view_->set_drag_controller(this);
226 AddChildView(location_icon_view_); 229 AddChildView(location_icon_view_);
227 230
228 // Initialize the Omnibox view. 231 // Initialize the Omnibox view.
229 omnibox_view_ = new OmniboxViewViews( 232 omnibox_view_ = new OmniboxViewViews(
230 this, profile(), command_updater(), is_popup_mode_, this, font_list); 233 this, profile(), command_updater(), is_popup_mode_, this, font_list);
231 omnibox_view_->Init(); 234 omnibox_view_->Init();
232 omnibox_view_->SetFocusBehavior(FocusBehavior::ALWAYS); 235 omnibox_view_->SetFocusBehavior(FocusBehavior::ALWAYS);
233 AddChildView(omnibox_view_); 236 AddChildView(omnibox_view_);
234 237
235 // Initialize the inline autocomplete view which is visible only when IME is 238 // Initialize the inline autocomplete view which is visible only when IME is
236 // turned on. Use the same font with the omnibox and highlighted background. 239 // turned on. Use the same font with the omnibox and highlighted background.
237 ime_inline_autocomplete_view_ = new views::Label(base::string16(), font_list); 240 ime_inline_autocomplete_view_ = new views::Label(base::string16(), font_list);
238 ime_inline_autocomplete_view_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 241 ime_inline_autocomplete_view_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
239 ime_inline_autocomplete_view_->SetAutoColorReadabilityEnabled(false); 242 ime_inline_autocomplete_view_->SetAutoColorReadabilityEnabled(false);
240 ime_inline_autocomplete_view_->set_background( 243 ime_inline_autocomplete_view_->set_background(
241 views::Background::CreateSolidBackground(GetNativeTheme()->GetSystemColor( 244 views::Background::CreateSolidBackground(GetNativeTheme()->GetSystemColor(
242 ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused))); 245 ui::NativeTheme::kColorId_TextfieldSelectionBackgroundFocused)));
243 ime_inline_autocomplete_view_->SetEnabledColor( 246 ime_inline_autocomplete_view_->SetEnabledColor(
244 GetNativeTheme()->GetSystemColor( 247 GetNativeTheme()->GetSystemColor(
245 ui::NativeTheme::kColorId_TextfieldSelectionColor)); 248 ui::NativeTheme::kColorId_TextfieldSelectionColor));
246 ime_inline_autocomplete_view_->SetVisible(false); 249 ime_inline_autocomplete_view_->SetVisible(false);
247 AddChildView(ime_inline_autocomplete_view_); 250 AddChildView(ime_inline_autocomplete_view_);
248 251
249 const SkColor selected_text_color = GetColor(TEXT); 252 const SkColor selected_text_color = GetColor(TEXT);
250 selected_keyword_view_ = new SelectedKeywordView( 253 selected_keyword_view_ = new SelectedKeywordView(
251 bubble_font_list, selected_text_color, background_color, profile()); 254 chip_font_list, selected_text_color, background_color, profile());
252 AddChildView(selected_keyword_view_); 255 AddChildView(selected_keyword_view_);
253 256
254 suggested_text_view_ = new views::Label(base::string16(), font_list); 257 suggested_text_view_ = new views::Label(base::string16(), font_list);
255 suggested_text_view_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 258 suggested_text_view_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
256 suggested_text_view_->SetAutoColorReadabilityEnabled(false); 259 suggested_text_view_->SetAutoColorReadabilityEnabled(false);
257 suggested_text_view_->SetEnabledColor( 260 suggested_text_view_->SetEnabledColor(
258 GetColor(LocationBarView::DEEMPHASIZED_TEXT)); 261 GetColor(LocationBarView::DEEMPHASIZED_TEXT));
259 suggested_text_view_->SetVisible(false); 262 suggested_text_view_->SetVisible(false);
260 AddChildView(suggested_text_view_); 263 AddChildView(suggested_text_view_);
261 264
262 keyword_hint_view_ = new KeywordHintView( 265 keyword_hint_view_ = new KeywordHintView(
263 profile(), font_list, bubble_font_list, location_height, 266 profile(), font_list, bubble_font_list, location_height,
264 GetColor(LocationBarView::DEEMPHASIZED_TEXT), background_color); 267 GetColor(LocationBarView::DEEMPHASIZED_TEXT), background_color);
265 AddChildView(keyword_hint_view_); 268 AddChildView(keyword_hint_view_);
266 269
267 ScopedVector<ContentSettingImageModel> models = 270 ScopedVector<ContentSettingImageModel> models =
268 ContentSettingImageModel::GenerateContentSettingImageModels(); 271 ContentSettingImageModel::GenerateContentSettingImageModels();
269 for (ContentSettingImageModel* model : models.get()) { 272 for (ContentSettingImageModel* model : models.get()) {
270 // ContentSettingImageView takes ownership of its model. 273 // ContentSettingImageView takes ownership of its model.
271 ContentSettingImageView* image_view = new ContentSettingImageView( 274 ContentSettingImageView* image_view = new ContentSettingImageView(
272 model, this, bubble_font_list, background_color); 275 model, this, chip_font_list, background_color);
273 content_setting_views_.push_back(image_view); 276 content_setting_views_.push_back(image_view);
274 image_view->SetVisible(false); 277 image_view->SetVisible(false);
275 AddChildView(image_view); 278 AddChildView(image_view);
276 } 279 }
277 models.weak_clear(); 280 models.weak_clear();
278 281
279 zoom_view_ = new ZoomView(delegate_); 282 zoom_view_ = new ZoomView(delegate_);
280 AddChildView(zoom_view_); 283 AddChildView(zoom_view_);
281 284
282 open_pdf_in_reader_view_ = new OpenPDFInReaderView(); 285 open_pdf_in_reader_view_ = new OpenPDFInReaderView();
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 326
324 case SELECTED_TEXT: 327 case SELECTED_TEXT:
325 return native_theme->GetSystemColor( 328 return native_theme->GetSystemColor(
326 ui::NativeTheme::kColorId_TextfieldSelectionColor); 329 ui::NativeTheme::kColorId_TextfieldSelectionColor);
327 330
328 case DEEMPHASIZED_TEXT: 331 case DEEMPHASIZED_TEXT:
329 return color_utils::AlphaBlend(GetColor(TEXT), GetColor(BACKGROUND), 128); 332 return color_utils::AlphaBlend(GetColor(TEXT), GetColor(BACKGROUND), 128);
330 333
331 case EV_BUBBLE_TEXT_AND_BORDER: 334 case EV_BUBBLE_TEXT_AND_BORDER:
332 return ui::MaterialDesignController::IsModeMaterial() 335 return ui::MaterialDesignController::IsModeMaterial()
333 ? gfx::kGoogleGreen700 336 ? GetSecureTextColor(
337 GetToolbarModel()->GetSecurityLevel(false))
334 : SkColorSetRGB(7, 149, 0); 338 : SkColorSetRGB(7, 149, 0);
335 } 339 }
336 NOTREACHED(); 340 NOTREACHED();
337 return gfx::kPlaceholderColor; 341 return gfx::kPlaceholderColor;
338 } 342 }
339 343
340 SkColor LocationBarView::GetSecureTextColor( 344 SkColor LocationBarView::GetSecureTextColor(
341 security_state::SecurityStateModel::SecurityLevel security_level) const { 345 security_state::SecurityStateModel::SecurityLevel security_level) const {
342 if (security_level == 346 if (security_level ==
343 security_state::SecurityStateModel::SECURITY_POLICY_WARNING) { 347 security_state::SecurityStateModel::SECURITY_POLICY_WARNING) {
344 return GetColor(DEEMPHASIZED_TEXT); 348 return GetColor(DEEMPHASIZED_TEXT);
345 } 349 }
346 350
347 SkColor text_color = GetColor(TEXT); 351 SkColor text_color = GetColor(TEXT);
348 if ((security_level == security_state::SecurityStateModel::EV_SECURE) || 352 if ((security_level == security_state::SecurityStateModel::EV_SECURE) ||
349 (security_level == security_state::SecurityStateModel::SECURE) || 353 (security_level == security_state::SecurityStateModel::SECURE) ||
350 (security_level == security_state::SecurityStateModel::SECURITY_ERROR)) { 354 (security_level == security_state::SecurityStateModel::SECURITY_ERROR)) {
351 const bool md = ui::MaterialDesignController::IsModeMaterial(); 355 const bool md = ui::MaterialDesignController::IsModeMaterial();
352 if (md && color_utils::IsDark(GetColor(BACKGROUND))) 356 if (md && color_utils::IsDark(GetColor(BACKGROUND)))
353 return text_color; 357 return text_color;
354 if (security_level == security_state::SecurityStateModel::SECURITY_ERROR) 358 if (security_level == security_state::SecurityStateModel::SECURITY_ERROR)
355 text_color = md ? gfx::kGoogleRed700 : SkColorSetRGB(162, 0, 0); 359 text_color = md ? gfx::kGoogleRed700 : SkColorSetRGB(162, 0, 0);
360 else if (md)
361 return gfx::kGoogleGreen700;
356 else 362 else
357 text_color = GetColor(EV_BUBBLE_TEXT_AND_BORDER); 363 return GetColor(EV_BUBBLE_TEXT_AND_BORDER);
Peter Kasting 2016/05/25 00:03:27 Nit: Shorter, and avoids else after return: i
Evan Stade 2016/05/25 20:03:44 good suggestion. Since we're switching on md so mu
358 } 364 }
359 return color_utils::GetReadableColor(text_color, GetColor(BACKGROUND)); 365 return color_utils::GetReadableColor(text_color, GetColor(BACKGROUND));
360 } 366 }
361 367
362 void LocationBarView::ZoomChangedForActiveTab(bool can_show_bubble) { 368 void LocationBarView::ZoomChangedForActiveTab(bool can_show_bubble) {
363 DCHECK(zoom_view_); 369 DCHECK(zoom_view_);
364 if (RefreshZoomView()) { 370 if (RefreshZoomView()) {
365 Layout(); 371 Layout();
366 SchedulePaint(); 372 SchedulePaint();
367 } 373 }
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 const int item_padding = GetLayoutConstant(LOCATION_BAR_HORIZONTAL_PADDING); 563 const int item_padding = GetLayoutConstant(LOCATION_BAR_HORIZONTAL_PADDING);
558 const int edge_thickness = GetHorizontalEdgeThickness(); 564 const int edge_thickness = GetHorizontalEdgeThickness();
559 int trailing_edge_item_padding = 0; 565 int trailing_edge_item_padding = 0;
560 if (!ui::MaterialDesignController::IsModeMaterial()) { 566 if (!ui::MaterialDesignController::IsModeMaterial()) {
561 trailing_edge_item_padding = 567 trailing_edge_item_padding =
562 item_padding - edge_thickness - omnibox_view_->GetInsets().right(); 568 item_padding - edge_thickness - omnibox_view_->GetInsets().right();
563 } 569 }
564 570
565 LocationBarLayout leading_decorations( 571 LocationBarLayout leading_decorations(
566 LocationBarLayout::LEFT_EDGE, item_padding, 572 LocationBarLayout::LEFT_EDGE, item_padding,
567 item_padding - omnibox_view_->GetInsets().left() - 573 ui::MaterialDesignController::IsModeMaterial()
568 GetEditLeadingInternalSpace()); 574 ? GetLayoutConstant(LOCATION_BAR_PRE_EDIT_SPACING)
575 : (item_padding - omnibox_view_->GetInsets().left() -
576 GetEditLeadingInternalSpace()));
Peter Kasting 2016/05/25 00:03:27 Won't not factoring in GetEditLeadingInternalSpace
Evan Stade 2016/05/25 20:03:44 changed RTL is tricky to get precisely correct be
569 LocationBarLayout trailing_decorations( 577 LocationBarLayout trailing_decorations(
570 LocationBarLayout::RIGHT_EDGE, item_padding, trailing_edge_item_padding); 578 LocationBarLayout::RIGHT_EDGE, item_padding, trailing_edge_item_padding);
571 579
572 const base::string16 keyword(omnibox_view_->model()->keyword()); 580 const base::string16 keyword(omnibox_view_->model()->keyword());
573 // In some cases (e.g. fullscreen mode) we may have 0 height. We still want 581 // In some cases (e.g. fullscreen mode) we may have 0 height. We still want
574 // to position our child views in this case, because other things may be 582 // to position our child views in this case, because other things may be
575 // positioned relative to them (e.g. the "bookmark added" bubble if the user 583 // positioned relative to them (e.g. the "bookmark added" bubble if the user
576 // hits ctrl-d). 584 // hits ctrl-d).
577 const int bubble_horizontal_padding = 585 const int bubble_horizontal_padding =
578 GetLayoutConstant(LOCATION_BAR_BUBBLE_HORIZONTAL_PADDING); 586 GetLayoutConstant(LOCATION_BAR_BUBBLE_HORIZONTAL_PADDING);
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 GetLayoutConstant(LOCATION_BAR_VERTICAL_PADDING); 850 GetLayoutConstant(LOCATION_BAR_VERTICAL_PADDING);
843 } 851 }
844 852
845 void LocationBarView::RefreshLocationIcon() { 853 void LocationBarView::RefreshLocationIcon() {
846 // |omnibox_view_| may not be ready yet if Init() has not been called. The 854 // |omnibox_view_| may not be ready yet if Init() has not been called. The
847 // icon will be set soon by OnChanged(). 855 // icon will be set soon by OnChanged().
848 if (!omnibox_view_) 856 if (!omnibox_view_)
849 return; 857 return;
850 858
851 if (ui::MaterialDesignController::IsModeMaterial()) { 859 if (ui::MaterialDesignController::IsModeMaterial()) {
852 gfx::VectorIconId icon_id = gfx::VectorIconId::VECTOR_ICON_NONE;
853 const int kIconSize = 16; 860 const int kIconSize = 16;
854 SkColor icon_color = gfx::kPlaceholderColor; 861 security_state::SecurityStateModel::SecurityLevel security_level =
855 if (ShouldShowEVBubble()) { 862 GetToolbarModel()->GetSecurityLevel(false);
856 icon_id = gfx::VectorIconId::LOCATION_BAR_HTTPS_VALID_IN_CHIP; 863 SkColor icon_color =
857 icon_color = location_icon_view_->GetTextColor(); 864 (security_level == security_state::SecurityStateModel::NONE)
858 } else { 865 ? color_utils::DeriveDefaultIconColor(GetColor(TEXT))
859 icon_id = omnibox_view_->GetVectorIcon(); 866 : GetSecureTextColor(security_level);
860 security_state::SecurityStateModel::SecurityLevel security_level = 867 location_icon_view_->SetImage(gfx::CreateVectorIcon(
861 GetToolbarModel()->GetSecurityLevel(false); 868 omnibox_view_->GetVectorIcon(), kIconSize, icon_color));
862 icon_color = (security_level == security_state::SecurityStateModel::NONE)
863 ? color_utils::DeriveDefaultIconColor(GetColor(TEXT))
864 : GetSecureTextColor(security_level);
865 }
866 location_icon_view_->SetImage(
867 gfx::CreateVectorIcon(icon_id, kIconSize, icon_color));
868 } else { 869 } else {
869 location_icon_view_->SetImage( 870 location_icon_view_->SetImage(
870 *GetThemeProvider()->GetImageSkiaNamed(omnibox_view_->GetIcon())); 871 *GetThemeProvider()->GetImageSkiaNamed(omnibox_view_->GetIcon()));
871 } 872 }
872 } 873 }
873 874
874 bool LocationBarView::RefreshContentSettingViews() { 875 bool LocationBarView::RefreshContentSettingViews() {
875 bool visibility_changed = false; 876 bool visibility_changed = false;
876 for (ContentSettingViews::const_iterator i(content_setting_views_.begin()); 877 for (ContentSettingViews::const_iterator i(content_setting_views_.begin());
877 i != content_setting_views_.end(); ++i) { 878 i != content_setting_views_.end(); ++i) {
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after
1382 // LocationBarView, private TemplateURLServiceObserver implementation: 1383 // LocationBarView, private TemplateURLServiceObserver implementation:
1383 1384
1384 void LocationBarView::OnTemplateURLServiceChanged() { 1385 void LocationBarView::OnTemplateURLServiceChanged() {
1385 template_url_service_->RemoveObserver(this); 1386 template_url_service_->RemoveObserver(this);
1386 template_url_service_ = nullptr; 1387 template_url_service_ = nullptr;
1387 // If the browser is no longer active, let's not show the info bubble, as this 1388 // If the browser is no longer active, let's not show the info bubble, as this
1388 // would make the browser the active window again. 1389 // would make the browser the active window again.
1389 if (omnibox_view_ && omnibox_view_->GetWidget()->IsActive()) 1390 if (omnibox_view_ && omnibox_view_->GetWidget()->IsActive())
1390 ShowFirstRunBubble(); 1391 ShowFirstRunBubble();
1391 } 1392 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698