summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos
diff options
context:
space:
mode:
authoravayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-25 22:58:26 +0000
committeravayvod@chromium.org <avayvod@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-25 22:58:26 +0000
commitbfc2863c1b55d9c1c6270c9b3ee41083d88c7d71 (patch)
tree7a51ea4d375cbf86cfdea1ba6d656aef8078e687 /chrome/browser/chromeos
parent2b49673d0fd51ec44b9558bdd42e63d7047358d6 (diff)
downloadchromium_src-bfc2863c1b55d9c1c6270c9b3ee41083d88c7d71.zip
chromium_src-bfc2863c1b55d9c1c6270c9b3ee41083d88c7d71.tar.gz
chromium_src-bfc2863c1b55d9c1c6270c9b3ee41083d88c7d71.tar.bz2
[cros] WebUI user image screen with photo taking implemented as a dialog.
R=altimofeev@chromium.org,nkostylev@chromium.org BUG=chromium-os:15924 TEST=Login as a new user with WebUI login/oobe, verify that the image screen functionality is the same as in views version Review URL: http://codereview.chromium.org/7484060 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@93985 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos')
-rw-r--r--chrome/browser/chromeos/login/user_image_screen.cc10
-rw-r--r--chrome/browser/chromeos/options/take_photo_dialog.cc20
-rw-r--r--chrome/browser/chromeos/options/take_photo_dialog.h13
3 files changed, 28 insertions, 15 deletions
diff --git a/chrome/browser/chromeos/login/user_image_screen.cc b/chrome/browser/chromeos/login/user_image_screen.cc
index e924abc..085cbc5 100644
--- a/chrome/browser/chromeos/login/user_image_screen.cc
+++ b/chrome/browser/chromeos/login/user_image_screen.cc
@@ -56,8 +56,14 @@ void UserImageScreen::Show() {
UserManager* user_manager = UserManager::Get();
std::string logged_in_user = user_manager->logged_in_user().email();
- actor_->SelectImage(
- user_manager->GetUserDefaultImageIndex(logged_in_user));
+ int selected_image_index =
+ user_manager->GetUserDefaultImageIndex(logged_in_user);
+ // The image must have been assigned by UserManager on new user login but
+ // under some circumstances (i.e. the data is not written to Local State
+ // or the file was corrupt) -1 could still be returned.
+ if (selected_image_index == -1)
+ selected_image_index = 0;
+ actor_->SelectImage(selected_image_index);
}
void UserImageScreen::Hide() {
diff --git a/chrome/browser/chromeos/options/take_photo_dialog.cc b/chrome/browser/chromeos/options/take_photo_dialog.cc
index 3be00bc..4c8cd1a 100644
--- a/chrome/browser/chromeos/options/take_photo_dialog.cc
+++ b/chrome/browser/chromeos/options/take_photo_dialog.cc
@@ -7,7 +7,6 @@
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/chromeos/login/helper.h"
-#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/common/chrome_notification_types.h"
#include "content/common/notification_service.h"
#include "grit/chromium_strings.h"
@@ -27,9 +26,10 @@ const int kFrameHeight = 480;
} // namespace
-TakePhotoDialog::TakePhotoDialog()
+TakePhotoDialog::TakePhotoDialog(Delegate* delegate)
: take_photo_view_(NULL),
- camera_controller_(this) {
+ camera_controller_(this),
+ delegate_(delegate) {
camera_controller_.set_frame_width(kFrameWidth);
camera_controller_.set_frame_height(kFrameHeight);
registrar_.Add(
@@ -38,6 +38,9 @@ TakePhotoDialog::TakePhotoDialog()
NotificationService::AllSources());
}
+TakePhotoDialog::~TakePhotoDialog() {
+}
+
bool TakePhotoDialog::IsDialogButtonEnabled(
MessageBoxFlags::DialogButton button) const {
if (button == MessageBoxFlags::DIALOGBUTTON_CANCEL)
@@ -56,15 +59,8 @@ bool TakePhotoDialog::Cancel() {
bool TakePhotoDialog::Accept() {
camera_controller_.Stop();
- UserManager* user_manager = UserManager::Get();
- DCHECK(user_manager);
-
- const UserManager::User& user = user_manager->logged_in_user();
- DCHECK(!user.email().empty());
-
- const SkBitmap& image = take_photo_view_->GetImage();
- user_manager->SetLoggedInUserImage(image);
- user_manager->SaveUserImage(user.email(), image);
+ if (delegate_)
+ delegate_->OnPhotoAccepted(take_photo_view_->GetImage());
return true;
}
diff --git a/chrome/browser/chromeos/options/take_photo_dialog.h b/chrome/browser/chromeos/options/take_photo_dialog.h
index 9cecd71..c6956db 100644
--- a/chrome/browser/chromeos/options/take_photo_dialog.h
+++ b/chrome/browser/chromeos/options/take_photo_dialog.h
@@ -25,7 +25,16 @@ class TakePhotoDialog : public views::DialogDelegateView,
public CameraController::Delegate,
public NotificationObserver {
public:
- TakePhotoDialog();
+ class Delegate {
+ public:
+ virtual ~Delegate() {}
+
+ // Called when user accepts the photo.
+ virtual void OnPhotoAccepted(const SkBitmap& photo) = 0;
+ };
+
+ explicit TakePhotoDialog(Delegate* delegate);
+ virtual ~TakePhotoDialog();
// views::DialogDelegate overrides.
virtual bool IsDialogButtonEnabled(
@@ -69,6 +78,8 @@ class TakePhotoDialog : public views::DialogDelegateView,
NotificationRegistrar registrar_;
+ Delegate* delegate_;
+
DISALLOW_COPY_AND_ASSIGN(TakePhotoDialog);
};