| 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 |