| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" | 5 #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #import "base/mac/mac_util.h" | 9 #import "base/mac/mac_util.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 keyword_hint_decoration_(new KeywordHintDecoration()), | 121 keyword_hint_decoration_(new KeywordHintDecoration()), |
| 122 manage_passwords_decoration_( | 122 manage_passwords_decoration_( |
| 123 new ManagePasswordsDecoration(command_updater, this)), | 123 new ManagePasswordsDecoration(command_updater, this)), |
| 124 browser_(browser), | 124 browser_(browser), |
| 125 location_bar_visible_(true), | 125 location_bar_visible_(true), |
| 126 should_show_secure_verbose_(false), | 126 should_show_secure_verbose_(false), |
| 127 should_show_nonsecure_verbose_(false), | 127 should_show_nonsecure_verbose_(false), |
| 128 should_animate_secure_verbose_(false), | 128 should_animate_secure_verbose_(false), |
| 129 should_animate_nonsecure_verbose_(false), | 129 should_animate_nonsecure_verbose_(false), |
| 130 is_width_available_for_security_verbose_(false), | 130 is_width_available_for_security_verbose_(false), |
| 131 security_level_(security_state::SecurityStateModel::NONE), | 131 security_level_(security_state::NONE), |
| 132 weak_ptr_factory_(this) { | 132 weak_ptr_factory_(this) { |
| 133 ScopedVector<ContentSettingImageModel> models = | 133 ScopedVector<ContentSettingImageModel> models = |
| 134 ContentSettingImageModel::GenerateContentSettingImageModels(); | 134 ContentSettingImageModel::GenerateContentSettingImageModels(); |
| 135 for (ContentSettingImageModel* model : models.get()) { | 135 for (ContentSettingImageModel* model : models.get()) { |
| 136 // ContentSettingDecoration takes ownership of its model. | 136 // ContentSettingDecoration takes ownership of its model. |
| 137 content_setting_decorations_.push_back( | 137 content_setting_decorations_.push_back( |
| 138 new ContentSettingDecoration(model, this, profile)); | 138 new ContentSettingDecoration(model, this, profile)); |
| 139 } | 139 } |
| 140 models.weak_clear(); | 140 models.weak_clear(); |
| 141 | 141 |
| (...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 692 const ToolbarModel* LocationBarViewMac::GetToolbarModel() const { | 692 const ToolbarModel* LocationBarViewMac::GetToolbarModel() const { |
| 693 return browser_->toolbar_model(); | 693 return browser_->toolbar_model(); |
| 694 } | 694 } |
| 695 | 695 |
| 696 WebContents* LocationBarViewMac::GetWebContents() { | 696 WebContents* LocationBarViewMac::GetWebContents() { |
| 697 return browser_->tab_strip_model()->GetActiveWebContents(); | 697 return browser_->tab_strip_model()->GetActiveWebContents(); |
| 698 } | 698 } |
| 699 | 699 |
| 700 bool LocationBarViewMac::ShouldShowEVBubble() const { | 700 bool LocationBarViewMac::ShouldShowEVBubble() const { |
| 701 return GetToolbarModel()->GetSecurityLevel(false) == | 701 return GetToolbarModel()->GetSecurityLevel(false) == |
| 702 security_state::SecurityStateModel::EV_SECURE; | 702 security_state::EV_SECURE; |
| 703 } | 703 } |
| 704 | 704 |
| 705 bool LocationBarViewMac::ShouldShowSecurityState() const { | 705 bool LocationBarViewMac::ShouldShowSecurityState() const { |
| 706 if (omnibox_view_->IsEditingOrEmpty() || | 706 if (omnibox_view_->IsEditingOrEmpty() || |
| 707 omnibox_view_->model()->is_keyword_hint()) { | 707 omnibox_view_->model()->is_keyword_hint()) { |
| 708 return false; | 708 return false; |
| 709 } | 709 } |
| 710 | 710 |
| 711 security_state::SecurityStateModel::SecurityLevel security = | 711 security_state::SecurityLevel security = |
| 712 GetToolbarModel()->GetSecurityLevel(false); | 712 GetToolbarModel()->GetSecurityLevel(false); |
| 713 | 713 |
| 714 if (security == security_state::SecurityStateModel::EV_SECURE) | 714 if (security == security_state::EV_SECURE) |
| 715 return true; | 715 return true; |
| 716 else if (security == security_state::SecurityStateModel::SECURE) | 716 else if (security == security_state::SECURE) |
| 717 return should_show_secure_verbose_; | 717 return should_show_secure_verbose_; |
| 718 | 718 |
| 719 return should_show_nonsecure_verbose_ && | 719 return should_show_nonsecure_verbose_ && |
| 720 (security == security_state::SecurityStateModel::DANGEROUS || | 720 (security == security_state::DANGEROUS || |
| 721 security == security_state::SecurityStateModel::HTTP_SHOW_WARNING); | 721 security == security_state::HTTP_SHOW_WARNING); |
| 722 } | 722 } |
| 723 | 723 |
| 724 bool LocationBarViewMac::IsLocationBarDark() const { | 724 bool LocationBarViewMac::IsLocationBarDark() const { |
| 725 return [[field_ window] inIncognitoModeWithSystemTheme]; | 725 return [[field_ window] inIncognitoModeWithSystemTheme]; |
| 726 } | 726 } |
| 727 | 727 |
| 728 NSImage* LocationBarViewMac::GetKeywordImage(const base::string16& keyword) { | 728 NSImage* LocationBarViewMac::GetKeywordImage(const base::string16& keyword) { |
| 729 const TemplateURL* template_url = TemplateURLServiceFactory::GetForProfile( | 729 const TemplateURL* template_url = TemplateURLServiceFactory::GetForProfile( |
| 730 profile())->GetTemplateURLForKeyword(keyword); | 730 profile())->GetTemplateURLForKeyword(keyword); |
| 731 if (template_url && | 731 if (template_url && |
| (...skipping 11 matching lines...) Expand all Loading... |
| 743 } | 743 } |
| 744 | 744 |
| 745 SkColor LocationBarViewMac::GetLocationBarIconColor() const { | 745 SkColor LocationBarViewMac::GetLocationBarIconColor() const { |
| 746 bool in_dark_mode = IsLocationBarDark(); | 746 bool in_dark_mode = IsLocationBarDark(); |
| 747 if (in_dark_mode) | 747 if (in_dark_mode) |
| 748 return kMaterialDarkVectorIconColor; | 748 return kMaterialDarkVectorIconColor; |
| 749 | 749 |
| 750 if (ShouldShowEVBubble()) | 750 if (ShouldShowEVBubble()) |
| 751 return gfx::kGoogleGreen700; | 751 return gfx::kGoogleGreen700; |
| 752 | 752 |
| 753 security_state::SecurityStateModel::SecurityLevel security_level = | 753 security_state::SecurityLevel security_level = |
| 754 GetToolbarModel()->GetSecurityLevel(false); | 754 GetToolbarModel()->GetSecurityLevel(false); |
| 755 | 755 |
| 756 if (security_level == security_state::SecurityStateModel::NONE || | 756 if (security_level == security_state::NONE || |
| 757 security_level == security_state::SecurityStateModel::HTTP_SHOW_WARNING) { | 757 security_level == security_state::HTTP_SHOW_WARNING) { |
| 758 return gfx::kChromeIconGrey; | 758 return gfx::kChromeIconGrey; |
| 759 } | 759 } |
| 760 | 760 |
| 761 NSColor* srgb_color = | 761 NSColor* srgb_color = |
| 762 OmniboxViewMac::GetSecureTextColor(security_level, in_dark_mode); | 762 OmniboxViewMac::GetSecureTextColor(security_level, in_dark_mode); |
| 763 NSColor* device_color = | 763 NSColor* device_color = |
| 764 [srgb_color colorUsingColorSpace:[NSColorSpace deviceRGBColorSpace]]; | 764 [srgb_color colorUsingColorSpace:[NSColorSpace deviceRGBColorSpace]]; |
| 765 return skia::NSDeviceColorToSkColor(device_color); | 765 return skia::NSDeviceColorToSkColor(device_color); |
| 766 } | 766 } |
| 767 | 767 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 893 WebContents* web_contents = GetWebContents(); | 893 WebContents* web_contents = GetWebContents(); |
| 894 if (!web_contents) | 894 if (!web_contents) |
| 895 return false; | 895 return false; |
| 896 | 896 |
| 897 return zoom_decoration_->UpdateIfNecessary( | 897 return zoom_decoration_->UpdateIfNecessary( |
| 898 zoom::ZoomController::FromWebContents(web_contents), default_zoom_changed, | 898 zoom::ZoomController::FromWebContents(web_contents), default_zoom_changed, |
| 899 IsLocationBarDark()); | 899 IsLocationBarDark()); |
| 900 } | 900 } |
| 901 | 901 |
| 902 void LocationBarViewMac::UpdateSecurityState(bool tab_changed) { | 902 void LocationBarViewMac::UpdateSecurityState(bool tab_changed) { |
| 903 using SecurityLevel = security_state::SecurityStateModel::SecurityLevel; | 903 using SecurityLevel = security_state::SecurityLevel; |
| 904 SecurityLevel new_security_level = GetToolbarModel()->GetSecurityLevel(false); | 904 SecurityLevel new_security_level = GetToolbarModel()->GetSecurityLevel(false); |
| 905 | 905 |
| 906 // If there's enough space, but the secure state decoration had animated | 906 // If there's enough space, but the secure state decoration had animated |
| 907 // out, animate it back in. Otherwise, if the security state has changed, | 907 // out, animate it back in. Otherwise, if the security state has changed, |
| 908 // animate the decoration if animation is enabled and the state changed is | 908 // animate the decoration if animation is enabled and the state changed is |
| 909 // not from a tab switch. | 909 // not from a tab switch. |
| 910 if (ShouldShowSecurityState() && is_width_available_for_security_verbose_) { | 910 if (ShouldShowSecurityState() && is_width_available_for_security_verbose_) { |
| 911 bool is_secure_to_secure = IsSecureConnection(new_security_level) && | 911 bool is_secure_to_secure = IsSecureConnection(new_security_level) && |
| 912 IsSecureConnection(security_level_); | 912 IsSecureConnection(security_level_); |
| 913 bool is_new_security_level = | 913 bool is_new_security_level = |
| 914 security_level_ != new_security_level && !is_secure_to_secure; | 914 security_level_ != new_security_level && !is_secure_to_secure; |
| 915 if (!tab_changed && security_state_bubble_decoration_->HasAnimatedOut()) | 915 if (!tab_changed && security_state_bubble_decoration_->HasAnimatedOut()) |
| 916 security_state_bubble_decoration_->AnimateIn(false); | 916 security_state_bubble_decoration_->AnimateIn(false); |
| 917 else if (tab_changed || !CanAnimateSecurityLevel(new_security_level)) | 917 else if (tab_changed || !CanAnimateSecurityLevel(new_security_level)) |
| 918 security_state_bubble_decoration_->ShowWithoutAnimation(); | 918 security_state_bubble_decoration_->ShowWithoutAnimation(); |
| 919 else if (is_new_security_level) | 919 else if (is_new_security_level) |
| 920 security_state_bubble_decoration_->AnimateIn(); | 920 security_state_bubble_decoration_->AnimateIn(); |
| 921 } else if (!is_width_available_for_security_verbose_ || | 921 } else if (!is_width_available_for_security_verbose_ || |
| 922 CanAnimateSecurityLevel(security_level_)) { | 922 CanAnimateSecurityLevel(security_level_)) { |
| 923 security_state_bubble_decoration_->AnimateOut(); | 923 security_state_bubble_decoration_->AnimateOut(); |
| 924 } | 924 } |
| 925 | 925 |
| 926 security_level_ = new_security_level; | 926 security_level_ = new_security_level; |
| 927 } | 927 } |
| 928 | 928 |
| 929 bool LocationBarViewMac::CanAnimateSecurityLevel( | 929 bool LocationBarViewMac::CanAnimateSecurityLevel( |
| 930 security_state::SecurityStateModel::SecurityLevel level) const { | 930 security_state::SecurityLevel level) const { |
| 931 using SecurityLevel = security_state::SecurityStateModel::SecurityLevel; | 931 using SecurityLevel = security_state::SecurityLevel; |
| 932 if (IsSecureConnection(level)) { | 932 if (IsSecureConnection(level)) { |
| 933 return should_animate_secure_verbose_; | 933 return should_animate_secure_verbose_; |
| 934 } else if (security_level_ == SecurityLevel::DANGEROUS || | 934 } else if (security_level_ == SecurityLevel::DANGEROUS || |
| 935 security_level_ == SecurityLevel::HTTP_SHOW_WARNING) { | 935 security_level_ == SecurityLevel::HTTP_SHOW_WARNING) { |
| 936 return should_animate_nonsecure_verbose_; | 936 return should_animate_nonsecure_verbose_; |
| 937 } else { | 937 } else { |
| 938 return false; | 938 return false; |
| 939 } | 939 } |
| 940 } | 940 } |
| 941 | 941 |
| 942 bool LocationBarViewMac::IsSecureConnection( | 942 bool LocationBarViewMac::IsSecureConnection( |
| 943 security_state::SecurityStateModel::SecurityLevel level) const { | 943 security_state::SecurityLevel level) const { |
| 944 return level == security_state::SecurityStateModel::SECURE || | 944 return level == security_state::SECURE || |
| 945 level == security_state::SecurityStateModel::EV_SECURE; | 945 level == security_state::EV_SECURE; |
| 946 } | 946 } |
| 947 | 947 |
| 948 void LocationBarViewMac::UpdateAccessibilityViewPosition( | 948 void LocationBarViewMac::UpdateAccessibilityViewPosition( |
| 949 LocationBarDecoration* decoration) { | 949 LocationBarDecoration* decoration) { |
| 950 if (!decoration->IsVisible()) | 950 if (!decoration->IsVisible()) |
| 951 return; | 951 return; |
| 952 NSRect r = | 952 NSRect r = |
| 953 [[field_ cell] frameForDecoration:decoration inFrame:[field_ frame]]; | 953 [[field_ cell] frameForDecoration:decoration inFrame:[field_ frame]]; |
| 954 [decoration->GetAccessibilityView() setFrame:r]; | 954 [decoration->GetAccessibilityView() setFrame:r]; |
| 955 [decoration->GetAccessibilityView() setNeedsDisplayInRect:r]; | 955 [decoration->GetAccessibilityView() setNeedsDisplayInRect:r]; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 975 OnDecorationsChanged(); | 975 OnDecorationsChanged(); |
| 976 } | 976 } |
| 977 | 977 |
| 978 std::vector<NSView*> LocationBarViewMac::GetDecorationAccessibilityViews() { | 978 std::vector<NSView*> LocationBarViewMac::GetDecorationAccessibilityViews() { |
| 979 std::vector<LocationBarDecoration*> decorations = GetDecorations(); | 979 std::vector<LocationBarDecoration*> decorations = GetDecorations(); |
| 980 std::vector<NSView*> views; | 980 std::vector<NSView*> views; |
| 981 for (auto* decoration : decorations) | 981 for (auto* decoration : decorations) |
| 982 views.push_back(decoration->GetAccessibilityView()); | 982 views.push_back(decoration->GetAccessibilityView()); |
| 983 return views; | 983 return views; |
| 984 } | 984 } |
| OLD | NEW |