Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / login / screens / user_image_screen.cc
index ea11737..bd709db 100644 (file)
 #include "chrome/browser/chromeos/camera_presence_notifier.h"
 #include "chrome/browser/chromeos/login/login_utils.h"
 #include "chrome/browser/chromeos/login/screens/screen_observer.h"
-#include "chrome/browser/chromeos/login/users/avatar/default_user_images.h"
-#include "chrome/browser/chromeos/login/users/avatar/user_image.h"
 #include "chrome/browser/chromeos/login/users/avatar/user_image_manager.h"
-#include "chrome/browser/chromeos/login/users/user_manager.h"
+#include "chrome/browser/chromeos/login/users/chrome_user_manager.h"
 #include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/browser/chromeos/profiles/profile_helper.h"
 #include "chrome/browser/policy/profile_policy_connector.h"
 #include "chrome/browser/policy/profile_policy_connector_factory.h"
 #include "chrome/browser/profiles/profile.h"
 #include "components/policy/core/common/policy_map.h"
 #include "components/policy/core/common/policy_namespace.h"
 #include "components/policy/core/common/policy_service.h"
+#include "components/user_manager/user.h"
+#include "components/user_manager/user_image/default_user_images.h"
+#include "components/user_manager/user_image/user_image.h"
+#include "components/user_manager/user_manager.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/notification_service.h"
-#include "grit/generated_resources.h"
-#include "grit/theme_resources.h"
 #include "policy/policy_constants.h"
 #include "third_party/skia/include/core/SkBitmap.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
 #include "ui/base/webui/web_ui_util.h"
 #include "ui/gfx/image/image_skia.h"
 
