Index: chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm |
diff --git a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm |
index c540d72f54bb2f4701b877e084dc905253b913eb..15eaae7a9c41c8ae3f14cfebf19d2d415e60a96f 100644 |
--- a/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm |
+++ b/chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.mm |
@@ -283,10 +283,6 @@ void RecordAppLaunch(Profile* profile, GURL url) { |
selector:@selector(themeDidChangeNotification:) |
name:kBrowserThemeDidChangeNotification |
object:nil]; |
- [defaultCenter addObserver:self |
- selector:@selector(pulseBookmarkNotification:) |
- name:bookmark_button::kPulseBookmarkButtonNotification |
- object:nil]; |
contextMenuController_.reset( |
[[BookmarkContextMenuCocoaController alloc] |
@@ -308,17 +304,7 @@ void RecordAppLaunch(Profile* profile, GURL url) { |
return contextMenuController_.get(); |
} |
-- (void)pulseBookmarkNotification:(NSNotification*)notification { |
- NSDictionary* dict = [notification userInfo]; |
- const BookmarkNode* node = NULL; |
- NSValue *value = [dict objectForKey:bookmark_button::kBookmarkKey]; |
- DCHECK(value); |
- if (value) |
- node = static_cast<const BookmarkNode*>([value pointerValue]); |
- NSNumber* number = [dict objectForKey:bookmark_button::kBookmarkPulseFlagKey]; |
- DCHECK(number); |
- BOOL doPulse = number ? [number boolValue] : NO; |
- |
+- (void)pulseBookmarkNode:(const BookmarkNode*)node doPulse:(BOOL)doPulse { |
// 3 cases: |
// button on the bar: flash it |
// button in "other bookmarks" folder: flash other bookmarks |
@@ -349,6 +335,25 @@ void RecordAppLaunch(Profile* profile, GURL url) { |
NOTREACHED() << "no bookmark button found to pulse!"; |
} |
+- (const BookmarkNode*)startPulsingBookmarkNode:(const BookmarkNode*)node { |
+ // Find the closest parent that is visible on the bar. |
+ while (node) { |
+ if ((node->parent() == bookmarkModel_->bookmark_bar_node()) || |
+ (node->parent() == managedBookmarkService_->managed_node()) || |
+ (node->parent() == managedBookmarkService_->supervised_node()) || |
+ (node == bookmarkModel_->other_node())) { |
+ [self pulseBookmarkNode:node doPulse:YES]; |
+ return node; |
+ } |
+ node = node->parent(); |
+ } |
+ return nullptr; |
+} |
+ |
+- (void)stopPulsingBookmarkNode:(const BookmarkNode*)node { |
+ [self pulseBookmarkNode:node doPulse:NO]; |
+} |
+ |
- (void)dealloc { |
[self browserWillBeDestroyed]; |
[super dealloc]; |