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

Unified Diff: chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm

Issue 1718563002: Convert location bar decorations to Material Design (Mac). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@md_toolbar
Patch Set: Fix issue from browser test. Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
diff --git a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
index 6f9d9b5464a1fd6894aa423f60366e979b0c0828..bc3aeeb1ac6fd54b01e7299f60967eb0e28d6767 100644
--- a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
+++ b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
@@ -67,7 +67,13 @@
#include "skia/ext/skia_utils_mac.h"
#import "ui/base/cocoa/cocoa_base_utils.h"
#include "ui/base/l10n/l10n_util_mac.h"
+#include "ui/base/material_design/material_design_controller.h"
+#include "ui/gfx/color_palette.h"
+#include "ui/gfx/color_utils.h"
#include "ui/gfx/image/image.h"
+#include "ui/gfx/image/image_skia_util_mac.h"
+#include "ui/gfx/paint_vector_icon.h"
+#include "ui/gfx/vector_icons_public.h"
using content::WebContents;
@@ -197,6 +203,8 @@ void LocationBarViewMac::UpdateSaveCreditCardIcon() {
bool enabled = controller && controller->IsIconVisible();
command_updater()->UpdateCommandEnabled(IDC_SAVE_CREDIT_CARD_FOR_PAGE,
enabled);
+ bool inDarkMode = [[field_ window] inIncognitoModeWithSystemTheme];
+ save_credit_card_decoration_->SetIcon(inDarkMode);
save_credit_card_decoration_->SetVisible(enabled);
OnDecorationsChanged();
}
@@ -339,7 +347,8 @@ void LocationBarViewMac::SetStarred(bool starred) {
}
void LocationBarViewMac::SetTranslateIconLit(bool on) {
- translate_decoration_->SetLit(on);
+ bool inDarkMode = [[field_ window] inIncognitoModeWithSystemTheme];
+ translate_decoration_->SetLit(on, inDarkMode);
OnDecorationsChanged();
}
@@ -447,8 +456,7 @@ void LocationBarViewMac::Layout() {
selected_keyword_decoration_->SetVisible(true);
selected_keyword_decoration_->SetKeyword(short_name, is_extension_keyword);
selected_keyword_decoration_->SetImage(GetKeywordImage(keyword));
- } else if (GetToolbarModel()->GetSecurityLevel(false) ==
- security_state::SecurityStateModel::EV_SECURE) {
+ } else if (ShouldShowEVBubble()) {
// Switch from location icon to show the EV bubble instead.
location_icon_decoration_->SetVisible(false);
ev_bubble_decoration_->SetVisible(true);
@@ -546,20 +554,64 @@ void LocationBarViewMac::UpdateWithoutTabRestore() {
Update(nullptr);
}
-void LocationBarViewMac::OnChanged() {
- // Update the location-bar icon.
- const int resource_id = omnibox_view_->GetIcon();
- NSImage* image = OmniboxViewMac::ImageForResource(resource_id);
+void LocationBarViewMac::UpdateLocationIcon() {
+ bool inDarkMode = [[field_ window] inIncognitoModeWithSystemTheme];
+
+ SkColor vectorIconColor = gfx::kPlaceholderColor;
+ gfx::VectorIconId vectorIconId = gfx::VectorIconId::VECTOR_ICON_NONE;
+ const int kIconSize = 16;
+ if (ShouldShowEVBubble()) {
+ vectorIconId = gfx::VectorIconId::LOCATION_BAR_HTTPS_VALID_IN_CHIP;
+ vectorIconColor = gfx::kGoogleGreen700;
+ } else {
+ vectorIconId = omnibox_view_->GetVectorIcon(inDarkMode);
+ if (inDarkMode) {
+ vectorIconColor = SK_ColorWHITE;
+ } else {
+ NSColor* textColor = OmniboxViewMac::BaseTextColor(inDarkMode);
+ // Convert to the device color space before getting the SkColor.
+ textColor = [textColor colorUsingColorSpaceName:NSDeviceRGBColorSpace];
+ vectorIconColor = skia::NSDeviceColorToSkColor(textColor);
+ }
+ }
+
+ DCHECK(vectorIconId != gfx::VectorIconId::VECTOR_ICON_NONE);
+ NSImage* image = NSImageFromImageSkia(gfx::CreateVectorIcon(
+ vectorIconId, kIconSize, vectorIconColor));
+
location_icon_decoration_->SetImage(image);
ev_bubble_decoration_->SetImage(image);
+
Layout();
+}
+
+void LocationBarViewMac::OnAddedToWindow() {
+ if (!ui::MaterialDesignController::IsModeMaterial()) {
+ return;
+ }
+
+ // Update the location-bar icon.
+ UpdateLocationIcon();
- // Make sure we're displaying the correct icon color for a dark location bar.
+ // Make sure we're displaying the correct star color for a dark location bar.
if ([[field_ window] inIncognitoModeWithSystemTheme]) {
star_decoration_->SetStarred(star_decoration_->starred(), true);
}
}
+void LocationBarViewMac::OnChanged() {
+ NSImage* image = nil;
+ if (ui::MaterialDesignController::IsModeMaterial()) {
+ UpdateLocationIcon();
+ } else {
+ const int resource_id = omnibox_view_->GetIcon();
+ image = OmniboxViewMac::ImageForResource(resource_id);
+ location_icon_decoration_->SetImage(image);
+ ev_bubble_decoration_->SetImage(image);
+ Layout();
+ }
+}
+
void LocationBarViewMac::OnSetFocus() {
// Update the keyword and search hint states.
OnChanged();
@@ -581,6 +633,11 @@ WebContents* LocationBarViewMac::GetWebContents() {
return browser_->tab_strip_model()->GetActiveWebContents();
}
+bool LocationBarViewMac::ShouldShowEVBubble() const {
+ return (GetToolbarModel()->GetSecurityLevel(false) ==
+ security_state::SecurityStateModel::EV_SECURE);
+}
+
NSImage* LocationBarViewMac::GetKeywordImage(const base::string16& keyword) {
const TemplateURL* template_url = TemplateURLServiceFactory::GetForProfile(
profile())->GetTemplateURLForKeyword(keyword);
@@ -590,7 +647,10 @@ NSImage* LocationBarViewMac::GetKeywordImage(const base::string16& keyword) {
GetOmniboxIcon(template_url->GetExtensionId()).AsNSImage();
}
- return OmniboxViewMac::ImageForResource(IDR_OMNIBOX_SEARCH);
+ return ui::MaterialDesignController::IsModeMaterial()
+ ? NSImageFromImageSkia(gfx::CreateVectorIcon(
+ gfx::VectorIconId::OMNIBOX_SEARCH, 16, gfx::kGoogleBlue700))
+ : OmniboxViewMac::ImageForResource(IDR_OMNIBOX_SEARCH);
}
void LocationBarViewMac::PostNotification(NSString* notification) {
@@ -713,7 +773,8 @@ void LocationBarViewMac::UpdateTranslateDecoration() {
bool enabled = language_state.translate_enabled();
command_updater()->UpdateCommandEnabled(IDC_TRANSLATE_PAGE, enabled);
translate_decoration_->SetVisible(enabled);
- translate_decoration_->SetLit(language_state.IsPageTranslated());
+ bool inDarkMode = [[field_ window] inIncognitoModeWithSystemTheme];
+ translate_decoration_->SetLit(language_state.IsPageTranslated(), inDarkMode);
}
bool LocationBarViewMac::UpdateZoomDecoration(bool default_zoom_changed) {
@@ -721,9 +782,11 @@ bool LocationBarViewMac::UpdateZoomDecoration(bool default_zoom_changed) {
if (!web_contents)
return false;
+ bool inDarkMode = [[field_ window] inIncognitoModeWithSystemTheme];
return zoom_decoration_->UpdateIfNecessary(
ui_zoom::ZoomController::FromWebContents(web_contents),
- default_zoom_changed);
+ default_zoom_changed,
+ inDarkMode);
}
void LocationBarViewMac::OnDefaultZoomLevelChanged() {

Powered by Google App Engine
This is Rietveld 408576698