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

Side by Side Diff: chrome/browser/chromeos/login/user.cc

Issue 10454044: Added support for animated/nonanimated user image. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/chromeos/login/user.h" 5 #include "chrome/browser/chromeos/login/user.h"
6 6
7 #include "base/stringprintf.h" 7 #include "base/stringprintf.h"
8 #include "chrome/browser/chromeos/login/default_user_images.h" 8 #include "chrome/browser/chromeos/login/default_user_images.h"
9 #include "chrome/browser/chromeos/login/user_image.h"
9 #include "chrome/browser/chromeos/login/user_manager.h" 10 #include "chrome/browser/chromeos/login/user_manager.h"
10 #include "grit/theme_resources.h" 11 #include "grit/theme_resources.h"
11 #include "ui/base/resource/resource_bundle.h" 12 #include "ui/base/resource/resource_bundle.h"
12 13
13 namespace chromeos { 14 namespace chromeos {
14 15
15 namespace { 16 namespace {
16 17
17 // Resource ID of the image to use as stub image. 18 // Resource ID of the image to use as stub image.
18 const int kStubImageResourceID = IDR_PROFILE_PICTURE_LOADING; 19 const int kStubImageResourceID = IDR_PROFILE_PICTURE_LOADING;
19 20
20 // Returns account name portion of an email. 21 // Returns account name portion of an email.
21 std::string GetUserName(const std::string& email) { 22 std::string GetUserName(const std::string& email) {
22 std::string::size_type i = email.find('@'); 23 std::string::size_type i = email.find('@');
23 if (i == 0 || i == std::string::npos) { 24 if (i == 0 || i == std::string::npos) {
24 return email; 25 return email;
25 } 26 }
26 return email.substr(0, i); 27 return email.substr(0, i);
27 } 28 }
28 29
30 bool IsGIFImage(const std::vector<unsigned char>& data) {
Ivan Korotkov 2012/05/29 10:50:23 Feels like this should part of UserImage.
ygorshenin1 2012/05/30 12:17:34 Done.
31 const char* kGIFStamp = "GIF";
Ivan Korotkov 2012/05/29 10:50:23 Better: static const char kGIFStamp[] = "GIF"; the
ygorshenin1 2012/05/30 12:17:34 Done.
32 const size_t gif_stamp_len = strlen(kGIFStamp);
33
34 if (data.size() >= gif_stamp_len &&
35 memcmp(&data[0], kGIFStamp, gif_stamp_len) == 0) {
36 return true;
37 }
38 return false;
39 }
40
29 } // namespace 41 } // namespace
30 42
31 User::User(const std::string& email, bool is_guest) 43 User::User(const std::string& email, bool is_guest)
32 : email_(email), 44 : email_(email),
45 has_gif_image_(false),
33 oauth_token_status_(OAUTH_TOKEN_STATUS_UNKNOWN), 46 oauth_token_status_(OAUTH_TOKEN_STATUS_UNKNOWN),
34 image_index_(kInvalidImageIndex), 47 image_index_(kInvalidImageIndex),
35 image_is_stub_(false), 48 image_is_stub_(false),
36 is_guest_(is_guest) { 49 is_guest_(is_guest) {
37 // The email address of a demo user is for internal purposes only, 50 // The email address of a demo user is for internal purposes only,
38 // never meant for display. 51 // never meant for display.
39 if (email != kDemoUser) { 52 if (email != kDemoUser) {
40 display_email_ = email; 53 display_email_ = email;
41 is_demo_user_ = false; 54 is_demo_user_ = false;
42 } else { 55 } else {
43 is_demo_user_ = true; 56 is_demo_user_ = true;
44 } 57 }
45 image_ = *ResourceBundle::GetSharedInstance().GetBitmapNamed( 58 image_ = *ResourceBundle::GetSharedInstance().GetBitmapNamed(
46 kDefaultImageResources[0]); 59 kDefaultImageResources[0]);
47 } 60 }
48 61
49 User::~User() {} 62 User::~User() {}
50 63
51 void User::SetImage(const SkBitmap& image, int image_index) { 64 void User::SetImage(const UserImage& user_image, int image_index) {
52 image_ = image; 65 image_ = user_image.image();
53 image_index_ = image_index; 66 image_index_ = image_index;
54 image_is_stub_ = false; 67 image_is_stub_ = false;
68 if (user_image.has_raw_image() && IsGIFImage(user_image.raw_image())) {
69 has_gif_image_ = true;
70 gif_image_ = user_image.raw_image();
71 } else {
72 has_gif_image_ = false;
73 std::vector<unsigned char> tmp;
74 gif_image_.swap(tmp);
Ivan Korotkov 2012/05/29 10:50:23 Why not vector::clear?
ygorshenin1 2012/05/30 12:17:34 To release buffer allocated by vector. Usually, cl
75 }
55 } 76 }
56 77
57 void User::SetStubImage(int image_index) { 78 void User::SetStubImage(int image_index) {
58 image_ = *ResourceBundle::GetSharedInstance(). 79 image_ = *ResourceBundle::GetSharedInstance().
59 GetBitmapNamed(kStubImageResourceID); 80 GetBitmapNamed(kStubImageResourceID);
60 image_index_ = image_index; 81 image_index_ = image_index;
61 image_is_stub_ = true; 82 image_is_stub_ = true;
62 } 83 }
63 84
64 void User::SetWallpaperThumbnail(const SkBitmap& wallpaper_thumbnail) { 85 void User::SetWallpaperThumbnail(const SkBitmap& wallpaper_thumbnail) {
(...skipping 21 matching lines...) Expand all
86 } 107 }
87 size_t domain_start = at_pos + 1; 108 size_t domain_start = at_pos + 1;
88 std::string domain = user_email.substr(domain_start, 109 std::string domain = user_email.substr(domain_start,
89 user_email.length() - domain_start); 110 user_email.length() - domain_start);
90 return base::StringPrintf("%s (%s)", 111 return base::StringPrintf("%s (%s)",
91 GetDisplayName().c_str(), 112 GetDisplayName().c_str(),
92 domain.c_str()); 113 domain.c_str());
93 } 114 }
94 115
95 } // namespace chromeos 116 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698