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

Side by Side Diff: components/user_manager/user_image/user_image.cc

Issue 395133002: Clean up. Experimental user avatars removed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Libvpx update. Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « components/user_manager/user_image/user_image.h ('k') | media/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/user_manager/user_image/user_image.h" 5 #include "components/user_manager/user_image/user_image.h"
6 6
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "third_party/skia/include/core/SkBitmap.h" 8 #include "third_party/skia/include/core/SkBitmap.h"
9 #include "ui/gfx/codec/jpeg_codec.h" 9 #include "ui/gfx/codec/jpeg_codec.h"
10 10
11 namespace user_manager { 11 namespace user_manager {
12 12
13 namespace { 13 namespace {
14 14
15 // Default quality for encoding user images. 15 // Default quality for encoding user images.
16 const int kDefaultEncodingQuality = 90; 16 const int kDefaultEncodingQuality = 90;
17 17
18 bool IsAnimatedImage(const UserImage::RawImage& data) {
19 const char kGIFStamp[] = "GIF";
20 const size_t kGIFStampLength = sizeof(kGIFStamp) - 1;
21
22 if (data.size() >= kGIFStampLength &&
23 memcmp(&data[0], kGIFStamp, kGIFStampLength) == 0) {
24 return true;
25 }
26 return false;
27 }
28
29 bool EncodeImageSkia(const gfx::ImageSkia& image, 18 bool EncodeImageSkia(const gfx::ImageSkia& image,
30 std::vector<unsigned char>* output) { 19 std::vector<unsigned char>* output) {
31 TRACE_EVENT2("oobe", "EncodeImageSkia", 20 TRACE_EVENT2("oobe", "EncodeImageSkia",
32 "width", image.width(), "height", image.height()); 21 "width", image.width(), "height", image.height());
33 if (image.isNull()) 22 if (image.isNull())
34 return false; 23 return false;
35 const SkBitmap& bitmap = *image.bitmap(); 24 const SkBitmap& bitmap = *image.bitmap();
36 SkAutoLockPixels lock_image(bitmap); 25 SkAutoLockPixels lock_image(bitmap);
37 return gfx::JPEGCodec::Encode( 26 return gfx::JPEGCodec::Encode(
38 reinterpret_cast<unsigned char*>(bitmap.getAddr32(0, 0)), 27 reinterpret_cast<unsigned char*>(bitmap.getAddr32(0, 0)),
(...skipping 12 matching lines...) Expand all
51 if (EncodeImageSkia(image, &raw_image)) { 40 if (EncodeImageSkia(image, &raw_image)) {
52 UserImage result(image, raw_image); 41 UserImage result(image, raw_image);
53 result.MarkAsSafe(); 42 result.MarkAsSafe();
54 return result; 43 return result;
55 } 44 }
56 return UserImage(image); 45 return UserImage(image);
57 } 46 }
58 47
59 UserImage::UserImage() 48 UserImage::UserImage()
60 : has_raw_image_(false), 49 : has_raw_image_(false),
61 has_animated_image_(false),
62 is_safe_format_(false) { 50 is_safe_format_(false) {
63 } 51 }
64 52
65 UserImage::UserImage(const gfx::ImageSkia& image) 53 UserImage::UserImage(const gfx::ImageSkia& image)
66 : image_(image), 54 : image_(image),
67 has_raw_image_(false), 55 has_raw_image_(false),
68 has_animated_image_(false),
69 is_safe_format_(false) { 56 is_safe_format_(false) {
70 } 57 }
71 58
72 UserImage::UserImage(const gfx::ImageSkia& image, 59 UserImage::UserImage(const gfx::ImageSkia& image,
73 const RawImage& raw_image) 60 const RawImage& raw_image)
74 : image_(image), 61 : image_(image),
75 has_raw_image_(false), 62 has_raw_image_(false),
76 has_animated_image_(false),
77 is_safe_format_(false) { 63 is_safe_format_(false) {
78 if (IsAnimatedImage(raw_image)) { 64 has_raw_image_ = true;
79 has_animated_image_ = true; 65 raw_image_ = raw_image;
80 animated_image_ = raw_image;
81 if (EncodeImageSkia(image_, &raw_image_)) {
82 has_raw_image_ = true;
83 MarkAsSafe();
84 }
85 } else {
86 has_raw_image_ = true;
87 raw_image_ = raw_image;
88 }
89 } 66 }
90 67
91 UserImage::~UserImage() {} 68 UserImage::~UserImage() {}
92 69
93 void UserImage::DiscardRawImage() { 70 void UserImage::DiscardRawImage() {
94 RawImage().swap(raw_image_); // Clear |raw_image_|. 71 RawImage().swap(raw_image_); // Clear |raw_image_|.
95 } 72 }
96 73
97 void UserImage::MarkAsSafe() { 74 void UserImage::MarkAsSafe() {
98 is_safe_format_ = true; 75 is_safe_format_ = true;
99 } 76 }
100 77
101 } // namespace user_manager 78 } // namespace user_manager
OLDNEW
« no previous file with comments | « components/user_manager/user_image/user_image.h ('k') | media/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698