| Index: chrome/browser/gtk/bookmark_editor_gtk_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/gtk/bookmark_editor_gtk_unittest.cc (revision 71352)
|
| +++ chrome/browser/gtk/bookmark_editor_gtk_unittest.cc (working copy)
|
| @@ -1,328 +0,0 @@
|
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include <gtk/gtk.h>
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/string_util.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/browser/bookmarks/bookmark_model.h"
|
| -#include "chrome/browser/browser_thread.h"
|
| -#include "chrome/browser/gtk/bookmark_editor_gtk.h"
|
| -#include "chrome/browser/gtk/bookmark_tree_model.h"
|
| -#include "chrome/browser/prefs/pref_service.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/test/testing_profile.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -using base::Time;
|
| -using base::TimeDelta;
|
| -using bookmark_utils::GetTitleFromTreeIter;
|
| -
|
| -// Base class for bookmark editor tests. This class is a copy from
|
| -// bookmark_editor_view_unittest.cc, and all the tests in this file are
|
| -// GTK-ifications of the corresponding views tests. Testing here is really
|
| -// important because on Linux, we make round trip copies from chrome's
|
| -// BookmarkModel class to GTK's native GtkTreeStore.
|
| -class BookmarkEditorGtkTest : public testing::Test {
|
| - public:
|
| - BookmarkEditorGtkTest()
|
| - : ui_thread_(BrowserThread::UI, &message_loop_),
|
| - file_thread_(BrowserThread::FILE, &message_loop_),
|
| - model_(NULL) {
|
| - }
|
| -
|
| - virtual void SetUp() {
|
| - profile_.reset(new TestingProfile());
|
| - profile_->set_has_history_service(true);
|
| - profile_->CreateBookmarkModel(true);
|
| - profile_->BlockUntilBookmarkModelLoaded();
|
| -
|
| - model_ = profile_->GetBookmarkModel();
|
| -
|
| - AddTestData();
|
| - }
|
| -
|
| - virtual void TearDown() {
|
| - }
|
| -
|
| - protected:
|
| - MessageLoopForUI message_loop_;
|
| - BrowserThread ui_thread_;
|
| - BrowserThread file_thread_;
|
| - BookmarkModel* model_;
|
| - scoped_ptr<TestingProfile> profile_;
|
| -
|
| - std::string base_path() const { return "file:///c:/tmp/"; }
|
| -
|
| - const BookmarkNode* GetNode(const std::string& name) {
|
| - return model_->GetMostRecentlyAddedNodeForURL(GURL(base_path() + name));
|
| - }
|
| -
|
| - private:
|
| - // Creates the following structure:
|
| - // bookmark bar node
|
| - // a
|
| - // F1
|
| - // f1a
|
| - // F11
|
| - // f11a
|
| - // F2
|
| - // other node
|
| - // oa
|
| - // OF1
|
| - // of1a
|
| - void AddTestData() {
|
| - std::string test_base = base_path();
|
| -
|
| - model_->AddURL(model_->GetBookmarkBarNode(), 0, ASCIIToUTF16("a"),
|
| - GURL(test_base + "a"));
|
| - const BookmarkNode* f1 =
|
| - model_->AddGroup(model_->GetBookmarkBarNode(), 1, ASCIIToUTF16("F1"));
|
| - model_->AddURL(f1, 0, ASCIIToUTF16("f1a"), GURL(test_base + "f1a"));
|
| - const BookmarkNode* f11 = model_->AddGroup(f1, 1, ASCIIToUTF16("F11"));
|
| - model_->AddURL(f11, 0, ASCIIToUTF16("f11a"), GURL(test_base + "f11a"));
|
| - model_->AddGroup(model_->GetBookmarkBarNode(), 2, ASCIIToUTF16("F2"));
|
| -
|
| - // Children of the other node.
|
| - model_->AddURL(model_->other_node(), 0, ASCIIToUTF16("oa"),
|
| - GURL(test_base + "oa"));
|
| - const BookmarkNode* of1 =
|
| - model_->AddGroup(model_->other_node(), 1, ASCIIToUTF16("OF1"));
|
| - model_->AddURL(of1, 0, ASCIIToUTF16("of1a"), GURL(test_base + "of1a"));
|
| - }
|
| -};
|
| -
|
| -// Makes sure the tree model matches that of the bookmark bar model.
|
| -TEST_F(BookmarkEditorGtkTest, ModelsMatch) {
|
| - BookmarkEditorGtk editor(NULL, profile_.get(), NULL,
|
| - BookmarkEditor::EditDetails(),
|
| - BookmarkEditor::SHOW_TREE);
|
| -
|
| - // The root should have two children, one for the bookmark bar node,
|
| - // the other for the 'other bookmarks' folder.
|
| - GtkTreeModel* store = GTK_TREE_MODEL(editor.tree_store_);
|
| - GtkTreeIter toplevel;
|
| - ASSERT_TRUE(gtk_tree_model_get_iter_first(store, &toplevel));
|
| - GtkTreeIter bookmark_bar_node = toplevel;
|
| - ASSERT_TRUE(gtk_tree_model_iter_next(store, &toplevel));
|
| - GtkTreeIter other_node = toplevel;
|
| - ASSERT_FALSE(gtk_tree_model_iter_next(store, &toplevel));
|
| -
|
| - // The bookmark bar should have 2 nodes: folder F1 and F2.
|
| - GtkTreeIter f1_iter;
|
| - GtkTreeIter child;
|
| - ASSERT_EQ(2, gtk_tree_model_iter_n_children(store, &bookmark_bar_node));
|
| - ASSERT_TRUE(gtk_tree_model_iter_children(store, &child, &bookmark_bar_node));
|
| - f1_iter = child;
|
| - ASSERT_EQ("F1", UTF16ToUTF8(GetTitleFromTreeIter(store, &child)));
|
| - ASSERT_TRUE(gtk_tree_model_iter_next(store, &child));
|
| - ASSERT_EQ("F2", UTF16ToUTF8(GetTitleFromTreeIter(store, &child)));
|
| - ASSERT_FALSE(gtk_tree_model_iter_next(store, &child));
|
| -
|
| - // F1 should have one child, F11
|
| - ASSERT_EQ(1, gtk_tree_model_iter_n_children(store, &f1_iter));
|
| - ASSERT_TRUE(gtk_tree_model_iter_children(store, &child, &f1_iter));
|
| - ASSERT_EQ("F11", UTF16ToUTF8(GetTitleFromTreeIter(store, &child)));
|
| - ASSERT_FALSE(gtk_tree_model_iter_next(store, &child));
|
| -
|
| - // Other node should have one child (OF1).
|
| - ASSERT_EQ(1, gtk_tree_model_iter_n_children(store, &other_node));
|
| - ASSERT_TRUE(gtk_tree_model_iter_children(store, &child, &other_node));
|
| - ASSERT_EQ("OF1", UTF16ToUTF8(GetTitleFromTreeIter(store, &child)));
|
| - ASSERT_FALSE(gtk_tree_model_iter_next(store, &child));
|
| -}
|
| -
|
| -// Changes the title and makes sure parent/visual order doesn't change.
|
| -TEST_F(BookmarkEditorGtkTest, EditTitleKeepsPosition) {
|
| - BookmarkEditorGtk editor(NULL, profile_.get(), NULL,
|
| - BookmarkEditor::EditDetails(GetNode("a")),
|
| - BookmarkEditor::SHOW_TREE);
|
| - gtk_entry_set_text(GTK_ENTRY(editor.name_entry_), "new_a");
|
| -
|
| - GtkTreeIter bookmark_bar_node;
|
| - GtkTreeModel* store = GTK_TREE_MODEL(editor.tree_store_);
|
| - ASSERT_TRUE(gtk_tree_model_get_iter_first(store, &bookmark_bar_node));
|
| - editor.ApplyEdits(&bookmark_bar_node);
|
| -
|
| - const BookmarkNode* bb_node =
|
| - profile_->GetBookmarkModel()->GetBookmarkBarNode();
|
| - ASSERT_EQ(ASCIIToUTF16("new_a"), bb_node->GetChild(0)->GetTitle());
|
| - // The URL shouldn't have changed.
|
| - ASSERT_TRUE(GURL(base_path() + "a") == bb_node->GetChild(0)->GetURL());
|
| -}
|
| -
|
| -// Changes the url and makes sure parent/visual order doesn't change.
|
| -TEST_F(BookmarkEditorGtkTest, EditURLKeepsPosition) {
|
| - Time node_time = GetNode("a")->date_added();
|
| - BookmarkEditorGtk editor(NULL, profile_.get(), NULL,
|
| - BookmarkEditor::EditDetails(GetNode("a")),
|
| - BookmarkEditor::SHOW_TREE);
|
| - gtk_entry_set_text(GTK_ENTRY(editor.url_entry_),
|
| - GURL(base_path() + "new_a").spec().c_str());
|
| -
|
| - GtkTreeIter bookmark_bar_node;
|
| - GtkTreeModel* store = GTK_TREE_MODEL(editor.tree_store_);
|
| - ASSERT_TRUE(gtk_tree_model_get_iter_first(store, &bookmark_bar_node));
|
| - editor.ApplyEdits(&bookmark_bar_node);
|
| -
|
| - const BookmarkNode* bb_node =
|
| - profile_->GetBookmarkModel()->GetBookmarkBarNode();
|
| - ASSERT_EQ(ASCIIToUTF16("a"), bb_node->GetChild(0)->GetTitle());
|
| - // The URL should have changed.
|
| - ASSERT_TRUE(GURL(base_path() + "new_a") == bb_node->GetChild(0)->GetURL());
|
| - ASSERT_TRUE(node_time == bb_node->GetChild(0)->date_added());
|
| -}
|
| -
|
| -// Moves 'a' to be a child of the other node.
|
| -TEST_F(BookmarkEditorGtkTest, ChangeParent) {
|
| - BookmarkEditorGtk editor(NULL, profile_.get(), NULL,
|
| - BookmarkEditor::EditDetails(GetNode("a")),
|
| - BookmarkEditor::SHOW_TREE);
|
| -
|
| - GtkTreeModel* store = GTK_TREE_MODEL(editor.tree_store_);
|
| - GtkTreeIter gtk_other_node;
|
| - ASSERT_TRUE(gtk_tree_model_get_iter_first(store, >k_other_node));
|
| - ASSERT_TRUE(gtk_tree_model_iter_next(store, >k_other_node));
|
| - editor.ApplyEdits(>k_other_node);
|
| -
|
| - const BookmarkNode* other_node = profile_->GetBookmarkModel()->other_node();
|
| - ASSERT_EQ(ASCIIToUTF16("a"), other_node->GetChild(2)->GetTitle());
|
| - ASSERT_TRUE(GURL(base_path() + "a") == other_node->GetChild(2)->GetURL());
|
| -}
|
| -
|
| -// Moves 'a' to be a child of the other node.
|
| -// Moves 'a' to be a child of the other node and changes its url to new_a.
|
| -TEST_F(BookmarkEditorGtkTest, ChangeParentAndURL) {
|
| - Time node_time = GetNode("a")->date_added();
|
| - BookmarkEditorGtk editor(NULL, profile_.get(), NULL,
|
| - BookmarkEditor::EditDetails(GetNode("a")),
|
| - BookmarkEditor::SHOW_TREE);
|
| -
|
| - gtk_entry_set_text(GTK_ENTRY(editor.url_entry_),
|
| - GURL(base_path() + "new_a").spec().c_str());
|
| -
|
| - GtkTreeModel* store = GTK_TREE_MODEL(editor.tree_store_);
|
| - GtkTreeIter gtk_other_node;
|
| - ASSERT_TRUE(gtk_tree_model_get_iter_first(store, >k_other_node));
|
| - ASSERT_TRUE(gtk_tree_model_iter_next(store, >k_other_node));
|
| - editor.ApplyEdits(>k_other_node);
|
| -
|
| - const BookmarkNode* other_node = profile_->GetBookmarkModel()->other_node();
|
| - ASSERT_EQ(ASCIIToUTF16("a"), other_node->GetChild(2)->GetTitle());
|
| - ASSERT_TRUE(GURL(base_path() + "new_a") == other_node->GetChild(2)->GetURL());
|
| - ASSERT_TRUE(node_time == other_node->GetChild(2)->date_added());
|
| -}
|
| -
|
| -// Creates a new folder and moves a node to it.
|
| -TEST_F(BookmarkEditorGtkTest, MoveToNewParent) {
|
| - BookmarkEditorGtk editor(NULL, profile_.get(), NULL,
|
| - BookmarkEditor::EditDetails(GetNode("a")),
|
| - BookmarkEditor::SHOW_TREE);
|
| -
|
| - GtkTreeIter bookmark_bar_node;
|
| - GtkTreeModel* store = GTK_TREE_MODEL(editor.tree_store_);
|
| - ASSERT_TRUE(gtk_tree_model_get_iter_first(store, &bookmark_bar_node));
|
| -
|
| - // The bookmark bar should have 2 nodes: folder F1 and F2.
|
| - GtkTreeIter f2_iter;
|
| - ASSERT_EQ(2, gtk_tree_model_iter_n_children(store, &bookmark_bar_node));
|
| - ASSERT_TRUE(gtk_tree_model_iter_children(store, &f2_iter,
|
| - &bookmark_bar_node));
|
| - ASSERT_TRUE(gtk_tree_model_iter_next(store, &f2_iter));
|
| -
|
| - // Create two nodes: "F21" as a child of "F2" and "F211" as a child of "F21".
|
| - GtkTreeIter f21_iter;
|
| - editor.AddNewGroup(&f2_iter, &f21_iter);
|
| - gtk_tree_store_set(editor.tree_store_, &f21_iter,
|
| - bookmark_utils::FOLDER_NAME, "F21", -1);
|
| - GtkTreeIter f211_iter;
|
| - editor.AddNewGroup(&f21_iter, &f211_iter);
|
| - gtk_tree_store_set(editor.tree_store_, &f211_iter,
|
| - bookmark_utils::FOLDER_NAME, "F211", -1);
|
| -
|
| - ASSERT_EQ(1, gtk_tree_model_iter_n_children(store, &f2_iter));
|
| -
|
| - editor.ApplyEdits(&f2_iter);
|
| -
|
| - const BookmarkNode* bb_node =
|
| - profile_->GetBookmarkModel()->GetBookmarkBarNode();
|
| - const BookmarkNode* mf2 = bb_node->GetChild(1);
|
| -
|
| - // F2 in the model should have two children now: F21 and the node edited.
|
| - ASSERT_EQ(2, mf2->GetChildCount());
|
| - // F21 should be first.
|
| - ASSERT_EQ(ASCIIToUTF16("F21"), mf2->GetChild(0)->GetTitle());
|
| - // Then a.
|
| - ASSERT_EQ(ASCIIToUTF16("a"), mf2->GetChild(1)->GetTitle());
|
| -
|
| - // F21 should have one child, F211.
|
| - const BookmarkNode* mf21 = mf2->GetChild(0);
|
| - ASSERT_EQ(1, mf21->GetChildCount());
|
| - ASSERT_EQ(ASCIIToUTF16("F211"), mf21->GetChild(0)->GetTitle());
|
| -}
|
| -
|
| -// Brings up the editor, creating a new URL on the bookmark bar.
|
| -TEST_F(BookmarkEditorGtkTest, NewURL) {
|
| - BookmarkEditorGtk editor(NULL, profile_.get(), NULL,
|
| - BookmarkEditor::EditDetails(),
|
| - BookmarkEditor::SHOW_TREE);
|
| -
|
| - gtk_entry_set_text(GTK_ENTRY(editor.url_entry_),
|
| - GURL(base_path() + "a").spec().c_str());
|
| - gtk_entry_set_text(GTK_ENTRY(editor.name_entry_), "new_a");
|
| -
|
| - GtkTreeIter bookmark_bar_node;
|
| - GtkTreeModel* store = GTK_TREE_MODEL(editor.tree_store_);
|
| - ASSERT_TRUE(gtk_tree_model_get_iter_first(store, &bookmark_bar_node));
|
| - editor.ApplyEdits(&bookmark_bar_node);
|
| -
|
| - const BookmarkNode* bb_node =
|
| - profile_->GetBookmarkModel()->GetBookmarkBarNode();
|
| - ASSERT_EQ(4, bb_node->GetChildCount());
|
| -
|
| - const BookmarkNode* new_node = bb_node->GetChild(3);
|
| - EXPECT_EQ(ASCIIToUTF16("new_a"), new_node->GetTitle());
|
| - EXPECT_TRUE(GURL(base_path() + "a") == new_node->GetURL());
|
| -}
|
| -
|
| -// Brings up the editor with no tree and modifies the url.
|
| -TEST_F(BookmarkEditorGtkTest, ChangeURLNoTree) {
|
| - BookmarkEditorGtk editor(NULL, profile_.get(), NULL,
|
| - BookmarkEditor::EditDetails(
|
| - model_->other_node()->GetChild(0)),
|
| - BookmarkEditor::NO_TREE);
|
| -
|
| - gtk_entry_set_text(GTK_ENTRY(editor.url_entry_),
|
| - GURL(base_path() + "a").spec().c_str());
|
| - gtk_entry_set_text(GTK_ENTRY(editor.name_entry_), "new_a");
|
| -
|
| - editor.ApplyEdits(NULL);
|
| -
|
| - const BookmarkNode* other_node = profile_->GetBookmarkModel()->other_node();
|
| - ASSERT_EQ(2, other_node->GetChildCount());
|
| -
|
| - const BookmarkNode* new_node = other_node->GetChild(0);
|
| -
|
| - EXPECT_EQ(ASCIIToUTF16("new_a"), new_node->GetTitle());
|
| - EXPECT_TRUE(GURL(base_path() + "a") == new_node->GetURL());
|
| -}
|
| -
|
| -// Brings up the editor with no tree and modifies only the title.
|
| -TEST_F(BookmarkEditorGtkTest, ChangeTitleNoTree) {
|
| - BookmarkEditorGtk editor(NULL, profile_.get(), NULL,
|
| - BookmarkEditor::EditDetails(
|
| - model_->other_node()->GetChild(0)),
|
| - BookmarkEditor::NO_TREE);
|
| - gtk_entry_set_text(GTK_ENTRY(editor.name_entry_), "new_a");
|
| -
|
| - editor.ApplyEdits();
|
| -
|
| - const BookmarkNode* other_node = profile_->GetBookmarkModel()->other_node();
|
| - ASSERT_EQ(2, other_node->GetChildCount());
|
| -
|
| - const BookmarkNode* new_node = other_node->GetChild(0);
|
| - EXPECT_EQ(ASCIIToUTF16("new_a"), new_node->GetTitle());
|
| -}
|
|
|