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

Unified Diff: chrome/browser/cocoa/bookmark_bar_controller.mm

Issue 373022: Enable and implement last 2 items in bookmark bar context menu: "Open... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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/cocoa/bookmark_bar_controller.mm
===================================================================
--- chrome/browser/cocoa/bookmark_bar_controller.mm (revision 31745)
+++ chrome/browser/cocoa/bookmark_bar_controller.mm (working copy)
@@ -23,6 +23,7 @@
#import "chrome/browser/cocoa/menu_button.h"
#import "chrome/browser/cocoa/toolbar_controller.h"
#import "chrome/browser/cocoa/view_resizer.h"
+#include "chrome/browser/metrics/user_metrics.h"
#include "chrome/browser/profile.h"
#include "chrome/browser/tab_contents/tab_contents.h"
#include "chrome/browser/tab_contents/tab_contents_view.h"
@@ -64,8 +65,7 @@
- (id)initWithBrowser:(Browser*)browser
initialWidth:(float)initialWidth
compressDelegate:(id<ToolbarCompressable>)compressDelegate
- resizeDelegate:(id<ViewResizer>)resizeDelegate
- urlDelegate:(id<BookmarkURLOpener>)urlDelegate {
+ resizeDelegate:(id<ViewResizer>)resizeDelegate {
if ((self = [super initWithNibName:@"BookmarkBar"
bundle:mac_util::MainAppBundle()])) {
browser_ = browser;
@@ -74,7 +74,6 @@
buttons_.reset([[NSMutableArray alloc] init]);
compressDelegate_ = compressDelegate;
resizeDelegate_ = resizeDelegate;
- urlDelegate_ = urlDelegate;
tabObserver_.reset(
new TabStripModelObserverBridge(browser_->tabstrip_model(), self));
@@ -305,22 +304,31 @@
return node;
}
-// At this time, the only item which ever gets disabled is "Open All
-// Bookmarks".
+// At this time, the only items which ever get disabled are the "Open All
+// Bookmarks" options.
- (BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)item {
SEL action = [item action];
- if ((action == @selector(openAllBookmarks:)) &&
+ if (((action == @selector(openAllBookmarks:)) ||
+ (action == @selector(openAllBookmarksNewWindow:)) ||
+ (action == @selector(openAllBookmarksIncognitoWindow:))) &&
(![buttons_ count])) {
return NO;
}
return YES;
}
+// Actually open the URL. This is the last chance for a unit test to
+// override.
+- (void)openURL:(GURL)url disposition:(WindowOpenDisposition)disposition {
+ BrowserList::GetLastActive()->OpenURL(url, GURL(), disposition,
+ PageTransition::AUTO_BOOKMARK);
+}
+
- (IBAction)openBookmark:(id)sender {
BookmarkNode* node = [self nodeFromButton:sender];
- [urlDelegate_ openBookmarkURL:node->GetURL()
- disposition:event_utils::WindowOpenDispositionFromNSEvent(
- [NSApp currentEvent])];
+ WindowOpenDisposition disposition =
+ event_utils::WindowOpenDispositionFromNSEvent([NSApp currentEvent]);
+ [self openURL:node->GetURL() disposition:disposition];
}
// Given a NSMenuItem tag, return the appropriate bookmark node id.
@@ -475,17 +483,17 @@
- (IBAction)openBookmarkInNewForegroundTab:(id)sender {
BookmarkNode* node = [self nodeFromMenuItem:sender];
- [urlDelegate_ openBookmarkURL:node->GetURL() disposition:NEW_FOREGROUND_TAB];
+ [self openURL:node->GetURL() disposition:NEW_FOREGROUND_TAB];
}
- (IBAction)openBookmarkInNewWindow:(id)sender {
BookmarkNode* node = [self nodeFromMenuItem:sender];
- [urlDelegate_ openBookmarkURL:node->GetURL() disposition:NEW_WINDOW];
+ [self openURL:node->GetURL() disposition:NEW_WINDOW];
}
- (IBAction)openBookmarkInIncognitoWindow:(id)sender {
BookmarkNode* node = [self nodeFromMenuItem:sender];
- [urlDelegate_ openBookmarkURL:node->GetURL() disposition:OFF_THE_RECORD];
+ [self openURL:node->GetURL() disposition:OFF_THE_RECORD];
}
- (IBAction)editBookmark:(id)sender {
@@ -533,14 +541,19 @@
node->GetParent()->IndexOfChild(node));
}
-- (void)openBookmarkNodesRecursive:(BookmarkNode*)node {
+// An ObjC version of bookmark_utils::OpenAllImpl().
+- (void)openBookmarkNodesRecursive:(BookmarkNode*)node
+ disposition:(WindowOpenDisposition)disposition {
for (int i = 0; i < node->GetChildCount(); i++) {
BookmarkNode* child = node->GetChild(i);
- if (child->is_url())
- [urlDelegate_ openBookmarkURL:child->GetURL()
- disposition:NEW_BACKGROUND_TAB];
- else
- [self openBookmarkNodesRecursive:child];
+ if (child->is_url()) {
+ [self openURL:child->GetURL() disposition:disposition];
+ // We revert to a basic disposition in case the initial
+ // disposition opened a new window.
+ disposition = NEW_BACKGROUND_TAB;
+ } else {
+ [self openBookmarkNodesRecursive:child disposition:disposition];
+ }
}
}
@@ -548,11 +561,26 @@
// TODO(jrg):
// Is there an easier way to get a non-const root node for the bookmark bar?
// I can't iterate over them unless it's non-const.
+ BookmarkNode* node = const_cast<BookmarkNode*>(
+ bookmarkModel_->GetBookmarkBarNode());
+ [self openBookmarkNodesRecursive:node disposition:NEW_FOREGROUND_TAB];
+ UserMetrics::RecordAction(L"OpenAllBookmarks", browser_->profile());
+}
- BookmarkNode* node = (BookmarkNode*)bookmarkModel_->GetBookmarkBarNode();
- [self openBookmarkNodesRecursive:node];
+- (IBAction)openAllBookmarksNewWindow:(id)sender {
+ BookmarkNode* node = const_cast<BookmarkNode*>(
+ bookmarkModel_->GetBookmarkBarNode());
+ [self openBookmarkNodesRecursive:node disposition:NEW_WINDOW];
+ UserMetrics::RecordAction(L"OpenAllBookmarksNewWindow", browser_->profile());
}
+- (IBAction)openAllBookmarksIncognitoWindow:(id)sender {
+ BookmarkNode* node = const_cast<BookmarkNode*>(
+ bookmarkModel_->GetBookmarkBarNode());
+ [self openBookmarkNodesRecursive:node disposition:OFF_THE_RECORD];
+ UserMetrics::RecordAction(L"OpenAllBookmarksIncognitoWindow", browser_->profile());
+}
+
// May be called from the bar or from a folder button.
// If called from a button, that button becomes the parent.
- (IBAction)addPage:(id)sender {
@@ -600,7 +628,10 @@
NSImage* image = [self getFavIconForNode:node];
[cell setBookmarkCellText:title image:image];
- [cell setMenu:buttonContextMenu_];
+ if (node->is_folder())
+ [cell setMenu:[[self view] menu]];
+ else
+ [cell setMenu:buttonContextMenu_];
return cell;
}
@@ -670,7 +701,7 @@
const BookmarkNode* node = bookmarkModel_->GetNodeByID(tag);
WindowOpenDisposition disposition =
event_utils::WindowOpenDispositionFromNSEvent([NSApp currentEvent]);
- [urlDelegate_ openBookmarkURL:node->GetURL() disposition:disposition];
+ [self openURL:node->GetURL() disposition:disposition];
}
// Create buttons for all items in the bookmark node tree.
@@ -880,10 +911,6 @@
[self loaded:model];
}
-- (void)setUrlDelegate:(id<BookmarkURLOpener>)urlDelegate {
- urlDelegate_ = urlDelegate;
-}
-
- (NSArray*)buttons {
return buttons_.get();
}
« no previous file with comments | « chrome/browser/cocoa/bookmark_bar_controller.h ('k') | chrome/browser/cocoa/bookmark_bar_controller_unittest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698