OLD | NEW |
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/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 774 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
785 const bool is_keyword_hint(omnibox_view_->model()->is_keyword_hint()); | 785 const bool is_keyword_hint(omnibox_view_->model()->is_keyword_hint()); |
786 const int bubble_location_y = vertical_edge_thickness() + kBubblePadding; | 786 const int bubble_location_y = vertical_edge_thickness() + kBubblePadding; |
787 // In some cases (e.g. fullscreen mode) we may have 0 height. We still want | 787 // In some cases (e.g. fullscreen mode) we may have 0 height. We still want |
788 // to position our child views in this case, because other things may be | 788 // to position our child views in this case, because other things may be |
789 // positioned relative to them (e.g. the "bookmark added" bubble if the user | 789 // positioned relative to them (e.g. the "bookmark added" bubble if the user |
790 // hits ctrl-d). | 790 // hits ctrl-d). |
791 const int location_height = GetInternalHeight(false); | 791 const int location_height = GetInternalHeight(false); |
792 const int bubble_height = std::max(location_height - (kBubblePadding * 2), 0); | 792 const int bubble_height = std::max(location_height - (kBubblePadding * 2), 0); |
793 if (!keyword.empty() && !is_keyword_hint) { | 793 if (!keyword.empty() && !is_keyword_hint) { |
794 leading_decorations.AddDecoration(bubble_location_y, bubble_height, true, 0, | 794 leading_decorations.AddDecoration(bubble_location_y, bubble_height, true, 0, |
795 kBubblePadding, kItemPadding, 0, | 795 kBubblePadding, kItemPadding, |
796 selected_keyword_view_); | 796 selected_keyword_view_); |
797 if (selected_keyword_view_->keyword() != keyword) { | 797 if (selected_keyword_view_->keyword() != keyword) { |
798 selected_keyword_view_->SetKeyword(keyword); | 798 selected_keyword_view_->SetKeyword(keyword); |
799 const TemplateURL* template_url = | 799 const TemplateURL* template_url = |
800 TemplateURLServiceFactory::GetForProfile(profile())-> | 800 TemplateURLServiceFactory::GetForProfile(profile())-> |
801 GetTemplateURLForKeyword(keyword); | 801 GetTemplateURLForKeyword(keyword); |
802 if (template_url && | 802 if (template_url && |
803 (template_url->GetType() == TemplateURL::OMNIBOX_API_EXTENSION)) { | 803 (template_url->GetType() == TemplateURL::OMNIBOX_API_EXTENSION)) { |
804 gfx::Image image = extensions::OmniboxAPI::Get(profile())-> | 804 gfx::Image image = extensions::OmniboxAPI::Get(profile())-> |
805 GetOmniboxIcon(template_url->GetExtensionId()); | 805 GetOmniboxIcon(template_url->GetExtensionId()); |
806 selected_keyword_view_->SetImage(image.AsImageSkia()); | 806 selected_keyword_view_->SetImage(image.AsImageSkia()); |
807 selected_keyword_view_->set_is_extension_icon(true); | 807 selected_keyword_view_->set_is_extension_icon(true); |
808 } else { | 808 } else { |
809 selected_keyword_view_->SetImage( | 809 selected_keyword_view_->SetImage( |
810 *(GetThemeProvider()->GetImageSkiaNamed(IDR_OMNIBOX_SEARCH))); | 810 *(GetThemeProvider()->GetImageSkiaNamed(IDR_OMNIBOX_SEARCH))); |
811 selected_keyword_view_->set_is_extension_icon(false); | 811 selected_keyword_view_->set_is_extension_icon(false); |
812 } | 812 } |
813 } | 813 } |
814 } else if (!toolbar_origin_chip_view_ && | 814 } else if (!toolbar_origin_chip_view_ && |
815 !chrome::ShouldDisplayOriginChipV2() && | 815 !chrome::ShouldDisplayOriginChipV2() && |
816 (GetToolbarModel()->GetSecurityLevel(false) == ToolbarModel::EV_SECURE)) { | 816 (GetToolbarModel()->GetSecurityLevel(false) == ToolbarModel::EV_SECURE)) { |
817 ev_bubble_view_->SetLabel(GetToolbarModel()->GetEVCertName()); | 817 ev_bubble_view_->SetLabel(GetToolbarModel()->GetEVCertName()); |
818 // The largest fraction of the omnibox that can be taken by the EV bubble. | 818 // The largest fraction of the omnibox that can be taken by the EV bubble. |
819 const double kMaxBubbleFraction = 0.5; | 819 const double kMaxBubbleFraction = 0.5; |
820 leading_decorations.AddDecoration(bubble_location_y, bubble_height, false, | 820 leading_decorations.AddDecoration(bubble_location_y, bubble_height, false, |
821 kMaxBubbleFraction, kBubblePadding, | 821 kMaxBubbleFraction, kBubblePadding, |
822 kItemPadding, 0, ev_bubble_view_); | 822 kItemPadding, ev_bubble_view_); |
823 } else if (!origin_chip_view_->visible()) { | 823 } else if (!origin_chip_view_->visible()) { |
824 leading_decorations.AddDecoration( | 824 leading_decorations.AddDecoration( |
825 vertical_edge_thickness(), location_height, | 825 vertical_edge_thickness(), location_height, |
826 0, | |
827 location_icon_view_); | 826 location_icon_view_); |
828 } | 827 } |
829 | 828 |
830 if (star_view_->visible()) { | 829 if (star_view_->visible()) { |
831 trailing_decorations.AddDecoration( | 830 trailing_decorations.AddDecoration( |
832 vertical_edge_thickness(), location_height, | 831 vertical_edge_thickness(), location_height, star_view_); |
833 0, star_view_); | |
834 } | 832 } |
835 if (translate_icon_view_->visible()) { | 833 if (translate_icon_view_->visible()) { |
836 trailing_decorations.AddDecoration( | 834 trailing_decorations.AddDecoration( |
837 vertical_edge_thickness(), location_height, | 835 vertical_edge_thickness(), location_height, translate_icon_view_); |
838 0, | |
839 translate_icon_view_); | |
840 } | 836 } |
841 if (open_pdf_in_reader_view_->visible()) { | 837 if (open_pdf_in_reader_view_->visible()) { |
842 trailing_decorations.AddDecoration( | 838 trailing_decorations.AddDecoration( |
843 vertical_edge_thickness(), location_height, | 839 vertical_edge_thickness(), location_height, open_pdf_in_reader_view_); |
844 0, | |
845 open_pdf_in_reader_view_); | |
846 } | 840 } |
847 if (manage_passwords_icon_view_->visible()) { | 841 if (manage_passwords_icon_view_->visible()) { |
848 trailing_decorations.AddDecoration(vertical_edge_thickness(), | 842 trailing_decorations.AddDecoration(vertical_edge_thickness(), |
849 location_height, 0, | 843 location_height, |
850 manage_passwords_icon_view_); | 844 manage_passwords_icon_view_); |
851 } | 845 } |
852 for (PageActionViews::const_iterator i(page_action_views_.begin()); | 846 for (PageActionViews::const_iterator i(page_action_views_.begin()); |
853 i != page_action_views_.end(); ++i) { | 847 i != page_action_views_.end(); ++i) { |
854 if ((*i)->visible()) { | 848 if ((*i)->visible()) { |
855 trailing_decorations.AddDecoration( | 849 trailing_decorations.AddDecoration( |
856 vertical_edge_thickness(), location_height, | 850 vertical_edge_thickness(), location_height, (*i)); |
857 0, (*i)); | |
858 } | 851 } |
859 } | 852 } |
860 if (zoom_view_->visible()) { | 853 if (zoom_view_->visible()) { |
861 trailing_decorations.AddDecoration(vertical_edge_thickness(), | 854 trailing_decorations.AddDecoration(vertical_edge_thickness(), |
862 location_height, 0, zoom_view_); | 855 location_height, zoom_view_); |
863 } | 856 } |
864 for (ContentSettingViews::const_reverse_iterator i( | 857 for (ContentSettingViews::const_reverse_iterator i( |
865 content_setting_views_.rbegin()); i != content_setting_views_.rend(); | 858 content_setting_views_.rbegin()); i != content_setting_views_.rend(); |
866 ++i) { | 859 ++i) { |
867 if ((*i)->visible()) { | 860 if ((*i)->visible()) { |
868 trailing_decorations.AddDecoration( | 861 trailing_decorations.AddDecoration( |
869 bubble_location_y, bubble_height, false, 0, kItemPadding, | 862 bubble_location_y, bubble_height, false, 0, kItemPadding, |
870 kItemPadding, 0, (*i)); | 863 kItemPadding, (*i)); |
871 } | 864 } |
872 } | 865 } |
873 if (generated_credit_card_view_->visible()) { | 866 if (generated_credit_card_view_->visible()) { |
874 trailing_decorations.AddDecoration(vertical_edge_thickness(), | 867 trailing_decorations.AddDecoration(vertical_edge_thickness(), |
875 location_height, 0, | 868 location_height, |
876 generated_credit_card_view_); | 869 generated_credit_card_view_); |
877 } | 870 } |
878 if (mic_search_view_->visible()) { | 871 if (mic_search_view_->visible()) { |
879 trailing_decorations.AddDecoration(vertical_edge_thickness(), | 872 trailing_decorations.AddDecoration(vertical_edge_thickness(), |
880 location_height, 0, mic_search_view_); | 873 location_height, mic_search_view_); |
881 } | 874 } |
882 // Because IMEs may eat the tab key, we don't show "press tab to search" while | 875 // Because IMEs may eat the tab key, we don't show "press tab to search" while |
883 // IME composition is in progress. | 876 // IME composition is in progress. |
884 if (!keyword.empty() && is_keyword_hint && !omnibox_view_->IsImeComposing()) { | 877 if (!keyword.empty() && is_keyword_hint && !omnibox_view_->IsImeComposing()) { |
885 trailing_decorations.AddDecoration(vertical_edge_thickness(), | 878 trailing_decorations.AddDecoration(vertical_edge_thickness(), |
886 location_height, true, 0, kItemPadding, | 879 location_height, true, 0, kItemPadding, |
887 kItemPadding, 0, keyword_hint_view_); | 880 kItemPadding, keyword_hint_view_); |
888 if (keyword_hint_view_->keyword() != keyword) | 881 if (keyword_hint_view_->keyword() != keyword) |
889 keyword_hint_view_->SetKeyword(keyword); | 882 keyword_hint_view_->SetKeyword(keyword); |
890 } | 883 } |
891 | 884 |
892 // Perform layout. | 885 // Perform layout. |
893 const int horizontal_edge_thickness = GetHorizontalEdgeThickness(); | 886 const int horizontal_edge_thickness = GetHorizontalEdgeThickness(); |
894 int full_width = width() - horizontal_edge_thickness - origin_chip_width; | 887 int full_width = width() - horizontal_edge_thickness - origin_chip_width; |
895 | 888 |
896 // The search button images are made to look as if they overlay the normal | 889 // The search button images are made to look as if they overlay the normal |
897 // edge images, but to align things, the search button needs to be inset | 890 // edge images, but to align things, the search button needs to be inset |
(...skipping 777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1675 void LocationBarView::ModelChanged(const SearchModel::State& old_state, | 1668 void LocationBarView::ModelChanged(const SearchModel::State& old_state, |
1676 const SearchModel::State& new_state) { | 1669 const SearchModel::State& new_state) { |
1677 const bool visible = !GetToolbarModel()->input_in_progress() && | 1670 const bool visible = !GetToolbarModel()->input_in_progress() && |
1678 new_state.voice_search_supported; | 1671 new_state.voice_search_supported; |
1679 if (mic_search_view_->visible() != visible) { | 1672 if (mic_search_view_->visible() != visible) { |
1680 mic_search_view_->SetVisible(visible); | 1673 mic_search_view_->SetVisible(visible); |
1681 Layout(); | 1674 Layout(); |
1682 } | 1675 } |
1683 } | 1676 } |
1684 | 1677 |
OLD | NEW |