Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(522)

Unified Diff: chrome/browser/automation/automation_provider_observers_chromeos.cc

Issue 7523063: Add a hook for capturing a user profile photo and saving it to file and local state. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Addressed Nirnimesh's comments Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
+}

Powered by Google App Engine
This is Rietveld 408576698