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

Side by Side Diff: chrome/browser/ui/views/location_bar/location_bar_view.cc

Issue 10800054: Add pin icon to the omnibar in windows 8 metro mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: linux tests Created 8 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 24 matching lines...) Expand all
35 #include "chrome/browser/ui/search/search_ui.h" 35 #include "chrome/browser/ui/search/search_ui.h"
36 #include "chrome/browser/ui/tab_contents/tab_contents.h" 36 #include "chrome/browser/ui/tab_contents/tab_contents.h"
37 #include "chrome/browser/ui/view_ids.h" 37 #include "chrome/browser/ui/view_ids.h"
38 #include "chrome/browser/ui/views/browser_dialogs.h" 38 #include "chrome/browser/ui/views/browser_dialogs.h"
39 #include "chrome/browser/ui/views/location_bar/action_box_button_view.h" 39 #include "chrome/browser/ui/views/location_bar/action_box_button_view.h"
40 #include "chrome/browser/ui/views/location_bar/chrome_to_mobile_view.h" 40 #include "chrome/browser/ui/views/location_bar/chrome_to_mobile_view.h"
41 #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h" 41 #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h"
42 #include "chrome/browser/ui/views/location_bar/ev_bubble_view.h" 42 #include "chrome/browser/ui/views/location_bar/ev_bubble_view.h"
43 #include "chrome/browser/ui/views/location_bar/keyword_hint_view.h" 43 #include "chrome/browser/ui/views/location_bar/keyword_hint_view.h"
44 #include "chrome/browser/ui/views/location_bar/location_icon_view.h" 44 #include "chrome/browser/ui/views/location_bar/location_icon_view.h"
45 #include "chrome/browser/ui/views/location_bar/metro_pin_view.h"
45 #include "chrome/browser/ui/views/location_bar/page_action_image_view.h" 46 #include "chrome/browser/ui/views/location_bar/page_action_image_view.h"
46 #include "chrome/browser/ui/views/location_bar/page_action_with_badge_view.h" 47 #include "chrome/browser/ui/views/location_bar/page_action_with_badge_view.h"
47 #include "chrome/browser/ui/views/location_bar/selected_keyword_view.h" 48 #include "chrome/browser/ui/views/location_bar/selected_keyword_view.h"
48 #include "chrome/browser/ui/views/location_bar/star_view.h" 49 #include "chrome/browser/ui/views/location_bar/star_view.h"
49 #include "chrome/browser/ui/views/location_bar/suggested_text_view.h" 50 #include "chrome/browser/ui/views/location_bar/suggested_text_view.h"
50 #include "chrome/browser/ui/views/location_bar/zoom_bubble_view.h" 51 #include "chrome/browser/ui/views/location_bar/zoom_bubble_view.h"
51 #include "chrome/browser/ui/views/location_bar/zoom_view.h" 52 #include "chrome/browser/ui/views/location_bar/zoom_view.h"
52 #include "chrome/browser/ui/views/omnibox/omnibox_view_views.h" 53 #include "chrome/browser/ui/views/omnibox/omnibox_view_views.h"
53 #include "chrome/browser/ui/views/omnibox/omnibox_views.h" 54 #include "chrome/browser/ui/views/omnibox/omnibox_views.h"
54 #include "chrome/browser/ui/webui/instant_ui.h" 55 #include "chrome/browser/ui/webui/instant_ui.h"
(...skipping 13 matching lines...) Expand all
68 #include "ui/base/resource/resource_bundle.h" 69 #include "ui/base/resource/resource_bundle.h"
69 #include "ui/base/theme_provider.h" 70 #include "ui/base/theme_provider.h"
70 #include "ui/gfx/canvas.h" 71 #include "ui/gfx/canvas.h"
71 #include "ui/gfx/color_utils.h" 72 #include "ui/gfx/color_utils.h"
72 #include "ui/gfx/image/image.h" 73 #include "ui/gfx/image/image.h"
73 #include "ui/gfx/skia_util.h" 74 #include "ui/gfx/skia_util.h"
74 #include "ui/views/border.h" 75 #include "ui/views/border.h"
75 #include "ui/views/button_drag_utils.h" 76 #include "ui/views/button_drag_utils.h"
76 #include "ui/views/controls/label.h" 77 #include "ui/views/controls/label.h"
77 78
79 #if defined(OS_WIN)
80 #include "base/win/metro.h"
81 #endif
82
78 #if defined(OS_WIN) && !defined(USE_AURA) 83 #if defined(OS_WIN) && !defined(USE_AURA)
79 #include "chrome/browser/ui/views/omnibox/omnibox_view_win.h" 84 #include "chrome/browser/ui/views/omnibox/omnibox_view_win.h"
80 #endif 85 #endif
81 86
82 #if !defined(OS_CHROMEOS) 87 #if !defined(OS_CHROMEOS)
83 #include "chrome/browser/ui/views/first_run_bubble.h" 88 #include "chrome/browser/ui/views/first_run_bubble.h"
84 #endif 89 #endif
85 90
86 #if defined(USE_AURA) 91 #if defined(USE_AURA)
87 #include "ui/compositor/layer.h" 92 #include "ui/compositor/layer.h"
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 location_icon_view_(NULL), 180 location_icon_view_(NULL),
176 ev_bubble_view_(NULL), 181 ev_bubble_view_(NULL),
177 location_entry_view_(NULL), 182 location_entry_view_(NULL),
178 selected_keyword_view_(NULL), 183 selected_keyword_view_(NULL),
179 suggested_text_view_(NULL), 184 suggested_text_view_(NULL),
180 keyword_hint_view_(NULL), 185 keyword_hint_view_(NULL),
181 zoom_view_(NULL), 186 zoom_view_(NULL),
182 star_view_(NULL), 187 star_view_(NULL),
183 action_box_button_view_(NULL), 188 action_box_button_view_(NULL),
184 chrome_to_mobile_view_(NULL), 189 chrome_to_mobile_view_(NULL),
190 metro_pin_view_(NULL),
185 mode_(mode), 191 mode_(mode),
186 show_focus_rect_(false), 192 show_focus_rect_(false),
187 template_url_service_(NULL), 193 template_url_service_(NULL),
188 animation_offset_(0), 194 animation_offset_(0),
189 ALLOW_THIS_IN_INITIALIZER_LIST(view_to_focus_(this)) { 195 ALLOW_THIS_IN_INITIALIZER_LIST(view_to_focus_(this)) {
190 set_id(VIEW_ID_LOCATION_BAR); 196 set_id(VIEW_ID_LOCATION_BAR);
191 197
192 if (mode_ == NORMAL) { 198 if (mode_ == NORMAL) {
193 painter_.reset( 199 painter_.reset(
194 views::Painter::CreateImagePainter( 200 views::Painter::CreateImagePainter(
(...skipping 28 matching lines...) Expand all
223 font_ = rb.GetFont(ui::ResourceBundle::MediumFont); 229 font_ = rb.GetFont(ui::ResourceBundle::MediumFont);
224 } 230 }
225 231
226 // If this makes the font too big, try to make it smaller so it will fit. 232 // If this makes the font too big, try to make it smaller so it will fit.
227 const int height = GetInternalHeight(true); 233 const int height = GetInternalHeight(true);
228 while ((font_.GetHeight() > height) && (font_.GetFontSize() > 1)) 234 while ((font_.GetHeight() > height) && (font_.GetFontSize() > 1))
229 font_ = font_.DeriveFont(-1); 235 font_ = font_.DeriveFont(-1);
230 236
231 location_icon_view_ = new LocationIconView(this); 237 location_icon_view_ = new LocationIconView(this);
232 AddChildView(location_icon_view_); 238 AddChildView(location_icon_view_);
233 location_icon_view_->SetVisible(true);
234 location_icon_view_->set_drag_controller(this); 239 location_icon_view_->set_drag_controller(this);
235 240
236 ev_bubble_view_ = 241 ev_bubble_view_ =
237 new EVBubbleView(kEVBubbleBackgroundImages, IDR_OMNIBOX_HTTPS_VALID, 242 new EVBubbleView(kEVBubbleBackgroundImages, IDR_OMNIBOX_HTTPS_VALID,
238 GetColor(ToolbarModel::EV_SECURE, SECURITY_TEXT), this); 243 GetColor(ToolbarModel::EV_SECURE, SECURITY_TEXT), this);
239 AddChildView(ev_bubble_view_); 244 AddChildView(ev_bubble_view_);
240 ev_bubble_view_->SetVisible(false); 245 ev_bubble_view_->SetVisible(false);
241 ev_bubble_view_->set_drag_controller(this); 246 ev_bubble_view_->set_drag_controller(this);
242 247
243 // URL edit field. 248 // URL edit field.
(...skipping 30 matching lines...) Expand all
274 279
275 if (extensions::switch_utils::IsActionBoxEnabled()) { 280 if (extensions::switch_utils::IsActionBoxEnabled()) {
276 action_box_button_view_ = new ActionBoxButtonView( 281 action_box_button_view_ = new ActionBoxButtonView(
277 extensions::ExtensionSystem::Get(profile_)->extension_service()); 282 extensions::ExtensionSystem::Get(profile_)->extension_service());
278 AddChildView(action_box_button_view_); 283 AddChildView(action_box_button_view_);
279 } else if (browser_defaults::bookmarks_enabled && (mode_ == NORMAL)) { 284 } else if (browser_defaults::bookmarks_enabled && (mode_ == NORMAL)) {
280 // Note: condition above means that the star and ChromeToMobile icons are 285 // Note: condition above means that the star and ChromeToMobile icons are
281 // hidden in popups and in the app launcher. 286 // hidden in popups and in the app launcher.
282 star_view_ = new StarView(command_updater_); 287 star_view_ = new StarView(command_updater_);
283 AddChildView(star_view_); 288 AddChildView(star_view_);
284 star_view_->SetVisible(true); 289
290 // Add the metro pin view, if this is windows and we are running in Metro
291 // mode.
292 #if defined(OS_WIN)
293 if (base::win::IsMetroProcess()) {
294 metro_pin_view_ = new MetroPinView(command_updater_);
295 AddChildView(metro_pin_view_);
296 }
297 #endif
285 298
286 // Also disable Chrome To Mobile for off-the-record and non-synced profiles, 299 // Also disable Chrome To Mobile for off-the-record and non-synced profiles,
287 // or if the feature is disabled by a command line flag or chrome://flags. 300 // or if the feature is disabled by a command line flag or chrome://flags.
288 if (!profile_->IsOffTheRecord() && profile_->IsSyncAccessible() && 301 if (!profile_->IsOffTheRecord() && profile_->IsSyncAccessible() &&
289 ChromeToMobileService::IsChromeToMobileEnabled()) { 302 ChromeToMobileService::IsChromeToMobileEnabled()) {
290 chrome_to_mobile_view_ = new ChromeToMobileView(this, command_updater_); 303 chrome_to_mobile_view_ = new ChromeToMobileView(this, command_updater_);
291 AddChildView(chrome_to_mobile_view_); 304 AddChildView(chrome_to_mobile_view_);
292 ChromeToMobileService* service = 305 ChromeToMobileService* service =
293 ChromeToMobileServiceFactory::GetForProfile(profile_); 306 ChromeToMobileServiceFactory::GetForProfile(profile_);
294 service->RequestMobileListUpdate(); 307 service->RequestMobileListUpdate();
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
494 507
495 void LocationBarView::SetStarToggled(bool on) { 508 void LocationBarView::SetStarToggled(bool on) {
496 if (star_view_) 509 if (star_view_)
497 star_view_->SetToggled(on); 510 star_view_->SetToggled(on);
498 } 511 }
499 512
500 void LocationBarView::ShowStarBubble(const GURL& url, bool newly_bookmarked) { 513 void LocationBarView::ShowStarBubble(const GURL& url, bool newly_bookmarked) {
501 chrome::ShowBookmarkBubbleView(star_view_, profile_, url, newly_bookmarked); 514 chrome::ShowBookmarkBubbleView(star_view_, profile_, url, newly_bookmarked);
502 } 515 }
503 516
517 void LocationBarView::SetMetroPinnedState(bool is_pinned) {
518 if (metro_pin_view_)
519 metro_pin_view_->SetIsPinned(is_pinned);
520 }
521
504 void LocationBarView::SetZoomIconTooltipPercent(int zoom_percent) { 522 void LocationBarView::SetZoomIconTooltipPercent(int zoom_percent) {
505 zoom_view_->SetZoomIconTooltipPercent(zoom_percent); 523 zoom_view_->SetZoomIconTooltipPercent(zoom_percent);
506 } 524 }
507 525
508 void LocationBarView::SetZoomIconState( 526 void LocationBarView::SetZoomIconState(
509 ZoomController::ZoomIconState zoom_icon_state) { 527 ZoomController::ZoomIconState zoom_icon_state) {
510 zoom_view_->SetZoomIconState(zoom_icon_state); 528 zoom_view_->SetZoomIconState(zoom_icon_state);
511 529
512 Layout(); 530 Layout();
513 SchedulePaint(); 531 SchedulePaint();
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 // We'll adjust this width and take it out of |entry_width| below. 666 // We'll adjust this width and take it out of |entry_width| below.
649 } else { 667 } else {
650 location_icon_view_->SetVisible(true); 668 location_icon_view_->SetVisible(true);
651 location_icon_width = location_icon_view_->GetPreferredSize().width(); 669 location_icon_width = location_icon_view_->GetPreferredSize().width();
652 entry_width -= (kEdgeThickness + GetEdgeItemPadding() + 670 entry_width -= (kEdgeThickness + GetEdgeItemPadding() +
653 location_icon_width + kItemEditPadding); 671 location_icon_width + kItemEditPadding);
654 } 672 }
655 673
656 if (star_view_ && star_view_->visible()) 674 if (star_view_ && star_view_->visible())
657 entry_width -= star_view_->GetPreferredSize().width() + GetItemPadding(); 675 entry_width -= star_view_->GetPreferredSize().width() + GetItemPadding();
676 if (metro_pin_view_ && metro_pin_view_->visible())
677 entry_width -= metro_pin_view_->GetPreferredSize().width() +
678 GetItemPadding();
658 if (chrome_to_mobile_view_ && chrome_to_mobile_view_->visible()) { 679 if (chrome_to_mobile_view_ && chrome_to_mobile_view_->visible()) {
659 entry_width -= chrome_to_mobile_view_->GetPreferredSize().width() + 680 entry_width -= chrome_to_mobile_view_->GetPreferredSize().width() +
660 GetItemPadding(); 681 GetItemPadding();
661 } 682 }
662 int action_box_button_width = location_height; 683 int action_box_button_width = location_height;
663 if (action_box_button_view_) 684 if (action_box_button_view_)
664 entry_width -= action_box_button_width + GetItemPadding(); 685 entry_width -= action_box_button_width + GetItemPadding();
665 for (PageActionViews::const_iterator i(page_action_views_.begin()); 686 for (PageActionViews::const_iterator i(page_action_views_.begin());
666 i != page_action_views_.end(); ++i) { 687 i != page_action_views_.end(); ++i) {
667 if ((*i)->visible()) 688 if ((*i)->visible())
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
736 } 757 }
737 758
738 if (star_view_ && star_view_->visible()) { 759 if (star_view_ && star_view_->visible()) {
739 offset += star_view_->GetBuiltInHorizontalPadding(); 760 offset += star_view_->GetBuiltInHorizontalPadding();
740 int star_width = star_view_->GetPreferredSize().width(); 761 int star_width = star_view_->GetPreferredSize().width();
741 offset -= star_width; 762 offset -= star_width;
742 star_view_->SetBounds(offset, location_y, star_width, location_height); 763 star_view_->SetBounds(offset, location_y, star_width, location_height);
743 offset -= GetItemPadding() - star_view_->GetBuiltInHorizontalPadding(); 764 offset -= GetItemPadding() - star_view_->GetBuiltInHorizontalPadding();
744 } 765 }
745 766
767 if (metro_pin_view_ && metro_pin_view_->visible()) {
768 offset += metro_pin_view_->GetBuiltInHorizontalPadding();
769 int pin_width = metro_pin_view_->GetPreferredSize().width();
770 offset -= pin_width;
771 metro_pin_view_->SetBounds(offset, location_y, pin_width, location_height);
772 offset -= GetItemPadding() - metro_pin_view_->GetBuiltInHorizontalPadding();
773 }
774
746 if (chrome_to_mobile_view_ && chrome_to_mobile_view_->visible()) { 775 if (chrome_to_mobile_view_ && chrome_to_mobile_view_->visible()) {
747 offset += chrome_to_mobile_view_->GetBuiltInHorizontalPadding(); 776 offset += chrome_to_mobile_view_->GetBuiltInHorizontalPadding();
748 int icon_width = chrome_to_mobile_view_->GetPreferredSize().width(); 777 int icon_width = chrome_to_mobile_view_->GetPreferredSize().width();
749 offset -= icon_width; 778 offset -= icon_width;
750 chrome_to_mobile_view_->SetBounds(offset, location_y, 779 chrome_to_mobile_view_->SetBounds(offset, location_y,
751 icon_width, location_height); 780 icon_width, location_height);
752 offset -= GetItemPadding() - 781 offset -= GetItemPadding() -
753 chrome_to_mobile_view_->GetBuiltInHorizontalPadding(); 782 chrome_to_mobile_view_->GetBuiltInHorizontalPadding();
754 } 783 }
755 784
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 1149
1121 // On startup we sometimes haven't loaded any extensions. This makes sure 1150 // On startup we sometimes haven't loaded any extensions. This makes sure
1122 // we catch up when the extensions (and any page actions) load. 1151 // we catch up when the extensions (and any page actions) load.
1123 if (page_actions_ != new_page_actions) { 1152 if (page_actions_ != new_page_actions) {
1124 page_actions_.swap(new_page_actions); 1153 page_actions_.swap(new_page_actions);
1125 DeletePageActionViews(); // Delete the old views (if any). 1154 DeletePageActionViews(); // Delete the old views (if any).
1126 1155
1127 page_action_views_.resize(page_actions_.size()); 1156 page_action_views_.resize(page_actions_.size());
1128 View* right_anchor = chrome_to_mobile_view_; 1157 View* right_anchor = chrome_to_mobile_view_;
1129 if (!right_anchor) 1158 if (!right_anchor)
1159 right_anchor = metro_pin_view_;
1160 if (!right_anchor)
1130 right_anchor = star_view_; 1161 right_anchor = star_view_;
1131 if (!right_anchor) 1162 if (!right_anchor)
1132 right_anchor = action_box_button_view_; 1163 right_anchor = action_box_button_view_;
1133 DCHECK(right_anchor); 1164 DCHECK(right_anchor);
1134 1165
1135 // Add the page actions in reverse order, so that the child views are 1166 // Add the page actions in reverse order, so that the child views are
1136 // inserted in left-to-right order for accessibility. 1167 // inserted in left-to-right order for accessibility.
1137 for (int i = page_actions_.size() - 1; i >= 0; --i) { 1168 for (int i = page_actions_.size() - 1; i >= 0; --i) {
1138 page_action_views_[i] = new PageActionWithBadgeView( 1169 page_action_views_[i] = new PageActionWithBadgeView(
1139 delegate_->CreatePageActionImageView(this, page_actions_[i])); 1170 delegate_->CreatePageActionImageView(this, page_actions_[i]));
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
1494 } 1525 }
1495 1526
1496 void LocationBarView::CleanupFadeAnimation() { 1527 void LocationBarView::CleanupFadeAnimation() {
1497 // Since we're no longer animating we don't need our layer. 1528 // Since we're no longer animating we don't need our layer.
1498 SetPaintToLayer(false); 1529 SetPaintToLayer(false);
1499 // Bubble labels don't need a transparent background anymore. 1530 // Bubble labels don't need a transparent background anymore.
1500 ev_bubble_view_->SetLabelBackgroundColor(SK_ColorWHITE); 1531 ev_bubble_view_->SetLabelBackgroundColor(SK_ColorWHITE);
1501 selected_keyword_view_->SetLabelBackgroundColor(SK_ColorWHITE); 1532 selected_keyword_view_->SetLabelBackgroundColor(SK_ColorWHITE);
1502 } 1533 }
1503 #endif // USE_AURA 1534 #endif // USE_AURA
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/location_bar/location_bar_view.h ('k') | chrome/browser/ui/views/location_bar/metro_pin_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698