| 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 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 #include "chrome/browser/ui/views/first_run_bubble.h" | 101 #include "chrome/browser/ui/views/first_run_bubble.h" |
| 102 #endif | 102 #endif |
| 103 | 103 |
| 104 using content::WebContents; | 104 using content::WebContents; |
| 105 using views::View; | 105 using views::View; |
| 106 | 106 |
| 107 namespace { | 107 namespace { |
| 108 | 108 |
| 109 #if !defined(OS_CHROMEOS) | 109 #if !defined(OS_CHROMEOS) |
| 110 Browser* GetBrowserFromDelegate(LocationBarView::Delegate* delegate) { | 110 Browser* GetBrowserFromDelegate(LocationBarView::Delegate* delegate) { |
| 111 WebContents* contents = delegate->GetWebContents(); | 111 WebContents* web_contents = delegate->GetWebContents(); |
| 112 return contents ? chrome::FindBrowserWithWebContents(contents) : NULL; | 112 return web_contents ? chrome::FindBrowserWithWebContents(web_contents) : NULL; |
| 113 } | 113 } |
| 114 #endif | 114 #endif |
| 115 | 115 |
| 116 // Given a containing |height| and a |base_font_list|, shrinks the font size | 116 // Given a containing |height| and a |base_font_list|, shrinks the font size |
| 117 // until the font list will fit within |height| while having its cap height | 117 // until the font list will fit within |height| while having its cap height |
| 118 // vertically centered. Returns the correctly-sized font list. | 118 // vertically centered. Returns the correctly-sized font list. |
| 119 // | 119 // |
| 120 // The expected layout: | 120 // The expected layout: |
| 121 // +--------+-----------------------------------------------+------------+ | 121 // +--------+-----------------------------------------------+------------+ |
| 122 // | | y offset | space | | 122 // | | y offset | space | |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 513 } | 513 } |
| 514 } | 514 } |
| 515 | 515 |
| 516 void LocationBarView::ZoomChangedForActiveTab(bool can_show_bubble) { | 516 void LocationBarView::ZoomChangedForActiveTab(bool can_show_bubble) { |
| 517 DCHECK(zoom_view_); | 517 DCHECK(zoom_view_); |
| 518 if (RefreshZoomView()) { | 518 if (RefreshZoomView()) { |
| 519 Layout(); | 519 Layout(); |
| 520 SchedulePaint(); | 520 SchedulePaint(); |
| 521 } | 521 } |
| 522 | 522 |
| 523 if (can_show_bubble && zoom_view_->visible() && delegate_->GetWebContents()) | 523 WebContents* web_contents = GetWebContents(); |
| 524 ZoomBubbleView::ShowBubble(delegate_->GetWebContents(), true); | 524 if (can_show_bubble && zoom_view_->visible() && web_contents) |
| 525 ZoomBubbleView::ShowBubble(web_contents, true); |
| 525 } | 526 } |
| 526 | 527 |
| 527 void LocationBarView::SetPreviewEnabledPageAction(ExtensionAction* page_action, | 528 void LocationBarView::SetPreviewEnabledPageAction(ExtensionAction* page_action, |
| 528 bool preview_enabled) { | 529 bool preview_enabled) { |
| 529 if (is_popup_mode_) | 530 if (is_popup_mode_) |
| 530 return; | 531 return; |
| 531 | 532 |
| 532 DCHECK(page_action); | 533 DCHECK(page_action); |
| 533 WebContents* contents = delegate_->GetWebContents(); | 534 WebContents* web_contents = GetWebContents(); |
| 534 | 535 |
| 535 RefreshPageActionViews(); | 536 RefreshPageActionViews(); |
| 536 PageActionWithBadgeView* page_action_view = | 537 PageActionWithBadgeView* page_action_view = |
| 537 static_cast<PageActionWithBadgeView*>(GetPageActionView(page_action)); | 538 static_cast<PageActionWithBadgeView*>(GetPageActionView(page_action)); |
| 538 DCHECK(page_action_view); | 539 DCHECK(page_action_view); |
| 539 if (!page_action_view) | 540 if (!page_action_view) |
| 540 return; | 541 return; |
| 541 | 542 |
| 542 page_action_view->image_view()->set_preview_enabled(preview_enabled); | 543 page_action_view->image_view()->set_preview_enabled(preview_enabled); |
| 543 page_action_view->UpdateVisibility(contents, GetToolbarModel()->GetURL()); | 544 page_action_view->UpdateVisibility(web_contents, GetToolbarModel()->GetURL()); |
| 544 Layout(); | 545 Layout(); |
| 545 SchedulePaint(); | 546 SchedulePaint(); |
| 546 } | 547 } |
| 547 | 548 |
| 548 PageActionWithBadgeView* LocationBarView::GetPageActionView( | 549 PageActionWithBadgeView* LocationBarView::GetPageActionView( |
| 549 ExtensionAction* page_action) { | 550 ExtensionAction* page_action) { |
| 550 DCHECK(page_action); | 551 DCHECK(page_action); |
| 551 for (PageActionViews::const_iterator i(page_action_views_.begin()); | 552 for (PageActionViews::const_iterator i(page_action_views_.begin()); |
| 552 i != page_action_views_.end(); ++i) { | 553 i != page_action_views_.end(); ++i) { |
| 553 if ((*i)->image_view()->page_action() == page_action) | 554 if ((*i)->image_view()->page_action() == page_action) |
| (...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 const int kEditLeadingInternalSpace = base::i18n::IsRTL() ? 1 : 0; | 755 const int kEditLeadingInternalSpace = base::i18n::IsRTL() ? 1 : 0; |
| 755 LocationBarLayout leading_decorations( | 756 LocationBarLayout leading_decorations( |
| 756 LocationBarLayout::LEFT_EDGE, item_padding - kEditLeadingInternalSpace); | 757 LocationBarLayout::LEFT_EDGE, item_padding - kEditLeadingInternalSpace); |
| 757 LocationBarLayout trailing_decorations(LocationBarLayout::RIGHT_EDGE, | 758 LocationBarLayout trailing_decorations(LocationBarLayout::RIGHT_EDGE, |
| 758 item_padding); | 759 item_padding); |
| 759 | 760 |
| 760 // Show and position the animated host label used in the show and hide URL | 761 // Show and position the animated host label used in the show and hide URL |
| 761 // animations. | 762 // animations. |
| 762 if (show_url_animation_->is_animating() || | 763 if (show_url_animation_->is_animating() || |
| 763 hide_url_animation_->is_animating()) { | 764 hide_url_animation_->is_animating()) { |
| 764 const GURL url = GetWebContents()->GetURL(); | 765 WebContents* web_contents = GetWebContents(); |
| 766 const GURL url = web_contents ? web_contents->GetURL() : GURL(); |
| 765 const base::string16 host = | 767 const base::string16 host = |
| 766 OriginChip::LabelFromURLForProfile(url, profile()); | 768 OriginChip::LabelFromURLForProfile(url, profile()); |
| 767 animated_host_label_->SetText(host); | 769 animated_host_label_->SetText(host); |
| 768 | 770 |
| 769 const base::string16 formatted_url = GetToolbarModel()->GetFormattedURL(); | 771 const base::string16 formatted_url = GetToolbarModel()->GetFormattedURL(); |
| 770 | 772 |
| 771 // Split the formatted URL on the host name in order to determine the size | 773 // Split the formatted URL on the host name in order to determine the size |
| 772 // of the text leading up to it. | 774 // of the text leading up to it. |
| 773 std::vector<base::string16> substrings; | 775 std::vector<base::string16> substrings; |
| 774 base::SplitStringUsingSubstr(formatted_url, host, &substrings); | 776 base::SplitStringUsingSubstr(formatted_url, host, &substrings); |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1117 // Remember the previous visibility of the page actions so that we can | 1119 // Remember the previous visibility of the page actions so that we can |
| 1118 // notify when this changes. | 1120 // notify when this changes. |
| 1119 std::map<ExtensionAction*, bool> old_visibility; | 1121 std::map<ExtensionAction*, bool> old_visibility; |
| 1120 for (PageActionViews::const_iterator i(page_action_views_.begin()); | 1122 for (PageActionViews::const_iterator i(page_action_views_.begin()); |
| 1121 i != page_action_views_.end(); ++i) { | 1123 i != page_action_views_.end(); ++i) { |
| 1122 old_visibility[(*i)->image_view()->page_action()] = (*i)->visible(); | 1124 old_visibility[(*i)->image_view()->page_action()] = (*i)->visible(); |
| 1123 } | 1125 } |
| 1124 | 1126 |
| 1125 PageActions new_page_actions; | 1127 PageActions new_page_actions; |
| 1126 | 1128 |
| 1127 WebContents* contents = delegate_->GetWebContents(); | 1129 WebContents* web_contents = GetWebContents(); |
| 1128 if (contents) { | 1130 if (web_contents) { |
| 1129 extensions::TabHelper* extensions_tab_helper = | 1131 extensions::TabHelper* extensions_tab_helper = |
| 1130 extensions::TabHelper::FromWebContents(contents); | 1132 extensions::TabHelper::FromWebContents(web_contents); |
| 1131 extensions::LocationBarController* controller = | 1133 extensions::LocationBarController* controller = |
| 1132 extensions_tab_helper->location_bar_controller(); | 1134 extensions_tab_helper->location_bar_controller(); |
| 1133 new_page_actions = controller->GetCurrentActions(); | 1135 new_page_actions = controller->GetCurrentActions(); |
| 1134 } | 1136 } |
| 1135 | 1137 |
| 1136 // On startup we sometimes haven't loaded any extensions. This makes sure | 1138 // On startup we sometimes haven't loaded any extensions. This makes sure |
| 1137 // we catch up when the extensions (and any page actions) load. | 1139 // we catch up when the extensions (and any page actions) load. |
| 1138 if (page_actions_ != new_page_actions) { | 1140 if (page_actions_ != new_page_actions) { |
| 1139 changed = true; | 1141 changed = true; |
| 1140 | 1142 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1163 DCHECK(right_anchor); | 1165 DCHECK(right_anchor); |
| 1164 | 1166 |
| 1165 // |page_action_views_| are ordered right-to-left. Add them as children in | 1167 // |page_action_views_| are ordered right-to-left. Add them as children in |
| 1166 // reverse order so the logical order and visual order match for | 1168 // reverse order so the logical order and visual order match for |
| 1167 // accessibility purposes. | 1169 // accessibility purposes. |
| 1168 for (PageActionViews::reverse_iterator i = page_action_views_.rbegin(); | 1170 for (PageActionViews::reverse_iterator i = page_action_views_.rbegin(); |
| 1169 i != page_action_views_.rend(); ++i) | 1171 i != page_action_views_.rend(); ++i) |
| 1170 AddChildViewAt(*i, GetIndexOf(right_anchor)); | 1172 AddChildViewAt(*i, GetIndexOf(right_anchor)); |
| 1171 } | 1173 } |
| 1172 | 1174 |
| 1173 if (!page_action_views_.empty() && contents) { | 1175 if (!page_action_views_.empty() && web_contents) { |
| 1174 Browser* browser = chrome::FindBrowserWithWebContents(contents); | 1176 Browser* browser = chrome::FindBrowserWithWebContents(web_contents); |
| 1175 GURL url = browser->tab_strip_model()->GetActiveWebContents()->GetURL(); | 1177 GURL url = browser->tab_strip_model()->GetActiveWebContents()->GetURL(); |
| 1176 | 1178 |
| 1177 for (PageActionViews::const_iterator i(page_action_views_.begin()); | 1179 for (PageActionViews::const_iterator i(page_action_views_.begin()); |
| 1178 i != page_action_views_.end(); ++i) { | 1180 i != page_action_views_.end(); ++i) { |
| 1179 (*i)->UpdateVisibility( | 1181 (*i)->UpdateVisibility( |
| 1180 GetToolbarModel()->input_in_progress() ? NULL : contents, url); | 1182 GetToolbarModel()->input_in_progress() ? NULL : web_contents, url); |
| 1181 | 1183 |
| 1182 // Check if the visibility of the action changed and notify if it did. | 1184 // Check if the visibility of the action changed and notify if it did. |
| 1183 ExtensionAction* action = (*i)->image_view()->page_action(); | 1185 ExtensionAction* action = (*i)->image_view()->page_action(); |
| 1184 if (old_visibility.find(action) == old_visibility.end() || | 1186 if (old_visibility.find(action) == old_visibility.end() || |
| 1185 old_visibility[action] != (*i)->visible()) { | 1187 old_visibility[action] != (*i)->visible()) { |
| 1186 changed = true; | 1188 changed = true; |
| 1187 content::NotificationService::current()->Notify( | 1189 content::NotificationService::current()->Notify( |
| 1188 chrome::NOTIFICATION_EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED, | 1190 chrome::NOTIFICATION_EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED, |
| 1189 content::Source<ExtensionAction>(action), | 1191 content::Source<ExtensionAction>(action), |
| 1190 content::Details<WebContents>(contents)); | 1192 content::Details<WebContents>(web_contents)); |
| 1191 } | 1193 } |
| 1192 } | 1194 } |
| 1193 } | 1195 } |
| 1194 return changed; | 1196 return changed; |
| 1195 } | 1197 } |
| 1196 | 1198 |
| 1197 bool LocationBarView::RefreshZoomView() { | 1199 bool LocationBarView::RefreshZoomView() { |
| 1198 DCHECK(zoom_view_); | 1200 DCHECK(zoom_view_); |
| 1199 WebContents* web_contents = GetWebContents(); | 1201 WebContents* web_contents = GetWebContents(); |
| 1200 if (!web_contents) | 1202 if (!web_contents) |
| (...skipping 472 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1673 | 1675 |
| 1674 //////////////////////////////////////////////////////////////////////////////// | 1676 //////////////////////////////////////////////////////////////////////////////// |
| 1675 // LocationBarView, private content::NotificationObserver implementation: | 1677 // LocationBarView, private content::NotificationObserver implementation: |
| 1676 | 1678 |
| 1677 void LocationBarView::Observe(int type, | 1679 void LocationBarView::Observe(int type, |
| 1678 const content::NotificationSource& source, | 1680 const content::NotificationSource& source, |
| 1679 const content::NotificationDetails& details) { | 1681 const content::NotificationDetails& details) { |
| 1680 switch (type) { | 1682 switch (type) { |
| 1681 case chrome::NOTIFICATION_EXTENSION_LOCATION_BAR_UPDATED: { | 1683 case chrome::NOTIFICATION_EXTENSION_LOCATION_BAR_UPDATED: { |
| 1682 // Only update if the updated action box was for the active tab contents. | 1684 // Only update if the updated action box was for the active tab contents. |
| 1683 WebContents* target_tab = content::Details<WebContents>(details).ptr(); | 1685 if (content::Details<WebContents>(details).ptr() == GetWebContents()) |
| 1684 if (target_tab == GetWebContents()) | |
| 1685 UpdatePageActions(); | 1686 UpdatePageActions(); |
| 1686 break; | 1687 break; |
| 1687 } | 1688 } |
| 1688 | 1689 |
| 1689 case chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: | 1690 case chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: |
| 1690 case chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: | 1691 case chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: |
| 1691 Update(NULL); | 1692 Update(NULL); |
| 1692 break; | 1693 break; |
| 1693 | 1694 |
| 1694 default: | 1695 default: |
| 1695 NOTREACHED() << "Unexpected notification."; | 1696 NOTREACHED() << "Unexpected notification."; |
| 1696 } | 1697 } |
| 1697 } | 1698 } |
| 1698 | 1699 |
| 1699 //////////////////////////////////////////////////////////////////////////////// | 1700 //////////////////////////////////////////////////////////////////////////////// |
| 1700 // LocationBarView, private SearchModelObserver implementation: | 1701 // LocationBarView, private SearchModelObserver implementation: |
| 1701 | 1702 |
| 1702 void LocationBarView::ModelChanged(const SearchModel::State& old_state, | 1703 void LocationBarView::ModelChanged(const SearchModel::State& old_state, |
| 1703 const SearchModel::State& new_state) { | 1704 const SearchModel::State& new_state) { |
| 1704 const bool visible = !GetToolbarModel()->input_in_progress() && | 1705 const bool visible = !GetToolbarModel()->input_in_progress() && |
| 1705 new_state.voice_search_supported; | 1706 new_state.voice_search_supported; |
| 1706 if (mic_search_view_->visible() != visible) { | 1707 if (mic_search_view_->visible() != visible) { |
| 1707 mic_search_view_->SetVisible(visible); | 1708 mic_search_view_->SetVisible(visible); |
| 1708 Layout(); | 1709 Layout(); |
| 1709 } | 1710 } |
| 1710 } | 1711 } |
| 1711 | 1712 |
| OLD | NEW |