| Index: chrome/browser/automation/automation_provider_observers_chromeos.cc
|
| diff --git a/chrome/browser/automation/automation_provider_observers_chromeos.cc b/chrome/browser/automation/automation_provider_observers_chromeos.cc
|
| index 940bd5a32281cedef4a8c05a8c8665aa0e9efca8..2a5f1aa5058eb75d7e4d47ab27c475f17d16e719 100644
|
| --- a/chrome/browser/automation/automation_provider_observers_chromeos.cc
|
| +++ b/chrome/browser/automation/automation_provider_observers_chromeos.cc
|
| @@ -11,6 +11,7 @@
|
| #include "chrome/browser/chromeos/login/enterprise_enrollment_screen_actor.h"
|
| #include "chrome/browser/chromeos/login/existing_user_controller.h"
|
| #include "chrome/browser/chromeos/login/screen_locker.h"
|
| +#include "chrome/browser/chromeos/login/user_manager.h"
|
| #include "chrome/browser/chromeos/login/wizard_controller.h"
|
| #include "chrome/common/chrome_notification_types.h"
|
| #include "content/common/notification_service.h"
|
| @@ -352,3 +353,59 @@ const chromeos::WifiNetwork* SSIDConnectObserver::GetWifiNetwork(
|
| }
|
| return NULL;
|
| }
|
| +
|
| +PhotoCaptureObserver::PhotoCaptureObserver(
|
| + AutomationProvider* automation,
|
| + IPC::Message* reply_message)
|
| + : automation_(automation->AsWeakPtr()),
|
| + reply_message_(reply_message) {
|
| +}
|
| +
|
| +PhotoCaptureObserver::~PhotoCaptureObserver() {
|
| + // TODO(frankf): Currently, we do not destroy TakePhotoDialog
|
| + // or any of its children.
|
| +}
|
| +
|
| +void PhotoCaptureObserver::OnCaptureSuccess(
|
| + chromeos::TakePhotoDialog* take_photo_dialog,
|
| + chromeos::TakePhotoView* take_photo_view) {
|
| + take_photo_view->ButtonPressed();
|
| +}
|
| +
|
| +void PhotoCaptureObserver::OnCaptureFailure(
|
| + chromeos::TakePhotoDialog* take_photo_dialog,
|
| + chromeos::TakePhotoView* take_photo_view) {
|
| + AutomationJSONReply(automation_,
|
| + reply_message_.release()).SendError("Capture failure");
|
| + delete this;
|
| +}
|
| +
|
| +void PhotoCaptureObserver::OnCapturingStopped(
|
| + chromeos::TakePhotoDialog* take_photo_dialog,
|
| + chromeos::TakePhotoView* take_photo_view) {
|
| + take_photo_dialog->Accept();
|
| + const SkBitmap& photo = take_photo_view->GetImage();
|
| + chromeos::UserManager* user_manager = chromeos::UserManager::Get();
|
| + if(!user_manager) {
|
| + AutomationJSONReply(automation_,
|
| + reply_message_.release()).SendError(
|
| + "No user manager");
|
| + delete this;
|
| + return;
|
| + }
|
| +
|
| + const chromeos::UserManager::User& user = user_manager->logged_in_user();
|
| + if(user.email().empty()) {
|
| + AutomationJSONReply(automation_,
|
| + reply_message_.release()).SendError(
|
| + "User email is not set");
|
| + delete this;
|
| + return;
|
| + }
|
| +
|
| + user_manager->SetLoggedInUserImage(photo);
|
| + user_manager->SaveUserImage(user.email(), photo);
|
| +
|
| + AutomationJSONReply(automation_, reply_message_.release()).SendSuccess(NULL);
|
| + delete this;
|
| +}
|
|
|