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

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: Comments from pkasting. 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..3125841ed8d334b6f5db3e96a2e1d06716f309a8 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
@@ -207,8 +207,8 @@ void LocationBarViewMac::UpdatePageActions() {
[field_ setNeedsDisplay:YES];
}
-void LocationBarViewMac::InvalidatePageActions() {
- DeletePageActionDecorations();
+void LocationBarViewMac::RefreshPageActions() {
+ RefreshPageActionDecorations();
Layout();
}
@@ -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