| 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/i18n/rtl.h" | 10 #include "base/i18n/rtl.h" |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 return base::i18n::IsRTL() ? 1 : 0; | 109 return base::i18n::IsRTL() ? 1 : 0; |
| 110 } | 110 } |
| 111 | 111 |
| 112 } // namespace | 112 } // namespace |
| 113 | 113 |
| 114 | 114 |
| 115 // LocationBarView ----------------------------------------------------------- | 115 // LocationBarView ----------------------------------------------------------- |
| 116 | 116 |
| 117 // static | 117 // static |
| 118 | 118 |
| 119 // Thickness of the edges of the omnibox background images, for popup windows. | |
| 120 const int kPopupEdgeThickness = 1; | |
| 121 | |
| 122 const char LocationBarView::kViewClassName[] = "LocationBarView"; | 119 const char LocationBarView::kViewClassName[] = "LocationBarView"; |
| 123 | 120 |
| 124 LocationBarView::LocationBarView(Browser* browser, | 121 LocationBarView::LocationBarView(Browser* browser, |
| 125 Profile* profile, | 122 Profile* profile, |
| 126 CommandUpdater* command_updater, | 123 CommandUpdater* command_updater, |
| 127 Delegate* delegate, | 124 Delegate* delegate, |
| 128 bool is_popup_mode) | 125 bool is_popup_mode) |
| 129 : LocationBar(profile), | 126 : LocationBar(profile), |
| 130 ChromeOmniboxEditController(command_updater), | 127 ChromeOmniboxEditController(command_updater), |
| 131 browser_(browser), | 128 browser_(browser), |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 } | 164 } |
| 168 | 165 |
| 169 //////////////////////////////////////////////////////////////////////////////// | 166 //////////////////////////////////////////////////////////////////////////////// |
| 170 // LocationBarView, public: | 167 // LocationBarView, public: |
| 171 | 168 |
| 172 void LocationBarView::Init() { | 169 void LocationBarView::Init() { |
| 173 // We need to be in a Widget, otherwise GetNativeTheme() may change and we're | 170 // We need to be in a Widget, otherwise GetNativeTheme() may change and we're |
| 174 // not prepared for that. | 171 // not prepared for that. |
| 175 DCHECK(GetWidget()); | 172 DCHECK(GetWidget()); |
| 176 | 173 |
| 177 if (is_popup_mode_) { | 174 if (!ui::MaterialDesignController::IsModeMaterial()) { |
| 178 const int kOmniboxPopupBorderImages[] = | 175 if (is_popup_mode_) { |
| 179 IMAGE_GRID(IDR_OMNIBOX_POPUP_BORDER_AND_SHADOW); | 176 const int kOmniboxPopupBorderImages[] = |
| 180 border_painter_.reset( | 177 IMAGE_GRID(IDR_OMNIBOX_POPUP_BORDER_AND_SHADOW); |
| 181 views::Painter::CreateImageGridPainter(kOmniboxPopupBorderImages)); | 178 border_painter_.reset( |
| 182 } else if (!ui::MaterialDesignController::IsModeMaterial()) { | 179 views::Painter::CreateImageGridPainter(kOmniboxPopupBorderImages)); |
| 183 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | 180 } else { |
| 184 const gfx::Insets omnibox_border_insets(14, 9, 14, 9); | 181 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
| 185 border_painter_.reset(views::Painter::CreateImagePainter( | 182 const gfx::Insets omnibox_border_insets(14, 9, 14, 9); |
| 186 *rb.GetImageSkiaNamed(IDR_OMNIBOX_BORDER), omnibox_border_insets)); | 183 border_painter_.reset(views::Painter::CreateImagePainter( |
| 184 *rb.GetImageSkiaNamed(IDR_OMNIBOX_BORDER), omnibox_border_insets)); |
| 185 } |
| 187 } | 186 } |
| 188 | 187 |
| 189 location_icon_view_ = new LocationIconView(this); | 188 location_icon_view_ = new LocationIconView(this); |
| 190 location_icon_view_->set_drag_controller(this); | 189 location_icon_view_->set_drag_controller(this); |
| 191 AddChildView(location_icon_view_); | 190 AddChildView(location_icon_view_); |
| 192 | 191 |
| 193 // Determine the main font. | 192 // Determine the main font. |
| 194 gfx::FontList font_list = ResourceBundle::GetSharedInstance().GetFontList( | 193 gfx::FontList font_list = ResourceBundle::GetSharedInstance().GetFontList( |
| 195 ResourceBundle::BaseFont); | 194 ResourceBundle::BaseFont); |
| 196 const int current_font_size = font_list.GetFontSize(); | 195 const int current_font_size = font_list.GetFontSize(); |
| 197 const int desired_font_size = GetLayoutConstant(OMNIBOX_FONT_PIXEL_SIZE); | 196 const int desired_font_size = GetLayoutConstant(OMNIBOX_FONT_PIXEL_SIZE); |
| 198 if (current_font_size != desired_font_size) { | 197 if (current_font_size != desired_font_size) { |
| 199 font_list = | 198 font_list = |
| 200 font_list.DeriveWithSizeDelta(desired_font_size - current_font_size); | 199 font_list.DeriveWithSizeDelta(desired_font_size - current_font_size); |
| 201 } | 200 } |
| 202 // Shrink large fonts to make them fit. | 201 // Shrink large fonts to make them fit. |
| 203 // TODO(pkasting): Stretch the location bar instead in this case. | 202 // TODO(pkasting): Stretch the location bar instead in this case. |
| 204 const int location_height = GetInternalHeight(true); | 203 const int location_height = GetInternalHeight(true); |
| 205 font_list = font_list.DeriveWithHeightUpperBound(location_height); | 204 font_list = font_list.DeriveWithHeightUpperBound(location_height); |
| 206 | 205 |
| 207 // Determine the font for use inside the bubbles. The bubble background | 206 // Determine the font for use inside the bubbles. The bubble background |
| 208 // images have 1 px thick edges, which we don't want to overlap. | 207 // images have 1 px thick edges, which we don't want to overlap. |
| 209 const int kBubbleInteriorVerticalPadding = | 208 const int kBubbleInteriorVerticalPadding = |
| 210 ui::MaterialDesignController::IsModeMaterial() ? 2 : 1; | 209 ui::MaterialDesignController::IsModeMaterial() ? 2 : 1; |
| 211 const int bubble_padding = | 210 const int bubble_padding = |
| 212 GetVerticalEdgeThickness() + | 211 GetEdgeThickness() + |
| 213 GetLayoutConstant(LOCATION_BAR_BUBBLE_VERTICAL_PADDING) + | 212 GetLayoutConstant(LOCATION_BAR_BUBBLE_VERTICAL_PADDING) + |
| 214 kBubbleInteriorVerticalPadding; | 213 kBubbleInteriorVerticalPadding; |
| 215 const int bubble_height = GetPreferredSize().height() - (bubble_padding * 2); | 214 const int bubble_height = GetPreferredSize().height() - (bubble_padding * 2); |
| 216 gfx::FontList bubble_font_list = | 215 gfx::FontList bubble_font_list = |
| 217 font_list.DeriveWithHeightUpperBound(bubble_height); | 216 font_list.DeriveWithHeightUpperBound(bubble_height); |
| 218 | 217 |
| 219 const SkColor background_color = GetColor(LocationBarView::BACKGROUND); | 218 const SkColor background_color = GetColor(LocationBarView::BACKGROUND); |
| 220 const SkColor ev_text_color = GetColor(EV_BUBBLE_TEXT_AND_BORDER); | 219 const SkColor ev_text_color = GetColor(EV_BUBBLE_TEXT_AND_BORDER); |
| 221 ev_bubble_view_ = | 220 ev_bubble_view_ = |
| 222 new EVBubbleView(bubble_font_list, ev_text_color, background_color, this); | 221 new EVBubbleView(bubble_font_list, ev_text_color, background_color, this); |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 return omnibox_view_->model()->has_focus(); | 513 return omnibox_view_->model()->has_focus(); |
| 515 } | 514 } |
| 516 | 515 |
| 517 void LocationBarView::GetAccessibleState(ui::AXViewState* state) { | 516 void LocationBarView::GetAccessibleState(ui::AXViewState* state) { |
| 518 state->role = ui::AX_ROLE_GROUP; | 517 state->role = ui::AX_ROLE_GROUP; |
| 519 } | 518 } |
| 520 | 519 |
| 521 gfx::Size LocationBarView::GetPreferredSize() const { | 520 gfx::Size LocationBarView::GetPreferredSize() const { |
| 522 // Compute minimum height. | 521 // Compute minimum height. |
| 523 gfx::Size min_size; | 522 gfx::Size min_size; |
| 524 // For non-material the size of the asset determines the size of the | 523 if (ui::MaterialDesignController::IsModeMaterial() || is_popup_mode_) { |
| 525 // LocationBarView. | 524 const int height = GetLayoutConstant(LOCATION_BAR_HEIGHT); |
| 526 if (ui::MaterialDesignController::IsModeMaterial()) | 525 const int edge_thickness = views::NonClientFrameView::kClientEdgeThickness; |
| 527 min_size.set_height(GetLayoutConstant(LOCATION_BAR_HEIGHT)); | 526 min_size.set_height(height - (is_popup_mode_ ? (2 * edge_thickness) : 0)); |
| 528 else | 527 } else { |
| 529 min_size = border_painter_->GetMinimumSize(); | 528 min_size = border_painter_->GetMinimumSize(); |
| 529 } |
| 530 | 530 |
| 531 if (!IsInitialized()) | 531 if (!IsInitialized()) |
| 532 return min_size; | 532 return min_size; |
| 533 | 533 |
| 534 min_size.set_height(min_size.height() * size_animation_.GetCurrentValue()); | 534 min_size.set_height(min_size.height() * size_animation_.GetCurrentValue()); |
| 535 | 535 |
| 536 const int padding = GetLayoutConstant(LOCATION_BAR_HORIZONTAL_PADDING); | 536 const int padding = GetLayoutConstant(LOCATION_BAR_HORIZONTAL_PADDING); |
| 537 | 537 |
| 538 // Compute width of omnibox-leading content. | 538 // Compute width of omnibox-leading content. |
| 539 const int horizontal_edge_thickness = GetHorizontalEdgeThickness(); | 539 const int edge_thickness = GetEdgeThickness(); |
| 540 int leading_width = horizontal_edge_thickness; | 540 int leading_width = edge_thickness; |
| 541 if (ShouldShowKeywordBubble()) { | 541 if (ShouldShowKeywordBubble()) { |
| 542 // The selected keyword view can collapse completely. | 542 // The selected keyword view can collapse completely. |
| 543 } else if (ShouldShowEVBubble()) { | 543 } else if (ShouldShowEVBubble()) { |
| 544 leading_width += GetLayoutConstant(LOCATION_BAR_BUBBLE_HORIZONTAL_PADDING) + | 544 leading_width += GetLayoutConstant(LOCATION_BAR_BUBBLE_HORIZONTAL_PADDING) + |
| 545 ev_bubble_view_->GetMinimumSizeForLabelText( | 545 ev_bubble_view_->GetMinimumSizeForLabelText( |
| 546 GetToolbarModel()->GetEVCertName()).width(); | 546 GetToolbarModel()->GetEVCertName()).width(); |
| 547 } else { | 547 } else { |
| 548 leading_width += padding + location_icon_view_->GetMinimumSize().width(); | 548 leading_width += padding + location_icon_view_->GetMinimumSize().width(); |
| 549 } | 549 } |
| 550 | 550 |
| 551 // Compute width of omnibox-trailing content. | 551 // Compute width of omnibox-trailing content. |
| 552 int trailing_width = horizontal_edge_thickness; | 552 int trailing_width = edge_thickness; |
| 553 trailing_width += IncrementalMinimumWidth(star_view_) + | 553 trailing_width += IncrementalMinimumWidth(star_view_) + |
| 554 IncrementalMinimumWidth(translate_icon_view_) + | 554 IncrementalMinimumWidth(translate_icon_view_) + |
| 555 IncrementalMinimumWidth(open_pdf_in_reader_view_) + | 555 IncrementalMinimumWidth(open_pdf_in_reader_view_) + |
| 556 IncrementalMinimumWidth(save_credit_card_icon_view_) + | 556 IncrementalMinimumWidth(save_credit_card_icon_view_) + |
| 557 IncrementalMinimumWidth(manage_passwords_icon_view_) + | 557 IncrementalMinimumWidth(manage_passwords_icon_view_) + |
| 558 IncrementalMinimumWidth(zoom_view_); | 558 IncrementalMinimumWidth(zoom_view_); |
| 559 for (PageActionViews::const_iterator i(page_action_views_.begin()); | 559 for (PageActionViews::const_iterator i(page_action_views_.begin()); |
| 560 i != page_action_views_.end(); ++i) | 560 i != page_action_views_.end(); ++i) |
| 561 trailing_width += IncrementalMinimumWidth((*i)); | 561 trailing_width += IncrementalMinimumWidth((*i)); |
| 562 for (ContentSettingViews::const_iterator i(content_setting_views_.begin()); | 562 for (ContentSettingViews::const_iterator i(content_setting_views_.begin()); |
| 563 i != content_setting_views_.end(); ++i) | 563 i != content_setting_views_.end(); ++i) |
| 564 trailing_width += IncrementalMinimumWidth((*i)); | 564 trailing_width += IncrementalMinimumWidth((*i)); |
| 565 | 565 |
| 566 min_size.set_width(leading_width + omnibox_view_->GetMinimumSize().width() + | 566 min_size.set_width(leading_width + omnibox_view_->GetMinimumSize().width() + |
| 567 2 * padding - omnibox_view_->GetInsets().width() + | 567 2 * padding - omnibox_view_->GetInsets().width() + |
| 568 trailing_width); | 568 trailing_width); |
| 569 return min_size; | 569 return min_size; |
| 570 } | 570 } |
| 571 | 571 |
| 572 void LocationBarView::Layout() { | 572 void LocationBarView::Layout() { |
| 573 if (!IsInitialized()) | 573 if (!IsInitialized()) |
| 574 return; | 574 return; |
| 575 | 575 |
| 576 selected_keyword_view_->SetVisible(false); | 576 selected_keyword_view_->SetVisible(false); |
| 577 location_icon_view_->SetVisible(false); | 577 location_icon_view_->SetVisible(false); |
| 578 ev_bubble_view_->SetVisible(false); | 578 ev_bubble_view_->SetVisible(false); |
| 579 keyword_hint_view_->SetVisible(false); | 579 keyword_hint_view_->SetVisible(false); |
| 580 | 580 |
| 581 const int item_padding = GetLayoutConstant(LOCATION_BAR_HORIZONTAL_PADDING); | 581 const int item_padding = GetLayoutConstant(LOCATION_BAR_HORIZONTAL_PADDING); |
| 582 const int edge_thickness = GetEdgeThickness(); |
| 582 int trailing_edge_item_padding = 0; | 583 int trailing_edge_item_padding = 0; |
| 583 if (!ui::MaterialDesignController::IsModeMaterial()) { | 584 if (!ui::MaterialDesignController::IsModeMaterial()) { |
| 584 trailing_edge_item_padding = item_padding - GetHorizontalEdgeThickness() - | 585 trailing_edge_item_padding = |
| 585 omnibox_view_->GetInsets().right(); | 586 item_padding - edge_thickness - omnibox_view_->GetInsets().right(); |
| 586 } | 587 } |
| 587 | 588 |
| 588 LocationBarLayout leading_decorations( | 589 LocationBarLayout leading_decorations( |
| 589 LocationBarLayout::LEFT_EDGE, item_padding, | 590 LocationBarLayout::LEFT_EDGE, item_padding, |
| 590 item_padding - omnibox_view_->GetInsets().left() - | 591 item_padding - omnibox_view_->GetInsets().left() - |
| 591 GetEditLeadingInternalSpace()); | 592 GetEditLeadingInternalSpace()); |
| 592 LocationBarLayout trailing_decorations( | 593 LocationBarLayout trailing_decorations( |
| 593 LocationBarLayout::RIGHT_EDGE, item_padding, trailing_edge_item_padding); | 594 LocationBarLayout::RIGHT_EDGE, item_padding, trailing_edge_item_padding); |
| 594 | 595 |
| 595 const base::string16 keyword(omnibox_view_->model()->keyword()); | 596 const base::string16 keyword(omnibox_view_->model()->keyword()); |
| 596 // In some cases (e.g. fullscreen mode) we may have 0 height. We still want | 597 // In some cases (e.g. fullscreen mode) we may have 0 height. We still want |
| 597 // to position our child views in this case, because other things may be | 598 // to position our child views in this case, because other things may be |
| 598 // positioned relative to them (e.g. the "bookmark added" bubble if the user | 599 // positioned relative to them (e.g. the "bookmark added" bubble if the user |
| 599 // hits ctrl-d). | 600 // hits ctrl-d). |
| 600 const int bubble_vertical_padding = | 601 const int bubble_vertical_padding = |
| 601 GetVerticalEdgeThickness() + | 602 edge_thickness + GetLayoutConstant(LOCATION_BAR_BUBBLE_VERTICAL_PADDING); |
| 602 GetLayoutConstant(LOCATION_BAR_BUBBLE_VERTICAL_PADDING); | |
| 603 const int bubble_height = | 603 const int bubble_height = |
| 604 std::max(height() - (bubble_vertical_padding * 2), 0); | 604 std::max(height() - (bubble_vertical_padding * 2), 0); |
| 605 const int bubble_horizontal_padding = | 605 const int bubble_horizontal_padding = |
| 606 GetLayoutConstant(LOCATION_BAR_BUBBLE_HORIZONTAL_PADDING); | 606 GetLayoutConstant(LOCATION_BAR_BUBBLE_HORIZONTAL_PADDING); |
| 607 const int location_height = GetInternalHeight(false); | 607 const int location_height = GetInternalHeight(false); |
| 608 const int vertical_padding = VerticalPadding(); | 608 const int vertical_padding = VerticalPadding(); |
| 609 if (ShouldShowKeywordBubble()) { | 609 if (ShouldShowKeywordBubble()) { |
| 610 leading_decorations.AddDecoration(bubble_vertical_padding, bubble_height, | 610 leading_decorations.AddDecoration(bubble_vertical_padding, bubble_height, |
| 611 true, 0, bubble_horizontal_padding, | 611 true, 0, bubble_horizontal_padding, |
| 612 item_padding, selected_keyword_view_); | 612 item_padding, selected_keyword_view_); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 683 if (!keyword.empty() && omnibox_view_->model()->is_keyword_hint() && | 683 if (!keyword.empty() && omnibox_view_->model()->is_keyword_hint() && |
| 684 !omnibox_view_->IsImeComposing()) { | 684 !omnibox_view_->IsImeComposing()) { |
| 685 trailing_decorations.AddDecoration(vertical_padding, location_height, true, | 685 trailing_decorations.AddDecoration(vertical_padding, location_height, true, |
| 686 0, item_padding, item_padding, | 686 0, item_padding, item_padding, |
| 687 keyword_hint_view_); | 687 keyword_hint_view_); |
| 688 if (keyword_hint_view_->keyword() != keyword) | 688 if (keyword_hint_view_->keyword() != keyword) |
| 689 keyword_hint_view_->SetKeyword(keyword); | 689 keyword_hint_view_->SetKeyword(keyword); |
| 690 } | 690 } |
| 691 | 691 |
| 692 // Perform layout. | 692 // Perform layout. |
| 693 const int horizontal_edge_thickness = GetHorizontalEdgeThickness(); | 693 int full_width = width() - (2 * edge_thickness); |
| 694 int full_width = width() - (2 * horizontal_edge_thickness); | |
| 695 | 694 |
| 696 int entry_width = full_width; | 695 int entry_width = full_width; |
| 697 leading_decorations.LayoutPass1(&entry_width); | 696 leading_decorations.LayoutPass1(&entry_width); |
| 698 trailing_decorations.LayoutPass1(&entry_width); | 697 trailing_decorations.LayoutPass1(&entry_width); |
| 699 leading_decorations.LayoutPass2(&entry_width); | 698 leading_decorations.LayoutPass2(&entry_width); |
| 700 trailing_decorations.LayoutPass2(&entry_width); | 699 trailing_decorations.LayoutPass2(&entry_width); |
| 701 | 700 |
| 702 int location_needed_width = omnibox_view_->GetTextWidth(); | 701 int location_needed_width = omnibox_view_->GetTextWidth(); |
| 703 int available_width = entry_width - location_needed_width; | 702 int available_width = entry_width - location_needed_width; |
| 704 // The bounds must be wide enough for all the decorations to fit. | 703 // The bounds must be wide enough for all the decorations to fit. |
| 705 gfx::Rect location_bounds(horizontal_edge_thickness, vertical_padding, | 704 gfx::Rect location_bounds(edge_thickness, vertical_padding, |
| 706 std::max(full_width, full_width - entry_width), | 705 std::max(full_width, full_width - entry_width), |
| 707 location_height); | 706 location_height); |
| 708 leading_decorations.LayoutPass3(&location_bounds, &available_width); | 707 leading_decorations.LayoutPass3(&location_bounds, &available_width); |
| 709 trailing_decorations.LayoutPass3(&location_bounds, &available_width); | 708 trailing_decorations.LayoutPass3(&location_bounds, &available_width); |
| 710 | 709 |
| 711 // Layout out the suggested text view right aligned to the location | 710 // Layout out the suggested text view right aligned to the location |
| 712 // entry. Only show the suggested text if we can fit the text from one | 711 // entry. Only show the suggested text if we can fit the text from one |
| 713 // character before the end of the selection to the end of the text and the | 712 // character before the end of the selection to the end of the text and the |
| 714 // suggested text. If we can't it means either the suggested text is too big, | 713 // suggested text. If we can't it means either the suggested text is too big, |
| 715 // or the user has scrolled. | 714 // or the user has scrolled. |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 781 x = entry_width - width; | 780 x = entry_width - width; |
| 782 location_bounds.set_width(x); | 781 location_bounds.set_width(x); |
| 783 ime_inline_autocomplete_view_->SetBounds( | 782 ime_inline_autocomplete_view_->SetBounds( |
| 784 location_bounds.right(), location_bounds.y(), | 783 location_bounds.right(), location_bounds.y(), |
| 785 std::min(width, entry_width), location_bounds.height()); | 784 std::min(width, entry_width), location_bounds.height()); |
| 786 } | 785 } |
| 787 omnibox_view_->SetBoundsRect(location_bounds); | 786 omnibox_view_->SetBoundsRect(location_bounds); |
| 788 } | 787 } |
| 789 | 788 |
| 790 void LocationBarView::OnNativeThemeChanged(const ui::NativeTheme* theme) { | 789 void LocationBarView::OnNativeThemeChanged(const ui::NativeTheme* theme) { |
| 791 if (!ui::MaterialDesignController::IsModeMaterial()) | 790 if (ui::MaterialDesignController::IsModeMaterial()) { |
| 792 return; | 791 RefreshLocationIcon(); |
| 793 | 792 if (!is_popup_mode_) { |
| 794 RefreshLocationIcon(); | 793 set_background(new BackgroundWith1PxBorder( |
| 795 set_background(new BackgroundWith1PxBorder( | 794 GetColor(BACKGROUND), SkColorSetARGB(0x4D, 0x00, 0x00, 0x00))); |
| 796 GetColor(BACKGROUND), SkColorSetARGB(0x4D, 0x00, 0x00, 0x00), | 795 } |
| 797 is_popup_mode_)); | 796 } |
| 798 } | 797 } |
| 799 | 798 |
| 800 void LocationBarView::Update(const WebContents* contents) { | 799 void LocationBarView::Update(const WebContents* contents) { |
| 801 RefreshContentSettingViews(); | 800 RefreshContentSettingViews(); |
| 802 RefreshZoomView(); | 801 RefreshZoomView(); |
| 803 RefreshPageActionViews(); | 802 RefreshPageActionViews(); |
| 804 RefreshTranslateIcon(); | 803 RefreshTranslateIcon(); |
| 805 RefreshSaveCreditCardIconView(); | 804 RefreshSaveCreditCardIconView(); |
| 806 RefreshManagePasswordsIconView(); | 805 RefreshManagePasswordsIconView(); |
| 807 content::WebContents* web_contents_for_sub_views = | 806 content::WebContents* web_contents_for_sub_views = |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 844 | 843 |
| 845 //////////////////////////////////////////////////////////////////////////////// | 844 //////////////////////////////////////////////////////////////////////////////// |
| 846 // LocationBarView, private: | 845 // LocationBarView, private: |
| 847 | 846 |
| 848 int LocationBarView::IncrementalMinimumWidth(views::View* view) const { | 847 int LocationBarView::IncrementalMinimumWidth(views::View* view) const { |
| 849 return view->visible() ? | 848 return view->visible() ? |
| 850 (GetLayoutConstant(LOCATION_BAR_HORIZONTAL_PADDING) + | 849 (GetLayoutConstant(LOCATION_BAR_HORIZONTAL_PADDING) + |
| 851 view->GetMinimumSize().width()) : 0; | 850 view->GetMinimumSize().width()) : 0; |
| 852 } | 851 } |
| 853 | 852 |
| 854 int LocationBarView::GetHorizontalEdgeThickness() const { | 853 int LocationBarView::GetEdgeThickness() const { |
| 855 // In maximized popup mode, there isn't any edge. | 854 return is_popup_mode_ ? 0 : GetLayoutConstant(LOCATION_BAR_BORDER_THICKNESS); |
| 856 return (is_popup_mode_ && browser_ && browser_->window() && | |
| 857 browser_->window()->IsMaximized()) ? | |
| 858 0 : GetVerticalEdgeThickness(); | |
| 859 } | |
| 860 | |
| 861 int LocationBarView::GetVerticalEdgeThickness() const { | |
| 862 return is_popup_mode_ ? kPopupEdgeThickness | |
| 863 : GetLayoutConstant(LOCATION_BAR_BORDER_THICKNESS); | |
| 864 } | 855 } |
| 865 | 856 |
| 866 int LocationBarView::VerticalPadding() const { | 857 int LocationBarView::VerticalPadding() const { |
| 867 return is_popup_mode_ ? | 858 return is_popup_mode_ ? 0 : GetLayoutConstant(LOCATION_BAR_VERTICAL_PADDING); |
| 868 kPopupEdgeThickness : GetLayoutConstant(LOCATION_BAR_VERTICAL_PADDING); | |
| 869 } | 859 } |
| 870 | 860 |
| 871 void LocationBarView::RefreshLocationIcon() { | 861 void LocationBarView::RefreshLocationIcon() { |
| 872 // |omnibox_view_| may not be ready yet if Init() has not been called. The | 862 // |omnibox_view_| may not be ready yet if Init() has not been called. The |
| 873 // icon will be set soon by OnChanged(). | 863 // icon will be set soon by OnChanged(). |
| 874 if (!omnibox_view_) | 864 if (!omnibox_view_) |
| 875 return; | 865 return; |
| 876 | 866 |
| 877 if (ui::MaterialDesignController::IsModeMaterial()) { | 867 if (ui::MaterialDesignController::IsModeMaterial()) { |
| 878 location_icon_view_->SetImage(gfx::CreateVectorIcon( | 868 location_icon_view_->SetImage(gfx::CreateVectorIcon( |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1269 | 1259 |
| 1270 void LocationBarView::OnFocus() { | 1260 void LocationBarView::OnFocus() { |
| 1271 // Explicitly focus the omnibox so a focus ring will be displayed around it on | 1261 // Explicitly focus the omnibox so a focus ring will be displayed around it on |
| 1272 // Windows. | 1262 // Windows. |
| 1273 omnibox_view_->SetFocus(); | 1263 omnibox_view_->SetFocus(); |
| 1274 } | 1264 } |
| 1275 | 1265 |
| 1276 void LocationBarView::OnPaint(gfx::Canvas* canvas) { | 1266 void LocationBarView::OnPaint(gfx::Canvas* canvas) { |
| 1277 View::OnPaint(canvas); | 1267 View::OnPaint(canvas); |
| 1278 | 1268 |
| 1279 if (ui::MaterialDesignController::IsModeMaterial()) | 1269 if (ui::MaterialDesignController::IsModeMaterial() && !is_popup_mode_) |
| 1280 return; // The background and border are painted by our Background. | 1270 return; // The background and border are painted by our Background. |
| 1281 | 1271 |
| 1282 // Fill the location bar background color behind the border. Parts of the | 1272 // Fill the location bar background color behind the border. Parts of the |
| 1283 // border images are meant to rest atop the toolbar background and parts atop | 1273 // border images are meant to rest atop the toolbar background and parts atop |
| 1284 // the omnibox background, so we can't just blindly fill our entire bounds. | 1274 // the omnibox background, so we can't just blindly fill our entire bounds. |
| 1285 gfx::Rect bounds(GetContentsBounds()); | 1275 gfx::Rect bounds(GetContentsBounds()); |
| 1286 bounds.Inset(GetHorizontalEdgeThickness(), GetVerticalEdgeThickness()); | 1276 const int edge_thickness = GetEdgeThickness(); |
| 1277 bounds.Inset(edge_thickness, edge_thickness); |
| 1287 SkColor color(GetColor(BACKGROUND)); | 1278 SkColor color(GetColor(BACKGROUND)); |
| 1288 if (is_popup_mode_) { | 1279 if (is_popup_mode_) { |
| 1289 canvas->FillRect(bounds, color); | 1280 canvas->FillRect(bounds, color); |
| 1290 } else { | 1281 } else { |
| 1291 SkPaint paint; | 1282 SkPaint paint; |
| 1292 paint.setStyle(SkPaint::kFill_Style); | 1283 paint.setStyle(SkPaint::kFill_Style); |
| 1293 paint.setColor(color); | 1284 paint.setColor(color); |
| 1294 const int kBorderCornerRadius = 2; | 1285 const int kBorderCornerRadius = 2; |
| 1295 canvas->DrawRoundRect(bounds, kBorderCornerRadius, paint); | 1286 canvas->DrawRoundRect(bounds, kBorderCornerRadius, paint); |
| 1296 } | 1287 } |
| 1297 | 1288 |
| 1298 // The border itself will be drawn in PaintChildren() since it includes an | 1289 // The border itself will be drawn in PaintChildren() since it includes an |
| 1299 // inner shadow which should be drawn over the contents. | 1290 // inner shadow which should be drawn over the contents. |
| 1300 } | 1291 } |
| 1301 | 1292 |
| 1302 void LocationBarView::PaintChildren(const ui::PaintContext& context) { | 1293 void LocationBarView::PaintChildren(const ui::PaintContext& context) { |
| 1303 View::PaintChildren(context); | 1294 View::PaintChildren(context); |
| 1304 | 1295 |
| 1305 ui::PaintRecorder recorder(context, size()); | 1296 ui::PaintRecorder recorder(context, size()); |
| 1306 | 1297 |
| 1307 // For non-InstantExtendedAPI cases, if necessary, show focus rect. As we need | 1298 // For non-InstantExtendedAPI cases, if necessary, show focus rect. As we need |
| 1308 // the focus rect to appear on top of children we paint here rather than | 1299 // the focus rect to appear on top of children we paint here rather than |
| 1309 // OnPaint(). | 1300 // OnPaint(). |
| 1310 // Note: |Canvas::DrawFocusRect| paints a dashed rect with gray color. | 1301 // Note: |Canvas::DrawFocusRect| paints a dashed rect with gray color. |
| 1311 if (show_focus_rect_ && HasFocus()) | 1302 if (show_focus_rect_ && HasFocus()) |
| 1312 recorder.canvas()->DrawFocusRect(omnibox_view_->bounds()); | 1303 recorder.canvas()->DrawFocusRect(omnibox_view_->bounds()); |
| 1313 | 1304 |
| 1314 if (ui::MaterialDesignController::IsModeMaterial()) | 1305 if (!ui::MaterialDesignController::IsModeMaterial() && !is_popup_mode_) { |
| 1315 return; // The background and border are painted by our Background. | 1306 views::Painter::PaintPainterAt(recorder.canvas(), border_painter_.get(), |
| 1316 | 1307 GetContentsBounds()); |
| 1317 // Maximized popup windows don't draw the horizontal edges. We implement this | 1308 } |
| 1318 // by simply expanding the paint area outside the view by the edge thickness. | |
| 1319 gfx::Rect border_rect(GetContentsBounds()); | |
| 1320 if (is_popup_mode_ && (GetHorizontalEdgeThickness() == 0)) | |
| 1321 border_rect.Inset(-kPopupEdgeThickness, 0); | |
| 1322 | |
| 1323 views::Painter::PaintPainterAt(recorder.canvas(), border_painter_.get(), | |
| 1324 border_rect); | |
| 1325 } | 1309 } |
| 1326 | 1310 |
| 1327 //////////////////////////////////////////////////////////////////////////////// | 1311 //////////////////////////////////////////////////////////////////////////////// |
| 1328 // LocationBarView, private views::DragController implementation: | 1312 // LocationBarView, private views::DragController implementation: |
| 1329 | 1313 |
| 1330 void LocationBarView::WriteDragDataForView(views::View* sender, | 1314 void LocationBarView::WriteDragDataForView(views::View* sender, |
| 1331 const gfx::Point& press_pt, | 1315 const gfx::Point& press_pt, |
| 1332 OSExchangeData* data) { | 1316 OSExchangeData* data) { |
| 1333 DCHECK_NE(GetDragOperationsForView(sender, press_pt), | 1317 DCHECK_NE(GetDragOperationsForView(sender, press_pt), |
| 1334 ui::DragDropTypes::DRAG_NONE); | 1318 ui::DragDropTypes::DRAG_NONE); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1357 | 1341 |
| 1358 bool LocationBarView::CanStartDragForView(View* sender, | 1342 bool LocationBarView::CanStartDragForView(View* sender, |
| 1359 const gfx::Point& press_pt, | 1343 const gfx::Point& press_pt, |
| 1360 const gfx::Point& p) { | 1344 const gfx::Point& p) { |
| 1361 return true; | 1345 return true; |
| 1362 } | 1346 } |
| 1363 | 1347 |
| 1364 //////////////////////////////////////////////////////////////////////////////// | 1348 //////////////////////////////////////////////////////////////////////////////// |
| 1365 // LocationBarView, private gfx::AnimationDelegate implementation: | 1349 // LocationBarView, private gfx::AnimationDelegate implementation: |
| 1366 void LocationBarView::AnimationProgressed(const gfx::Animation* animation) { | 1350 void LocationBarView::AnimationProgressed(const gfx::Animation* animation) { |
| 1367 browser_->window()->ToolbarSizeChanged(true); | 1351 GetWidget()->non_client_view()->Layout(); |
| 1368 } | 1352 } |
| 1369 | 1353 |
| 1370 void LocationBarView::AnimationEnded(const gfx::Animation* animation) { | 1354 void LocationBarView::AnimationEnded(const gfx::Animation* animation) { |
| 1371 browser_->window()->ToolbarSizeChanged(false); | 1355 AnimationProgressed(animation); |
| 1372 } | 1356 } |
| 1373 | 1357 |
| 1374 //////////////////////////////////////////////////////////////////////////////// | 1358 //////////////////////////////////////////////////////////////////////////////// |
| 1375 // LocationBarView, private OmniboxEditController implementation: | 1359 // LocationBarView, private OmniboxEditController implementation: |
| 1376 | 1360 |
| 1377 void LocationBarView::OnChanged() { | 1361 void LocationBarView::OnChanged() { |
| 1378 RefreshLocationIcon(); | 1362 RefreshLocationIcon(); |
| 1379 location_icon_view_->ShowTooltip(!GetOmniboxView()->IsEditingOrEmpty()); | 1363 location_icon_view_->ShowTooltip(!GetOmniboxView()->IsEditingOrEmpty()); |
| 1380 | 1364 |
| 1381 Layout(); | 1365 Layout(); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1405 // LocationBarView, private TemplateURLServiceObserver implementation: | 1389 // LocationBarView, private TemplateURLServiceObserver implementation: |
| 1406 | 1390 |
| 1407 void LocationBarView::OnTemplateURLServiceChanged() { | 1391 void LocationBarView::OnTemplateURLServiceChanged() { |
| 1408 template_url_service_->RemoveObserver(this); | 1392 template_url_service_->RemoveObserver(this); |
| 1409 template_url_service_ = NULL; | 1393 template_url_service_ = NULL; |
| 1410 // If the browser is no longer active, let's not show the info bubble, as this | 1394 // If the browser is no longer active, let's not show the info bubble, as this |
| 1411 // would make the browser the active window again. | 1395 // would make the browser the active window again. |
| 1412 if (omnibox_view_ && omnibox_view_->GetWidget()->IsActive()) | 1396 if (omnibox_view_ && omnibox_view_->GetWidget()->IsActive()) |
| 1413 ShowFirstRunBubble(); | 1397 ShowFirstRunBubble(); |
| 1414 } | 1398 } |
| OLD | NEW |