partner_bookmarks_shim_unittest.cc revision f2477e01787aa58f445919b809d89e252beef54f
1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string16.h" 9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/bookmarks/bookmark_model.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/bookmarks/bookmark_model_factory.h" 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/bookmarks/bookmark_test_helpers.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/browser_thread.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_browser_thread.h" 160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)using testing::_; 210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)class MockObserver : public PartnerBookmarksShim::Observer { 230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) public: 240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) MockObserver() {} 250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) MOCK_METHOD1(PartnerShimChanged, void(PartnerBookmarksShim*)); 260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) MOCK_METHOD1(PartnerShimLoaded, void(PartnerBookmarksShim*)); 270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 280f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) private: 290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MockObserver); 300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)}; 310f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PartnerBookmarksShimTest : public testing::Test { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PartnerBookmarksShimTest() 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : ui_thread_(content::BrowserThread::UI, &message_loop_), 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) file_thread_(content::BrowserThread::FILE, &message_loop_), 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) model_(NULL) { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile* profile() const { return profile_.get(); } 410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* partner_bookmarks_shim() const { 420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) return PartnerBookmarksShim::BuildForBrowserContext(profile_.get()); 430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) } 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const BookmarkNode* AddBookmark(const BookmarkNode* parent, 460f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const GURL& url, 470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const string16& title) { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!parent) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parent = model_->bookmark_bar_node(); 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return model_->AddURL(parent, parent->child_count(), title, url); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 530f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const BookmarkNode* AddFolder(const BookmarkNode* parent, 540f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const string16& title) { 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!parent) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parent = model_->bookmark_bar_node(); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return model_->AddFolder(parent, parent->child_count(), title); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // testing::Test 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUp() OVERRIDE { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_.reset(new TestingProfile()); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_->CreateBookmarkModel(true); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) model_ = BookmarkModelFactory::GetForProfile(profile_.get()); 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) test::WaitForBookmarkModelToLoad(model_); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void TearDown() OVERRIDE { 710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim::ClearInBrowserContextForTesting(profile_.get()); 720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim::ClearPartnerModelForTesting(); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_.reset(NULL); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestingProfile> profile_; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoopForUI message_loop_; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::TestBrowserThread ui_thread_; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::TestBrowserThread file_thread_; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BookmarkModel* model_; 830f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) MockObserver observer_; 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PartnerBookmarksShimTest); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PartnerBookmarksShimTest, GetNodeByID) { 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* root_partner_node = new BookmarkPermanentNode(0); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* partner_folder1 = new BookmarkNode(1, GURL()); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_folder1->set_type(BookmarkNode::FOLDER); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_partner_node->Add(partner_folder1, root_partner_node->child_count()); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* partner_folder2 = new BookmarkNode(2, GURL()); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_folder2->set_type(BookmarkNode::FOLDER); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_folder1->Add(partner_folder2, partner_folder1->child_count()); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* partner_bookmark1 = new BookmarkNode(3, 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL("http://www.a.com")); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_bookmark1->set_type(BookmarkNode::URL); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_folder1->Add(partner_bookmark1, partner_folder1->child_count()); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* partner_bookmark2 = new BookmarkNode(4, 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL("http://www.b.com")); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_bookmark2->set_type(BookmarkNode::URL); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_folder2->Add(partner_bookmark2, partner_folder2->child_count()); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1080f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(shim->IsLoaded()); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shim->SetPartnerBookmarksRoot(root_partner_node); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(shim->IsLoaded()); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(shim->IsPartnerBookmark(root_partner_node)); 1140f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_EQ(shim->GetNodeByID(0), root_partner_node); 1150f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_EQ(shim->GetNodeByID(1), partner_folder1); 1160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_EQ(shim->GetNodeByID(4), partner_bookmark2); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PartnerBookmarksShimTest, ObserverNotifiedOfLoadNoPartnerBookmarks) { 1200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(_)).Times(0); 1210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 1220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->AddObserver(&observer_); 1230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(1); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shim->SetPartnerBookmarksRoot(NULL); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PartnerBookmarksShimTest, ObserverNotifiedOfLoadWithPartnerBookmarks) { 1290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(_)).Times(0); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 id = 5; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* root_partner_node = new BookmarkPermanentNode(id++); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* partner_bookmark1 = new BookmarkNode(id++, 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL("http://www.a.com")); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_bookmark1->set_type(BookmarkNode::URL); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_partner_node->Add(partner_bookmark1, root_partner_node->child_count()); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1370f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 1380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->AddObserver(&observer_); 1390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(1); 1410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->SetPartnerBookmarksRoot(root_partner_node); 1420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 1430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(PartnerBookmarksShimTest, RemoveBookmarks) { 1450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 1460f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->AddObserver(&observer_); 1470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1480f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(0); 1490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0); 1500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1510f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* root_partner_node = new BookmarkPermanentNode(0); 1520f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->SetTitle(ASCIIToUTF16("Partner bookmarks")); 1530f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1540f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_folder1 = new BookmarkNode(1, GURL("http://www.a.net")); 1550f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->set_type(BookmarkNode::FOLDER); 1560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->Add(partner_folder1, root_partner_node->child_count()); 1570f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1580f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_folder2 = new BookmarkNode(2, GURL("http://www.b.net")); 1590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder2->set_type(BookmarkNode::FOLDER); 1600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->Add(partner_folder2, root_partner_node->child_count()); 1610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark1 = new BookmarkNode(3, 1630f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://www.a.com")); 1640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark1->set_type(BookmarkNode::URL); 1650f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->Add(partner_bookmark1, partner_folder1->child_count()); 1660f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1670f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark2 = new BookmarkNode(4, 1680f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://www.b.com")); 1690f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark2->set_type(BookmarkNode::URL); 1700f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder2->Add(partner_bookmark2, partner_folder2->child_count()); 1710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_folder3 = new BookmarkNode(5, GURL("http://www.c.net")); 1730f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder3->set_type(BookmarkNode::FOLDER); 1740f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder2->Add(partner_folder3, partner_folder2->child_count()); 1750f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1760f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark3 = new BookmarkNode(6, 1770f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://www.c.com")); 1780f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark3->set_type(BookmarkNode::URL); 1790f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder3->Add(partner_bookmark3, partner_folder3->child_count()); 1800f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1810f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_FALSE(shim->IsLoaded()); 1820f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(1); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shim->SetPartnerBookmarksRoot(root_partner_node); 1840f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(shim->IsLoaded()); 1850f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1860f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(root_partner_node, shim->GetNodeByID(0)); 1870f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_folder1, shim->GetNodeByID(1)); 1880f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_folder2, shim->GetNodeByID(2)); 1890f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_bookmark1, shim->GetNodeByID(3)); 1900f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_bookmark2, shim->GetNodeByID(4)); 1910f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_folder3, shim->GetNodeByID(5)); 1920f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_bookmark3, shim->GetNodeByID(6)); 1930f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1940f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 1950f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder1)); 1960f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 1970f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark1)); 1980f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark2)); 1990f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder3)); 2000f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark3)); 2010f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2020f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(1); 2030f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->RemoveBookmark(partner_bookmark2); 2040f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 2050f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder1)); 2060f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 2070f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark1)); 2080f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark2)); 2090f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder3)); 2100f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark3)); 2110f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2120f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(1); 2130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->RemoveBookmark(partner_folder1); 2140f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 2150f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_folder1)); 2160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 2170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark1)); 2180f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark2)); 2190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder3)); 2200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark3)); 2210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(1); 2230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->RemoveBookmark(root_partner_node); 2240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(root_partner_node)); 2250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_folder1)); 2260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_folder2)); 2270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark1)); 2280f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark2)); 2290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_folder3)); 2300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark3)); 2310f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 2320f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(PartnerBookmarksShimTest, RenameBookmarks) { 2340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 2350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->AddObserver(&observer_); 2360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2370f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(0); 2380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0); 2390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* root_partner_node = new BookmarkPermanentNode(0); 2410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->SetTitle(ASCIIToUTF16("Partner bookmarks")); 2420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_folder1 = new BookmarkNode(1, GURL("http://www.a.net")); 2440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->set_type(BookmarkNode::FOLDER); 2450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->SetTitle(ASCIIToUTF16("a.net")); 2460f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->Add(partner_folder1, root_partner_node->child_count()); 2470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2480f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_folder2 = new BookmarkNode(2, GURL("http://www.b.net")); 2490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder2->set_type(BookmarkNode::FOLDER); 2500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder2->SetTitle(ASCIIToUTF16("b.net")); 2510f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->Add(partner_folder2, root_partner_node->child_count()); 2520f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2530f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark1 = new BookmarkNode(3, 2540f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://www.a.com")); 2550f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark1->set_type(BookmarkNode::URL); 2560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark1->SetTitle(ASCIIToUTF16("a.com")); 2570f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->Add(partner_bookmark1, partner_folder1->child_count()); 2580f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark2 = new BookmarkNode(4, 2600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://www.b.com")); 2610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark2->set_type(BookmarkNode::URL); 2620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark2->SetTitle(ASCIIToUTF16("b.com")); 2630f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder2->Add(partner_bookmark2, partner_folder2->child_count()); 2640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2650f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_FALSE(shim->IsLoaded()); 2660f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(1); 2670f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->SetPartnerBookmarksRoot(root_partner_node); 2680f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(shim->IsLoaded()); 2690f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2700f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(root_partner_node, shim->GetNodeByID(0)); 2710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_folder1, shim->GetNodeByID(1)); 2720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_folder2, shim->GetNodeByID(2)); 2730f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_bookmark1, shim->GetNodeByID(3)); 2740f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_bookmark2, shim->GetNodeByID(4)); 2750f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2760f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 2770f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder1)); 2780f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 2790f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark1)); 2800f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark2)); 2810f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2820f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(1); 2830f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("b.com"), shim->GetTitle(partner_bookmark2)); 2840f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->RenameBookmark(partner_bookmark2, ASCIIToUTF16("b2.com")); 2850f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("b2.com"), shim->GetTitle(partner_bookmark2)); 2860f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2870f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 2880f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder1)); 2890f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 2900f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark1)); 2910f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark2)); 2920f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2930f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(1); 2940f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("a.net"), shim->GetTitle(partner_folder1)); 2950f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->RenameBookmark(partner_folder1, ASCIIToUTF16("a2.net")); 2960f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("a2.net"), shim->GetTitle(partner_folder1)); 2970f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2980f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 2990f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder1)); 3000f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 3010f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark1)); 3020f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark2)); 3030f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3040f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(1); 3050f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("Partner bookmarks"), 3060f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->GetTitle(root_partner_node)); 3070f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->RenameBookmark(root_partner_node, ASCIIToUTF16("Partner")); 3080f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("Partner"), shim->GetTitle(root_partner_node)); 3090f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3100f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 3110f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder1)); 3120f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 3130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark1)); 3140f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark2)); 3150f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 3160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(PartnerBookmarksShimTest, SaveLoadProfile) { 3180f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) { 3190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 3200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->AddObserver(&observer_); 3210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(0); 3230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0); 3240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* root_partner_node = new BookmarkPermanentNode(0); 3260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->SetTitle(ASCIIToUTF16("Partner bookmarks")); 3270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3280f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_folder1 = new BookmarkNode(1, GURL("http://a.net")); 3290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->set_type(BookmarkNode::FOLDER); 3300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->SetTitle(ASCIIToUTF16("a.net")); 3310f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->Add(partner_folder1, root_partner_node->child_count()); 3320f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark1 = new BookmarkNode(3, 3340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://a.com")); 3350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark1->set_type(BookmarkNode::URL); 3360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark1->SetTitle(ASCIIToUTF16("a.com")); 3370f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->Add(partner_bookmark1, partner_folder1->child_count()); 3380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark2 = new BookmarkNode(5, 3400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://b.com")); 3410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark2->set_type(BookmarkNode::URL); 3420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark2->SetTitle(ASCIIToUTF16("b.com")); 3430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->Add(partner_bookmark2, partner_folder1->child_count()); 3440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_FALSE(shim->IsLoaded()); 3460f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(1); 3470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->SetPartnerBookmarksRoot(root_partner_node); 3480f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(shim->IsLoaded()); 3490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(2); 3510f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->RenameBookmark(partner_bookmark1, ASCIIToUTF16("a2.com")); 3520f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->RemoveBookmark(partner_bookmark2); 3530f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("a2.com"), shim->GetTitle(partner_bookmark1)); 3540f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark2)); 3550f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) } 3560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3570f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim::ClearInBrowserContextForTesting(profile_.get()); 3580f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) { 3600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 3610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->AddObserver(&observer_); 3620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3630f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(0); 3640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0); 3650f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(shim->IsLoaded()); 3660f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3670f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const BookmarkNode* partner_bookmark1 = shim->GetNodeByID(3); 3680f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const BookmarkNode* partner_bookmark2 = shim->GetNodeByID(5); 3690f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3700f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(ASCIIToUTF16("a2.com"), shim->GetTitle(partner_bookmark1)); 3710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark2)); 3720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) } 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 374