diff options
Diffstat (limited to 'ash/test/test_session_state_delegate.cc')
-rw-r--r-- | ash/test/test_session_state_delegate.cc | 107 |
1 files changed, 75 insertions, 32 deletions
diff --git a/ash/test/test_session_state_delegate.cc b/ash/test/test_session_state_delegate.cc index f7efe1d..8831b58 100644 --- a/ash/test/test_session_state_delegate.cc +++ b/ash/test/test_session_state_delegate.cc @@ -7,12 +7,17 @@ #include <algorithm> #include <string> +#include "ash/session/user_info.h" #include "ash/shell.h" #include "ash/system/user/login_status.h" +#include "base/stl_util.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" +namespace ash { +namespace test { + namespace { // The the "canonicalized" user ID from a given |email| address. @@ -24,8 +29,40 @@ std::string GetUserIDFromEmail(const std::string& email) { } // namespace -namespace ash { -namespace test { +class MockUserInfo : public UserInfo { + public: + explicit MockUserInfo(const std::string& id) : email_(id) {} + virtual ~MockUserInfo() {} + + void SetUserImage(const gfx::ImageSkia& user_image) { + user_image_ = user_image; + } + + virtual base::string16 GetDisplayName() const OVERRIDE { + return base::UTF8ToUTF16("Über tray Über tray Über tray Über tray"); + } + + virtual base::string16 GetGivenName() const OVERRIDE { + return base::UTF8ToUTF16("Über Über Über Über"); + } + + virtual std::string GetEmail() const OVERRIDE { return email_; } + + virtual std::string GetUserID() const OVERRIDE { + return GetUserIDFromEmail(GetEmail()); + } + + virtual const gfx::ImageSkia& GetImage() const OVERRIDE { + return user_image_; + } + + // A test user image. + gfx::ImageSkia user_image_; + + std::string email_; + + DISALLOW_COPY_AND_ASSIGN(MockUserInfo); +}; TestSessionStateDelegate::TestSessionStateDelegate() : has_active_user_(false), @@ -34,10 +71,26 @@ TestSessionStateDelegate::TestSessionStateDelegate() should_lock_screen_before_suspending_(false), screen_locked_(false), user_adding_screen_running_(false), - logged_in_users_(1) { + logged_in_users_(1), + active_user_index_(0) { + user_list_.push_back( + new MockUserInfo("First@tray")); // This is intended to be capitalized. + user_list_.push_back( + new MockUserInfo("Second@tray")); // This is intended to be capitalized. + user_list_.push_back(new MockUserInfo("third@tray")); + user_list_.push_back(new MockUserInfo("someone@tray")); } TestSessionStateDelegate::~TestSessionStateDelegate() { + STLDeleteElements(&user_list_); +} + +void TestSessionStateDelegate::AddUser(const std::string user_id) { + user_list_.push_back(new MockUserInfo(user_id)); +} + +const UserInfo* TestSessionStateDelegate::GetActiveUserInfo() const { + return user_list_[active_user_index_]; } content::BrowserContext* @@ -136,51 +189,41 @@ void TestSessionStateDelegate::SetUserAddingScreenRunning( void TestSessionStateDelegate::SetUserImage( const gfx::ImageSkia& user_image) { - user_image_ = user_image; -} - -const base::string16 TestSessionStateDelegate::GetUserDisplayName( - MultiProfileIndex index) const { - return base::UTF8ToUTF16("Über tray Über tray Über tray Über tray"); + user_list_[active_user_index_]->SetUserImage(user_image); } -const base::string16 TestSessionStateDelegate::GetUserGivenName( +const UserInfo* TestSessionStateDelegate::GetUserInfo( MultiProfileIndex index) const { - return base::UTF8ToUTF16("Über Über Über Über"); + int max = static_cast<int>(user_list_.size()); + return user_list_[index < max ? index : max - 1]; } -const std::string TestSessionStateDelegate::GetUserEmail( - MultiProfileIndex index) const { - switch (index) { - case 0: return "First@tray"; // This is intended to be capitalized. - case 1: return "Second@tray"; // This is intended to be capitalized. - case 2: return "third@tray"; - default: return "someone@tray"; - } -} - -const std::string TestSessionStateDelegate::GetUserID( - MultiProfileIndex index) const { - return GetUserIDFromEmail(GetUserEmail(index)); -} - -const gfx::ImageSkia& TestSessionStateDelegate::GetUserImage( +const UserInfo* TestSessionStateDelegate::GetUserInfo( content::BrowserContext* context) const { - return user_image_; + return user_list_[active_user_index_]; } -bool TestSessionStateDelegate::ShouldShowAvatar(aura::Window* window) { - return !user_image_.isNull(); +bool TestSessionStateDelegate::ShouldShowAvatar(aura::Window* window) const { + return !GetActiveUserInfo()->GetImage().isNull(); } void TestSessionStateDelegate::SwitchActiveUser(const std::string& user_id) { // Make sure this is a user id and not an email address. EXPECT_EQ(user_id, GetUserIDFromEmail(user_id)); - activated_user_ = user_id; + active_user_index_ = 0; + for (std::vector<MockUserInfo*>::iterator iter = user_list_.begin(); + iter != user_list_.end(); + ++iter) { + if ((*iter)->GetUserID() == user_id) { + active_user_index_ = iter - user_list_.begin(); + return; + } + } + NOTREACHED() << "Unknown user:" << user_id; } void TestSessionStateDelegate::CycleActiveUser(CycleUser cycle_user) { - activated_user_ = "someone@tray"; + SwitchActiveUser("someone@tray"); } void TestSessionStateDelegate::AddSessionStateObserver( |