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

Side by Side Diff: chrome/browser/views/browser_actions_container.cc

Issue 567037: Initial work on making extensions work in incognito mode. (Closed)
Patch Set: added experimental requirement Created 10 years, 10 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
« no previous file with comments | « chrome/browser/views/browser_actions_container.h ('k') | chrome/common/extensions/extension.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/views/browser_actions_container.h" 5 #include "chrome/browser/views/browser_actions_container.h"
6 6
7 #include "app/gfx/canvas.h" 7 #include "app/gfx/canvas.h"
8 #include "app/resource_bundle.h" 8 #include "app/resource_bundle.h"
9 #include "app/slide_animation.h" 9 #include "app/slide_animation.h"
10 #include "base/stl_util-inl.h" 10 #include "base/stl_util-inl.h"
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 if (drop_indicator_position_ != x_pos) { 436 if (drop_indicator_position_ != x_pos) {
437 drop_indicator_position_ = x_pos; 437 drop_indicator_position_ = x_pos;
438 SchedulePaint(); 438 SchedulePaint();
439 } 439 }
440 } 440 }
441 441
442 void BrowserActionsContainer::CreateBrowserActionViews() { 442 void BrowserActionsContainer::CreateBrowserActionViews() {
443 DCHECK(browser_action_views_.empty()); 443 DCHECK(browser_action_views_.empty());
444 for (ExtensionList::iterator iter = model_->begin(); 444 for (ExtensionList::iterator iter = model_->begin();
445 iter != model_->end(); ++iter) { 445 iter != model_->end(); ++iter) {
446 if (!ShouldDisplayBrowserAction(*iter))
447 continue;
448
446 BrowserActionView* view = new BrowserActionView(*iter, this); 449 BrowserActionView* view = new BrowserActionView(*iter, this);
447 browser_action_views_.push_back(view); 450 browser_action_views_.push_back(view);
448 AddChildView(view); 451 AddChildView(view);
449 } 452 }
450 } 453 }
451 454
452 void BrowserActionsContainer::DeleteBrowserActionViews() { 455 void BrowserActionsContainer::DeleteBrowserActionViews() {
453 if (!browser_action_views_.empty()) { 456 if (!browser_action_views_.empty()) {
454 for (size_t i = 0; i < browser_action_views_.size(); ++i) 457 for (size_t i = 0; i < browser_action_views_.size(); ++i)
455 RemoveChildView(browser_action_views_[i]); 458 RemoveChildView(browser_action_views_[i]);
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 // We do this here instead of in the constructor because AddBrowserAction 662 // We do this here instead of in the constructor because AddBrowserAction
660 // calls Layout on the Toolbar, which needs this object to be constructed 663 // calls Layout on the Toolbar, which needs this object to be constructed
661 // before its Layout function is called. 664 // before its Layout function is called.
662 CreateBrowserActionViews(); 665 CreateBrowserActionViews();
663 } 666 }
664 } 667 }
665 668
666 bool BrowserActionsContainer::GetDropFormats( 669 bool BrowserActionsContainer::GetDropFormats(
667 int* formats, std::set<OSExchangeData::CustomFormat>* custom_formats) { 670 int* formats, std::set<OSExchangeData::CustomFormat>* custom_formats) {
668 custom_formats->insert(BrowserActionDragData::GetBrowserActionCustomFormat()); 671 custom_formats->insert(BrowserActionDragData::GetBrowserActionCustomFormat());
672
669 return true; 673 return true;
670 } 674 }
671 675
672 bool BrowserActionsContainer::AreDropTypesRequired() { 676 bool BrowserActionsContainer::AreDropTypesRequired() {
673 return true; 677 return true;
674 } 678 }
675 679
676 bool BrowserActionsContainer::CanDrop(const OSExchangeData& data) { 680 bool BrowserActionsContainer::CanDrop(const OSExchangeData& data) {
677 BrowserActionDragData drop_data; 681 BrowserActionDragData drop_data;
678 if (!drop_data.Read(data)) 682 if (!drop_data.Read(data))
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 } 763 }
760 764
761 // |i| now points to the item to the right of the drop indicator*, which is 765 // |i| now points to the item to the right of the drop indicator*, which is
762 // correct when dragging an icon to the left. When dragging to the right, 766 // correct when dragging an icon to the left. When dragging to the right,
763 // however, we want the icon being dragged to get the index of the item to 767 // however, we want the icon being dragged to get the index of the item to
764 // the left of the drop indicator, so we subtract one. 768 // the left of the drop indicator, so we subtract one.
765 // * Well, it can also point to the end, but not when dragging to the left. :) 769 // * Well, it can also point to the end, but not when dragging to the left. :)
766 if (i > data.index()) 770 if (i > data.index())
767 --i; 771 --i;
768 772
773 if (profile_->IsOffTheRecord())
774 i = model_->IncognitoIndexToOriginal(i);
775
769 model_->MoveBrowserAction(dragging, i); 776 model_->MoveBrowserAction(dragging, i);
770 777
771 OnDragExited(); // Perform clean up after dragging. 778 OnDragExited(); // Perform clean up after dragging.
772 return DragDropTypes::DRAG_MOVE; 779 return DragDropTypes::DRAG_MOVE;
773 } 780 }
774 781
775 void BrowserActionsContainer::MoveBrowserAction( 782 void BrowserActionsContainer::MoveBrowserAction(
776 const std::string& extension_id, size_t new_index) { 783 const std::string& extension_id, size_t new_index) {
777 ExtensionsService* service = profile_->GetExtensionsService(); 784 ExtensionsService* service = profile_->GetExtensionsService();
778 Extension* extension = service->GetExtensionById(extension_id, false); 785 Extension* extension = service->GetExtensionById(extension_id, false);
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 #if defined(DEBUG) 928 #if defined(DEBUG)
922 for (size_t i = 0; i < browser_action_views_.size(); ++i) { 929 for (size_t i = 0; i < browser_action_views_.size(); ++i) {
923 DCHECK(browser_action_views_[i]->button()->extension() != extension) << 930 DCHECK(browser_action_views_[i]->button()->extension() != extension) <<
924 "Asked to add a browser action view for an extension that already " 931 "Asked to add a browser action view for an extension that already "
925 "exists."; 932 "exists.";
926 } 933 }
927 #endif 934 #endif
928 935
929 CloseOverflowMenu(); 936 CloseOverflowMenu();
930 937
938 if (!ShouldDisplayBrowserAction(extension))
939 return;
940
941 if (profile_->IsOffTheRecord())
942 index = model_->OriginalIndexToIncognito(index);
943
931 // Before we change anything, determine the number of visible browser actions. 944 // Before we change anything, determine the number of visible browser actions.
932 size_t visible_actions = VisibleBrowserActions(); 945 size_t visible_actions = VisibleBrowserActions();
933 946
934 // Add the new browser action to the vector and the view hierarchy. 947 // Add the new browser action to the vector and the view hierarchy.
935 BrowserActionView* view = new BrowserActionView(extension, this); 948 BrowserActionView* view = new BrowserActionView(extension, this);
936 browser_action_views_.insert(browser_action_views_.begin() + index, view); 949 browser_action_views_.insert(browser_action_views_.begin() + index, view);
937 AddChildView(index, view); 950 AddChildView(index, view);
938 951
939 // For details on why we do the following see the class comments in the 952 // For details on why we do the following see the class comments in the
940 // header. 953 // header.
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 resize_animation_->Reset(); 1012 resize_animation_->Reset();
1000 resize_animation_->SetTweenType(SlideAnimation::EASE_OUT); 1013 resize_animation_->SetTweenType(SlideAnimation::EASE_OUT);
1001 resize_animation_->Show(); 1014 resize_animation_->Show();
1002 return; 1015 return;
1003 } 1016 }
1004 } 1017 }
1005 } 1018 }
1006 1019
1007 void BrowserActionsContainer::BrowserActionMoved(Extension* extension, 1020 void BrowserActionsContainer::BrowserActionMoved(Extension* extension,
1008 int index) { 1021 int index) {
1022 if (!ShouldDisplayBrowserAction(extension))
1023 return;
1024
1025 if (profile_->IsOffTheRecord())
1026 index = model_->OriginalIndexToIncognito(index);
1027
1009 DCHECK(index >= 0 && index < static_cast<int>(browser_action_views_.size())); 1028 DCHECK(index >= 0 && index < static_cast<int>(browser_action_views_.size()));
1010 1029
1011 DeleteBrowserActionViews(); 1030 DeleteBrowserActionViews();
1012 CreateBrowserActionViews(); 1031 CreateBrowserActionViews();
1013 Layout(); 1032 Layout();
1014 SchedulePaint(); 1033 SchedulePaint();
1015 } 1034 }
1016 1035
1017 int BrowserActionsContainer::WidthOfNonIconArea() const { 1036 int BrowserActionsContainer::WidthOfNonIconArea() const {
1018 int chevron_size = (chevron_->IsVisible()) ? 1037 int chevron_size = (chevron_->IsVisible()) ?
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1092 1111
1093 profile_->GetPrefs()->SetInteger(prefs::kBrowserActionContainerWidth, 1112 profile_->GetPrefs()->SetInteger(prefs::kBrowserActionContainerWidth,
1094 container_size_.width()); 1113 container_size_.width());
1095 } 1114 }
1096 1115
1097 void BrowserActionsContainer::NotifyMenuDeleted( 1116 void BrowserActionsContainer::NotifyMenuDeleted(
1098 BrowserActionOverflowMenuController* controller) { 1117 BrowserActionOverflowMenuController* controller) {
1099 DCHECK(controller == overflow_menu_); 1118 DCHECK(controller == overflow_menu_);
1100 overflow_menu_ = NULL; 1119 overflow_menu_ = NULL;
1101 } 1120 }
1121
1122 bool BrowserActionsContainer::ShouldDisplayBrowserAction(Extension* extension) {
1123 // Only display incognito-enabled extensions while in incognito mode.
1124 return (!profile_->IsOffTheRecord() ||
1125 profile_->GetExtensionsService()->
1126 IsIncognitoEnabled(extension->id()));
1127 }
OLDNEW
« no previous file with comments | « chrome/browser/views/browser_actions_container.h ('k') | chrome/common/extensions/extension.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698