@@ -63,14 +62,18 @@ UserImageScreen::UserImageScreen(ScreenObserver* screen_observer,
     : WizardScreen(screen_observer),
       actor_(actor),
       accept_photo_after_decoding_(false),
-      selected_image_(User::kInvalidImageIndex),
-      profile_picture_enabled_(false),
+      selected_image_(user_manager::User::USER_IMAGE_INVALID),
       profile_picture_data_url_(url::kAboutBlankURL),
       profile_picture_absent_(false),
       is_screen_ready_(false),
       user_has_selected_image_(false) {
   actor_->SetDelegate(this);
-  SetProfilePictureEnabled(true);
+  notification_registrar_.Add(this,
+                              chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED,
+                              content::NotificationService::AllSources());
+  notification_registrar_.Add(this,
+                              chrome::NOTIFICATION_PROFILE_IMAGE_UPDATE_FAILED,
+                              content::NotificationService::AllSources());
   notification_registrar_.Add(this,
                               chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED,
                               content::NotificationService::AllSources());
@@ -164,14 +167,14 @@ void UserImageScreen::OnImageSelected(const std::string& image_type,
   }
   if (image_url.empty())
     return;
-  int user_image_index = User::kInvalidImageIndex;
+  int user_image_index = user_manager::User::USER_IMAGE_INVALID;
   if (image_type == "default" &&
-      IsDefaultImageUrl(image_url, &user_image_index)) {
+      user_manager::IsDefaultImageUrl(image_url, &user_image_index)) {
     selected_image_ = user_image_index;
   } else if (image_type == "camera") {
-    selected_image_ = User::kExternalImageIndex;
+    selected_image_ = user_manager::User::USER_IMAGE_EXTERNAL;
   } else if (image_type == "profile") {
-    selected_image_ = User::kProfileImageIndex;
+    selected_image_ = user_manager::User::USER_IMAGE_PROFILE;
   } else {
     NOTREACHED() << "Unexpected image type: " << image_type;
   }
@@ -181,77 +184,47 @@ void UserImageScreen::OnImageAccepted() {
   UserImageManager* image_manager = GetUserImageManager();
   int uma_index = 0;
   switch (selected_image_) {
-    case User::kExternalImageIndex:
+    case user_manager::User::USER_IMAGE_EXTERNAL:
       // Photo decoding may not have been finished yet.
       if (user_photo_.isNull()) {
         accept_photo_after_decoding_ = true;
         return;
       }
-      image_manager->SaveUserImage(UserImage::CreateAndEncode(user_photo_));
-      uma_index = kHistogramImageFromCamera;
+      image_manager->SaveUserImage(
+          user_manager::UserImage::CreateAndEncode(user_photo_));
+      uma_index = user_manager::kHistogramImageFromCamera;
       break;
-    case User::kProfileImageIndex:
+    case user_manager::User::USER_IMAGE_PROFILE:
       image_manager->SaveUserImageFromProfileImage();
-      uma_index = kHistogramImageFromProfile;
+      uma_index = user_manager::kHistogramImageFromProfile;
       break;
     default:
-      DCHECK(selected_image_ >= 0 && selected_image_ < kDefaultImagesCount);
+      DCHECK(selected_image_ >= 0 &&
+             selected_image_ < user_manager::kDefaultImagesCount);
       image_manager->SaveUserDefaultImageIndex(selected_image_);
-      uma_index = GetDefaultImageHistogramValue(selected_image_);
+      uma_index = user_manager::GetDefaultImageHistogramValue(selected_image_);
       break;
   }
   if (user_has_selected_image_) {
     UMA_HISTOGRAM_ENUMERATION("UserImage.FirstTimeChoice",
                               uma_index,
-                              kHistogramImagesCount);
+                              user_manager::kHistogramImagesCount);
   }
   ExitScreen();
 }
 
 
-void UserImageScreen::SetProfilePictureEnabled(bool profile_picture_enabled) {
-  if (profile_picture_enabled_ == profile_picture_enabled)
-    return;
-  profile_picture_enabled_ = profile_picture_enabled;
-  if (profile_picture_enabled) {
-    notification_registrar_.Add(this,
-                                chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED,
-                                content::NotificationService::AllSources());
-    notification_registrar_.Add(
-        this,
-        chrome::NOTIFICATION_PROFILE_IMAGE_UPDATE_FAILED,
-        content::NotificationService::AllSources());
-  } else {
-    notification_registrar_.Remove(this,
-                                   chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED,
-        content::NotificationService::AllSources());
-    notification_registrar_.Remove(
-        this,
-        chrome::NOTIFICATION_PROFILE_IMAGE_UPDATE_FAILED,
-        content::NotificationService::AllSources());
-  }
-  if (actor_)
-    actor_->SetProfilePictureEnabled(profile_picture_enabled);
-}
-
-void UserImageScreen::SetUserID(const std::string& user_id) {
-  DCHECK(!user_id.empty());
-  user_id_ = user_id;
-}
-
 void UserImageScreen::PrepareToShow() {
   if (actor_)
     actor_->PrepareToShow();
 }
 
-const User* UserImageScreen::GetUser() {
-  if (user_id_.empty())
-    return UserManager::Get()->GetLoggedInUser();
-  return UserManager::Get()->FindUser(user_id_);
+const user_manager::User* UserImageScreen::GetUser() {
+  return user_manager::UserManager::Get()->GetLoggedInUser();
 }
 
 UserImageManager* UserImageScreen::GetUserImageManager() {
-  return UserManager::Get()->GetUserImageManager(GetUser()->email());
+  return ChromeUserManager::Get()->GetUserImageManager(GetUser()->email());
 }
 
 UserImageSyncObserver* UserImageScreen::GetSyncObserver() {
@@ -263,8 +236,7 @@ void UserImageScreen::Show() {
     return;
 
   DCHECK(!policy_registrar_);
-  Profile* profile = UserManager::Get()->GetProfileByUser(GetUser());
-  if (profile) {
+  if (Profile* profile = ProfileHelper::Get()->GetProfileByUser(GetUser())) {
     policy::PolicyService* policy_service =
         policy::ProfilePolicyConnectorFactory::GetForProfile(profile)->
             policy_service();
@@ -309,19 +281,17 @@ void UserImageScreen::Show() {
   }
   CameraPresenceNotifier::GetInstance()->AddObserver(this);
   actor_->Show();
-  actor_->SetProfilePictureEnabled(profile_picture_enabled_);
 
   selected_image_ = GetUser()->image_index();
   actor_->SelectImage(selected_image_);
 
-  if (profile_picture_enabled_) {
-    // Start fetching the profile image.
-    GetUserImageManager()->DownloadProfileImage(kProfileDownloadReason);
-  }
+  // Start fetching the profile image.
+  GetUserImageManager()->DownloadProfileImage(kProfileDownloadReason);
 }
 
 void UserImageScreen::Hide() {
   CameraPresenceNotifier::GetInstance()->RemoveObserver(this);
+  notification_registrar_.RemoveAll();
   if (actor_)
     actor_->Hide();
 }
@@ -338,7 +308,6 @@ void UserImageScreen::OnActorDestroyed(UserImageScreenActor* actor) {
 void UserImageScreen::Observe(int type,
                               const content::NotificationSource& source,
                               const content::NotificationDetails& details) {
-  DCHECK(profile_picture_enabled_);
   switch (type) {
     case chrome::NOTIFICATION_PROFILE_IMAGE_UPDATED: {
       // We've got a new profile image.