Fixing build: GetViewContainer changed name from under me. :)
[chromium-blink-merge.git] / chrome / browser / bookmark_bar_context_menu_controller_test.cc
blob01d461371f68340ea8d1be08571a473274153a84
1 // Copyright (c) 2006-2008 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.
5 #include "chrome/browser/bookmark_bar_context_menu_controller.h"
6 #include "chrome/browser/bookmarks/bookmark_model.h"
7 #include "chrome/browser/profile.h"
8 #include "chrome/browser/views/bookmark_bar_view.h"
9 #include "chrome/common/pref_names.h"
10 #include "chrome/common/pref_service.h"
11 #include "chrome/browser/page_navigator.h"
12 #include "chrome/test/testing_profile.h"
13 #include "testing/gtest/include/gtest/gtest.h"
15 #include "generated_resources.h"
17 namespace {
19 // PageNavigator implementation that records the URL.
20 class TestingPageNavigator : public PageNavigator {
21 public:
22 virtual void OpenURL(const GURL& url,
23 WindowOpenDisposition disposition,
24 PageTransition::Type transition) {
25 urls_.push_back(url);
28 std::vector<GURL> urls_;
31 } // namespace
33 class BookmarkBarContextMenuControllerTest : public testing::Test {
34 public:
35 BookmarkBarContextMenuControllerTest()
36 : bb_view_(NULL), model_(NULL) {
39 virtual void SetUp() {
40 BookmarkBarView::testing_ = true;
42 profile_.reset(new TestingProfile());
43 profile_->set_has_history_service(true);
44 profile_->CreateBookmarkModel(true);
46 model_ = profile_->GetBookmarkModel();
48 bb_view_.reset(new BookmarkBarView(profile_.get(), NULL));
49 bb_view_->SetPageNavigator(&navigator_);
51 AddTestData();
54 virtual void TearDown() {
55 BookmarkBarView::testing_ = false;
57 // Flush the message loop to make Purify happy.
58 message_loop_.RunAllPending();
61 protected:
62 MessageLoopForUI message_loop_;
63 scoped_ptr<TestingProfile> profile_;
64 BookmarkModel* model_;
65 scoped_ptr<BookmarkBarView> bb_view_;
66 TestingPageNavigator navigator_;
68 private:
69 // Creates the following structure:
70 // a
71 // F1
72 // f1a
73 // F11
74 // f11a
75 // F2
76 void AddTestData() {
77 std::string test_base = "file:///c:/tmp/";
79 model_->AddURL(model_->GetBookmarkBarNode(), 0, L"a",
80 GURL(test_base + "a"));
81 BookmarkNode* f1 =
82 model_->AddGroup(model_->GetBookmarkBarNode(), 1, L"F1");
83 model_->AddURL(f1, 0, L"f1a", GURL(test_base + "f1a"));
84 BookmarkNode* f11 = model_->AddGroup(f1, 1, L"F11");
85 model_->AddURL(f11, 0, L"f11a", GURL(test_base + "f11a"));
86 model_->AddGroup(model_->GetBookmarkBarNode(), 2, L"F2");
90 // Tests Deleting from the menu.
91 TEST_F(BookmarkBarContextMenuControllerTest, DeleteURL) {
92 BookmarkBarContextMenuController controller(
93 bb_view_.get(), model_->GetBookmarkBarNode()->GetChild(0));
94 GURL url = model_->GetBookmarkBarNode()->GetChild(0)->GetURL();
95 ASSERT_TRUE(controller.IsCommandEnabled(IDS_BOOKMARK_BAR_REMOVE));
96 // Delete the URL.
97 controller.ExecuteCommand(IDS_BOOKMARK_BAR_REMOVE);
98 // Model shouldn't have URL anymore.
99 ASSERT_FALSE(model_->IsBookmarked(url));
102 // Tests open all on a folder with a couple of bookmarks.
103 TEST_F(BookmarkBarContextMenuControllerTest, OpenAll) {
104 BookmarkNode* folder = model_->GetBookmarkBarNode()->GetChild(1);
105 BookmarkBarContextMenuController controller(bb_view_.get(), folder);
106 ASSERT_TRUE(controller.IsCommandEnabled(IDS_BOOMARK_BAR_OPEN_ALL));
107 ASSERT_TRUE(controller.IsCommandEnabled(IDS_BOOMARK_BAR_OPEN_ALL_INCOGNITO));
108 ASSERT_TRUE(controller.IsCommandEnabled(IDS_BOOMARK_BAR_OPEN_ALL_NEW_WINDOW));
109 // Open it.
110 controller.ExecuteCommand(IDS_BOOMARK_BAR_OPEN_ALL);
111 // Should have navigated to F1's children.
112 ASSERT_EQ(2, navigator_.urls_.size());
113 ASSERT_TRUE(folder->GetChild(0)->GetURL() == navigator_.urls_[0]);
114 ASSERT_TRUE(folder->GetChild(1)->GetChild(0)->GetURL() ==
115 navigator_.urls_[1]);
117 // Make sure incognito is disabled when OTR.
118 profile_->set_off_the_record(true);
119 ASSERT_TRUE(controller.IsCommandEnabled(IDS_BOOMARK_BAR_OPEN_ALL));
120 ASSERT_FALSE(controller.IsCommandEnabled(IDS_BOOMARK_BAR_OPEN_ALL_INCOGNITO));
121 ASSERT_TRUE(
122 controller.IsCommandEnabled(IDS_BOOMARK_BAR_OPEN_ALL_NEW_WINDOW));
125 // Tests that menus are appropriately disabled for empty folders.
126 TEST_F(BookmarkBarContextMenuControllerTest, DisableForEmptyFolder) {
127 BookmarkNode* folder = model_->GetBookmarkBarNode()->GetChild(2);
128 BookmarkBarContextMenuController controller(bb_view_.get(), folder);
129 EXPECT_FALSE(controller.IsCommandEnabled(IDS_BOOMARK_BAR_OPEN_ALL));
130 EXPECT_FALSE(
131 controller.IsCommandEnabled(IDS_BOOMARK_BAR_OPEN_ALL_NEW_WINDOW));
134 // Tests the enabled state of open incognito.
135 TEST_F(BookmarkBarContextMenuControllerTest, DisableIncognito) {
136 BookmarkBarContextMenuController controller(
137 bb_view_.get(), model_->GetBookmarkBarNode()->GetChild(0));
138 EXPECT_TRUE(controller.IsCommandEnabled(IDS_BOOMARK_BAR_OPEN_INCOGNITO));
139 profile_->set_off_the_record(true);
140 EXPECT_FALSE(controller.IsCommandEnabled(IDS_BOOMARK_BAR_OPEN_INCOGNITO));