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_factory.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/browser/bookmark_model.h" 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/bookmarks/test/bookmark_test_helpers.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, 47a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::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, 54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::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(); 73effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch PartnerBookmarksShim::EnablePartnerBookmarksEditing(); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_.reset(NULL); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestingProfile> profile_; 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) base::MessageLoopForUI message_loop_; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::TestBrowserThread ui_thread_; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::TestBrowserThread file_thread_; 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BookmarkModel* model_; 840f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) MockObserver observer_; 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PartnerBookmarksShimTest); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PartnerBookmarksShimTest, GetNodeByID) { 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* root_partner_node = new BookmarkPermanentNode(0); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* partner_folder1 = new BookmarkNode(1, GURL()); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_folder1->set_type(BookmarkNode::FOLDER); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_partner_node->Add(partner_folder1, root_partner_node->child_count()); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* partner_folder2 = new BookmarkNode(2, GURL()); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_folder2->set_type(BookmarkNode::FOLDER); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_folder1->Add(partner_folder2, partner_folder1->child_count()); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* partner_bookmark1 = new BookmarkNode(3, 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL("http://www.a.com")); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_bookmark1->set_type(BookmarkNode::URL); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_folder1->Add(partner_bookmark1, partner_folder1->child_count()); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* partner_bookmark2 = new BookmarkNode(4, 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL("http://www.b.com")); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_bookmark2->set_type(BookmarkNode::URL); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_folder2->Add(partner_bookmark2, partner_folder2->child_count()); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1090f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(shim->IsLoaded()); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shim->SetPartnerBookmarksRoot(root_partner_node); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(shim->IsLoaded()); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1140f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(shim->IsPartnerBookmark(root_partner_node)); 1150f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_EQ(shim->GetNodeByID(0), root_partner_node); 1160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_EQ(shim->GetNodeByID(1), partner_folder1); 1170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_EQ(shim->GetNodeByID(4), partner_bookmark2); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PartnerBookmarksShimTest, ObserverNotifiedOfLoadNoPartnerBookmarks) { 1210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(_)).Times(0); 1220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 1230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->AddObserver(&observer_); 1240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(1); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shim->SetPartnerBookmarksRoot(NULL); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(PartnerBookmarksShimTest, ObserverNotifiedOfLoadWithPartnerBookmarks) { 1300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(_)).Times(0); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 id = 5; 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* root_partner_node = new BookmarkPermanentNode(id++); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BookmarkNode* partner_bookmark1 = new BookmarkNode(id++, 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL("http://www.a.com")); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) partner_bookmark1->set_type(BookmarkNode::URL); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_partner_node->Add(partner_bookmark1, root_partner_node->child_count()); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 1390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->AddObserver(&observer_); 1400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(1); 1420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->SetPartnerBookmarksRoot(root_partner_node); 1430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 1440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(PartnerBookmarksShimTest, RemoveBookmarks) { 1460f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 1470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->AddObserver(&observer_); 1480f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(0); 1500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0); 1510f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1520f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* root_partner_node = new BookmarkPermanentNode(0); 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) root_partner_node->SetTitle(base::ASCIIToUTF16("Partner bookmarks")); 1540f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1550f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_folder1 = new BookmarkNode(1, GURL("http://www.a.net")); 1560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->set_type(BookmarkNode::FOLDER); 1570f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->Add(partner_folder1, root_partner_node->child_count()); 1580f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_folder2 = new BookmarkNode(2, GURL("http://www.b.net")); 1600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder2->set_type(BookmarkNode::FOLDER); 1610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->Add(partner_folder2, root_partner_node->child_count()); 1620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1630f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark1 = new BookmarkNode(3, 1640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://www.a.com")); 1650f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark1->set_type(BookmarkNode::URL); 1660f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->Add(partner_bookmark1, partner_folder1->child_count()); 1670f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1680f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark2 = new BookmarkNode(4, 1690f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://www.b.com")); 1700f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark2->set_type(BookmarkNode::URL); 1710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder2->Add(partner_bookmark2, partner_folder2->child_count()); 1720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1730f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_folder3 = new BookmarkNode(5, GURL("http://www.c.net")); 1740f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder3->set_type(BookmarkNode::FOLDER); 1750f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder2->Add(partner_folder3, partner_folder2->child_count()); 1760f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1770f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark3 = new BookmarkNode(6, 1780f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://www.c.com")); 1790f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark3->set_type(BookmarkNode::URL); 1800f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder3->Add(partner_bookmark3, partner_folder3->child_count()); 1810f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1820f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_FALSE(shim->IsLoaded()); 1830f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(1); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shim->SetPartnerBookmarksRoot(root_partner_node); 1850f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(shim->IsLoaded()); 1860f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1870f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(root_partner_node, shim->GetNodeByID(0)); 1880f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_folder1, shim->GetNodeByID(1)); 1890f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_folder2, shim->GetNodeByID(2)); 1900f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_bookmark1, shim->GetNodeByID(3)); 1910f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_bookmark2, shim->GetNodeByID(4)); 1920f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_folder3, shim->GetNodeByID(5)); 1930f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_bookmark3, shim->GetNodeByID(6)); 1940f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1950f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 1960f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder1)); 1970f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 1980f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark1)); 1990f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark2)); 2000f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder3)); 2010f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark3)); 2020f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2030f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(1); 2040f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->RemoveBookmark(partner_bookmark2); 2050f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 2060f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder1)); 2070f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 2080f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark1)); 2090f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark2)); 2100f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder3)); 2110f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark3)); 2120f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(1); 2140f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->RemoveBookmark(partner_folder1); 2150f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 2160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_folder1)); 2170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 2180f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark1)); 2190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark2)); 2200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder3)); 2210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark3)); 2220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(1); 2240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->RemoveBookmark(root_partner_node); 2250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(root_partner_node)); 2260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_folder1)); 2270f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_folder2)); 2280f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark1)); 2290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark2)); 2300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_folder3)); 2310f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark3)); 2320f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 2330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(PartnerBookmarksShimTest, RenameBookmarks) { 2350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 2360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->AddObserver(&observer_); 2370f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(0); 2390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0); 2400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* root_partner_node = new BookmarkPermanentNode(0); 2425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) root_partner_node->SetTitle(base::ASCIIToUTF16("Partner bookmarks")); 2430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_folder1 = new BookmarkNode(1, GURL("http://www.a.net")); 2450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->set_type(BookmarkNode::FOLDER); 2465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) partner_folder1->SetTitle(base::ASCIIToUTF16("a.net")); 2470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->Add(partner_folder1, root_partner_node->child_count()); 2480f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_folder2 = new BookmarkNode(2, GURL("http://www.b.net")); 2500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder2->set_type(BookmarkNode::FOLDER); 2515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) partner_folder2->SetTitle(base::ASCIIToUTF16("b.net")); 2520f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->Add(partner_folder2, root_partner_node->child_count()); 2530f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2540f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark1 = new BookmarkNode(3, 2550f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://www.a.com")); 2560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark1->set_type(BookmarkNode::URL); 2575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) partner_bookmark1->SetTitle(base::ASCIIToUTF16("a.com")); 2580f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->Add(partner_bookmark1, partner_folder1->child_count()); 2590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark2 = new BookmarkNode(4, 2610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://www.b.com")); 2620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark2->set_type(BookmarkNode::URL); 2635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) partner_bookmark2->SetTitle(base::ASCIIToUTF16("b.com")); 2640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder2->Add(partner_bookmark2, partner_folder2->child_count()); 2650f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2660f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_FALSE(shim->IsLoaded()); 2670f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(1); 2680f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->SetPartnerBookmarksRoot(root_partner_node); 2690f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(shim->IsLoaded()); 2700f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2710f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(root_partner_node, shim->GetNodeByID(0)); 2720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_folder1, shim->GetNodeByID(1)); 2730f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_folder2, shim->GetNodeByID(2)); 2740f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_bookmark1, shim->GetNodeByID(3)); 2750f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_EQ(partner_bookmark2, shim->GetNodeByID(4)); 2760f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2770f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 2780f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder1)); 2790f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 2800f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark1)); 2810f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark2)); 2820f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2830f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(1); 2845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::ASCIIToUTF16("b.com"), shim->GetTitle(partner_bookmark2)); 2855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) shim->RenameBookmark(partner_bookmark2, base::ASCIIToUTF16("b2.com")); 2865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::ASCIIToUTF16("b2.com"), shim->GetTitle(partner_bookmark2)); 2870f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2880f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 2890f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder1)); 2900f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 2910f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark1)); 2920f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark2)); 2930f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2940f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(1); 2955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::ASCIIToUTF16("a.net"), shim->GetTitle(partner_folder1)); 2965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) shim->RenameBookmark(partner_folder1, base::ASCIIToUTF16("a2.net")); 2975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::ASCIIToUTF16("a2.net"), shim->GetTitle(partner_folder1)); 2980f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 2990f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 3000f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder1)); 3010f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 3020f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark1)); 3030f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark2)); 3040f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3050f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(1); 3065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::ASCIIToUTF16("Partner bookmarks"), 3070f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->GetTitle(root_partner_node)); 3085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) shim->RenameBookmark(root_partner_node, base::ASCIIToUTF16("Partner")); 3095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::ASCIIToUTF16("Partner"), shim->GetTitle(root_partner_node)); 3100f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3110f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(root_partner_node)); 3120f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder1)); 3130f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_folder2)); 3140f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark1)); 3150f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_TRUE(shim->IsReachable(partner_bookmark2)); 3160f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)} 3170f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3180f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles)TEST_F(PartnerBookmarksShimTest, SaveLoadProfile) { 3190f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) { 3200f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 3210f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->AddObserver(&observer_); 3220f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3230f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(0); 3240f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0); 3250f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3260f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* root_partner_node = new BookmarkPermanentNode(0); 3275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) root_partner_node->SetTitle(base::ASCIIToUTF16("Partner bookmarks")); 3280f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3290f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_folder1 = new BookmarkNode(1, GURL("http://a.net")); 3300f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->set_type(BookmarkNode::FOLDER); 3315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) partner_folder1->SetTitle(base::ASCIIToUTF16("a.net")); 3320f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) root_partner_node->Add(partner_folder1, root_partner_node->child_count()); 3330f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3340f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark1 = new BookmarkNode(3, 3350f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://a.com")); 3360f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark1->set_type(BookmarkNode::URL); 3375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) partner_bookmark1->SetTitle(base::ASCIIToUTF16("a.com")); 3380f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->Add(partner_bookmark1, partner_folder1->child_count()); 3390f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3400f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) BookmarkNode* partner_bookmark2 = new BookmarkNode(5, 3410f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) GURL("http://b.com")); 3420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_bookmark2->set_type(BookmarkNode::URL); 3435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) partner_bookmark2->SetTitle(base::ASCIIToUTF16("b.com")); 3440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) partner_folder1->Add(partner_bookmark2, partner_folder1->child_count()); 3450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3460f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_FALSE(shim->IsLoaded()); 3470f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(1); 3480f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->SetPartnerBookmarksRoot(root_partner_node); 3490f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(shim->IsLoaded()); 3500f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3510f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(2); 3525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) shim->RenameBookmark(partner_bookmark1, base::ASCIIToUTF16("a2.com")); 3530f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->RemoveBookmark(partner_bookmark2); 3545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::ASCIIToUTF16("a2.com"), shim->GetTitle(partner_bookmark1)); 3550f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark2)); 3560f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) } 3570f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3580f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim::ClearInBrowserContextForTesting(profile_.get()); 3590f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3600f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) { 3610f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) PartnerBookmarksShim* shim = partner_bookmarks_shim(); 3620f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) shim->AddObserver(&observer_); 3630f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3640f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(0); 3650f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0); 3660f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) ASSERT_TRUE(shim->IsLoaded()); 3670f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3680f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const BookmarkNode* partner_bookmark1 = shim->GetNodeByID(3); 3690f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) const BookmarkNode* partner_bookmark2 = shim->GetNodeByID(5); 3700f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 3715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(base::ASCIIToUTF16("a2.com"), shim->GetTitle(partner_bookmark1)); 3720f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) EXPECT_FALSE(shim->IsReachable(partner_bookmark2)); 3730f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) } 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 376effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochTEST_F(PartnerBookmarksShimTest, DisableEditing) { 377effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch PartnerBookmarksShim* shim = partner_bookmarks_shim(); 378effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch shim->AddObserver(&observer_); 379effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 380effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(0); 381effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(0); 382effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 383effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch BookmarkNode* root_partner_node = new BookmarkPermanentNode(0); 384effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch root_partner_node->SetTitle(base::ASCIIToUTF16("Partner bookmarks")); 385effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 386effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch BookmarkNode* partner_bookmark1 = new BookmarkNode(3, GURL("http://a")); 387effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch partner_bookmark1->set_type(BookmarkNode::URL); 388effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch partner_bookmark1->SetTitle(base::ASCIIToUTF16("a")); 389effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch root_partner_node->Add(partner_bookmark1, root_partner_node->child_count()); 390effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 391effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch BookmarkNode* partner_bookmark2 = new BookmarkNode(3, GURL("http://b")); 392effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch partner_bookmark2->set_type(BookmarkNode::URL); 393effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch partner_bookmark2->SetTitle(base::ASCIIToUTF16("b")); 394effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch root_partner_node->Add(partner_bookmark2, root_partner_node->child_count()); 395effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 396effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ASSERT_FALSE(shim->IsLoaded()); 397effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_CALL(observer_, PartnerShimLoaded(shim)).Times(1); 398effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch shim->SetPartnerBookmarksRoot(root_partner_node); 399effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch ASSERT_TRUE(shim->IsLoaded()); 400effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 401effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Check that edits work by default. 402effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_CALL(observer_, PartnerShimChanged(shim)).Times(2); 403effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch shim->RenameBookmark(partner_bookmark1, base::ASCIIToUTF16("a2.com")); 404effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch shim->RemoveBookmark(partner_bookmark2); 405effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(base::ASCIIToUTF16("a2.com"), shim->GetTitle(partner_bookmark1)); 406effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_FALSE(shim->IsReachable(partner_bookmark2)); 407effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 408effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch // Disable edits and check that edits are not applied anymore. 409effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch PartnerBookmarksShim::DisablePartnerBookmarksEditing(); 410effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_EQ(base::ASCIIToUTF16("a"), shim->GetTitle(partner_bookmark1)); 411effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch EXPECT_TRUE(shim->IsReachable(partner_bookmark2)); 412effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch} 413