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

Unified Diff: chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm

Issue 789763004: Fix disappearing page actions bug. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Significant clean up. Created 6 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
diff --git a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
index d62b09625cd032d46eb3d8cc85244e9761ae5068..7c33c204edc86b2d8ebf21a165b62c6c469711dc 100644
--- a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
+++ b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
@@ -672,7 +672,7 @@ void LocationBarViewMac::RefreshPageActionDecorations() {
WebContents* web_contents = GetWebContents();
if (!web_contents) {
- DeletePageActionDecorations(); // Necessary?
+ DeletePageActionDecorations();
return;
}
@@ -680,12 +680,11 @@ void LocationBarViewMac::RefreshPageActionDecorations() {
extensions::TabHelper::FromWebContents(web_contents)->
location_bar_controller()->GetCurrentActions();
- if (new_page_actions != page_actions_) {
- page_actions_.swap(new_page_actions);
+ if (PageActionsDiffer(new_page_actions)) {
DeletePageActionDecorations();
- for (size_t i = 0; i < page_actions_.size(); ++i) {
+ for (size_t i = 0; i < new_page_actions.size(); ++i) {
page_action_decorations_.push_back(
- new PageActionDecoration(this, browser_, page_actions_[i]));
+ new PageActionDecoration(this, browser_, new_page_actions[i]));
}
// Move rightmost extensions to the start.
@@ -701,6 +700,20 @@ void LocationBarViewMac::RefreshPageActionDecorations() {
}
}
+bool LocationBarViewMac::PageActionsDiffer(
+ const std::vector<ExtensionAction*>& page_actions) {
+ if (page_action_decorations_.size() != page_actions.size())
+ return true;
+
+ for (size_t index = 0; index < page_actions.size(); ++index) {
+ PageActionDecoration* decoration = page_action_decorations_[index];
+ if (decoration->GetPageAction() != page_actions[index])
+ return true;
+ }
+
+ return false;
+}
+
bool LocationBarViewMac::RefreshContentSettingsDecorations() {
const bool input_in_progress = GetToolbarModel()->input_in_progress();
WebContents* web_contents = input_in_progress ?

Powered by Google App Engine
This is Rietveld 408576698