OLD | NEW |
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 "chrome/browser/android/thumbnail/thumbnail_cache.h" | 5 #include "chrome/browser/android/thumbnail/thumbnail_cache.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cmath> | 8 #include <cmath> |
| 9 #include <utility> |
9 | 10 |
10 #include "base/android/path_utils.h" | 11 #include "base/android/path_utils.h" |
11 #include "base/big_endian.h" | 12 #include "base/big_endian.h" |
12 #include "base/files/file.h" | 13 #include "base/files/file.h" |
13 #include "base/files/file_enumerator.h" | 14 #include "base/files/file_enumerator.h" |
14 #include "base/files/file_path.h" | 15 #include "base/files/file_path.h" |
15 #include "base/files/file_util.h" | 16 #include "base/files/file_util.h" |
16 #include "base/strings/string_number_conversions.h" | 17 #include "base/strings/string_number_conversions.h" |
17 #include "base/threading/worker_pool.h" | 18 #include "base/threading/worker_pool.h" |
18 #include "base/time/time.h" | 19 #include "base/time/time.h" |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 | 167 |
167 DCHECK(thumbnail_meta_data_.find(tab_id) != thumbnail_meta_data_.end()); | 168 DCHECK(thumbnail_meta_data_.find(tab_id) != thumbnail_meta_data_.end()); |
168 | 169 |
169 base::Time time_stamp = thumbnail_meta_data_[tab_id].capture_time(); | 170 base::Time time_stamp = thumbnail_meta_data_[tab_id].capture_time(); |
170 scoped_ptr<Thumbnail> thumbnail = Thumbnail::Create( | 171 scoped_ptr<Thumbnail> thumbnail = Thumbnail::Create( |
171 tab_id, time_stamp, thumbnail_scale, ui_resource_provider_, this); | 172 tab_id, time_stamp, thumbnail_scale, ui_resource_provider_, this); |
172 thumbnail->SetBitmap(bitmap); | 173 thumbnail->SetBitmap(bitmap); |
173 | 174 |
174 RemoveFromReadQueue(tab_id); | 175 RemoveFromReadQueue(tab_id); |
175 MakeSpaceForNewItemIfNecessary(tab_id); | 176 MakeSpaceForNewItemIfNecessary(tab_id); |
176 cache_.Put(tab_id, thumbnail.Pass()); | 177 cache_.Put(tab_id, std::move(thumbnail)); |
177 | 178 |
178 if (use_approximation_thumbnail_) { | 179 if (use_approximation_thumbnail_) { |
179 std::pair<SkBitmap, float> approximation = | 180 std::pair<SkBitmap, float> approximation = |
180 CreateApproximation(bitmap, thumbnail_scale); | 181 CreateApproximation(bitmap, thumbnail_scale); |
181 scoped_ptr<Thumbnail> approx_thumbnail = Thumbnail::Create( | 182 scoped_ptr<Thumbnail> approx_thumbnail = Thumbnail::Create( |
182 tab_id, time_stamp, approximation.second, ui_resource_provider_, this); | 183 tab_id, time_stamp, approximation.second, ui_resource_provider_, this); |
183 approx_thumbnail->SetBitmap(approximation.first); | 184 approx_thumbnail->SetBitmap(approximation.first); |
184 approximation_cache_.Put(tab_id, approx_thumbnail.Pass()); | 185 approximation_cache_.Put(tab_id, std::move(approx_thumbnail)); |
185 } | 186 } |
186 CompressThumbnailIfNecessary(tab_id, time_stamp, bitmap, thumbnail_scale); | 187 CompressThumbnailIfNecessary(tab_id, time_stamp, bitmap, thumbnail_scale); |
187 } | 188 } |
188 | 189 |
189 void ThumbnailCache::Remove(TabId tab_id) { | 190 void ThumbnailCache::Remove(TabId tab_id) { |
190 cache_.Remove(tab_id); | 191 cache_.Remove(tab_id); |
191 approximation_cache_.Remove(tab_id); | 192 approximation_cache_.Remove(tab_id); |
192 thumbnail_meta_data_.erase(tab_id); | 193 thumbnail_meta_data_.erase(tab_id); |
193 RemoveFromDisk(tab_id); | 194 RemoveFromDisk(tab_id); |
194 RemoveFromReadQueue(tab_id); | 195 RemoveFromReadQueue(tab_id); |
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
817 time_stamp = meta_iter->second.capture_time(); | 818 time_stamp = meta_iter->second.capture_time(); |
818 | 819 |
819 MakeSpaceForNewItemIfNecessary(tab_id); | 820 MakeSpaceForNewItemIfNecessary(tab_id); |
820 scoped_ptr<Thumbnail> thumbnail = Thumbnail::Create( | 821 scoped_ptr<Thumbnail> thumbnail = Thumbnail::Create( |
821 tab_id, time_stamp, scale, ui_resource_provider_, this); | 822 tab_id, time_stamp, scale, ui_resource_provider_, this); |
822 thumbnail->SetCompressedBitmap(compressed_data, | 823 thumbnail->SetCompressedBitmap(compressed_data, |
823 content_size); | 824 content_size); |
824 if (kPreferCPUMemory) | 825 if (kPreferCPUMemory) |
825 thumbnail->CreateUIResource(); | 826 thumbnail->CreateUIResource(); |
826 | 827 |
827 cache_.Put(tab_id, thumbnail.Pass()); | 828 cache_.Put(tab_id, std::move(thumbnail)); |
828 NotifyObserversOfThumbnailRead(tab_id); | 829 NotifyObserversOfThumbnailRead(tab_id); |
829 } | 830 } |
830 | 831 |
831 ReadNextThumbnail(); | 832 ReadNextThumbnail(); |
832 } | 833 } |
833 | 834 |
834 void ThumbnailCache::NotifyObserversOfThumbnailRead(TabId tab_id) { | 835 void ThumbnailCache::NotifyObserversOfThumbnailRead(TabId tab_id) { |
835 FOR_EACH_OBSERVER( | 836 FOR_EACH_OBSERVER( |
836 ThumbnailCacheObserver, observers_, OnFinishedThumbnailRead(tab_id)); | 837 ThumbnailCacheObserver, observers_, OnFinishedThumbnailRead(tab_id)); |
837 } | 838 } |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
930 dst_bitmap.eraseColor(0); | 931 dst_bitmap.eraseColor(0); |
931 SkAutoLockPixels dst_bitmap_lock(dst_bitmap); | 932 SkAutoLockPixels dst_bitmap_lock(dst_bitmap); |
932 | 933 |
933 SkCanvas canvas(dst_bitmap); | 934 SkCanvas canvas(dst_bitmap); |
934 canvas.scale(new_scale, new_scale); | 935 canvas.scale(new_scale, new_scale); |
935 canvas.drawBitmap(bitmap, 0, 0, NULL); | 936 canvas.drawBitmap(bitmap, 0, 0, NULL); |
936 dst_bitmap.setImmutable(); | 937 dst_bitmap.setImmutable(); |
937 | 938 |
938 return std::make_pair(dst_bitmap, new_scale * scale); | 939 return std::make_pair(dst_bitmap, new_scale * scale); |
939 } | 940 } |
OLD | NEW |