profile_info_cache_unittest.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_info_cache_unittest.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/testing_pref_service.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/stringprintf.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/utf_string_conversions.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_process.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_info_cache.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_notification_types.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_browser_process.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_registrar.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_service.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_utils.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/skia/include/core/SkBitmap.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/resource/resource_bundle.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image_unittest_util.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserThread; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ProfileNameVerifierObserver::ProfileNameVerifierObserver( 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfileManager* testing_profile_manager) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : testing_profile_manager_(testing_profile_manager) { 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(testing_profile_manager_); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ProfileNameVerifierObserver::~ProfileNameVerifierObserver() { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileNameVerifierObserver::OnProfileAdded( 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& profile_path) { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 profile_name = GetCache()->GetNameOfProfileAtIndex( 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->GetIndexOfProfileWithPath(profile_path)); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(profile_names_.find(profile_name) == profile_names_.end()); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_names_.insert(profile_name); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileNameVerifierObserver::OnProfileWillBeRemoved( 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& profile_path) { 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 profile_name = GetCache()->GetNameOfProfileAtIndex( 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->GetIndexOfProfileWithPath(profile_path)); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(profile_names_.find(profile_name) != profile_names_.end()); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_names_.erase(profile_name); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileNameVerifierObserver::OnProfileWasRemoved( 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& profile_path, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& profile_name) { 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(profile_names_.find(profile_name) == profile_names_.end()); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileNameVerifierObserver::OnProfileNameChanged( 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& profile_path, 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string16& old_profile_name) { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 new_profile_name = GetCache()->GetNameOfProfileAtIndex( 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->GetIndexOfProfileWithPath(profile_path)); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(profile_names_.find(old_profile_name) != profile_names_.end()); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(profile_names_.find(new_profile_name) == profile_names_.end()); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_names_.erase(old_profile_name); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_names_.insert(new_profile_name); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileNameVerifierObserver::OnProfileAvatarChanged( 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& profile_path) { 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 profile_name = GetCache()->GetNameOfProfileAtIndex( 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->GetIndexOfProfileWithPath(profile_path)); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(profile_names_.find(profile_name) != profile_names_.end()); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ProfileInfoCache* ProfileNameVerifierObserver::GetCache() { 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return testing_profile_manager_->profile_info_cache(); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ProfileInfoCacheTest::ProfileInfoCacheTest() 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : testing_profile_manager_( 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingBrowserProcess::GetGlobal()), 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_thread_(BrowserThread::UI, &ui_loop_), 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) file_thread_(BrowserThread::FILE, &ui_loop_), 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name_observer_(&testing_profile_manager_) { 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ProfileInfoCacheTest::~ProfileInfoCacheTest() { 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileInfoCacheTest::SetUp() { 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(testing_profile_manager_.SetUp()); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) testing_profile_manager_.profile_info_cache()->AddObserver(&name_observer_); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileInfoCacheTest::TearDown() { 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Drain the UI thread to make sure all tasks are completed. This prevents 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // memory leaks. 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui_loop_.RunUntilIdle(); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ProfileInfoCache* ProfileInfoCacheTest::GetCache() { 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return testing_profile_manager_.profile_info_cache(); 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)base::FilePath ProfileInfoCacheTest::GetProfilePath( 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& base_name) { 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return testing_profile_manager_.profile_manager()->user_data_dir(). 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AppendASCII(base_name); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ProfileInfoCacheTest::ResetCache() { 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) testing_profile_manager_.DeleteProfileInfoCache(); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(ProfileInfoCacheTest, AddProfiles) { 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, GetCache()->GetNumberOfProfiles()); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (uint32 i = 0; i < 4; ++i) { 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath profile_path = 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath(base::StringPrintf("path_%ud", i)); 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) string16 profile_name = ASCIIToUTF16(base::StringPrintf("name_%ud", i)); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const SkBitmap* icon = rb.GetImageNamed( 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ProfileInfoCache::GetDefaultAvatarIconResourceIDAtIndex( 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) i)).ToSkBitmap(); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetCache()->AddProfileToCache(profile_path, profile_name, string16(), i, 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) false); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetBackgroundStatusOfProfileAtIndex(i, true); 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) string16 gaia_name = ASCIIToUTF16(base::StringPrintf("gaia_%ud", i)); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetGAIANameOfProfileAtIndex(i, gaia_name); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(i + 1, GetCache()->GetNumberOfProfiles()); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(profile_name, GetCache()->GetNameOfProfileAtIndex(i)); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(profile_path, GetCache()->GetPathOfProfileAtIndex(i)); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const SkBitmap* actual_icon = GetCache()->GetAvatarIconOfProfileAtIndex( 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) i).ToSkBitmap(); 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(icon->width(), actual_icon->width()); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(icon->height(), actual_icon->height()); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reset the cache and test the it reloads correctly. 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResetCache(); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(4u, GetCache()->GetNumberOfProfiles()); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (uint32 i = 0; i < 4; ++i) { 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath profile_path = 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath(base::StringPrintf("path_%ud", i)); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(i, GetCache()->GetIndexOfProfileWithPath(profile_path)); 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) string16 profile_name = ASCIIToUTF16(base::StringPrintf("name_%ud", i)); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(profile_name, GetCache()->GetNameOfProfileAtIndex(i)); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(i, GetCache()->GetAvatarIconIndexOfProfileAtIndex(i)); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(true, GetCache()->GetBackgroundStatusOfProfileAtIndex(i)); 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) string16 gaia_name = ASCIIToUTF16(base::StringPrintf("gaia_%ud", i)); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(gaia_name, GetCache()->GetGAIANameOfProfileAtIndex(i)); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(ProfileInfoCacheTest, DeleteProfile) { 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, GetCache()->GetNumberOfProfiles()); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path_1 = GetProfilePath("path_1"); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache(path_1, ASCIIToUTF16("name_1"), string16(), 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 0, false); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1u, GetCache()->GetNumberOfProfiles()); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path_2 = GetProfilePath("path_2"); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 name_2 = ASCIIToUTF16("name_2"); 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetCache()->AddProfileToCache(path_2, name_2, string16(), 0, false); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(2u, GetCache()->GetNumberOfProfiles()); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->DeleteProfileFromCache(path_1); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(1u, GetCache()->GetNumberOfProfiles()); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(name_2, GetCache()->GetNameOfProfileAtIndex(0)); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->DeleteProfileFromCache(path_2); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0u, GetCache()->GetNumberOfProfiles()); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(ProfileInfoCacheTest, MutateProfile) { 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_1"), ASCIIToUTF16("name_1"), string16(), 0, false); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_2"), ASCIIToUTF16("name_2"), string16(), 0, false); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 new_name = ASCIIToUTF16("new_name"); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetNameOfProfileAtIndex(1, new_name); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(new_name, GetCache()->GetNameOfProfileAtIndex(1)); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(new_name, GetCache()->GetNameOfProfileAtIndex(0)); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 new_user_name = ASCIIToUTF16("user_name"); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetUserNameOfProfileAtIndex(1, new_user_name); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(new_user_name, GetCache()->GetUserNameOfProfileAtIndex(1)); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(new_user_name, GetCache()->GetUserNameOfProfileAtIndex(0)); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t new_icon_index = 3; 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetAvatarIconOfProfileAtIndex(1, new_icon_index); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Not much to test. 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->GetAvatarIconOfProfileAtIndex(1); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(ProfileInfoCacheTest, Sort) { 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 name_a = ASCIIToUTF16("apple"); 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_a"), name_a, string16(), 0, false); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 name_c = ASCIIToUTF16("cat"); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_c"), name_c, string16(), 0, false); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sanity check the initial order. 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(name_a, GetCache()->GetNameOfProfileAtIndex(0)); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(name_c, GetCache()->GetNameOfProfileAtIndex(1)); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add a new profile (start with a capital to test case insensitive sorting. 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 name_b = ASCIIToUTF16("Banana"); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_b"), name_b, string16(), 0, false); 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Verify the new order. 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(name_a, GetCache()->GetNameOfProfileAtIndex(0)); 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(name_b, GetCache()->GetNameOfProfileAtIndex(1)); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(name_c, GetCache()->GetNameOfProfileAtIndex(2)); 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Change the name of an existing profile. 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) name_a = UTF8ToUTF16("dog"); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetNameOfProfileAtIndex(0, name_a); 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Verify the new order. 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(name_b, GetCache()->GetNameOfProfileAtIndex(0)); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(name_c, GetCache()->GetNameOfProfileAtIndex(1)); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(name_a, GetCache()->GetNameOfProfileAtIndex(2)); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Delete a profile. 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->DeleteProfileFromCache(GetProfilePath("path_c")); 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Verify the new order. 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(name_b, GetCache()->GetNameOfProfileAtIndex(0)); 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(name_a, GetCache()->GetNameOfProfileAtIndex(1)); 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(ProfileInfoCacheTest, BackgroundModeStatus) { 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 2462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_1"), ASCIIToUTF16("name_1"), string16(), 0, false); 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_2"), ASCIIToUTF16("name_2"), string16(), 0, false); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetCache()->GetBackgroundStatusOfProfileAtIndex(0)); 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetCache()->GetBackgroundStatusOfProfileAtIndex(1)); 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetBackgroundStatusOfProfileAtIndex(1, true); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetCache()->GetBackgroundStatusOfProfileAtIndex(0)); 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(GetCache()->GetBackgroundStatusOfProfileAtIndex(1)); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetBackgroundStatusOfProfileAtIndex(0, true); 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(GetCache()->GetBackgroundStatusOfProfileAtIndex(0)); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(GetCache()->GetBackgroundStatusOfProfileAtIndex(1)); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetBackgroundStatusOfProfileAtIndex(1, false); 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(GetCache()->GetBackgroundStatusOfProfileAtIndex(0)); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetCache()->GetBackgroundStatusOfProfileAtIndex(1)); 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(ProfileInfoCacheTest, HasMigrated) { 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 2712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_1"), ASCIIToUTF16("name_1"), string16(), 0, false); 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 2732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_2"), ASCIIToUTF16("name_2"), string16(), 0, false); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sanity check. 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetCache()->GetHasMigratedToGAIAInfoOfProfileAtIndex(0)); 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetCache()->GetHasMigratedToGAIAInfoOfProfileAtIndex(1)); 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set migrated state for 2nd profile. 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetHasMigratedToGAIAInfoOfProfileAtIndex(1, true); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetCache()->GetHasMigratedToGAIAInfoOfProfileAtIndex(0)); 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(GetCache()->GetHasMigratedToGAIAInfoOfProfileAtIndex(1)); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set migrated state for 1st profile. 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetHasMigratedToGAIAInfoOfProfileAtIndex(0, true); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(GetCache()->GetHasMigratedToGAIAInfoOfProfileAtIndex(0)); 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(GetCache()->GetHasMigratedToGAIAInfoOfProfileAtIndex(1)); 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Unset migrated state for 2nd profile. 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetHasMigratedToGAIAInfoOfProfileAtIndex(1, false); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(GetCache()->GetHasMigratedToGAIAInfoOfProfileAtIndex(0)); 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetCache()->GetHasMigratedToGAIAInfoOfProfileAtIndex(1)); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(ProfileInfoCacheTest, GAIAName) { 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 2972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_1"), ASCIIToUTF16("name_1"), string16(), 0, false); 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 profile_name(ASCIIToUTF16("profile name 2")); 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 3002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_2"), profile_name, string16(), 0, false); 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sanity check. 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(GetCache()->GetGAIANameOfProfileAtIndex(0).empty()); 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(GetCache()->GetGAIANameOfProfileAtIndex(1).empty()); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetCache()->IsUsingGAIANameOfProfileAtIndex(0)); 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetCache()->IsUsingGAIANameOfProfileAtIndex(1)); 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set GAIA name. 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 gaia_name(ASCIIToUTF16("Pat Smith")); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetGAIANameOfProfileAtIndex(1, gaia_name); 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(GetCache()->GetGAIANameOfProfileAtIndex(0).empty()); 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(gaia_name, GetCache()->GetGAIANameOfProfileAtIndex(1)); 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(profile_name, GetCache()->GetNameOfProfileAtIndex(1)); 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Use GAIA name as profile name. 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetIsUsingGAIANameOfProfileAtIndex(1, true); 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(gaia_name, GetCache()->GetNameOfProfileAtIndex(1)); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(gaia_name, GetCache()->GetGAIANameOfProfileAtIndex(1)); 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Don't use GAIA name as profile name. 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetIsUsingGAIANameOfProfileAtIndex(1, false); 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(profile_name, GetCache()->GetNameOfProfileAtIndex(1)); 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(gaia_name, GetCache()->GetGAIANameOfProfileAtIndex(1)); 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(ProfileInfoCacheTest, GAIAPicture) { 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 3292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_1"), ASCIIToUTF16("name_1"), string16(), 0, false); 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 3312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_2"), ASCIIToUTF16("name_2"), string16(), 0, false); 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sanity check. 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(NULL, GetCache()->GetGAIAPictureOfProfileAtIndex(0)); 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(NULL, GetCache()->GetGAIAPictureOfProfileAtIndex(1)); 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetCache()->IsUsingGAIAPictureOfProfileAtIndex(0)); 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetCache()->IsUsingGAIAPictureOfProfileAtIndex(1)); 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The profile icon should be the default one. 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int id = ProfileInfoCache::GetDefaultAvatarIconResourceIDAtIndex(0); 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Image& profile_image( 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResourceBundle::GetSharedInstance().GetImageNamed(id)); 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(gfx::test::IsEqual( 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_image, GetCache()->GetAvatarIconOfProfileAtIndex(1))); 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set GAIA picture. 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Image gaia_image(gfx::test::CreateImage()); 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetGAIAPictureOfProfileAtIndex(1, &gaia_image); 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(NULL, GetCache()->GetGAIAPictureOfProfileAtIndex(0)); 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(gfx::test::IsEqual( 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gaia_image, *GetCache()->GetGAIAPictureOfProfileAtIndex(1))); 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(gfx::test::IsEqual( 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_image, GetCache()->GetAvatarIconOfProfileAtIndex(1))); 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Use GAIA picture as profile picture. 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetIsUsingGAIAPictureOfProfileAtIndex(1, true); 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(gfx::test::IsEqual( 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gaia_image, *GetCache()->GetGAIAPictureOfProfileAtIndex(1))); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(gfx::test::IsEqual( 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gaia_image, GetCache()->GetAvatarIconOfProfileAtIndex(1))); 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Don't use GAIA picture as profile picture. 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetIsUsingGAIAPictureOfProfileAtIndex(1, false); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(gfx::test::IsEqual( 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gaia_image, *GetCache()->GetGAIAPictureOfProfileAtIndex(1))); 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(gfx::test::IsEqual( 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_image, GetCache()->GetAvatarIconOfProfileAtIndex(1))); 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(ProfileInfoCacheTest, PersistGAIAPicture) { 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 3722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_1"), ASCIIToUTF16("name_1"), string16(), 0, false); 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Image gaia_image(gfx::test::CreateImage()); 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WindowedNotificationObserver save_observer( 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::NOTIFICATION_PROFILE_CACHE_PICTURE_SAVED, 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationService::AllSources()); 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetGAIAPictureOfProfileAtIndex(0, &gaia_image); 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(gfx::test::IsEqual( 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gaia_image, *GetCache()->GetGAIAPictureOfProfileAtIndex(0))); 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Wait for the file to be written to disk then reset the cache. 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) save_observer.Wait(); 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResetCache(); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Try to get the GAIA picture. This should return NULL until the read from 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // disk is done. 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WindowedNotificationObserver read_observer( 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED, 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationService::AllSources()); 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(NULL, GetCache()->GetGAIAPictureOfProfileAtIndex(0)); 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) read_observer.Wait(); 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(gfx::test::IsEqual( 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gaia_image, *GetCache()->GetGAIAPictureOfProfileAtIndex(0))); 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(ProfileInfoCacheTest, EmptyGAIAInfo) { 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 profile_name = ASCIIToUTF16("name_1"); 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int id = ProfileInfoCache::GetDefaultAvatarIconResourceIDAtIndex(0); 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Image& profile_image( 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResourceBundle::GetSharedInstance().GetImageNamed(id)); 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->AddProfileToCache( 4042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetProfilePath("path_1"), profile_name, string16(), 0, false); 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Set empty GAIA info. 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetGAIANameOfProfileAtIndex(0, string16()); 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetGAIAPictureOfProfileAtIndex(0, NULL); 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetIsUsingGAIANameOfProfileAtIndex(0, true); 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCache()->SetIsUsingGAIAPictureOfProfileAtIndex(0, true); 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Verify that the profile name and picture are not empty. 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(profile_name, GetCache()->GetNameOfProfileAtIndex(0)); 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(gfx::test::IsEqual( 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_image, GetCache()->GetAvatarIconOfProfileAtIndex(0))); 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 419