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

Side by Side Diff: chrome/browser/ui/views/bookmarks/bookmark_bar_view.cc

Issue 306293006: Introduce ChromeBookmarkClientFactory (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@364865
Patch Set: Add missing dependency in components/policy/policy_browser.gypi Created 6 years, 6 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
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/bookmarks/bookmark_bar_view.h" 5 #include "chrome/browser/ui/views/bookmarks/bookmark_bar_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/i18n/rtl.h" 13 #include "base/i18n/rtl.h"
14 #include "base/metrics/histogram.h" 14 #include "base/metrics/histogram.h"
15 #include "base/prefs/pref_service.h" 15 #include "base/prefs/pref_service.h"
16 #include "base/strings/string_util.h" 16 #include "base/strings/string_util.h"
17 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
18 #include "chrome/browser/bookmarks/bookmark_model_factory.h" 18 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
19 #include "chrome/browser/bookmarks/chrome_bookmark_client.h"
20 #include "chrome/browser/bookmarks/chrome_bookmark_client_factory.h"
19 #include "chrome/browser/browser_process.h" 21 #include "chrome/browser/browser_process.h"
20 #include "chrome/browser/chrome_notification_types.h" 22 #include "chrome/browser/chrome_notification_types.h"
21 #include "chrome/browser/defaults.h" 23 #include "chrome/browser/defaults.h"
22 #include "chrome/browser/profiles/profile.h" 24 #include "chrome/browser/profiles/profile.h"
23 #include "chrome/browser/search/search.h" 25 #include "chrome/browser/search/search.h"
24 #include "chrome/browser/sync/profile_sync_service.h" 26 #include "chrome/browser/sync/profile_sync_service.h"
25 #include "chrome/browser/sync/profile_sync_service_factory.h" 27 #include "chrome/browser/sync/profile_sync_service_factory.h"
26 #include "chrome/browser/themes/theme_properties.h" 28 #include "chrome/browser/themes/theme_properties.h"
27 #include "chrome/browser/ui/bookmarks/bookmark_bar_constants.h" 29 #include "chrome/browser/ui/bookmarks/bookmark_bar_constants.h"
28 #include "chrome/browser/ui/bookmarks/bookmark_drag_drop.h" 30 #include "chrome/browser/ui/bookmarks/bookmark_drag_drop.h"
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 throbbing_view_(NULL), 456 throbbing_view_(NULL),
455 bookmark_bar_state_(BookmarkBar::SHOW), 457 bookmark_bar_state_(BookmarkBar::SHOW),
456 animating_detached_(false) { 458 animating_detached_(false) {
457 set_id(VIEW_ID_BOOKMARK_BAR); 459 set_id(VIEW_ID_BOOKMARK_BAR);
458 Init(); 460 Init();
459 461
460 size_animation_->Reset(1); 462 size_animation_->Reset(1);
461 } 463 }
462 464
463 BookmarkBarView::~BookmarkBarView() { 465 BookmarkBarView::~BookmarkBarView() {
464 if (client_) 466 if (model_)
465 model()->RemoveObserver(this); 467 model_->RemoveObserver(this);
466 468
467 // It's possible for the menu to outlive us, reset the observer to make sure 469 // It's possible for the menu to outlive us, reset the observer to make sure
468 // it doesn't have a reference to us. 470 // it doesn't have a reference to us.
469 if (bookmark_menu_) { 471 if (bookmark_menu_) {
470 bookmark_menu_->set_observer(NULL); 472 bookmark_menu_->set_observer(NULL);
471 bookmark_menu_->SetPageNavigator(NULL); 473 bookmark_menu_->SetPageNavigator(NULL);
472 bookmark_menu_->clear_bookmark_bar(); 474 bookmark_menu_->clear_bookmark_bar();
473 } 475 }
474 if (context_menu_.get()) 476 if (context_menu_.get())
475 context_menu_->SetPageNavigator(NULL); 477 context_menu_->SetPageNavigator(NULL);
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 managed_bookmarks_button_->bounds().Contains(adjusted_loc)) { 537 managed_bookmarks_button_->bounds().Contains(adjusted_loc)) {
536 return client_->managed_node(); 538 return client_->managed_node();
537 } 539 }
538 540
539 // Then check the bookmark buttons. 541 // Then check the bookmark buttons.
540 for (int i = 0; i < GetBookmarkButtonCount(); ++i) { 542 for (int i = 0; i < GetBookmarkButtonCount(); ++i) {
541 views::View* child = child_at(i); 543 views::View* child = child_at(i);
542 if (!child->visible()) 544 if (!child->visible())
543 break; 545 break;
544 if (child->bounds().Contains(adjusted_loc)) 546 if (child->bounds().Contains(adjusted_loc))
545 return model()->bookmark_bar_node()->GetChild(i); 547 return model_->bookmark_bar_node()->GetChild(i);
546 } 548 }
547 549
548 // Then the overflow button. 550 // Then the overflow button.
549 if (overflow_button_->visible() && 551 if (overflow_button_->visible() &&
550 overflow_button_->bounds().Contains(adjusted_loc)) { 552 overflow_button_->bounds().Contains(adjusted_loc)) {
551 *model_start_index = GetFirstHiddenNodeIndex(); 553 *model_start_index = GetFirstHiddenNodeIndex();
552 return model()->bookmark_bar_node(); 554 return model_->bookmark_bar_node();
553 } 555 }
554 556
555 // And finally the other folder. 557 // And finally the other folder.
556 if (other_bookmarked_button_->visible() && 558 if (other_bookmarked_button_->visible() &&
557 other_bookmarked_button_->bounds().Contains(adjusted_loc)) { 559 other_bookmarked_button_->bounds().Contains(adjusted_loc)) {
558 return model()->other_node(); 560 return model_->other_node();
559 } 561 }
560 562
561 return NULL; 563 return NULL;
562 } 564 }
563 565
564 views::MenuButton* BookmarkBarView::GetMenuButtonForNode( 566 views::MenuButton* BookmarkBarView::GetMenuButtonForNode(
565 const BookmarkNode* node) { 567 const BookmarkNode* node) {
566 if (node == client_->managed_node()) 568 if (node == client_->managed_node())
567 return managed_bookmarks_button_; 569 return managed_bookmarks_button_;
568 if (node == model()->other_node()) 570 if (node == model_->other_node())
569 return other_bookmarked_button_; 571 return other_bookmarked_button_;
570 if (node == model()->bookmark_bar_node()) 572 if (node == model_->bookmark_bar_node())
571 return overflow_button_; 573 return overflow_button_;
572 int index = model()->bookmark_bar_node()->GetIndexOf(node); 574 int index = model_->bookmark_bar_node()->GetIndexOf(node);
573 if (index == -1 || !node->is_folder()) 575 if (index == -1 || !node->is_folder())
574 return NULL; 576 return NULL;
575 return static_cast<views::MenuButton*>(child_at(index)); 577 return static_cast<views::MenuButton*>(child_at(index));
576 } 578 }
577 579
578 void BookmarkBarView::GetAnchorPositionForButton( 580 void BookmarkBarView::GetAnchorPositionForButton(
579 views::MenuButton* button, 581 views::MenuButton* button,
580 views::MenuAnchorPosition* anchor) { 582 views::MenuAnchorPosition* anchor) {
581 if (button == other_bookmarked_button_ || button == overflow_button_) 583 if (button == other_bookmarked_button_ || button == overflow_button_)
582 *anchor = views::MENU_ANCHOR_TOPRIGHT; 584 *anchor = views::MENU_ANCHOR_TOPRIGHT;
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 indicator_bounds.set_x(GetMirroredXForRect(indicator_bounds)); 804 indicator_bounds.set_x(GetMirroredXForRect(indicator_bounds));
803 805
804 // TODO(sky/glen): make me pretty! 806 // TODO(sky/glen): make me pretty!
805 canvas->FillRect(indicator_bounds, kDropIndicatorColor); 807 canvas->FillRect(indicator_bounds, kDropIndicatorColor);
806 } 808 }
807 } 809 }
808 810
809 bool BookmarkBarView::GetDropFormats( 811 bool BookmarkBarView::GetDropFormats(
810 int* formats, 812 int* formats,
811 std::set<ui::OSExchangeData::CustomFormat>* custom_formats) { 813 std::set<ui::OSExchangeData::CustomFormat>* custom_formats) {
812 if (!client_ || !model()->loaded()) 814 if (!model_ || !model_->loaded())
813 return false; 815 return false;
814 *formats = ui::OSExchangeData::URL; 816 *formats = ui::OSExchangeData::URL;
815 custom_formats->insert(BookmarkNodeData::GetBookmarkCustomFormat()); 817 custom_formats->insert(BookmarkNodeData::GetBookmarkCustomFormat());
816 return true; 818 return true;
817 } 819 }
818 820
819 bool BookmarkBarView::AreDropTypesRequired() { 821 bool BookmarkBarView::AreDropTypesRequired() {
820 return true; 822 return true;
821 } 823 }
822 824
823 bool BookmarkBarView::CanDrop(const ui::OSExchangeData& data) { 825 bool BookmarkBarView::CanDrop(const ui::OSExchangeData& data) {
824 if (!client_ || !model()->loaded() || 826 if (!model_ || !model_->loaded() ||
825 !browser_->profile()->GetPrefs()->GetBoolean( 827 !browser_->profile()->GetPrefs()->GetBoolean(
826 prefs::kEditBookmarksEnabled)) 828 prefs::kEditBookmarksEnabled))
827 return false; 829 return false;
828 830
829 if (!drop_info_.get()) 831 if (!drop_info_.get())
830 drop_info_.reset(new DropInfo()); 832 drop_info_.reset(new DropInfo());
831 833
832 // Only accept drops of 1 node, which is the case for all data dragged from 834 // Only accept drops of 1 node, which is the case for all data dragged from
833 // bookmark bar and menus. 835 // bookmark bar and menus.
834 return drop_info_->data.Read(data) && drop_info_->data.size() == 1; 836 return drop_info_->data.Read(data) && drop_info_->data.size() == 1;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
871 if (drop_info_->is_menu_showing) { 873 if (drop_info_->is_menu_showing) {
872 if (bookmark_drop_menu_) 874 if (bookmark_drop_menu_)
873 bookmark_drop_menu_->Cancel(); 875 bookmark_drop_menu_->Cancel();
874 drop_info_->is_menu_showing = false; 876 drop_info_->is_menu_showing = false;
875 } 877 }
876 878
877 if (location.on || location.button_type == DROP_OVERFLOW || 879 if (location.on || location.button_type == DROP_OVERFLOW ||
878 location.button_type == DROP_OTHER_FOLDER) { 880 location.button_type == DROP_OTHER_FOLDER) {
879 const BookmarkNode* node; 881 const BookmarkNode* node;
880 if (location.button_type == DROP_OTHER_FOLDER) 882 if (location.button_type == DROP_OTHER_FOLDER)
881 node = model()->other_node(); 883 node = model_->other_node();
882 else if (location.button_type == DROP_OVERFLOW) 884 else if (location.button_type == DROP_OVERFLOW)
883 node = model()->bookmark_bar_node(); 885 node = model_->bookmark_bar_node();
884 else 886 else
885 node = model()->bookmark_bar_node()->GetChild(location.index); 887 node = model_->bookmark_bar_node()->GetChild(location.index);
886 StartShowFolderDropMenuTimer(node); 888 StartShowFolderDropMenuTimer(node);
887 } 889 }
888 890
889 return drop_info_->location.operation; 891 return drop_info_->location.operation;
890 } 892 }
891 893
892 void BookmarkBarView::OnDragExited() { 894 void BookmarkBarView::OnDragExited() {
893 StopShowFolderDropMenuTimer(); 895 StopShowFolderDropMenuTimer();
894 896
895 // NOTE: we don't hide the menu on exit as it's possible the user moved the 897 // NOTE: we don't hide the menu on exit as it's possible the user moved the
(...skipping 12 matching lines...) Expand all
908 StopShowFolderDropMenuTimer(); 910 StopShowFolderDropMenuTimer();
909 911
910 if (bookmark_drop_menu_) 912 if (bookmark_drop_menu_)
911 bookmark_drop_menu_->Cancel(); 913 bookmark_drop_menu_->Cancel();
912 914
913 if (!drop_info_.get() || !drop_info_->location.operation) 915 if (!drop_info_.get() || !drop_info_->location.operation)
914 return ui::DragDropTypes::DRAG_NONE; 916 return ui::DragDropTypes::DRAG_NONE;
915 917
916 const BookmarkNode* root = 918 const BookmarkNode* root =
917 (drop_info_->location.button_type == DROP_OTHER_FOLDER) ? 919 (drop_info_->location.button_type == DROP_OTHER_FOLDER) ?
918 model()->other_node() : model()->bookmark_bar_node(); 920 model_->other_node() : model_->bookmark_bar_node();
919 int index = drop_info_->location.index; 921 int index = drop_info_->location.index;
920 922
921 if (index != -1) { 923 if (index != -1) {
922 // TODO(sky): optimize the SchedulePaint region. 924 // TODO(sky): optimize the SchedulePaint region.
923 SchedulePaint(); 925 SchedulePaint();
924 } 926 }
925 const BookmarkNode* parent_node; 927 const BookmarkNode* parent_node;
926 if (drop_info_->location.button_type == DROP_OTHER_FOLDER) { 928 if (drop_info_->location.button_type == DROP_OTHER_FOLDER) {
927 parent_node = root; 929 parent_node = root;
928 index = parent_node->child_count(); 930 index = parent_node->child_count();
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 } else if (bookmark_bar_state_ == BookmarkBar::DETACHED) { 987 } else if (bookmark_bar_state_ == BookmarkBar::DETACHED) {
986 UMA_HISTOGRAM_COUNTS("Import.ShowDialog.FromFloatingBookmarkBarView", 988 UMA_HISTOGRAM_COUNTS("Import.ShowDialog.FromFloatingBookmarkBarView",
987 time_from_install); 989 time_from_install);
988 } 990 }
989 991
990 chrome::ShowImportDialog(browser_); 992 chrome::ShowImportDialog(browser_);
991 } 993 }
992 994
993 void BookmarkBarView::OnBookmarkBubbleShown(const GURL& url) { 995 void BookmarkBarView::OnBookmarkBubbleShown(const GURL& url) {
994 StopThrobbing(true); 996 StopThrobbing(true);
995 const BookmarkNode* node = model()->GetMostRecentlyAddedUserNodeForURL(url); 997 const BookmarkNode* node = model_->GetMostRecentlyAddedUserNodeForURL(url);
996 if (!node) 998 if (!node)
997 return; // Generally shouldn't happen. 999 return; // Generally shouldn't happen.
998 StartThrobbing(node, false); 1000 StartThrobbing(node, false);
999 } 1001 }
1000 1002
1001 void BookmarkBarView::OnBookmarkBubbleHidden() { 1003 void BookmarkBarView::OnBookmarkBubbleHidden() {
1002 StopThrobbing(false); 1004 StopThrobbing(false);
1003 } 1005 }
1004 1006
1005 void BookmarkBarView::BookmarkModelLoaded(BookmarkModel* model, 1007 void BookmarkBarView::BookmarkModelLoaded(BookmarkModel* model,
(...skipping 17 matching lines...) Expand all
1023 other_bookmarked_button_->SetEnabled(true); 1025 other_bookmarked_button_->SetEnabled(true);
1024 managed_bookmarks_button_->SetEnabled(true); 1026 managed_bookmarks_button_->SetEnabled(true);
1025 1027
1026 Layout(); 1028 Layout();
1027 SchedulePaint(); 1029 SchedulePaint();
1028 } 1030 }
1029 1031
1030 void BookmarkBarView::BookmarkModelBeingDeleted(BookmarkModel* model) { 1032 void BookmarkBarView::BookmarkModelBeingDeleted(BookmarkModel* model) {
1031 NOTREACHED(); 1033 NOTREACHED();
1032 // Do minimal cleanup, presumably we'll be deleted shortly. 1034 // Do minimal cleanup, presumably we'll be deleted shortly.
1033 model->RemoveObserver(this); 1035 model_->RemoveObserver(this);
1034 client_ = NULL; 1036 model_ = NULL;
1035 } 1037 }
1036 1038
1037 void BookmarkBarView::BookmarkNodeMoved(BookmarkModel* model, 1039 void BookmarkBarView::BookmarkNodeMoved(BookmarkModel* model,
1038 const BookmarkNode* old_parent, 1040 const BookmarkNode* old_parent,
1039 int old_index, 1041 int old_index,
1040 const BookmarkNode* new_parent, 1042 const BookmarkNode* new_parent,
1041 int new_index) { 1043 int new_index) {
1042 bool was_throbbing = throbbing_view_ && 1044 bool was_throbbing = throbbing_view_ &&
1043 throbbing_view_ == DetermineViewToThrobFromRemove(old_parent, old_index); 1045 throbbing_view_ == DetermineViewToThrobFromRemove(old_parent, old_index);
1044 if (was_throbbing) 1046 if (was_throbbing)
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 1122
1121 for (int i = 0; i < GetBookmarkButtonCount(); ++i) { 1123 for (int i = 0; i < GetBookmarkButtonCount(); ++i) {
1122 if (sender == GetBookmarkButton(i)) { 1124 if (sender == GetBookmarkButton(i)) {
1123 views::TextButton* button = GetBookmarkButton(i); 1125 views::TextButton* button = GetBookmarkButton(i);
1124 scoped_ptr<gfx::Canvas> canvas( 1126 scoped_ptr<gfx::Canvas> canvas(
1125 views::GetCanvasForDragImage(button->GetWidget(), button->size())); 1127 views::GetCanvasForDragImage(button->GetWidget(), button->size()));
1126 button->PaintButton(canvas.get(), views::TextButton::PB_FOR_DRAG); 1128 button->PaintButton(canvas.get(), views::TextButton::PB_FOR_DRAG);
1127 drag_utils::SetDragImageOnDataObject(*canvas, button->size(), 1129 drag_utils::SetDragImageOnDataObject(*canvas, button->size(),
1128 press_pt.OffsetFromOrigin(), 1130 press_pt.OffsetFromOrigin(),
1129 data); 1131 data);
1130 WriteBookmarkDragData(model()->bookmark_bar_node()->GetChild(i), data); 1132 WriteBookmarkDragData(model_->bookmark_bar_node()->GetChild(i), data);
1131 return; 1133 return;
1132 } 1134 }
1133 } 1135 }
1134 NOTREACHED(); 1136 NOTREACHED();
1135 } 1137 }
1136 1138
1137 int BookmarkBarView::GetDragOperationsForView(View* sender, 1139 int BookmarkBarView::GetDragOperationsForView(View* sender,
1138 const gfx::Point& p) { 1140 const gfx::Point& p) {
1139 if (size_animation_->is_animating() || 1141 if (size_animation_->is_animating() ||
1140 (size_animation_->GetCurrentValue() == 0 && 1142 (size_animation_->GetCurrentValue() == 0 &&
1141 bookmark_bar_state_ != BookmarkBar::DETACHED)) { 1143 bookmark_bar_state_ != BookmarkBar::DETACHED)) {
1142 // Don't let the user drag while animating open or we're closed (and not 1144 // Don't let the user drag while animating open or we're closed (and not
1143 // detached, when detached size_animation_ is always 0). This typically is 1145 // detached, when detached size_animation_ is always 0). This typically is
1144 // only hit if the user does something to inadvertently trigger DnD such as 1146 // only hit if the user does something to inadvertently trigger DnD such as
1145 // pressing the mouse and hitting control-b. 1147 // pressing the mouse and hitting control-b.
1146 return ui::DragDropTypes::DRAG_NONE; 1148 return ui::DragDropTypes::DRAG_NONE;
1147 } 1149 }
1148 1150
1149 for (int i = 0; i < GetBookmarkButtonCount(); ++i) { 1151 for (int i = 0; i < GetBookmarkButtonCount(); ++i) {
1150 if (sender == GetBookmarkButton(i)) { 1152 if (sender == GetBookmarkButton(i)) {
1151 return chrome::GetBookmarkDragOperation( 1153 return chrome::GetBookmarkDragOperation(
1152 browser_->profile(), model()->bookmark_bar_node()->GetChild(i)); 1154 browser_->profile(), model_->bookmark_bar_node()->GetChild(i));
1153 } 1155 }
1154 } 1156 }
1155 NOTREACHED(); 1157 NOTREACHED();
1156 return ui::DragDropTypes::DRAG_NONE; 1158 return ui::DragDropTypes::DRAG_NONE;
1157 } 1159 }
1158 1160
1159 bool BookmarkBarView::CanStartDragForView(views::View* sender, 1161 bool BookmarkBarView::CanStartDragForView(views::View* sender,
1160 const gfx::Point& press_pt, 1162 const gfx::Point& press_pt,
1161 const gfx::Point& p) { 1163 const gfx::Point& p) {
1162 // Check if we have not moved enough horizontally but we have moved downward 1164 // Check if we have not moved enough horizontally but we have moved downward
1163 // vertically - downward drag. 1165 // vertically - downward drag.
1164 gfx::Vector2d move_offset = p - press_pt; 1166 gfx::Vector2d move_offset = p - press_pt;
1165 gfx::Vector2d horizontal_offset(move_offset.x(), 0); 1167 gfx::Vector2d horizontal_offset(move_offset.x(), 0);
1166 if (!View::ExceededDragThreshold(horizontal_offset) && move_offset.y() > 0) { 1168 if (!View::ExceededDragThreshold(horizontal_offset) && move_offset.y() > 0) {
1167 for (int i = 0; i < GetBookmarkButtonCount(); ++i) { 1169 for (int i = 0; i < GetBookmarkButtonCount(); ++i) {
1168 if (sender == GetBookmarkButton(i)) { 1170 if (sender == GetBookmarkButton(i)) {
1169 const BookmarkNode* node = model()->bookmark_bar_node()->GetChild(i); 1171 const BookmarkNode* node = model_->bookmark_bar_node()->GetChild(i);
1170 // If the folder button was dragged, show the menu instead. 1172 // If the folder button was dragged, show the menu instead.
1171 if (node && node->is_folder()) { 1173 if (node && node->is_folder()) {
1172 views::MenuButton* menu_button = 1174 views::MenuButton* menu_button =
1173 static_cast<views::MenuButton*>(sender); 1175 static_cast<views::MenuButton*>(sender);
1174 menu_button->Activate(); 1176 menu_button->Activate();
1175 return false; 1177 return false;
1176 } 1178 }
1177 break; 1179 break;
1178 } 1180 }
1179 } 1181 }
1180 } 1182 }
1181 return true; 1183 return true;
1182 } 1184 }
1183 1185
1184 void BookmarkBarView::OnMenuButtonClicked(views::View* view, 1186 void BookmarkBarView::OnMenuButtonClicked(views::View* view,
1185 const gfx::Point& point) { 1187 const gfx::Point& point) {
1186 const BookmarkNode* node; 1188 const BookmarkNode* node;
1187 1189
1188 int start_index = 0; 1190 int start_index = 0;
1189 if (view == other_bookmarked_button_) { 1191 if (view == other_bookmarked_button_) {
1190 node = model()->other_node(); 1192 node = model_->other_node();
1191 } else if (view == managed_bookmarks_button_) { 1193 } else if (view == managed_bookmarks_button_) {
1192 node = client_->managed_node(); 1194 node = client_->managed_node();
1193 } else if (view == overflow_button_) { 1195 } else if (view == overflow_button_) {
1194 node = model()->bookmark_bar_node(); 1196 node = model_->bookmark_bar_node();
1195 start_index = GetFirstHiddenNodeIndex(); 1197 start_index = GetFirstHiddenNodeIndex();
1196 } else { 1198 } else {
1197 int button_index = GetIndexOf(view); 1199 int button_index = GetIndexOf(view);
1198 DCHECK_NE(-1, button_index); 1200 DCHECK_NE(-1, button_index);
1199 node = model()->bookmark_bar_node()->GetChild(button_index); 1201 node = model_->bookmark_bar_node()->GetChild(button_index);
1200 } 1202 }
1201 1203
1202 RecordBookmarkFolderOpen(GetBookmarkLaunchLocation()); 1204 RecordBookmarkFolderOpen(GetBookmarkLaunchLocation());
1203 bookmark_menu_ = new BookmarkMenuController( 1205 bookmark_menu_ = new BookmarkMenuController(
1204 browser_, page_navigator_, GetWidget(), node, start_index); 1206 browser_, page_navigator_, GetWidget(), node, start_index);
1205 bookmark_menu_->set_observer(this); 1207 bookmark_menu_->set_observer(this);
1206 bookmark_menu_->RunMenuAt(this, false); 1208 bookmark_menu_->RunMenuAt(this, false);
1207 } 1209 }
1208 1210
1209 void BookmarkBarView::ButtonPressed(views::Button* sender, 1211 void BookmarkBarView::ButtonPressed(views::Button* sender,
1210 const ui::Event& event) { 1212 const ui::Event& event) {
1211 WindowOpenDisposition disposition_from_event_flags = 1213 WindowOpenDisposition disposition_from_event_flags =
1212 ui::DispositionFromEventFlags(event.flags()); 1214 ui::DispositionFromEventFlags(event.flags());
1213 1215
1214 if (sender->tag() == kAppsShortcutButtonTag) { 1216 if (sender->tag() == kAppsShortcutButtonTag) {
1215 OpenURLParams params(GURL(chrome::kChromeUIAppsURL), 1217 OpenURLParams params(GURL(chrome::kChromeUIAppsURL),
1216 Referrer(), 1218 Referrer(),
1217 disposition_from_event_flags, 1219 disposition_from_event_flags,
1218 content::PAGE_TRANSITION_AUTO_BOOKMARK, 1220 content::PAGE_TRANSITION_AUTO_BOOKMARK,
1219 false); 1221 false);
1220 page_navigator_->OpenURL(params); 1222 page_navigator_->OpenURL(params);
1221 RecordBookmarkAppsPageOpen(GetBookmarkLaunchLocation()); 1223 RecordBookmarkAppsPageOpen(GetBookmarkLaunchLocation());
1222 return; 1224 return;
1223 } 1225 }
1224 1226
1225 const BookmarkNode* node; 1227 const BookmarkNode* node;
1226 if (sender->tag() == kOtherFolderButtonTag) { 1228 if (sender->tag() == kOtherFolderButtonTag) {
1227 node = model()->other_node(); 1229 node = model_->other_node();
1228 } else if (sender->tag() == kManagedFolderButtonTag) { 1230 } else if (sender->tag() == kManagedFolderButtonTag) {
1229 node = client_->managed_node(); 1231 node = client_->managed_node();
1230 } else { 1232 } else {
1231 int index = GetIndexOf(sender); 1233 int index = GetIndexOf(sender);
1232 DCHECK_NE(-1, index); 1234 DCHECK_NE(-1, index);
1233 node = model()->bookmark_bar_node()->GetChild(index); 1235 node = model_->bookmark_bar_node()->GetChild(index);
1234 } 1236 }
1235 DCHECK(page_navigator_); 1237 DCHECK(page_navigator_);
1236 1238
1237 if (node->is_url()) { 1239 if (node->is_url()) {
1238 RecordAppLaunch(browser_->profile(), node->url()); 1240 RecordAppLaunch(browser_->profile(), node->url());
1239 OpenURLParams params( 1241 OpenURLParams params(
1240 node->url(), Referrer(), disposition_from_event_flags, 1242 node->url(), Referrer(), disposition_from_event_flags,
1241 content::PAGE_TRANSITION_AUTO_BOOKMARK, false); 1243 content::PAGE_TRANSITION_AUTO_BOOKMARK, false);
1242 page_navigator_->OpenURL(params); 1244 page_navigator_->OpenURL(params);
1243 } else { 1245 } else {
1244 chrome::OpenAll(GetWidget()->GetNativeWindow(), page_navigator_, node, 1246 chrome::OpenAll(GetWidget()->GetNativeWindow(), page_navigator_, node,
1245 disposition_from_event_flags, browser_->profile()); 1247 disposition_from_event_flags, browser_->profile());
1246 } 1248 }
1247 1249
1248 RecordBookmarkLaunch(node, GetBookmarkLaunchLocation()); 1250 RecordBookmarkLaunch(node, GetBookmarkLaunchLocation());
1249 } 1251 }
1250 1252
1251 void BookmarkBarView::ShowContextMenuForView(views::View* source, 1253 void BookmarkBarView::ShowContextMenuForView(views::View* source,
1252 const gfx::Point& point, 1254 const gfx::Point& point,
1253 ui::MenuSourceType source_type) { 1255 ui::MenuSourceType source_type) {
1254 if (!model()->loaded()) { 1256 if (!model_->loaded()) {
1255 // Don't do anything if the model isn't loaded. 1257 // Don't do anything if the model isn't loaded.
1256 return; 1258 return;
1257 } 1259 }
1258 1260
1259 const BookmarkNode* parent = NULL; 1261 const BookmarkNode* parent = NULL;
1260 std::vector<const BookmarkNode*> nodes; 1262 std::vector<const BookmarkNode*> nodes;
1261 if (source == other_bookmarked_button_) { 1263 if (source == other_bookmarked_button_) {
1262 parent = model()->other_node(); 1264 parent = model_->other_node();
1263 // Do this so the user can open all bookmarks. BookmarkContextMenu makes 1265 // Do this so the user can open all bookmarks. BookmarkContextMenu makes
1264 // sure the user can't edit/delete the node in this case. 1266 // sure the user can't edit/delete the node in this case.
1265 nodes.push_back(parent); 1267 nodes.push_back(parent);
1266 } else if (source == managed_bookmarks_button_) { 1268 } else if (source == managed_bookmarks_button_) {
1267 parent = client_->managed_node(); 1269 parent = client_->managed_node();
1268 nodes.push_back(parent); 1270 nodes.push_back(parent);
1269 } else if (source != this && source != apps_page_shortcut_) { 1271 } else if (source != this && source != apps_page_shortcut_) {
1270 // User clicked on one of the bookmark buttons, find which one they 1272 // User clicked on one of the bookmark buttons, find which one they
1271 // clicked on, except for the apps page shortcut, which must behave as if 1273 // clicked on, except for the apps page shortcut, which must behave as if
1272 // the user clicked on the bookmark bar background. 1274 // the user clicked on the bookmark bar background.
1273 int bookmark_button_index = GetIndexOf(source); 1275 int bookmark_button_index = GetIndexOf(source);
1274 DCHECK(bookmark_button_index != -1 && 1276 DCHECK(bookmark_button_index != -1 &&
1275 bookmark_button_index < GetBookmarkButtonCount()); 1277 bookmark_button_index < GetBookmarkButtonCount());
1276 const BookmarkNode* node = 1278 const BookmarkNode* node =
1277 model()->bookmark_bar_node()->GetChild(bookmark_button_index); 1279 model_->bookmark_bar_node()->GetChild(bookmark_button_index);
1278 nodes.push_back(node); 1280 nodes.push_back(node);
1279 parent = node->parent(); 1281 parent = node->parent();
1280 } else { 1282 } else {
1281 parent = model()->bookmark_bar_node(); 1283 parent = model_->bookmark_bar_node();
1282 nodes.push_back(parent); 1284 nodes.push_back(parent);
1283 } 1285 }
1284 bool close_on_remove = 1286 bool close_on_remove =
1285 (parent == model()->other_node()) && (parent->child_count() == 1); 1287 (parent == model_->other_node()) && (parent->child_count() == 1);
1286 1288
1287 context_menu_.reset(new BookmarkContextMenu( 1289 context_menu_.reset(new BookmarkContextMenu(
1288 GetWidget(), browser_, browser_->profile(), 1290 GetWidget(), browser_, browser_->profile(),
1289 browser_->tab_strip_model()->GetActiveWebContents(), 1291 browser_->tab_strip_model()->GetActiveWebContents(),
1290 parent, nodes, close_on_remove)); 1292 parent, nodes, close_on_remove));
1291 context_menu_->RunMenuAt(point, source_type); 1293 context_menu_->RunMenuAt(point, source_type);
1292 } 1294 }
1293 1295
1294 void BookmarkBarView::Init() { 1296 void BookmarkBarView::Init() {
1295 // Note that at this point we're not in a hierarchy so GetThemeProvider() will 1297 // Note that at this point we're not in a hierarchy so GetThemeProvider() will
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1327 AddChildView(bookmarks_separator_view_); 1329 AddChildView(bookmarks_separator_view_);
1328 UpdateBookmarksSeparatorVisibility(); 1330 UpdateBookmarksSeparatorVisibility();
1329 1331
1330 instructions_ = new BookmarkBarInstructionsView(this); 1332 instructions_ = new BookmarkBarInstructionsView(this);
1331 AddChildView(instructions_); 1333 AddChildView(instructions_);
1332 1334
1333 set_context_menu_controller(this); 1335 set_context_menu_controller(this);
1334 1336
1335 size_animation_.reset(new gfx::SlideAnimation(this)); 1337 size_animation_.reset(new gfx::SlideAnimation(this));
1336 1338
1337 client_ = BookmarkModelFactory::GetChromeBookmarkClientForProfile( 1339 model_ = BookmarkModelFactory::GetForProfile(browser_->profile());
1338 browser_->profile()); 1340 client_ = ChromeBookmarkClientFactory::GetForProfile(browser_->profile());
1339 if (client_) { 1341 if (model_) {
1340 model()->AddObserver(this); 1342 model_->AddObserver(this);
1341 if (model()->loaded()) 1343 if (model_->loaded())
1342 BookmarkModelLoaded(model(), false); 1344 BookmarkModelLoaded(model_, false);
1343 // else case: we'll receive notification back from the BookmarkModel when 1345 // else case: we'll receive notification back from the BookmarkModel when
1344 // done loading, then we'll populate the bar. 1346 // done loading, then we'll populate the bar.
1345 } 1347 }
1346 } 1348 }
1347 1349
1348 int BookmarkBarView::GetBookmarkButtonCount() const { 1350 int BookmarkBarView::GetBookmarkButtonCount() const {
1349 // We contain six non-bookmark button views: managed bookmarks, 1351 // We contain six non-bookmark button views: managed bookmarks,
1350 // other bookmarks, bookmarks separator, chevrons (for overflow), apps page, 1352 // other bookmarks, bookmarks separator, chevrons (for overflow), apps page,
1351 // and the instruction label. 1353 // and the instruction label.
1352 return child_count() - 6; 1354 return child_count() - 6;
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
1453 // We don't always have a theme provider (ui tests, for example). 1455 // We don't always have a theme provider (ui tests, for example).
1454 if (GetThemeProvider()) { 1456 if (GetThemeProvider()) {
1455 button->SetEnabledColor(GetThemeProvider()->GetColor( 1457 button->SetEnabledColor(GetThemeProvider()->GetColor(
1456 ThemeProperties::COLOR_BOOKMARK_TEXT)); 1458 ThemeProperties::COLOR_BOOKMARK_TEXT));
1457 } 1459 }
1458 1460
1459 button->ClearMaxTextSize(); 1461 button->ClearMaxTextSize();
1460 button->set_context_menu_controller(this); 1462 button->set_context_menu_controller(this);
1461 button->set_drag_controller(this); 1463 button->set_drag_controller(this);
1462 if (node->is_url()) { 1464 if (node->is_url()) {
1463 const gfx::Image& favicon = model()->GetFavicon(node); 1465 const gfx::Image& favicon = model_->GetFavicon(node);
1464 if (!favicon.IsEmpty()) 1466 if (!favicon.IsEmpty())
1465 button->SetIcon(*favicon.ToImageSkia()); 1467 button->SetIcon(*favicon.ToImageSkia());
1466 else 1468 else
1467 button->SetIcon(GetDefaultFavicon()); 1469 button->SetIcon(GetDefaultFavicon());
1468 } 1470 }
1469 button->set_max_width(kMaxButtonWidth); 1471 button->set_max_width(kMaxButtonWidth);
1470 } 1472 }
1471 1473
1472 void BookmarkBarView::BookmarkNodeAddedImpl(BookmarkModel* model, 1474 void BookmarkBarView::BookmarkNodeAddedImpl(BookmarkModel* model,
1473 const BookmarkNode* parent, 1475 const BookmarkNode* parent,
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1537 return; 1539 return;
1538 } 1540 }
1539 bookmark_drop_menu_->Cancel(); 1541 bookmark_drop_menu_->Cancel();
1540 } 1542 }
1541 1543
1542 views::MenuButton* menu_button = GetMenuButtonForNode(node); 1544 views::MenuButton* menu_button = GetMenuButtonForNode(node);
1543 if (!menu_button) 1545 if (!menu_button)
1544 return; 1546 return;
1545 1547
1546 int start_index = 0; 1548 int start_index = 0;
1547 if (node == model()->bookmark_bar_node()) 1549 if (node == model_->bookmark_bar_node())
1548 start_index = GetFirstHiddenNodeIndex(); 1550 start_index = GetFirstHiddenNodeIndex();
1549 1551
1550 drop_info_->is_menu_showing = true; 1552 drop_info_->is_menu_showing = true;
1551 bookmark_drop_menu_ = new BookmarkMenuController(browser_, 1553 bookmark_drop_menu_ = new BookmarkMenuController(browser_,
1552 page_navigator_, GetWidget(), node, start_index); 1554 page_navigator_, GetWidget(), node, start_index);
1553 bookmark_drop_menu_->set_observer(this); 1555 bookmark_drop_menu_->set_observer(this);
1554 bookmark_drop_menu_->RunMenuAt(this, true); 1556 bookmark_drop_menu_->RunMenuAt(this, true);
1555 } 1557 }
1556 1558
1557 void BookmarkBarView::StopShowFolderDropMenuTimer() { 1559 void BookmarkBarView::StopShowFolderDropMenuTimer() {
(...skipping 12 matching lines...) Expand all
1570 FROM_HERE, 1572 FROM_HERE,
1571 base::Bind(&BookmarkBarView::ShowDropFolderForNode, 1573 base::Bind(&BookmarkBarView::ShowDropFolderForNode,
1572 show_folder_method_factory_.GetWeakPtr(), 1574 show_folder_method_factory_.GetWeakPtr(),
1573 node), 1575 node),
1574 base::TimeDelta::FromMilliseconds(views::GetMenuShowDelay())); 1576 base::TimeDelta::FromMilliseconds(views::GetMenuShowDelay()));
1575 } 1577 }
1576 1578
1577 void BookmarkBarView::CalculateDropLocation(const DropTargetEvent& event, 1579 void BookmarkBarView::CalculateDropLocation(const DropTargetEvent& event,
1578 const BookmarkNodeData& data, 1580 const BookmarkNodeData& data,
1579 DropLocation* location) { 1581 DropLocation* location) {
1580 DCHECK(client_); 1582 DCHECK(model_);
1581 DCHECK(model()->loaded()); 1583 DCHECK(model_->loaded());
1582 DCHECK(data.is_valid()); 1584 DCHECK(data.is_valid());
1583 1585
1584 *location = DropLocation(); 1586 *location = DropLocation();
1585 1587
1586 // The drop event uses the screen coordinates while the child Views are 1588 // The drop event uses the screen coordinates while the child Views are
1587 // always laid out from left to right (even though they are rendered from 1589 // always laid out from left to right (even though they are rendered from
1588 // right-to-left on RTL locales). Thus, in order to make sure the drop 1590 // right-to-left on RTL locales). Thus, in order to make sure the drop
1589 // coordinates calculation works, we mirror the event's X coordinate if the 1591 // coordinates calculation works, we mirror the event's X coordinate if the
1590 // locale is RTL. 1592 // locale is RTL.
1591 int mirrored_x = GetMirroredXInView(event.x()); 1593 int mirrored_x = GetMirroredXInView(event.x());
1592 1594
1593 bool found = false; 1595 bool found = false;
1594 const int other_delta_x = mirrored_x - other_bookmarked_button_->x(); 1596 const int other_delta_x = mirrored_x - other_bookmarked_button_->x();
1595 Profile* profile = browser_->profile(); 1597 Profile* profile = browser_->profile();
1596 if (other_bookmarked_button_->visible() && other_delta_x >= 0 && 1598 if (other_bookmarked_button_->visible() && other_delta_x >= 0 &&
1597 other_delta_x < other_bookmarked_button_->width()) { 1599 other_delta_x < other_bookmarked_button_->width()) {
1598 // Mouse is over 'other' folder. 1600 // Mouse is over 'other' folder.
1599 location->button_type = DROP_OTHER_FOLDER; 1601 location->button_type = DROP_OTHER_FOLDER;
1600 location->on = true; 1602 location->on = true;
1601 found = true; 1603 found = true;
1602 } else if (!GetBookmarkButtonCount()) { 1604 } else if (!GetBookmarkButtonCount()) {
1603 // No bookmarks, accept the drop. 1605 // No bookmarks, accept the drop.
1604 location->index = 0; 1606 location->index = 0;
1605 const BookmarkNode* node = data.GetFirstNode(model(), profile->GetPath()); 1607 const BookmarkNode* node = data.GetFirstNode(model_, profile->GetPath());
1606 int ops = node && client_->CanBeEditedByUser(node) ? 1608 int ops = node && client_->CanBeEditedByUser(node) ?
1607 ui::DragDropTypes::DRAG_MOVE : 1609 ui::DragDropTypes::DRAG_MOVE :
1608 ui::DragDropTypes::DRAG_COPY | ui::DragDropTypes::DRAG_LINK; 1610 ui::DragDropTypes::DRAG_COPY | ui::DragDropTypes::DRAG_LINK;
1609 location->operation = chrome::GetPreferredBookmarkDropOperation( 1611 location->operation = chrome::GetPreferredBookmarkDropOperation(
1610 event.source_operations(), ops); 1612 event.source_operations(), ops);
1611 return; 1613 return;
1612 } 1614 }
1613 1615
1614 for (int i = 0; i < GetBookmarkButtonCount() && 1616 for (int i = 0; i < GetBookmarkButtonCount() &&
1615 GetBookmarkButton(i)->visible() && !found; i++) { 1617 GetBookmarkButton(i)->visible() && !found; i++) {
1616 views::TextButton* button = GetBookmarkButton(i); 1618 views::TextButton* button = GetBookmarkButton(i);
1617 int button_x = mirrored_x - button->x(); 1619 int button_x = mirrored_x - button->x();
1618 int button_w = button->width(); 1620 int button_w = button->width();
1619 if (button_x < button_w) { 1621 if (button_x < button_w) {
1620 found = true; 1622 found = true;
1621 const BookmarkNode* node = model()->bookmark_bar_node()->GetChild(i); 1623 const BookmarkNode* node = model_->bookmark_bar_node()->GetChild(i);
1622 if (node->is_folder()) { 1624 if (node->is_folder()) {
1623 if (button_x <= views::kDropBetweenPixels) { 1625 if (button_x <= views::kDropBetweenPixels) {
1624 location->index = i; 1626 location->index = i;
1625 } else if (button_x < button_w - views::kDropBetweenPixels) { 1627 } else if (button_x < button_w - views::kDropBetweenPixels) {
1626 location->index = i; 1628 location->index = i;
1627 location->on = true; 1629 location->on = true;
1628 } else { 1630 } else {
1629 location->index = i + 1; 1631 location->index = i + 1;
1630 } 1632 }
1631 } else if (button_x < button_w / 2) { 1633 } else if (button_x < button_w / 2) {
(...skipping 26 matching lines...) Expand all
1658 // Mouse is after the last visible button but before more recently 1660 // Mouse is after the last visible button but before more recently
1659 // bookmarked; use the last visible index. 1661 // bookmarked; use the last visible index.
1660 location->index = GetFirstHiddenNodeIndex(); 1662 location->index = GetFirstHiddenNodeIndex();
1661 } else { 1663 } else {
1662 return; 1664 return;
1663 } 1665 }
1664 } 1666 }
1665 1667
1666 if (location->on) { 1668 if (location->on) {
1667 const BookmarkNode* parent = (location->button_type == DROP_OTHER_FOLDER) ? 1669 const BookmarkNode* parent = (location->button_type == DROP_OTHER_FOLDER) ?
1668 model()->other_node() : 1670 model_->other_node() :
1669 model()->bookmark_bar_node()->GetChild(location->index); 1671 model_->bookmark_bar_node()->GetChild(location->index);
1670 location->operation = chrome::GetBookmarkDropOperation( 1672 location->operation = chrome::GetBookmarkDropOperation(
1671 profile, event, data, parent, parent->child_count()); 1673 profile, event, data, parent, parent->child_count());
1672 if (!location->operation && !data.has_single_url() && 1674 if (!location->operation && !data.has_single_url() &&
1673 data.GetFirstNode(model(), profile->GetPath()) == parent) { 1675 data.GetFirstNode(model_, profile->GetPath()) == parent) {
1674 // Don't open a menu if the node being dragged is the menu to open. 1676 // Don't open a menu if the node being dragged is the menu to open.
1675 location->on = false; 1677 location->on = false;
1676 } 1678 }
1677 } else { 1679 } else {
1678 location->operation = chrome::GetBookmarkDropOperation( 1680 location->operation = chrome::GetBookmarkDropOperation(
1679 profile, event, data, model()->bookmark_bar_node(), location->index); 1681 profile, event, data, model_->bookmark_bar_node(), location->index);
1680 } 1682 }
1681 } 1683 }
1682 1684
1683 void BookmarkBarView::WriteBookmarkDragData(const BookmarkNode* node, 1685 void BookmarkBarView::WriteBookmarkDragData(const BookmarkNode* node,
1684 ui::OSExchangeData* data) { 1686 ui::OSExchangeData* data) {
1685 DCHECK(node && data); 1687 DCHECK(node && data);
1686 BookmarkNodeData drag_data(node); 1688 BookmarkNodeData drag_data(node);
1687 drag_data.Write(browser_->profile()->GetPath(), data); 1689 drag_data.Write(browser_->profile()->GetPath(), data);
1688 } 1690 }
1689 1691
1690 void BookmarkBarView::StartThrobbing(const BookmarkNode* node, 1692 void BookmarkBarView::StartThrobbing(const BookmarkNode* node,
1691 bool overflow_only) { 1693 bool overflow_only) {
1692 DCHECK(!throbbing_view_); 1694 DCHECK(!throbbing_view_);
1693 1695
1694 // Determine which visible button is showing the bookmark (or is an ancestor 1696 // Determine which visible button is showing the bookmark (or is an ancestor
1695 // of the bookmark). 1697 // of the bookmark).
1696 const BookmarkNode* bbn = model()->bookmark_bar_node(); 1698 const BookmarkNode* bbn = model_->bookmark_bar_node();
1697 const BookmarkNode* parent_on_bb = node; 1699 const BookmarkNode* parent_on_bb = node;
1698 while (parent_on_bb) { 1700 while (parent_on_bb) {
1699 const BookmarkNode* parent = parent_on_bb->parent(); 1701 const BookmarkNode* parent = parent_on_bb->parent();
1700 if (parent == bbn) 1702 if (parent == bbn)
1701 break; 1703 break;
1702 parent_on_bb = parent; 1704 parent_on_bb = parent;
1703 } 1705 }
1704 if (parent_on_bb) { 1706 if (parent_on_bb) {
1705 int index = bbn->GetIndexOf(parent_on_bb); 1707 int index = bbn->GetIndexOf(parent_on_bb);
1706 if (index >= GetFirstHiddenNodeIndex()) { 1708 if (index >= GetFirstHiddenNodeIndex()) {
1707 // Node is hidden, animate the overflow button. 1709 // Node is hidden, animate the overflow button.
1708 throbbing_view_ = overflow_button_; 1710 throbbing_view_ = overflow_button_;
1709 } else if (!overflow_only) { 1711 } else if (!overflow_only) {
1710 throbbing_view_ = static_cast<CustomButton*>(child_at(index)); 1712 throbbing_view_ = static_cast<CustomButton*>(child_at(index));
1711 } 1713 }
1712 } else if (client_->IsDescendantOfManagedNode(node)) { 1714 } else if (client_->IsDescendantOfManagedNode(node)) {
1713 throbbing_view_ = managed_bookmarks_button_; 1715 throbbing_view_ = managed_bookmarks_button_;
1714 } else if (!overflow_only) { 1716 } else if (!overflow_only) {
1715 throbbing_view_ = other_bookmarked_button_; 1717 throbbing_view_ = other_bookmarked_button_;
1716 } 1718 }
1717 1719
1718 // Use a large number so that the button continues to throb. 1720 // Use a large number so that the button continues to throb.
1719 if (throbbing_view_) 1721 if (throbbing_view_)
1720 throbbing_view_->StartThrobbing(std::numeric_limits<int>::max()); 1722 throbbing_view_->StartThrobbing(std::numeric_limits<int>::max());
1721 } 1723 }
1722 1724
1723 views::CustomButton* BookmarkBarView::DetermineViewToThrobFromRemove( 1725 views::CustomButton* BookmarkBarView::DetermineViewToThrobFromRemove(
1724 const BookmarkNode* parent, 1726 const BookmarkNode* parent,
1725 int old_index) { 1727 int old_index) {
1726 const BookmarkNode* bbn = model()->bookmark_bar_node(); 1728 const BookmarkNode* bbn = model_->bookmark_bar_node();
1727 const BookmarkNode* old_node = parent; 1729 const BookmarkNode* old_node = parent;
1728 int old_index_on_bb = old_index; 1730 int old_index_on_bb = old_index;
1729 while (old_node && old_node != bbn) { 1731 while (old_node && old_node != bbn) {
1730 const BookmarkNode* parent = old_node->parent(); 1732 const BookmarkNode* parent = old_node->parent();
1731 if (parent == bbn) { 1733 if (parent == bbn) {
1732 old_index_on_bb = bbn->GetIndexOf(old_node); 1734 old_index_on_bb = bbn->GetIndexOf(old_node);
1733 break; 1735 break;
1734 } 1736 }
1735 old_node = parent; 1737 old_node = parent;
1736 } 1738 }
(...skipping 19 matching lines...) Expand all
1756 theme_provider->GetColor(ThemeProperties::COLOR_BOOKMARK_TEXT); 1758 theme_provider->GetColor(ThemeProperties::COLOR_BOOKMARK_TEXT);
1757 for (int i = 0; i < GetBookmarkButtonCount(); ++i) 1759 for (int i = 0; i < GetBookmarkButtonCount(); ++i)
1758 GetBookmarkButton(i)->SetEnabledColor(text_color); 1760 GetBookmarkButton(i)->SetEnabledColor(text_color);
1759 other_bookmarked_button_->SetEnabledColor(text_color); 1761 other_bookmarked_button_->SetEnabledColor(text_color);
1760 managed_bookmarks_button_->SetEnabledColor(text_color); 1762 managed_bookmarks_button_->SetEnabledColor(text_color);
1761 if (apps_page_shortcut_->visible()) 1763 if (apps_page_shortcut_->visible())
1762 apps_page_shortcut_->SetEnabledColor(text_color); 1764 apps_page_shortcut_->SetEnabledColor(text_color);
1763 } 1765 }
1764 1766
1765 void BookmarkBarView::UpdateButtonsVisibility() { 1767 void BookmarkBarView::UpdateButtonsVisibility() {
1766 bool has_other_children = !model()->other_node()->empty(); 1768 bool has_other_children = !model_->other_node()->empty();
1767 bool update_other = has_other_children != other_bookmarked_button_->visible(); 1769 bool update_other = has_other_children != other_bookmarked_button_->visible();
1768 if (update_other) { 1770 if (update_other) {
1769 other_bookmarked_button_->SetVisible(has_other_children); 1771 other_bookmarked_button_->SetVisible(has_other_children);
1770 UpdateBookmarksSeparatorVisibility(); 1772 UpdateBookmarksSeparatorVisibility();
1771 } 1773 }
1772 1774
1773 bool has_managed_children = !client_->managed_node()->empty(); 1775 bool has_managed_children = !client_->managed_node()->empty();
1774 bool update_managed = 1776 bool update_managed =
1775 has_managed_children != managed_bookmarks_button_->visible(); 1777 has_managed_children != managed_bookmarks_button_->visible();
1776 if (update_managed) 1778 if (update_managed)
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1840 // Then comes the managed bookmarks folder, if visible. 1842 // Then comes the managed bookmarks folder, if visible.
1841 if (managed_bookmarks_button_->visible()) { 1843 if (managed_bookmarks_button_->visible()) {
1842 gfx::Size managed_bookmarks_pref = managed_bookmarks_button_->visible() ? 1844 gfx::Size managed_bookmarks_pref = managed_bookmarks_button_->visible() ?
1843 managed_bookmarks_button_->GetPreferredSize() : gfx::Size(); 1845 managed_bookmarks_button_->GetPreferredSize() : gfx::Size();
1844 managed_bookmarks_button_->SetBounds(x, y, managed_bookmarks_pref.width(), 1846 managed_bookmarks_button_->SetBounds(x, y, managed_bookmarks_pref.width(),
1845 height); 1847 height);
1846 x += managed_bookmarks_pref.width() + kButtonPadding; 1848 x += managed_bookmarks_pref.width() + kButtonPadding;
1847 } 1849 }
1848 1850
1849 // Then go through the bookmark buttons. 1851 // Then go through the bookmark buttons.
1850 if (GetBookmarkButtonCount() == 0 && client_ && model()->loaded()) { 1852 if (GetBookmarkButtonCount() == 0 && model_ && model_->loaded()) {
1851 gfx::Size pref = instructions_->GetPreferredSize(); 1853 gfx::Size pref = instructions_->GetPreferredSize();
1852 instructions_->SetBounds( 1854 instructions_->SetBounds(
1853 x + kInstructionsPadding, y, 1855 x + kInstructionsPadding, y,
1854 std::min(static_cast<int>(pref.width()), 1856 std::min(static_cast<int>(pref.width()),
1855 max_x - x), 1857 max_x - x),
1856 height); 1858 height);
1857 instructions_->SetVisible(true); 1859 instructions_->SetVisible(true);
1858 } else { 1860 } else {
1859 instructions_->SetVisible(false); 1861 instructions_->SetVisible(false);
1860 1862
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1903 DCHECK(apps_page_shortcut_); 1905 DCHECK(apps_page_shortcut_);
1904 // Only perform layout if required. 1906 // Only perform layout if required.
1905 bool visible = chrome::ShouldShowAppsShortcutInBookmarkBar( 1907 bool visible = chrome::ShouldShowAppsShortcutInBookmarkBar(
1906 browser_->profile(), browser_->host_desktop_type()); 1908 browser_->profile(), browser_->host_desktop_type());
1907 if (apps_page_shortcut_->visible() == visible) 1909 if (apps_page_shortcut_->visible() == visible)
1908 return; 1910 return;
1909 apps_page_shortcut_->SetVisible(visible); 1911 apps_page_shortcut_->SetVisible(visible);
1910 UpdateBookmarksSeparatorVisibility(); 1912 UpdateBookmarksSeparatorVisibility();
1911 Layout(); 1913 Layout();
1912 } 1914 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/bookmarks/bookmark_bar_view.h ('k') | chrome/browser/ui/views/bookmarks/bookmark_menu_delegate.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698