bookmark_menu_cocoa_controller_unittest.mm revision dc0f95d653279beabeb9817299e2902918ba123e
1// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "base/string16.h" 6#include "chrome/browser/bookmarks/bookmark_model.h" 7#include "chrome/browser/bookmarks/bookmark_utils.h" 8#include "chrome/browser/ui/cocoa/browser_test_helper.h" 9#import "chrome/browser/ui/cocoa/bookmarks/bookmark_menu_cocoa_controller.h" 10#include "chrome/browser/ui/browser.h" 11#include "testing/gtest/include/gtest/gtest.h" 12 13@interface FakeBookmarkMenuController : BookmarkMenuCocoaController { 14 @public 15 BrowserTestHelper* helper_; 16 const BookmarkNode* nodes_[2]; 17 BOOL opened_[2]; 18 BOOL opened_new_foreground_tab; 19 BOOL opened_new_window; 20 BOOL opened_off_the_record; 21} 22@end 23 24@implementation FakeBookmarkMenuController 25 26- (id)init { 27 if ((self = [super init])) { 28 string16 empty; 29 helper_ = new BrowserTestHelper(); 30 BookmarkModel* model = helper_->browser()->profile()->GetBookmarkModel(); 31 const BookmarkNode* bookmark_bar = model->GetBookmarkBarNode(); 32 nodes_[0] = model->AddURL(bookmark_bar, 0, empty, GURL("http://0.com")); 33 nodes_[1] = model->AddURL(bookmark_bar, 1, empty, GURL("http://1.com")); 34 } 35 return self; 36} 37 38- (void)dealloc { 39 delete helper_; 40 [super dealloc]; 41} 42 43- (const BookmarkNode*)nodeForIdentifier:(int)identifier { 44 if ((identifier < 0) || (identifier >= 2)) 45 return NULL; 46 return nodes_[identifier]; 47} 48 49- (void)openURLForNode:(const BookmarkNode*)node { 50 std::string url = node->GetURL().possibly_invalid_spec(); 51 if (url.find("http://0.com") != std::string::npos) 52 opened_[0] = YES; 53 if (url.find("http://1.com") != std::string::npos) 54 opened_[1] = YES; 55} 56 57- (void)openAll:(NSInteger)tag 58 withDisposition:(WindowOpenDisposition)disposition { 59 if (disposition == NEW_FOREGROUND_TAB) { 60 opened_new_foreground_tab = YES; 61 } else if (disposition == NEW_WINDOW) { 62 opened_new_window = YES; 63 } else if (disposition == OFF_THE_RECORD) { 64 opened_off_the_record = YES; 65 } 66} 67 68@end // FakeBookmarkMenuController 69 70 71TEST(BookmarkMenuCocoaControllerTest, TestOpenItem) { 72 FakeBookmarkMenuController *c = [[FakeBookmarkMenuController alloc] init]; 73 NSMenuItem *item = [[[NSMenuItem alloc] init] autorelease]; 74 for (int i = 0; i < 2; i++) { 75 [item setTag:i]; 76 ASSERT_EQ(c->opened_[i], NO); 77 [c openBookmarkMenuItem:item]; 78 ASSERT_NE(c->opened_[i], NO); 79 } 80 81 // Test three versions of 'Open All Bookmarks' item. tag id means nothing. 82 // I just reset the tag id to zero. 83 [item setTag:0]; 84 EXPECT_EQ(c->opened_new_foreground_tab, NO); 85 [c openAllBookmarks:item]; 86 EXPECT_NE(c->opened_new_foreground_tab, NO); 87 88 EXPECT_EQ(c->opened_new_window, NO); 89 [c openAllBookmarksNewWindow:item]; 90 EXPECT_NE(c->opened_new_window, NO); 91 92 EXPECT_EQ(c->opened_off_the_record, NO); 93 [c openAllBookmarksIncognitoWindow:item]; 94 EXPECT_NE(c->opened_off_the_record, NO); 95 96 [c release]; 97} 98