Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/bookmarks/bookmark_bubble_controller.h" | 5 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bubble_controller.h" |
| 6 | 6 |
| 7 #include "base/mac/bundle_locations.h" | 7 #include "base/mac/bundle_locations.h" |
| 8 #include "base/strings/sys_string_conversions.h" | 8 #include "base/strings/sys_string_conversions.h" |
| 9 #include "chrome/browser/ui/browser.h" | 9 #include "chrome/browser/ui/browser.h" |
| 10 #include "chrome/browser/ui/browser_finder.h" | 10 #include "chrome/browser/ui/browser_finder.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 94 // Adjust the height of the bubble so that the sync promo fits in it, | 94 // Adjust the height of the bubble so that the sync promo fits in it, |
| 95 // except for its bottom border. The xib file hides the left and right | 95 // except for its bottom border. The xib file hides the left and right |
| 96 // borders of the sync promo. | 96 // borders of the sync promo. |
| 97 NSRect bubbleFrame = [[self window] frame]; | 97 NSRect bubbleFrame = [[self window] frame]; |
| 98 bubbleFrame.size.height += | 98 bubbleFrame.size.height += |
| 99 syncPromoHeight - [syncPromoController_ borderWidth]; | 99 syncPromoHeight - [syncPromoController_ borderWidth]; |
| 100 [[self window] setFrame:bubbleFrame display:YES]; | 100 [[self window] setFrame:bubbleFrame display:YES]; |
| 101 } | 101 } |
| 102 } | 102 } |
| 103 | 103 |
| 104 // If this is a new bookmark somewhere visible (e.g. on the bookmark | |
| 105 // bar), pulse it. Else, call ourself recursively with our parent | |
| 106 // until we find something visible to pulse. | |
| 107 - (void)startPulsingBookmarkButton:(const BookmarkNode*)node { | 104 - (void)startPulsingBookmarkButton:(const BookmarkNode*)node { |
| 108 while (node) { | 105 pulsingBookmarkNode_ = [[[BrowserWindowController |
| 109 if ((node->parent() == model_->bookmark_bar_node()) || | 106 browserWindowControllerForWindow:self.parentWindow] bookmarkBarController] |
|
Alexei Svitkine (slow)
2015/08/24 14:43:41
Nit: Can you make a helper for getting the bookmar
| |
| 110 (node->parent() == | 107 startPulsingBookmarkNode:node]; |
| 111 managedBookmarkService_->managed_node()) || | 108 bookmarkObserver_->StartObservingNode(pulsingBookmarkNode_); |
| 112 (node->parent() == managedBookmarkService_->supervised_node()) || | |
| 113 (node == model_->other_node())) { | |
| 114 pulsingBookmarkNode_ = node; | |
| 115 bookmarkObserver_->StartObservingNode(pulsingBookmarkNode_); | |
| 116 NSValue *value = [NSValue valueWithPointer:node]; | |
| 117 NSDictionary *dict = [NSDictionary | |
| 118 dictionaryWithObjectsAndKeys:value, | |
| 119 bookmark_button::kBookmarkKey, | |
| 120 [NSNumber numberWithBool:YES], | |
| 121 bookmark_button::kBookmarkPulseFlagKey, | |
| 122 nil]; | |
| 123 [[NSNotificationCenter defaultCenter] | |
| 124 postNotificationName:bookmark_button::kPulseBookmarkButtonNotification | |
| 125 object:self | |
| 126 userInfo:dict]; | |
| 127 return; | |
| 128 } | |
| 129 node = node->parent(); | |
| 130 } | |
| 131 } | 109 } |
| 132 | 110 |
| 133 - (void)stopPulsingBookmarkButton { | 111 - (void)stopPulsingBookmarkButton { |
| 134 if (!pulsingBookmarkNode_) | 112 if (!pulsingBookmarkNode_) |
| 135 return; | 113 return; |
| 136 NSValue *value = [NSValue valueWithPointer:pulsingBookmarkNode_]; | 114 |
| 137 if (bookmarkObserver_) | 115 [[[BrowserWindowController browserWindowControllerForWindow:self.parentWindow] |
| 138 bookmarkObserver_->StopObservingNode(pulsingBookmarkNode_); | 116 bookmarkBarController] stopPulsingBookmarkNode:pulsingBookmarkNode_]; |
| 139 pulsingBookmarkNode_ = NULL; | 117 pulsingBookmarkNode_ = nullptr; |
| 140 NSDictionary *dict = [NSDictionary | |
| 141 dictionaryWithObjectsAndKeys:value, | |
| 142 bookmark_button::kBookmarkKey, | |
| 143 [NSNumber numberWithBool:NO], | |
| 144 bookmark_button::kBookmarkPulseFlagKey, | |
| 145 nil]; | |
| 146 [[NSNotificationCenter defaultCenter] | |
| 147 postNotificationName:bookmark_button::kPulseBookmarkButtonNotification | |
| 148 object:self | |
| 149 userInfo:dict]; | |
| 150 } | 118 } |
| 151 | 119 |
| 152 // Close the bookmark bubble without changing anything. Unlike a | 120 // Close the bookmark bubble without changing anything. Unlike a |
| 153 // typical dialog's OK/Cancel, where Cancel is "do nothing", all | 121 // typical dialog's OK/Cancel, where Cancel is "do nothing", all |
| 154 // buttons on the bubble have the capacity to change the bookmark | 122 // buttons on the bubble have the capacity to change the bookmark |
| 155 // model. This is an IBOutlet-looking entry point to remove the | 123 // model. This is an IBOutlet-looking entry point to remove the |
| 156 // dialog without touching the model. | 124 // dialog without touching the model. |
| 157 - (void)dismissWithoutEditing:(id)sender { | 125 - (void)dismissWithoutEditing:(id)sender { |
| 158 [self close]; | 126 [self close]; |
| 159 } | 127 } |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 351 | 319 |
| 352 @end // BookmarkBubbleController | 320 @end // BookmarkBubbleController |
| 353 | 321 |
| 354 | 322 |
| 355 @implementation BookmarkBubbleController (ExposedForUnitTesting) | 323 @implementation BookmarkBubbleController (ExposedForUnitTesting) |
| 356 | 324 |
| 357 - (NSView*)syncPromoPlaceholder { | 325 - (NSView*)syncPromoPlaceholder { |
| 358 return syncPromoPlaceholder_; | 326 return syncPromoPlaceholder_; |
| 359 } | 327 } |
| 360 | 328 |
| 329 - (const BookmarkNode*)pulsingBookmarkNode { | |
| 330 return pulsingBookmarkNode_; | |
| 331 } | |
| 332 | |
| 361 + (NSString*)chooseAnotherFolderString { | 333 + (NSString*)chooseAnotherFolderString { |
| 362 return l10n_util::GetNSStringWithFixup( | 334 return l10n_util::GetNSStringWithFixup( |
| 363 IDS_BOOKMARK_BUBBLE_CHOOSER_ANOTHER_FOLDER); | 335 IDS_BOOKMARK_BUBBLE_CHOOSER_ANOTHER_FOLDER); |
| 364 } | 336 } |
| 365 | 337 |
| 366 // For the given folder node, walk the tree and add folder names to | 338 // For the given folder node, walk the tree and add folder names to |
| 367 // the given pop up button. | 339 // the given pop up button. |
| 368 - (void)addFolderNodes:(const BookmarkNode*)parent | 340 - (void)addFolderNodes:(const BookmarkNode*)parent |
| 369 toPopUpButton:(NSPopUpButton*)button | 341 toPopUpButton:(NSPopUpButton*)button |
| 370 indentation:(int)indentation { | 342 indentation:(int)indentation { |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 404 NSInteger idx = [menu indexOfItemWithRepresentedObject:parentValue]; | 376 NSInteger idx = [menu indexOfItemWithRepresentedObject:parentValue]; |
| 405 DCHECK(idx != -1); | 377 DCHECK(idx != -1); |
| 406 [folderPopUpButton_ selectItemAtIndex:idx]; | 378 [folderPopUpButton_ selectItemAtIndex:idx]; |
| 407 } | 379 } |
| 408 | 380 |
| 409 - (NSPopUpButton*)folderPopUpButton { | 381 - (NSPopUpButton*)folderPopUpButton { |
| 410 return folderPopUpButton_; | 382 return folderPopUpButton_; |
| 411 } | 383 } |
| 412 | 384 |
| 413 @end // implementation BookmarkBubbleController(ExposedForUnitTesting) | 385 @end // implementation BookmarkBubbleController(ExposedForUnitTesting) |
| OLD | NEW |