Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" | 5 #import "chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 201 | 201 |
| 202 void LocationBarViewMac::UpdatePageActions() { | 202 void LocationBarViewMac::UpdatePageActions() { |
| 203 RefreshPageActionDecorations(); | 203 RefreshPageActionDecorations(); |
| 204 Layout(); | 204 Layout(); |
| 205 | 205 |
| 206 [field_ updateMouseTracking]; | 206 [field_ updateMouseTracking]; |
| 207 [field_ setNeedsDisplay:YES]; | 207 [field_ setNeedsDisplay:YES]; |
| 208 } | 208 } |
| 209 | 209 |
| 210 void LocationBarViewMac::InvalidatePageActions() { | 210 void LocationBarViewMac::InvalidatePageActions() { |
| 211 DeletePageActionDecorations(); | 211 DeletePageActionsAndDecorations(); |
| 212 Layout(); | 212 Layout(); |
| 213 } | 213 } |
| 214 | 214 |
| 215 void LocationBarViewMac::UpdateBookmarkStarVisibility() { | 215 void LocationBarViewMac::UpdateBookmarkStarVisibility() { |
| 216 star_decoration_->SetVisible(IsStarEnabled()); | 216 star_decoration_->SetVisible(IsStarEnabled()); |
| 217 } | 217 } |
| 218 | 218 |
| 219 bool LocationBarViewMac::ShowPageActionPopup( | 219 bool LocationBarViewMac::ShowPageActionPopup( |
| 220 const extensions::Extension* extension, bool grant_active_tab) { | 220 const extensions::Extension* extension, bool grant_active_tab) { |
| 221 for (ScopedVector<PageActionDecoration>::iterator iter = | 221 for (ScopedVector<PageActionDecoration>::iterator iter = |
| (...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 643 for (size_t i = 0; i < page_action_decorations_.size(); ++i) { | 643 for (size_t i = 0; i < page_action_decorations_.size(); ++i) { |
| 644 if (page_action_decorations_[i]->GetPageAction() == page_action) | 644 if (page_action_decorations_[i]->GetPageAction() == page_action) |
| 645 return page_action_decorations_[i]; | 645 return page_action_decorations_[i]; |
| 646 } | 646 } |
| 647 // If |page_action| is the browser action of an extension, no element in | 647 // If |page_action| is the browser action of an extension, no element in |
| 648 // |page_action_decorations_| will match. | 648 // |page_action_decorations_| will match. |
| 649 NOTREACHED(); | 649 NOTREACHED(); |
| 650 return NULL; | 650 return NULL; |
| 651 } | 651 } |
| 652 | 652 |
| 653 void LocationBarViewMac::DeletePageActionDecorations() { | 653 void LocationBarViewMac::DeletePageActionsAndDecorations() { |
| 654 // TODO(shess): Deleting these decorations could result in the cell | 654 // TODO(shess): Deleting these decorations could result in the cell |
| 655 // refering to them before things are laid out again. Meanwhile, at | 655 // refering to them before things are laid out again. Meanwhile, at |
| 656 // least fail safe. | 656 // least fail safe. |
| 657 [[field_ cell] clearDecorations]; | 657 [[field_ cell] clearDecorations]; |
| 658 | 658 |
| 659 page_action_decorations_.clear(); | 659 page_action_decorations_.clear(); |
| 660 page_actions_.clear(); | |
| 660 } | 661 } |
| 661 | 662 |
| 662 void LocationBarViewMac::OnEditBookmarksEnabledChanged() { | 663 void LocationBarViewMac::OnEditBookmarksEnabledChanged() { |
| 663 UpdateBookmarkStarVisibility(); | 664 UpdateBookmarkStarVisibility(); |
| 664 OnChanged(); | 665 OnChanged(); |
| 665 } | 666 } |
| 666 | 667 |
| 667 void LocationBarViewMac::RefreshPageActionDecorations() { | 668 void LocationBarViewMac::RefreshPageActionDecorations() { |
| 668 if (!IsEditable()) { | 669 if (!IsEditable()) { |
| 669 DeletePageActionDecorations(); | 670 DeletePageActionsAndDecorations(); |
| 670 return; | 671 return; |
| 671 } | 672 } |
| 672 | 673 |
| 673 WebContents* web_contents = GetWebContents(); | 674 WebContents* web_contents = GetWebContents(); |
| 674 if (!web_contents) { | 675 if (!web_contents) { |
| 675 DeletePageActionDecorations(); // Necessary? | 676 DeletePageActionsAndDecorations(); // Necessary? |
| 676 return; | 677 return; |
| 677 } | 678 } |
| 678 | 679 |
| 679 std::vector<ExtensionAction*> new_page_actions = | 680 std::vector<ExtensionAction*> new_page_actions = |
| 680 extensions::TabHelper::FromWebContents(web_contents)-> | 681 extensions::TabHelper::FromWebContents(web_contents)-> |
| 681 location_bar_controller()->GetCurrentActions(); | 682 location_bar_controller()->GetCurrentActions(); |
| 682 | 683 |
| 683 if (new_page_actions != page_actions_) { | 684 if (new_page_actions != page_actions_) { |
| 684 page_actions_.swap(new_page_actions); | 685 page_actions_.swap(new_page_actions); |
| 685 DeletePageActionDecorations(); | 686 page_action_decorations_.clear(); |
|
danduong
2014/12/20 03:21:24
do you have to call [[field_ cell] clearDecoration
erikchen
2014/12/22 20:39:43
Yes, you're right.
| |
| 686 for (size_t i = 0; i < page_actions_.size(); ++i) { | 687 for (size_t i = 0; i < page_actions_.size(); ++i) { |
| 687 page_action_decorations_.push_back( | 688 page_action_decorations_.push_back( |
| 688 new PageActionDecoration(this, browser_, page_actions_[i])); | 689 new PageActionDecoration(this, browser_, page_actions_[i])); |
| 689 } | 690 } |
| 690 | 691 |
| 691 // Move rightmost extensions to the start. | 692 // Move rightmost extensions to the start. |
| 692 std::stable_partition(page_action_decorations_.begin(), | 693 std::stable_partition(page_action_decorations_.begin(), |
| 693 page_action_decorations_.end(), | 694 page_action_decorations_.end(), |
| 694 PageActionHasBookmarkManagerPrivate); | 695 PageActionHasBookmarkManagerPrivate); |
| 695 } | 696 } |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 757 } | 758 } |
| 758 | 759 |
| 759 bool LocationBarViewMac::UpdateMicSearchDecorationVisibility() { | 760 bool LocationBarViewMac::UpdateMicSearchDecorationVisibility() { |
| 760 bool is_visible = !GetToolbarModel()->input_in_progress() && | 761 bool is_visible = !GetToolbarModel()->input_in_progress() && |
| 761 browser_->search_model()->voice_search_supported(); | 762 browser_->search_model()->voice_search_supported(); |
| 762 if (mic_search_decoration_->IsVisible() == is_visible) | 763 if (mic_search_decoration_->IsVisible() == is_visible) |
| 763 return false; | 764 return false; |
| 764 mic_search_decoration_->SetVisible(is_visible); | 765 mic_search_decoration_->SetVisible(is_visible); |
| 765 return true; | 766 return true; |
| 766 } | 767 } |
| OLD | NEW |