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

Unified Diff: ios/chrome/browser/ui/omnibox/omnibox_view_ios.mm

Issue 2641003002: Show scheme in black and content in gray for data: protocol urls (Closed)
Patch Set: Update iOS Created 3 years, 10 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: ios/chrome/browser/ui/omnibox/omnibox_view_ios.mm
diff --git a/ios/chrome/browser/ui/omnibox/omnibox_view_ios.mm b/ios/chrome/browser/ui/omnibox/omnibox_view_ios.mm
index 47bf4aebde093f33a43e9ae01a3fd16b7527d748..425bb826672ef608c90c1ff2c36758c676acb96e 100644
--- a/ios/chrome/browser/ui/omnibox/omnibox_view_ios.mm
+++ b/ios/chrome/browser/ui/omnibox/omnibox_view_ios.mm
@@ -50,11 +50,6 @@ UIColor* ErrorTextColor() {
return skia::UIColorFromSkColor(gfx::kGoogleRed700);
}
-// The color of the https when there is a warning.
-UIColor* WarningTextColor() {
- return skia::UIColorFromSkColor(gfx::kGoogleYellow700);
-}
-
// The color of the https when there is not an error.
UIColor* SecureTextColor() {
return skia::UIColorFromSkColor(gfx::kGoogleGreen700);
@@ -65,13 +60,6 @@ UIColor* IncognitoSecureTextColor() {
return [UIColor colorWithWhite:(255 / 255.0) alpha:1.0];
}
-// Helper to make converting url_parse 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
// Simple Obj-C object to forward UITextFieldDelegate method calls back to the
@@ -634,61 +622,73 @@ void OmniboxViewIOS::WillPaste() {
model()->OnPaste();
}
+// static
+UIColor* OmniboxViewIOS::GetSecureTextColor(
+ security_state::SecurityLevel security_level,
+ bool in_dark_mode) {
+ if (security_level == security_state::EV_SECURE ||
+ security_level == security_state::SECURE) {
+ return in_dark_mode ? IncognitoSecureTextColor() : SecureTextColor();
+ }
+
+ // Don't color strikethrough in dark mode. See https://crbug.com/635004#c6
+ if (security_level == security_state::DANGEROUS && !in_dark_mode)
+ return ErrorTextColor();
+
+ return nil;
+}
+
+void OmniboxViewIOS::SetEmphasis(bool emphasize, gfx::Range range) {
+ NSRange ns_range = range.IsValid()
+ ? range.ToNSRange()
+ : NSMakeRange(0, [attributing_display_string_ length]);
+
+ [attributing_display_string_
+ addAttribute:NSForegroundColorAttributeName
+ value:(emphasize) ? [field_ displayedTextColor] : BaseTextColor()
+ range:ns_range];
+}
+
+void OmniboxViewIOS::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))
Eugene But (OOO till 7-30) 2017/02/28 23:04:38 nit: Do you want to add braces, because if stateme
elawrence 2017/03/01 21:49:02 Ok. I didn't see a style guide opinion on this one
Eugene But (OOO till 7-30) 2017/03/01 22:31:19 C++ Style Guide is quite vague on this: "In genera
Peter Kasting 2017/03/01 23:18:47 Read "statement" as specifically "loop body" in th
+ return;
+
+ DCHECK(security_level != security_state::SECURITY_WARNING);
Peter Kasting 2017/03/01 02:39:11 Nit: DCHECK_NE(security_state::SECURITY_WARNING, s
elawrence 2017/03/01 21:49:02 Done.
+ DCHECK(security_level != security_state::SECURE_WITH_POLICY_INSTALLED_CERT);
+
+ if (security_level == security_state::DANGEROUS) {
+ // Add a strikethrough through the scheme.
+ [attributing_display_string_
+ addAttribute:NSStrikethroughStyleAttributeName
+ value:[NSNumber numberWithInteger:NSUnderlineStyleSingle]
+ range:range.ToNSRange()];
+ }
+
+ UIColor* color = GetSecureTextColor(security_level, [field_ incognito]);
+ if (color) {
+ [attributing_display_string_ addAttribute:NSForegroundColorAttributeName
+ value:color
+ range:range.ToNSRange()];
+ }
+}
+
NSAttributedString* OmniboxViewIOS::ApplyTextAttributes(
const base::string16& text) {
NSMutableAttributedString* as = [[[NSMutableAttributedString alloc]
initWithString:base::SysUTF16ToNSString(text)] autorelease];
- url::Component scheme, host;
- AutocompleteInput::ParseForEmphasizeComponents(
- text, AutocompleteSchemeClassifierImpl(), &scheme, &host);
- const bool emphasize = model()->CurrentTextIsURL() && (host.len > 0);
- if (emphasize) {
- [as addAttribute:NSForegroundColorAttributeName
- value:BaseTextColor()
- range:NSMakeRange(0, [as length])];
-
- [as addAttribute:NSForegroundColorAttributeName
- value:[field_ displayedTextColor]
- range:ComponentToNSRange(host)];
-
- if (scheme.len > 0) {
- UIColor* color = nil;
- switch (controller_->GetToolbarModel()->GetSecurityLevel(false)) {
- case security_state::NONE:
- break;
- case security_state::SECURITY_WARNING:
- // Don't color strikethrough schemes. See https://crbug.com/635004#c6
- if (![field_ incognito])
- color = WarningTextColor();
- [as addAttribute:NSStrikethroughStyleAttributeName
- value:[NSNumber numberWithInteger:NSUnderlineStyleSingle]
- range:ComponentToNSRange(scheme)];
- break;
- case security_state::SECURE:
- case security_state::EV_SECURE:
- color = [field_ incognito] ? IncognitoSecureTextColor()
- : SecureTextColor();
- break;
- case security_state::DANGEROUS:
- // Don't color strikethrough schemes. See https://crbug.com/635004#c6
- if (![field_ incognito])
- color = ErrorTextColor();
- [as addAttribute:NSStrikethroughStyleAttributeName
- value:[NSNumber numberWithInteger:NSUnderlineStyleSingle]
- range:ComponentToNSRange(scheme)];
- break;
- case security_state::HTTP_SHOW_WARNING:
- case security_state::SECURE_WITH_POLICY_INSTALLED_CERT:
- NOTREACHED();
- }
- if (color) {
- [as addAttribute:NSForegroundColorAttributeName
- value:color
- range:ComponentToNSRange(scheme)];
- }
- }
- }
+ // Cache a pointer to the attributed string to allow the superclass'
+ // virtual method invocations to add attributes.
+ attributing_display_string_ = as;
Peter Kasting 2017/03/01 02:39:11 Nit: See Mac comment
elawrence 2017/03/01 21:49:02 Done.
+ ApplyEmphasis(text, AutocompleteSchemeClassifierImpl());
+ attributing_display_string_ = nullptr;
return as;
}

Powered by Google App Engine
This is Rietveld 408576698