From d66eac44cda6b48f70bf6ef06adc72c8638b39bf Mon Sep 17 00:00:00 2001 From: "nkostylev@chromium.org" Date: Mon, 14 Jul 2014 23:48:30 +0000 Subject: Move UserInfo to user_manager. Since user_manager::UserInfo is used on non-chromeos ash implementation, defined part of user_manager component that is included on cross-platform ash. BUG=387614 Review URL: https://codereview.chromium.org/379803004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283087 0039d316-1c4b-4281-b951-d872f2087c98 --- ash/DEPS | 1 + ash/ash.gyp | 7 +++- ash/frame/frame_util.cc | 2 +- ash/session/session_state_delegate.h | 10 +++-- ash/session/user_info.h | 45 -------------------- ash/shell/shell_delegate_impl.cc | 37 +++-------------- ash/system/user/accounts_detailed_view.cc | 5 ++- ash/system/user/tray_user.cc | 2 +- ash/system/user/tray_user_unittest.cc | 6 +-- ash/system/user/user_card_view.cc | 2 +- ash/system/user/user_view.cc | 2 +- ash/test/test_session_state_delegate.cc | 11 ++--- ash/test/test_session_state_delegate.h | 6 +-- chrome/browser/chromeos/login/users/user.h | 6 +-- .../multi_user/multi_user_context_menu_chromeos.cc | 3 +- ..._user_notification_blocker_chromeos_unittest.cc | 2 +- .../ui/ash/multi_user/multi_user_window_manager.cc | 2 +- .../multi_user_window_manager_chromeos_unittest.cc | 2 +- .../ui/ash/session_state_delegate_chromeos.cc | 4 +- .../ui/ash/session_state_delegate_chromeos.h | 4 +- .../browser/ui/ash/session_state_delegate_views.cc | 48 +++------------------- .../browser/ui/ash/session_state_delegate_views.h | 4 +- chrome/browser/ui/views/DEPS | 3 +- .../ui/views/frame/system_menu_model_builder.cc | 4 +- chrome/chrome_browser_ui.gypi | 2 + components/components.gyp | 2 +- components/user_manager.gypi | 28 ++++++++++--- components/user_manager/DEPS | 3 +- components/user_manager/empty_user_info.cc | 44 ++++++++++++++++++++ components/user_manager/empty_user_info.h | 39 ++++++++++++++++++ components/user_manager/user_info.cc | 15 +++++++ components/user_manager/user_info.h | 46 +++++++++++++++++++++ components/user_manager/user_info_impl.cc | 38 +++++++++++++++++ components/user_manager/user_info_impl.h | 38 +++++++++++++++++ 34 files changed, 309 insertions(+), 164 deletions(-) delete mode 100644 ash/session/user_info.h create mode 100644 components/user_manager/empty_user_info.cc create mode 100644 components/user_manager/empty_user_info.h create mode 100644 components/user_manager/user_info.cc create mode 100644 components/user_manager/user_info.h create mode 100644 components/user_manager/user_info_impl.cc create mode 100644 components/user_manager/user_info_impl.h diff --git a/ash/DEPS b/ash/DEPS index a92f2d1..6b1fa86 100644 --- a/ash/DEPS +++ b/ash/DEPS @@ -2,6 +2,7 @@ include_rules = [ "+device/bluetooth", "+cc/debug", "+chromeos", + "+components/user_manager", "+gpu/config", "+grit/ash_resources.h", "+grit/ash_strings.h", diff --git a/ash/ash.gyp b/ash/ash.gyp index d5f413d..593c47e 100644 --- a/ash/ash.gyp +++ b/ash/ash.gyp @@ -16,6 +16,7 @@ '../base/base.gyp:base_i18n', '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', '../cc/cc.gyp:cc', + '../components/components.gyp:user_manager', '../content/content.gyp:content_browser', '../media/media.gyp:media', '../net/net.gyp:net', @@ -229,7 +230,6 @@ 'session/session_state_delegate.h', 'session/session_state_observer.cc', 'session/session_state_observer.h', - 'session/user_info.h', 'shelf/app_list_button.cc', 'shelf/app_list_button.h', 'shelf/app_list_shelf_item_delegate.cc', @@ -879,6 +879,7 @@ '../base/base.gyp:base', '../base/base.gyp:test_support_base', '../chrome/chrome_resources.gyp:packed_resources', + '../components/components.gyp:user_manager', '../content/content.gyp:content_browser', '../content/content_shell_and_tests.gyp:test_support_content', '../skia/skia.gyp:skia', @@ -1178,6 +1179,7 @@ 'type': 'executable', 'dependencies': [ 'ash_shell_lib', + '../components/components.gyp:user_manager', ], 'sources': [ 'shell/shell_main.cc', @@ -1195,7 +1197,7 @@ }], ['chromeos==1', { 'dependencies': [ - '../device/bluetooth/bluetooth.gyp:device_bluetooth', + '../device/bluetooth/bluetooth.gyp:device_bluetooth', ], }], ], @@ -1205,6 +1207,7 @@ 'type': 'executable', 'dependencies': [ '../base/base.gyp:test_support_base', + '../components/components.gyp:user_manager', '../content/content_shell_and_tests.gyp:test_support_content', '../skia/skia.gyp:skia', '../testing/gtest.gyp:gtest', diff --git a/ash/frame/frame_util.cc b/ash/frame/frame_util.cc index fd26783..c4b1be9 100644 --- a/ash/frame/frame_util.cc +++ b/ash/frame/frame_util.cc @@ -5,8 +5,8 @@ #include "ash/frame/frame_util.h" #include "ash/session/session_state_delegate.h" -#include "ash/session/user_info.h" #include "ash/shell.h" +#include "components/user_manager/user_info.h" #include "grit/ash_resources.h" #include "ui/base/resource/resource_bundle.h" #include "ui/gfx/image/image_skia.h" diff --git a/ash/session/session_state_delegate.h b/ash/session/session_state_delegate.h index 78777a0..89c1ff8 100644 --- a/ash/session/session_state_delegate.h +++ b/ash/session/session_state_delegate.h @@ -23,10 +23,13 @@ namespace gfx { class ImageSkia; } // namespace gfx +namespace user_manager { +class UserInfo; +} // namespace user_manager + namespace ash { class SessionStateObserver; -class UserInfo; // The index for the multi-profile item to use. The list is always LRU sorted // So that the index #0 is the currently active user. @@ -113,10 +116,11 @@ class ASH_EXPORT SessionStateDelegate { // Gets the user info for the user with the given |index|. // Note that |index| can at maximum be |NumberOfLoggedInUsers() - 1|. - virtual const UserInfo* GetUserInfo(MultiProfileIndex index) const = 0; + virtual const user_manager::UserInfo* GetUserInfo( + MultiProfileIndex index) const = 0; // Gets the avatar image for the user associated with the |context|. - virtual const UserInfo* GetUserInfo( + virtual const user_manager::UserInfo* GetUserInfo( content::BrowserContext* context) const = 0; // Whether or not the window's title should show the avatar. diff --git a/ash/session/user_info.h b/ash/session/user_info.h deleted file mode 100644 index 59a4cf4..0000000 --- a/ash/session/user_info.h +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ASH_SESSION_USER_INFO_H_ -#define ASH_SESSION_USER_INFO_H_ - -#include - -#include "ash/ash_export.h" -#include "base/strings/string16.h" - -namespace gfx { -class ImageSkia; -} - -namespace ash { - -// A class that represents user related info. -class ASH_EXPORT UserInfo { - public: - virtual ~UserInfo() {} - - // Gets the display name for the user. - virtual base::string16 GetDisplayName() const = 0; - - // Gets the given name of the user. - virtual base::string16 GetGivenName() const = 0; - - // Gets the display email address for the user. - // The display email address might contains some periods in the email name - // as well as capitalized letters. For example: "Foo.Bar@mock.com". - virtual std::string GetEmail() const = 0; - - // Gets the user id (sanitized email address) for the user. - // The function would return something like "foobar@mock.com". - virtual std::string GetUserID() const = 0; - - // Gets the avatar image for the user. - virtual const gfx::ImageSkia& GetImage() const = 0; -}; - -} // namespace ash - -#endif // ASH_SESSION_USER_INFO_H_ diff --git a/ash/shell/shell_delegate_impl.cc b/ash/shell/shell_delegate_impl.cc index 289d769..6261e1e 100644 --- a/ash/shell/shell_delegate_impl.cc +++ b/ash/shell/shell_delegate_impl.cc @@ -11,7 +11,6 @@ #include "ash/media_delegate.h" #include "ash/new_window_delegate.h" #include "ash/session/session_state_delegate.h" -#include "ash/session/user_info.h" #include "ash/shell/context_menu.h" #include "ash/shell/example_factory.h" #include "ash/shell/keyboard_controller_proxy_stub.h" @@ -22,6 +21,7 @@ #include "ash/wm/window_state.h" #include "base/message_loop/message_loop.h" #include "base/strings/utf_string_conversions.h" +#include "components/user_manager/user_info_impl.h" #include "ui/aura/window.h" #include "ui/wm/core/input_method_event_filter.h" @@ -71,36 +71,10 @@ class MediaDelegateImpl : public MediaDelegate { DISALLOW_COPY_AND_ASSIGN(MediaDelegateImpl); }; -class UserInfoImpl : public UserInfo { - public: - UserInfoImpl() {} - virtual ~UserInfoImpl() {} - - // UserInfo: - virtual base::string16 GetDisplayName() const OVERRIDE { - return base::UTF8ToUTF16("stub-user"); - } - virtual base::string16 GetGivenName() const OVERRIDE { - return base::UTF8ToUTF16("Stub"); - } - virtual std::string GetEmail() const OVERRIDE { - return "stub-user@domain.com"; - } - virtual std::string GetUserID() const OVERRIDE { return GetEmail(); } - virtual const gfx::ImageSkia& GetImage() const OVERRIDE { - return user_image_; - } - - private: - gfx::ImageSkia user_image_; - - DISALLOW_COPY_AND_ASSIGN(UserInfoImpl); -}; - class SessionStateDelegateImpl : public SessionStateDelegate { public: SessionStateDelegateImpl() - : screen_locked_(false), user_info_(new UserInfoImpl()) {} + : screen_locked_(false), user_info_(new user_manager::UserInfoImpl()) {} virtual ~SessionStateDelegateImpl() {} @@ -141,10 +115,11 @@ class SessionStateDelegateImpl : public SessionStateDelegate { return IsActiveUserSessionStarted() ? SESSION_STATE_ACTIVE : SESSION_STATE_LOGIN_PRIMARY; } - virtual const UserInfo* GetUserInfo(MultiProfileIndex index) const OVERRIDE { + virtual const user_manager::UserInfo* GetUserInfo( + MultiProfileIndex index) const OVERRIDE { return user_info_.get(); } - virtual const UserInfo* GetUserInfo( + virtual const user_manager::UserInfo* GetUserInfo( content::BrowserContext* context) const OVERRIDE { return user_info_.get(); } @@ -162,7 +137,7 @@ class SessionStateDelegateImpl : public SessionStateDelegate { bool screen_locked_; // A pseudo user info. - scoped_ptr user_info_; + scoped_ptr user_info_; DISALLOW_COPY_AND_ASSIGN(SessionStateDelegateImpl); }; diff --git a/ash/system/user/accounts_detailed_view.cc b/ash/system/user/accounts_detailed_view.cc index 5b78a76..393f8d5 100644 --- a/ash/system/user/accounts_detailed_view.cc +++ b/ash/system/user/accounts_detailed_view.cc @@ -7,7 +7,6 @@ #include #include "ash/multi_profile_uma.h" -#include "ash/session/user_info.h" #include "ash/shell.h" #include "ash/system/tray/fixed_sized_scroll_view.h" #include "ash/system/tray/hover_highlight_view.h" @@ -18,6 +17,7 @@ #include "ash/system/user/config.h" #include "ash/system/user/tray_user.h" #include "base/strings/utf_string_conversions.h" +#include "components/user_manager/user_info.h" #include "grit/ash_resources.h" #include "grit/ui_resources.h" #include "ui/base/resource/resource_bundle.h" @@ -120,7 +120,8 @@ void AccountsDetailedView::AddAddAccountButton() { SessionStateDelegate* session_state_delegate = Shell::GetInstance()->session_state_delegate(); HoverHighlightView* add_account_button = new HoverHighlightView(this); - const UserInfo* user_info = session_state_delegate->GetUserInfo(0); + const user_manager::UserInfo* user_info = + session_state_delegate->GetUserInfo(0); base::string16 user_name = user_info->GetGivenName(); if (user_name.empty()) user_name = user_info->GetDisplayName(); diff --git a/ash/system/user/tray_user.cc b/ash/system/user/tray_user.cc index cb5676c..91dce33 100644 --- a/ash/system/user/tray_user.cc +++ b/ash/system/user/tray_user.cc @@ -7,7 +7,6 @@ #include "ash/ash_switches.h" #include "ash/root_window_controller.h" #include "ash/session/session_state_delegate.h" -#include "ash/session/user_info.h" #include "ash/shelf/shelf_layout_manager.h" #include "ash/shell_delegate.h" #include "ash/system/tray/system_tray.h" @@ -20,6 +19,7 @@ #include "ash/system/user/user_view.h" #include "base/logging.h" #include "base/strings/string16.h" +#include "components/user_manager/user_info.h" #include "grit/ash_strings.h" #include "ui/aura/window.h" #include "ui/base/l10n/l10n_util.h" diff --git a/ash/system/user/tray_user_unittest.cc b/ash/system/user/tray_user_unittest.cc index 0135054..25eae95 100644 --- a/ash/system/user/tray_user_unittest.cc +++ b/ash/system/user/tray_user_unittest.cc @@ -5,7 +5,6 @@ #include #include "ash/root_window_controller.h" -#include "ash/session/user_info.h" #include "ash/shelf/shelf_layout_manager.h" #include "ash/shell.h" #include "ash/shell_delegate.h" @@ -16,6 +15,7 @@ #include "ash/test/ash_test_base.h" #include "ash/test/test_session_state_delegate.h" #include "ash/test/test_shell_delegate.h" +#include "components/user_manager/user_info.h" #include "ui/aura/test/event_generator.h" #include "ui/gfx/animation/animation_container_element.h" #include "ui/views/view.h" @@ -237,8 +237,8 @@ TEST_F(TrayUserTest, MutiUserModeButtonClicks) { // Switch to a new user - which has a capitalized name. ClickUserItem(&generator, 1); - const UserInfo* active_user = delegate()->GetActiveUserInfo(); - const UserInfo* second_user = delegate()->GetUserInfo(1); + const user_manager::UserInfo* active_user = delegate()->GetActiveUserInfo(); + const user_manager::UserInfo* second_user = delegate()->GetUserInfo(1); EXPECT_EQ(active_user->GetUserID(), second_user->GetUserID()); // Since the name is capitalized, the email should be different then the // user_id. diff --git a/ash/system/user/user_card_view.cc b/ash/system/user/user_card_view.cc index 11cff83..84d52b6 100644 --- a/ash/system/user/user_card_view.cc +++ b/ash/system/user/user_card_view.cc @@ -8,7 +8,6 @@ #include #include "ash/session/session_state_delegate.h" -#include "ash/session/user_info.h" #include "ash/shell.h" #include "ash/system/tray/system_tray_delegate.h" #include "ash/system/tray/system_tray_notifier.h" @@ -20,6 +19,7 @@ #include "base/strings/string16.h" #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" +#include "components/user_manager/user_info.h" #include "grit/ash_resources.h" #include "grit/ash_strings.h" #include "ui/base/l10n/l10n_util.h" diff --git a/ash/system/user/user_view.cc b/ash/system/user/user_view.cc index 18e8ee8..0d66217 100644 --- a/ash/system/user/user_view.cc +++ b/ash/system/user/user_view.cc @@ -9,7 +9,6 @@ #include "ash/multi_profile_uma.h" #include "ash/popup_message.h" #include "ash/session/session_state_delegate.h" -#include "ash/session/user_info.h" #include "ash/shell.h" #include "ash/shell_delegate.h" #include "ash/system/tray/system_tray.h" @@ -20,6 +19,7 @@ #include "ash/system/user/config.h" #include "ash/system/user/rounded_image_view.h" #include "ash/system/user/user_card_view.h" +#include "components/user_manager/user_info.h" #include "grit/ash_resources.h" #include "grit/ash_strings.h" #include "ui/base/l10n/l10n_util.h" diff --git a/ash/test/test_session_state_delegate.cc b/ash/test/test_session_state_delegate.cc index 8831b58..4c76143 100644 --- a/ash/test/test_session_state_delegate.cc +++ b/ash/test/test_session_state_delegate.cc @@ -7,12 +7,12 @@ #include #include -#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 "components/user_manager/user_info.h" #include "testing/gtest/include/gtest/gtest.h" namespace ash { @@ -29,7 +29,7 @@ std::string GetUserIDFromEmail(const std::string& email) { } // namespace -class MockUserInfo : public UserInfo { +class MockUserInfo : public user_manager::UserInfo { public: explicit MockUserInfo(const std::string& id) : email_(id) {} virtual ~MockUserInfo() {} @@ -89,7 +89,8 @@ void TestSessionStateDelegate::AddUser(const std::string user_id) { user_list_.push_back(new MockUserInfo(user_id)); } -const UserInfo* TestSessionStateDelegate::GetActiveUserInfo() const { +const user_manager::UserInfo* TestSessionStateDelegate::GetActiveUserInfo() + const { return user_list_[active_user_index_]; } @@ -192,13 +193,13 @@ void TestSessionStateDelegate::SetUserImage( user_list_[active_user_index_]->SetUserImage(user_image); } -const UserInfo* TestSessionStateDelegate::GetUserInfo( +const user_manager::UserInfo* TestSessionStateDelegate::GetUserInfo( MultiProfileIndex index) const { int max = static_cast(user_list_.size()); return user_list_[index < max ? index : max - 1]; } -const UserInfo* TestSessionStateDelegate::GetUserInfo( +const user_manager::UserInfo* TestSessionStateDelegate::GetUserInfo( content::BrowserContext* context) const { return user_list_[active_user_index_]; } diff --git a/ash/test/test_session_state_delegate.h b/ash/test/test_session_state_delegate.h index 5616eec..478c340 100644 --- a/ash/test/test_session_state_delegate.h +++ b/ash/test/test_session_state_delegate.h @@ -24,7 +24,7 @@ class TestSessionStateDelegate : public SessionStateDelegate { void set_logged_in_users(int users) { logged_in_users_ = users; } void AddUser(const std::string user_id); - const UserInfo* GetActiveUserInfo() const; + const user_manager::UserInfo* GetActiveUserInfo() const; // SessionStateDelegate: virtual content::BrowserContext* GetBrowserContextByIndex( @@ -41,9 +41,9 @@ class TestSessionStateDelegate : public SessionStateDelegate { virtual void UnlockScreen() OVERRIDE; virtual bool IsUserSessionBlocked() const OVERRIDE; virtual SessionState GetSessionState() const OVERRIDE; - virtual const UserInfo* GetUserInfo( + virtual const user_manager::UserInfo* GetUserInfo( ash::MultiProfileIndex index) const OVERRIDE; - virtual const UserInfo* GetUserInfo( + virtual const user_manager::UserInfo* GetUserInfo( content::BrowserContext* context) const OVERRIDE; virtual bool ShouldShowAvatar(aura::Window* window) const OVERRIDE; virtual void SwitchActiveUser(const std::string& user_id) OVERRIDE; diff --git a/chrome/browser/chromeos/login/users/user.h b/chrome/browser/chromeos/login/users/user.h index 58b0cd3..5289962 100644 --- a/chrome/browser/chromeos/login/users/user.h +++ b/chrome/browser/chromeos/login/users/user.h @@ -8,10 +8,10 @@ #include #include -#include "ash/session/user_info.h" #include "base/basictypes.h" #include "base/strings/string16.h" #include "components/user_manager/user_image/user_image.h" +#include "components/user_manager/user_info.h" #include "components/user_manager/user_type.h" #include "third_party/skia/include/core/SkBitmap.h" #include "ui/gfx/image/image_skia.h" @@ -26,7 +26,7 @@ extern const int kDefaultImagesCount; // returned by |displayed_email()|. // Displayed emails are for use in UI only, anywhere else users must be referred // to by |email()|. -class User : public ash::UserInfo { +class User : public user_manager::UserInfo { public: // User OAuth token status according to the last check. // Please note that enum values 1 and 2 were used for OAuth1 status and are @@ -63,7 +63,7 @@ class User : public ash::UserInfo { // The displayed user name. base::string16 display_name() const { return display_name_; } - // ash::UserInfo + // user_manager::UserInfo virtual std::string GetEmail() const OVERRIDE; virtual base::string16 GetDisplayName() const OVERRIDE; virtual base::string16 GetGivenName() const OVERRIDE; diff --git a/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos.cc b/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos.cc index 09a52f2..a10e61b 100644 --- a/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos.cc +++ b/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos.cc @@ -87,7 +87,8 @@ scoped_ptr CreateMultiUserContextMenu(aura::Window* window) { new chromeos::MultiUserContextMenuChromeos(window); model.reset(menu); for (int user_index = 1; user_index < logged_in_users; ++user_index) { - const ash::UserInfo* user_info = delegate->GetUserInfo(user_index); + const user_manager::UserInfo* user_info = + delegate->GetUserInfo(user_index); menu->AddItem(user_index == 1 ? IDC_VISIT_DESKTOP_OF_LRU_USER_2 : IDC_VISIT_DESKTOP_OF_LRU_USER_3, l10n_util::GetStringFUTF16( diff --git a/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos_unittest.cc b/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos_unittest.cc index 88bf046..79800ef 100644 --- a/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos_unittest.cc +++ b/chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos_unittest.cc @@ -3,7 +3,6 @@ // found in the LICENSE file. #include "ash/session/session_state_delegate.h" -#include "ash/session/user_info.h" #include "ash/shell.h" #include "ash/system/system_notifier.h" #include "ash/test/ash_test_base.h" @@ -13,6 +12,7 @@ #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile_manager.h" +#include "components/user_manager/user_info.h" #include "ui/message_center/message_center.h" #include "ui/message_center/notification.h" diff --git a/chrome/browser/ui/ash/multi_user/multi_user_window_manager.cc b/chrome/browser/ui/ash/multi_user/multi_user_window_manager.cc index 93b2af1..a1e3362 100644 --- a/chrome/browser/ui/ash/multi_user/multi_user_window_manager.cc +++ b/chrome/browser/ui/ash/multi_user/multi_user_window_manager.cc @@ -11,10 +11,10 @@ #include "ash/ash_switches.h" #include "ash/multi_profile_uma.h" #include "ash/session/session_state_delegate.h" -#include "ash/session/user_info.h" #include "ash/shell.h" #include "ash/shell_delegate.h" #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h" +#include "components/user_manager/user_info.h" #endif namespace { diff --git a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc index f425e0bb..29da872 100644 --- a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc +++ b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "ash/session/user_info.h" #include "ash/shell.h" #include "ash/shell_window_ids.h" #include "ash/test/ash_test_base.h" @@ -19,6 +18,7 @@ #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h" #include "chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.h" #include "chrome/test/base/testing_profile.h" +#include "components/user_manager/user_info.h" #include "ui/aura/client/aura_constants.h" #include "ui/aura/window_event_dispatcher.h" #include "ui/base/ui_base_types.h" diff --git a/chrome/browser/ui/ash/session_state_delegate_chromeos.cc b/chrome/browser/ui/ash/session_state_delegate_chromeos.cc index ad073e6..27e57f4 100644 --- a/chrome/browser/ui/ash/session_state_delegate_chromeos.cc +++ b/chrome/browser/ui/ash/session_state_delegate_chromeos.cc @@ -133,13 +133,13 @@ SessionStateDelegateChromeos::GetSessionState() const { return session_state_; } -const ash::UserInfo* SessionStateDelegateChromeos::GetUserInfo( +const user_manager::UserInfo* SessionStateDelegateChromeos::GetUserInfo( ash::MultiProfileIndex index) const { DCHECK_LT(index, NumberOfLoggedInUsers()); return chromeos::UserManager::Get()->GetLRULoggedInUsers()[index]; } -const ash::UserInfo* SessionStateDelegateChromeos::GetUserInfo( +const user_manager::UserInfo* SessionStateDelegateChromeos::GetUserInfo( content::BrowserContext* context) const { DCHECK(context); return chromeos::ProfileHelper::Get()->GetUserByProfile( diff --git a/chrome/browser/ui/ash/session_state_delegate_chromeos.h b/chrome/browser/ui/ash/session_state_delegate_chromeos.h index 104afe8..af0b055 100644 --- a/chrome/browser/ui/ash/session_state_delegate_chromeos.h +++ b/chrome/browser/ui/ash/session_state_delegate_chromeos.h @@ -41,9 +41,9 @@ class SessionStateDelegateChromeos virtual void UnlockScreen() OVERRIDE; virtual bool IsUserSessionBlocked() const OVERRIDE; virtual SessionState GetSessionState() const OVERRIDE; - virtual const ash::UserInfo* GetUserInfo( + virtual const user_manager::UserInfo* GetUserInfo( ash::MultiProfileIndex index) const OVERRIDE; - virtual const ash::UserInfo* GetUserInfo( + virtual const user_manager::UserInfo* GetUserInfo( content::BrowserContext* context) const OVERRIDE; virtual bool ShouldShowAvatar(aura::Window* window) const OVERRIDE; virtual void SwitchActiveUser(const std::string& user_id) OVERRIDE; diff --git a/chrome/browser/ui/ash/session_state_delegate_views.cc b/chrome/browser/ui/ash/session_state_delegate_views.cc index 675a9bf..9622319 100644 --- a/chrome/browser/ui/ash/session_state_delegate_views.cc +++ b/chrome/browser/ui/ash/session_state_delegate_views.cc @@ -4,51 +4,12 @@ #include "chrome/browser/ui/ash/session_state_delegate_views.h" -#include "ash/session/user_info.h" #include "base/logging.h" #include "base/strings/string16.h" #include "base/strings/utf_string_conversions.h" +#include "components/user_manager/empty_user_info.h" #include "ui/gfx/image/image_skia.h" -namespace { - -class EmptyUserInfo : public ash::UserInfo { - public: - EmptyUserInfo() {} - virtual ~EmptyUserInfo() {} - - // ash::UserInfo: - virtual base::string16 GetDisplayName() const OVERRIDE { - NOTIMPLEMENTED(); - return base::UTF8ToUTF16(std::string()); - } - virtual base::string16 GetGivenName() const OVERRIDE { - NOTIMPLEMENTED(); - return base::UTF8ToUTF16(std::string()); - } - virtual std::string GetEmail() const OVERRIDE { - NOTIMPLEMENTED(); - return std::string(); - } - virtual std::string GetUserID() const OVERRIDE { - NOTIMPLEMENTED(); - return std::string(); - } - - virtual const gfx::ImageSkia& GetImage() const OVERRIDE { - NOTIMPLEMENTED(); - // To make the compiler happy. - return null_image_; - } - - private: - const gfx::ImageSkia null_image_; - - DISALLOW_COPY_AND_ASSIGN(EmptyUserInfo); -}; - -} // namespace - SessionStateDelegate::SessionStateDelegate() { } @@ -106,14 +67,15 @@ ash::SessionStateDelegate::SessionState SessionStateDelegate::GetSessionState() return SESSION_STATE_ACTIVE; } -const ash::UserInfo* SessionStateDelegate::GetUserInfo( +const user_manager::UserInfo* SessionStateDelegate::GetUserInfo( ash::MultiProfileIndex index) const { return GetUserInfo(static_cast(NULL)); } -const ash::UserInfo* SessionStateDelegate::GetUserInfo( +const user_manager::UserInfo* SessionStateDelegate::GetUserInfo( content::BrowserContext* context) const { - static const ash::UserInfo* kUserInfo = new EmptyUserInfo(); + static const user_manager::UserInfo* kUserInfo = + new user_manager::EmptyUserInfo(); return kUserInfo; } diff --git a/chrome/browser/ui/ash/session_state_delegate_views.h b/chrome/browser/ui/ash/session_state_delegate_views.h index 3b32b29..14e005e 100644 --- a/chrome/browser/ui/ash/session_state_delegate_views.h +++ b/chrome/browser/ui/ash/session_state_delegate_views.h @@ -35,9 +35,9 @@ class SessionStateDelegate : public ash::SessionStateDelegate { virtual void UnlockScreen() OVERRIDE; virtual bool IsUserSessionBlocked() const OVERRIDE; virtual SessionState GetSessionState() const OVERRIDE; - virtual const ash::UserInfo* GetUserInfo( + virtual const user_manager::UserInfo* GetUserInfo( ash::MultiProfileIndex index) const OVERRIDE; - virtual const ash::UserInfo* GetUserInfo( + virtual const user_manager::UserInfo* GetUserInfo( content::BrowserContext* context) const OVERRIDE; virtual bool ShouldShowAvatar(aura::Window* window) const OVERRIDE; virtual void SwitchActiveUser(const std::string& user_id) OVERRIDE; diff --git a/chrome/browser/ui/views/DEPS b/chrome/browser/ui/views/DEPS index 92c7377..8b91a12 100644 --- a/chrome/browser/ui/views/DEPS +++ b/chrome/browser/ui/views/DEPS @@ -1,4 +1,5 @@ include_rules = [ "-chrome/browser/ui/libgtk2ui", - "+chrome/browser/ui/views" + "+chrome/browser/ui/views", + "+components/user_manager" ] diff --git a/chrome/browser/ui/views/frame/system_menu_model_builder.cc b/chrome/browser/ui/views/frame/system_menu_model_builder.cc index 44dacd8..9848722 100644 --- a/chrome/browser/ui/views/frame/system_menu_model_builder.cc +++ b/chrome/browser/ui/views/frame/system_menu_model_builder.cc @@ -17,11 +17,11 @@ #if defined(OS_CHROMEOS) #include "ash/session/session_state_delegate.h" -#include "ash/session/user_info.h" #include "ash/shell.h" #include "chrome/browser/ui/ash/multi_user/multi_user_util.h" #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h" #include "chrome/browser/ui/browser_window.h" +#include "components/user_manager/user_info.h" #include "ui/base/l10n/l10n_util.h" #endif @@ -152,7 +152,7 @@ void SystemMenuModelBuilder::AppendTeleportMenu(ui::SimpleMenuModel* model) { model->AddSeparator(ui::NORMAL_SEPARATOR); DCHECK(logged_in_users <= 3); for (int user_index = 1; user_index < logged_in_users; ++user_index) { - const ash::UserInfo* user_info = delegate->GetUserInfo(user_index); + const user_manager::UserInfo* user_info = delegate->GetUserInfo(user_index); model->AddItem( user_index == 1 ? IDC_VISIT_DESKTOP_OF_LRU_USER_2 : IDC_VISIT_DESKTOP_OF_LRU_USER_3, diff --git a/chrome/chrome_browser_ui.gypi b/chrome/chrome_browser_ui.gypi index a74d660..a14308e 100644 --- a/chrome/chrome_browser_ui.gypi +++ b/chrome/chrome_browser_ui.gypi @@ -2680,6 +2680,7 @@ 'sources': [ '<@(chrome_browser_ui_chromeos_sources)' ], 'dependencies': [ 'browser_chromeos', + '../components/components.gyp:user_manager', '../ui/chromeos/ui_chromeos.gyp:ui_chromeos', '../ui/chromeos/ui_chromeos.gyp:ui_chromeos_resources', ], @@ -2697,6 +2698,7 @@ '../ash/ash.gyp:ash', '../ash/ash.gyp:ash_with_content', '../ash/ash_strings.gyp:ash_strings', + '../components/components.gyp:user_manager', ], 'conditions': [ ['chromeos == 0', { diff --git a/components/components.gyp b/components/components.gyp index 49254a2..e6e6b4c 100644 --- a/components/components.gyp +++ b/components/components.gyp @@ -82,7 +82,7 @@ 'wifi.gypi', ], }], - ['chromeos==1', { + ['use_ash==1', { 'includes': [ 'user_manager.gypi', ], diff --git a/components/user_manager.gypi b/components/user_manager.gypi index f10edf2..7b22938 100644 --- a/components/user_manager.gypi +++ b/components/user_manager.gypi @@ -3,6 +3,24 @@ # found in the LICENSE file. { + 'variables': { + # Cross-platform user_manager sources. + 'user_manager_shared_sources': [ + 'user_manager/empty_user_info.cc', + 'user_manager/empty_user_info.h', + 'user_manager/user_info.h', + 'user_manager/user_info.cc', + 'user_manager/user_info_impl.cc', + 'user_manager/user_info_impl.h', + 'user_manager/user_manager_export.h', + ], + # Chrome OS user_manager sources. + 'user_manager_chromeos_sources': [ + 'user_manager/user_image/user_image.cc', + 'user_manager/user_image/user_image.h', + 'user_manager/user_type.h', + ], + }, 'targets': [{ 'target_name': 'user_manager', 'type': '<(component)', @@ -18,11 +36,11 @@ 'include_dirs': [ '..', ], - 'sources': [ - 'user_manager/user_image/user_image.cc', - 'user_manager/user_image/user_image.h', - 'user_manager/user_type.h', - 'user_manager/user_manager_export.h', + 'sources': [ '<@(user_manager_shared_sources)' ], + 'conditions': [ + ['chromeos == 1', { + 'sources': [ '<@(user_manager_chromeos_sources)' ], + }], ], }], } diff --git a/components/user_manager/DEPS b/components/user_manager/DEPS index b8a9ee9..ee3957b 100644 --- a/components/user_manager/DEPS +++ b/components/user_manager/DEPS @@ -1,5 +1,6 @@ include_rules = [ "+third_party/skia/include", -"+ui/gfx", +"+ui/gfx/codec", +"+ui/gfx/image", "+url", ] diff --git a/components/user_manager/empty_user_info.cc b/components/user_manager/empty_user_info.cc new file mode 100644 index 0000000..f4f3fca --- /dev/null +++ b/components/user_manager/empty_user_info.cc @@ -0,0 +1,44 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/user_manager/empty_user_info.h" + +#include "base/logging.h" +#include "base/strings/utf_string_conversions.h" + +namespace user_manager { + +EmptyUserInfo::EmptyUserInfo() { +} + +EmptyUserInfo::~EmptyUserInfo() { +} + +base::string16 EmptyUserInfo::GetDisplayName() const { + NOTIMPLEMENTED(); + return base::UTF8ToUTF16(std::string()); +} + +base::string16 EmptyUserInfo::GetGivenName() const { + NOTIMPLEMENTED(); + return base::UTF8ToUTF16(std::string()); +} + +std::string EmptyUserInfo::GetEmail() const { + NOTIMPLEMENTED(); + return std::string(); +} + +std::string EmptyUserInfo::GetUserID() const { + NOTIMPLEMENTED(); + return std::string(); +} + +const gfx::ImageSkia& EmptyUserInfo::GetImage() const { + NOTIMPLEMENTED(); + // To make the compiler happy. + return null_image_; +} + +} // namespace user_manager diff --git a/components/user_manager/empty_user_info.h b/components/user_manager/empty_user_info.h new file mode 100644 index 0000000..4d22f45 --- /dev/null +++ b/components/user_manager/empty_user_info.h @@ -0,0 +1,39 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_USER_MANAGER_EMPTY_USER_INFO_H_ +#define COMPONENTS_USER_MANAGER_EMPTY_USER_INFO_H_ + +#include + +#include "base/strings/string16.h" +#include "components/user_manager/user_info.h" +#include "components/user_manager/user_manager_export.h" +#include "ui/gfx/image/image_skia.h" + +namespace user_manager { + +// Trivial implementation of UserInfo interface which triggers +// NOTIMPLEMENTED() for each method. +class USER_MANAGER_EXPORT EmptyUserInfo : public UserInfo { + public: + EmptyUserInfo(); + virtual ~EmptyUserInfo(); + + // UserInfo: + virtual base::string16 GetDisplayName() const OVERRIDE; + virtual base::string16 GetGivenName() const OVERRIDE; + virtual std::string GetEmail() const OVERRIDE; + virtual std::string GetUserID() const OVERRIDE; + virtual const gfx::ImageSkia& GetImage() const OVERRIDE; + + private: + const gfx::ImageSkia null_image_; + + DISALLOW_COPY_AND_ASSIGN(EmptyUserInfo); +}; + +} // namespace user_manager + +#endif // COMPONENTS_USER_MANAGER_EMPTY_USER_INFO_H_ diff --git a/components/user_manager/user_info.cc b/components/user_manager/user_info.cc new file mode 100644 index 0000000..adfeb72 --- /dev/null +++ b/components/user_manager/user_info.cc @@ -0,0 +1,15 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/user_manager/user_info.h" + +namespace user_manager { + +UserInfo::UserInfo() { +} + +UserInfo::~UserInfo() { +} + +} // namespace user_manager diff --git a/components/user_manager/user_info.h b/components/user_manager/user_info.h new file mode 100644 index 0000000..9540946 --- /dev/null +++ b/components/user_manager/user_info.h @@ -0,0 +1,46 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_USER_MANAGER_USER_INFO_H_ +#define COMPONENTS_USER_MANAGER_USER_INFO_H_ + +#include + +#include "base/strings/string16.h" +#include "components/user_manager/user_manager_export.h" + +namespace gfx { +class ImageSkia; +} + +namespace user_manager { + +// A class that represents user related info. +class USER_MANAGER_EXPORT UserInfo { + public: + UserInfo(); + virtual ~UserInfo(); + + // Gets the display name for the user. + virtual base::string16 GetDisplayName() const = 0; + + // Gets the given name of the user. + virtual base::string16 GetGivenName() const = 0; + + // Gets the display email address for the user. + // The display email address might contains some periods in the email name + // as well as capitalized letters. For example: "Foo.Bar@mock.com". + virtual std::string GetEmail() const = 0; + + // Gets the user id (sanitized email address) for the user. + // The function would return something like "foobar@mock.com". + virtual std::string GetUserID() const = 0; + + // Gets the avatar image for the user. + virtual const gfx::ImageSkia& GetImage() const = 0; +}; + +} // namespace user_manager + +#endif // COMPONENTS_USER_MANAGER_USER_INFO_H_ diff --git a/components/user_manager/user_info_impl.cc b/components/user_manager/user_info_impl.cc new file mode 100644 index 0000000..6aa21a8 --- /dev/null +++ b/components/user_manager/user_info_impl.cc @@ -0,0 +1,38 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/user_manager/user_info_impl.h" + +#include "base/logging.h" +#include "base/strings/utf_string_conversions.h" + +namespace user_manager { + +UserInfoImpl::UserInfoImpl() { +} + +UserInfoImpl::~UserInfoImpl() { +} + +base::string16 UserInfoImpl::GetDisplayName() const { + return base::UTF8ToUTF16("stub-user"); +} + +base::string16 UserInfoImpl::GetGivenName() const { + return base::UTF8ToUTF16("Stub"); +} + +std::string UserInfoImpl::GetEmail() const { + return "stub-user@domain.com"; +} + +std::string UserInfoImpl::GetUserID() const { + return GetEmail(); +} + +const gfx::ImageSkia& UserInfoImpl::GetImage() const { + return user_image_; +} + +} // namespace user_manager diff --git a/components/user_manager/user_info_impl.h b/components/user_manager/user_info_impl.h new file mode 100644 index 0000000..f024910 --- /dev/null +++ b/components/user_manager/user_info_impl.h @@ -0,0 +1,38 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_USER_MANAGER_USER_INFO_IMPL_H_ +#define COMPONENTS_USER_MANAGER_USER_INFO_IMPL_H_ + +#include + +#include "base/strings/string16.h" +#include "components/user_manager/user_info.h" +#include "components/user_manager/user_manager_export.h" +#include "ui/gfx/image/image_skia.h" + +namespace user_manager { + +// Stub implementation of UserInfo interface. Used in tests. +class USER_MANAGER_EXPORT UserInfoImpl : public UserInfo { + public: + UserInfoImpl(); + virtual ~UserInfoImpl(); + + // UserInfo: + virtual base::string16 GetDisplayName() const OVERRIDE; + virtual base::string16 GetGivenName() const OVERRIDE; + virtual std::string GetEmail() const OVERRIDE; + virtual std::string GetUserID() const OVERRIDE; + virtual const gfx::ImageSkia& GetImage() const OVERRIDE; + + private: + gfx::ImageSkia user_image_; + + DISALLOW_COPY_AND_ASSIGN(UserInfoImpl); +}; + +} // namespace user_manager + +#endif // COMPONENTS_USER_MANAGER_USER_INFO_IMPL_H_ -- cgit v1.1