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 #include "chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.h" | 5 #include "chrome/browser/extensions/api/bookmarks/bookmark_api_helpers.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
| 11 #include "chrome/browser/bookmarks/chrome_bookmark_client.h" |
10 #include "chrome/browser/extensions/api/bookmarks/bookmark_api_constants.h" | 12 #include "chrome/browser/extensions/api/bookmarks/bookmark_api_constants.h" |
11 #include "chrome/common/extensions/api/bookmarks.h" | 13 #include "chrome/common/extensions/api/bookmarks.h" |
| 14 #include "chrome/test/base/testing_profile.h" |
12 #include "components/bookmarks/browser/bookmark_model.h" | 15 #include "components/bookmarks/browser/bookmark_model.h" |
13 #include "components/bookmarks/test/test_bookmark_client.h" | 16 #include "components/bookmarks/test/bookmark_test_helpers.h" |
| 17 #include "content/public/test/test_browser_thread_bundle.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
15 | 19 |
16 namespace extensions { | 20 namespace extensions { |
17 | 21 |
18 namespace keys = bookmark_api_constants; | 22 namespace keys = bookmark_api_constants; |
19 using api::bookmarks::BookmarkTreeNode; | 23 using api::bookmarks::BookmarkTreeNode; |
20 | 24 |
21 namespace bookmark_api_helpers { | 25 namespace bookmark_api_helpers { |
22 | 26 |
23 class ExtensionBookmarksTest : public testing::Test { | 27 class ExtensionBookmarksTest : public testing::Test { |
24 public: | 28 public: |
| 29 ExtensionBookmarksTest() : client_(NULL), model_(NULL), folder_(NULL) {} |
| 30 |
25 virtual void SetUp() OVERRIDE { | 31 virtual void SetUp() OVERRIDE { |
26 model_ = client_.CreateModel(false); | 32 profile_.CreateBookmarkModel(false); |
| 33 client_ = |
| 34 BookmarkModelFactory::GetChromeBookmarkClientForProfile(&profile_); |
| 35 model_ = client_->model(); |
| 36 test::WaitForBookmarkModelToLoad(model_); |
| 37 |
27 model_->AddURL(model_->other_node(), 0, base::ASCIIToUTF16("Digg"), | 38 model_->AddURL(model_->other_node(), 0, base::ASCIIToUTF16("Digg"), |
28 GURL("http://www.reddit.com")); | 39 GURL("http://www.reddit.com")); |
29 model_->AddURL(model_->other_node(), 0, base::ASCIIToUTF16("News"), | 40 model_->AddURL(model_->other_node(), 0, base::ASCIIToUTF16("News"), |
30 GURL("http://www.foxnews.com")); | 41 GURL("http://www.foxnews.com")); |
31 folder_ = model_->AddFolder( | 42 folder_ = model_->AddFolder( |
32 model_->other_node(), 0, base::ASCIIToUTF16("outer folder")); | 43 model_->other_node(), 0, base::ASCIIToUTF16("outer folder")); |
33 model_->AddFolder(folder_, 0, base::ASCIIToUTF16("inner folder 1")); | 44 model_->AddFolder(folder_, 0, base::ASCIIToUTF16("inner folder 1")); |
34 model_->AddFolder(folder_, 0, base::ASCIIToUTF16("inner folder 2")); | 45 model_->AddFolder(folder_, 0, base::ASCIIToUTF16("inner folder 2")); |
35 model_->AddURL( | 46 model_->AddURL( |
36 folder_, 0, base::ASCIIToUTF16("Digg"), GURL("http://reddit.com")); | 47 folder_, 0, base::ASCIIToUTF16("Digg"), GURL("http://reddit.com")); |
37 model_->AddURL( | 48 model_->AddURL( |
38 folder_, 0, base::ASCIIToUTF16("CNet"), GURL("http://cnet.com")); | 49 folder_, 0, base::ASCIIToUTF16("CNet"), GURL("http://cnet.com")); |
39 } | 50 } |
40 | 51 |
41 test::TestBookmarkClient client_; | 52 content::TestBrowserThreadBundle thread_bundle_; |
42 scoped_ptr<BookmarkModel> model_; | 53 TestingProfile profile_; |
| 54 ChromeBookmarkClient* client_; |
| 55 BookmarkModel* model_; |
43 const BookmarkNode* folder_; | 56 const BookmarkNode* folder_; |
44 }; | 57 }; |
| 58 |
45 TEST_F(ExtensionBookmarksTest, GetFullTreeFromRoot) { | 59 TEST_F(ExtensionBookmarksTest, GetFullTreeFromRoot) { |
46 scoped_ptr<BookmarkTreeNode> tree( | 60 scoped_ptr<BookmarkTreeNode> tree( |
47 GetBookmarkTreeNode(model_->other_node(), | 61 GetBookmarkTreeNode(model_->other_node(), |
48 true, // Recurse. | 62 true, // Recurse. |
49 false)); // Not only folders. | 63 false)); // Not only folders. |
50 ASSERT_EQ(3U, tree->children->size()); | 64 ASSERT_EQ(3U, tree->children->size()); |
51 } | 65 } |
52 | 66 |
53 TEST_F(ExtensionBookmarksTest, GetFoldersOnlyFromRoot) { | 67 TEST_F(ExtensionBookmarksTest, GetFoldersOnlyFromRoot) { |
54 scoped_ptr<BookmarkTreeNode> tree( | 68 scoped_ptr<BookmarkTreeNode> tree( |
(...skipping 18 matching lines...) Expand all Loading... |
73 scoped_ptr<BookmarkTreeNode> tree( | 87 scoped_ptr<BookmarkTreeNode> tree( |
74 GetBookmarkTreeNode(folder_, | 88 GetBookmarkTreeNode(folder_, |
75 true, // Recurse. | 89 true, // Recurse. |
76 true)); // Only folders. | 90 true)); // Only folders. |
77 ASSERT_EQ(2U, tree->children->size()); | 91 ASSERT_EQ(2U, tree->children->size()); |
78 linked_ptr<BookmarkTreeNode> inner_folder = tree->children->at(1); | 92 linked_ptr<BookmarkTreeNode> inner_folder = tree->children->at(1); |
79 ASSERT_TRUE(inner_folder.get()); | 93 ASSERT_TRUE(inner_folder.get()); |
80 ASSERT_EQ("inner folder 1", inner_folder->title); | 94 ASSERT_EQ("inner folder 1", inner_folder->title); |
81 } | 95 } |
82 | 96 |
| 97 TEST_F(ExtensionBookmarksTest, RemoveNodeInvalidId) { |
| 98 int64 invalid_id = model_->next_node_id(); |
| 99 std::string error; |
| 100 EXPECT_FALSE(RemoveNode(client_, invalid_id, true, &error)); |
| 101 EXPECT_EQ(keys::kNoNodeError, error); |
| 102 } |
| 103 |
| 104 TEST_F(ExtensionBookmarksTest, RemoveNodePermanent) { |
| 105 std::string error; |
| 106 EXPECT_FALSE(RemoveNode(client_, model_->other_node()->id(), true, &error)); |
| 107 EXPECT_EQ(keys::kModifySpecialError, error); |
| 108 } |
| 109 |
| 110 TEST_F(ExtensionBookmarksTest, RemoveNodeManaged) { |
| 111 const BookmarkNode* managed_bookmark = |
| 112 model_->AddURL(client_->managed_node(), |
| 113 0, |
| 114 base::ASCIIToUTF16("Chromium"), |
| 115 GURL("http://www.chromium.org")); |
| 116 std::string error; |
| 117 EXPECT_FALSE(RemoveNode(client_, managed_bookmark->id(), true, &error)); |
| 118 EXPECT_EQ(keys::kModifyManagedError, error); |
| 119 } |
| 120 |
| 121 TEST_F(ExtensionBookmarksTest, RemoveNodeNotRecursive) { |
| 122 std::string error; |
| 123 EXPECT_FALSE(RemoveNode(client_, folder_->id(), false, &error)); |
| 124 EXPECT_EQ(keys::kFolderNotEmptyError, error); |
| 125 } |
| 126 |
| 127 TEST_F(ExtensionBookmarksTest, RemoveNodeRecursive) { |
| 128 EXPECT_EQ(3, model_->other_node()->child_count()); |
| 129 std::string error; |
| 130 EXPECT_TRUE(RemoveNode(client_, folder_->id(), true, &error)); |
| 131 EXPECT_EQ(2, model_->other_node()->child_count()); |
| 132 } |
| 133 |
83 } // namespace bookmark_api_helpers | 134 } // namespace bookmark_api_helpers |
84 } // namespace extensions | 135 } // namespace extensions |
OLD | NEW |