Index: chrome/browser/ui/app_list/fast_show_pickler.cc |
diff --git a/chrome/browser/ui/app_list/fast_show_pickler.cc b/chrome/browser/ui/app_list/fast_show_pickler.cc |
deleted file mode 100644 |
index 5aa2b4752126572163084172cffbbdc5b05dbb47..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/app_list/fast_show_pickler.cc |
+++ /dev/null |
@@ -1,244 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/ui/app_list/fast_show_pickler.h" |
- |
-#include <stddef.h> |
-#include <utility> |
- |
-#include "third_party/skia/include/core/SkBitmap.h" |
-#include "ui/app_list/app_list_item.h" |
-#include "ui/gfx/image/image_skia_rep.h" |
- |
-namespace { |
- |
-using app_list::AppListItem; |
-using app_list::AppListModel; |
- |
-// These have the same meaning as SkBitmap::Config. Reproduced here to insure |
-// against their value changing in Skia. If the order of these changes kVersion |
-// should be incremented. |
-enum ImageFormat { |
- NONE, |
- A8, |
- INDEX_8, |
- RGB_565, |
- ARGB_4444, |
- ARGB_8888, |
-}; |
- |
-bool FormatToColorType(ImageFormat format, SkColorType* out) { |
- switch (format) { |
- case NONE: |
- *out = kUnknown_SkColorType; |
- break; |
- case A8: |
- *out = kAlpha_8_SkColorType; |
- break; |
- case INDEX_8: |
- *out = kIndex_8_SkColorType; |
- break; |
- case RGB_565: |
- *out = kRGB_565_SkColorType; |
- break; |
- case ARGB_4444: |
- *out = kARGB_4444_SkColorType; |
- break; |
- case ARGB_8888: |
- *out = kN32_SkColorType; |
- break; |
- default: return false; |
- } |
- return true; |
-} |
- |
-bool ColorTypeToFormat(SkColorType colorType, ImageFormat* out) { |
- switch (colorType) { |
- case kUnknown_SkColorType: |
- *out = NONE; |
- break; |
- case kAlpha_8_SkColorType: |
- *out = A8; |
- break; |
- case kIndex_8_SkColorType: |
- *out = INDEX_8; |
- break; |
- case kRGB_565_SkColorType: |
- *out = RGB_565; |
- break; |
- case kARGB_4444_SkColorType: |
- *out = ARGB_4444; |
- break; |
- case kN32_SkColorType: |
- *out = ARGB_8888; |
- break; |
- default: return false; |
- } |
- return true; |
-} |
- |
-bool PickleImage(base::Pickle* pickle, const gfx::ImageSkia& image) { |
- std::vector<gfx::ImageSkiaRep> reps(image.image_reps()); |
- pickle->WriteInt(static_cast<int>(reps.size())); |
- for (std::vector<gfx::ImageSkiaRep>::const_iterator it = reps.begin(); |
- it != reps.end(); ++it) { |
- pickle->WriteFloat(it->scale()); |
- pickle->WriteInt(it->pixel_width()); |
- pickle->WriteInt(it->pixel_height()); |
- ImageFormat format = NONE; |
- if (!ColorTypeToFormat(it->sk_bitmap().colorType(), &format)) |
- return false; |
- pickle->WriteInt(static_cast<int>(format)); |
- int size = static_cast<int>(it->sk_bitmap().getSafeSize()); |
- pickle->WriteInt(size); |
- SkBitmap bitmap = it->sk_bitmap(); |
- SkAutoLockPixels lock(bitmap); |
- pickle->WriteBytes(bitmap.getPixels(), size); |
- } |
- return true; |
-} |
- |
-bool UnpickleImage(base::PickleIterator* it, gfx::ImageSkia* out) { |
- int rep_count = 0; |
- if (!it->ReadInt(&rep_count)) |
- return false; |
- |
- gfx::ImageSkia result; |
- for (int i = 0; i < rep_count; ++i) { |
- float scale = 0.0f; |
- if (!it->ReadFloat(&scale)) |
- return false; |
- |
- int width = 0; |
- if (!it->ReadInt(&width)) |
- return false; |
- |
- int height = 0; |
- if (!it->ReadInt(&height)) |
- return false; |
- |
- int format_int = 0; |
- if (!it->ReadInt(&format_int)) |
- return false; |
- ImageFormat format = static_cast<ImageFormat>(format_int); |
- SkColorType color_type = kUnknown_SkColorType; |
- if (!FormatToColorType(format, &color_type)) |
- return false; |
- |
- int size = 0; |
- if (!it->ReadInt(&size)) |
- return false; |
- |
- const char* pixels = NULL; |
- if (!it->ReadBytes(&pixels, size)) |
- return false; |
- |
- SkBitmap bitmap; |
- if (!bitmap.tryAllocPixels(SkImageInfo::Make( |
- width, height, color_type, kPremul_SkAlphaType))) |
- return false; |
- |
- memcpy(bitmap.getPixels(), pixels, bitmap.getSize()); |
- result.AddRepresentation(gfx::ImageSkiaRep(bitmap, scale)); |
- } |
- |
- *out = result; |
- return true; |
-} |
- |
-} // namespace |
- |
-std::unique_ptr<AppListItem> FastShowPickler::UnpickleAppListItem( |
- base::PickleIterator* it) { |
- std::string id; |
- if (!it->ReadString(&id)) |
- return std::unique_ptr<AppListItem>(); |
- std::unique_ptr<AppListItem> result(new AppListItem(id)); |
- std::string name; |
- if (!it->ReadString(&name)) |
- return std::unique_ptr<AppListItem>(); |
- std::string short_name; |
- if (!it->ReadString(&short_name)) |
- return std::unique_ptr<AppListItem>(); |
- result->SetNameAndShortName(name, short_name); |
- gfx::ImageSkia icon; |
- if (!UnpickleImage(it, &icon)) |
- return std::unique_ptr<AppListItem>(); |
- result->SetIcon(icon); |
- return result; |
-} |
- |
-bool FastShowPickler::PickleAppListItem(base::Pickle* pickle, |
- AppListItem* item) { |
- if (!pickle->WriteString(item->id())) |
- return false; |
- if (!pickle->WriteString(item->name())) |
- return false; |
- if (!pickle->WriteString(item->short_name())) |
- return false; |
- if (!PickleImage(pickle, item->icon())) |
- return false; |
- return true; |
-} |
- |
-void FastShowPickler::CopyOverItem(AppListItem* src_item, |
- AppListItem* dest_item) { |
- dest_item->SetNameAndShortName(src_item->name(), src_item->short_name()); |
- dest_item->SetIcon(src_item->icon()); |
- // Do not set folder_id, pass that to AppListModel::AddItemToFolder() instead. |
-} |
- |
-// The version of the pickle format defined here. This needs to be incremented |
-// whenever this format is changed so new clients can invalidate old versions. |
-const int FastShowPickler::kVersion = 4; |
- |
-std::unique_ptr<base::Pickle> FastShowPickler::PickleAppListModelForFastShow( |
- AppListModel* model) { |
- std::unique_ptr<base::Pickle> result(new base::Pickle); |
- if (!result->WriteInt(kVersion)) |
- return std::unique_ptr<base::Pickle>(); |
- if (!result->WriteInt((int)model->top_level_item_list()->item_count())) |
- return std::unique_ptr<base::Pickle>(); |
- for (size_t i = 0; i < model->top_level_item_list()->item_count(); ++i) { |
- if (!PickleAppListItem(result.get(), |
- model->top_level_item_list()->item_at(i))) { |
- return std::unique_ptr<base::Pickle>(); |
- } |
- } |
- return result; |
-} |
- |
-void FastShowPickler::CopyOver(AppListModel* src, AppListModel* dest) { |
- DCHECK_EQ(0u, dest->top_level_item_list()->item_count()); |
- for (size_t i = 0; i < src->top_level_item_list()->item_count(); i++) { |
- AppListItem* src_item = src->top_level_item_list()->item_at(i); |
- std::unique_ptr<AppListItem> dest_item(new AppListItem(src_item->id())); |
- CopyOverItem(src_item, dest_item.get()); |
- dest->AddItemToFolder(std::move(dest_item), src_item->folder_id()); |
- } |
-} |
- |
-std::unique_ptr<AppListModel> FastShowPickler::UnpickleAppListModelForFastShow( |
- base::Pickle* pickle) { |
- base::PickleIterator it(*pickle); |
- int read_version = 0; |
- if (!it.ReadInt(&read_version)) |
- return std::unique_ptr<AppListModel>(); |
- if (read_version != kVersion) |
- return std::unique_ptr<AppListModel>(); |
- int app_count = 0; |
- if (!it.ReadInt(&app_count)) |
- return std::unique_ptr<AppListModel>(); |
- |
- std::unique_ptr<AppListModel> model(new AppListModel); |
- for (int i = 0; i < app_count; ++i) { |
- std::unique_ptr<AppListItem> item(UnpickleAppListItem(&it)); |
- if (!item) |
- return std::unique_ptr<AppListModel>(); |
- std::string folder_id = item->folder_id(); |
- model->AddItemToFolder(std::move(item), folder_id); |
- } |
- |
- return model; |
-} |