Chromium Code Reviews| Index: chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm |
| diff --git a/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm b/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm |
| index cd2b95faefb8470578fb8128da5b00a47359f88f..fcec1bcf3b456d1630b6a5ea0e95fe046816f57f 100644 |
| --- a/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm |
| +++ b/chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.mm |
| @@ -129,13 +129,6 @@ const OmniboxViewMacState* GetStateFromTab(const WebContents* tab) { |
| tab->GetUserData(&kOmniboxViewMacStateKey)); |
| } |
| -// Helper to make converting url ranges to NSRange easier to |
| -// read. |
| -NSRange ComponentToNSRange(const url::Component& component) { |
| - return NSMakeRange(static_cast<NSInteger>(component.begin), |
| - static_cast<NSInteger>(component.len)); |
| -} |
| - |
| } // namespace |
| // static |
| @@ -545,6 +538,47 @@ void OmniboxViewMac::ApplyTextStyle( |
| range:NSMakeRange(0, [attributedString length])]; |
| } |
| +void OmniboxViewMac::SetEmphasis(bool emphasize, gfx::Range range) { |
| + bool in_dark_mode = [[field_ window] inIncognitoModeWithSystemTheme]; |
| + |
| + NSRange ns_range = range.IsValid() |
| + ? range.ToNSRange() |
| + : NSMakeRange(0, [attributing_display_string_ length]); |
| + |
| + [attributing_display_string_ |
| + addAttribute:NSForegroundColorAttributeName |
| + value:(emphasize) ? HostTextColor(in_dark_mode) |
| + : BaseTextColor(in_dark_mode) |
| + range:ns_range]; |
| +} |
| + |
| +void OmniboxViewMac::UpdateSchemeEmphasis(gfx::Range range) { |
| + if (!range.IsValid()) |
| + return; |
| + |
| + const security_state::SecurityLevel security_level = |
| + controller()->GetToolbarModel()->GetSecurityLevel(false); |
| + |
| + if ((security_level == security_state::NONE) || |
| + (security_level == security_state::HTTP_SHOW_WARNING)) |
| + return; |
| + |
| + if (security_level == security_state::DANGEROUS) { |
| + // Add a strikethrough through the scheme. |
| + [attributing_display_string_ |
| + addAttribute:NSStrikethroughStyleAttributeName |
| + value:[NSNumber numberWithInt:NSUnderlineStyleSingle] |
| + range:range.ToNSRange()]; |
| + } |
| + |
| + bool in_dark_mode = [[field_ window] inIncognitoModeWithSystemTheme]; |
| + |
| + [attributing_display_string_ |
| + addAttribute:NSForegroundColorAttributeName |
| + value:GetSecureTextColor(security_level, in_dark_mode) |
| + range:range.ToNSRange()]; |
| +} |
| + |
| void OmniboxViewMac::ApplyTextAttributes( |
| const base::string16& display_text, |
| NSMutableAttributedString* attributedString) { |
|
Robert Sesek
2017/03/01 18:29:45
nit: Since you're here, this should be attributed_
elawrence
2017/03/01 21:49:01
Done.
|
| @@ -552,8 +586,6 @@ void OmniboxViewMac::ApplyTextAttributes( |
| if (as_length == 0) { |
| return; |
| } |
| - NSRange as_entire_string = NSMakeRange(0, as_length); |
| - bool in_dark_mode = [[field_ window] inIncognitoModeWithSystemTheme]; |
| ApplyTextStyle(attributedString); |
| @@ -561,53 +593,13 @@ void OmniboxViewMac::ApplyTextAttributes( |
| // This works for IDNs too, despite the "en_US". |
| [attributedString addAttribute:@"NSLanguage" |
| value:@"en_US_POSIX" |
| - range:as_entire_string]; |
| + range:NSMakeRange(0, as_length)]; |
| - [attributedString addAttribute:NSForegroundColorAttributeName |
| - value:HostTextColor(in_dark_mode) |
| - range:as_entire_string]; |
| - |
| - url::Component scheme, host; |
| - AutocompleteInput::ParseForEmphasizeComponents( |
| - display_text, ChromeAutocompleteSchemeClassifier(profile_), &scheme, |
| - &host); |
| - bool grey_out_url = display_text.substr(scheme.begin, scheme.len) == |
| - base::UTF8ToUTF16(extensions::kExtensionScheme); |
| - if (model()->CurrentTextIsURL() && |
| - (host.is_nonempty() || grey_out_url)) { |
| - [attributedString addAttribute:NSForegroundColorAttributeName |
| - value:BaseTextColor(in_dark_mode) |
| - range:as_entire_string]; |
| - |
| - if (!grey_out_url) { |
| - [attributedString addAttribute:NSForegroundColorAttributeName |
| - value:HostTextColor(in_dark_mode) |
| - range:ComponentToNSRange(host)]; |
| - } |
| - } |
| - |
| - // TODO(shess): GTK has this as a member var, figure out why. |
| - // [Could it be to not change if no change? If so, I'm guessing |
| - // AppKit may already handle that.] |
| - const security_state::SecurityLevel security_level = |
| - controller()->GetToolbarModel()->GetSecurityLevel(false); |
| - |
| - // Emphasize the scheme for security UI display purposes (if necessary). |
| - if (!model()->user_input_in_progress() && model()->CurrentTextIsURL() && |
| - scheme.is_nonempty() && |
| - (security_level != security_state::NONE) && |
| - (security_level != security_state::HTTP_SHOW_WARNING)) { |
| - if (security_level == security_state::DANGEROUS) { |
| - // Add a strikethrough through the scheme. |
| - [attributedString addAttribute:NSStrikethroughStyleAttributeName |
| - value:[NSNumber numberWithInt:NSUnderlineStyleSingle] |
| - range:ComponentToNSRange(scheme)]; |
| - } |
| - [attributedString |
| - addAttribute:NSForegroundColorAttributeName |
| - value:GetSecureTextColor(security_level, in_dark_mode) |
| - range:ComponentToNSRange(scheme)]; |
| - } |
| + // Cache a pointer to the attributed string to allow the superclass' |
| + // virtual method invocations to add attributes. |
| + attributing_display_string_ = attributedString; |
|
Peter Kasting
2017/03/01 02:39:10
Nit: Consider using base::AutoReset here for safet
Robert Sesek
2017/03/01 18:29:45
Perhaps DCHECK that attributing_display_string_ is
elawrence
2017/03/01 21:49:01
Done.
elawrence
2017/03/01 21:49:01
Done.
|
| + ApplyEmphasis(display_text, ChromeAutocompleteSchemeClassifier(profile_)); |
| + attributing_display_string_ = nullptr; |
| } |
| void OmniboxViewMac::OnTemporaryTextMaybeChanged( |