blob: 812c697e66c4394b1c0ed395fdc8bdd6177cd5fa [file] [log] [blame]
// Copyright 2020 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 <memory>
#include "base/containers/span.h"
#include "base/memory/scoped_refptr.h"
#include "cc/paint/skottie_transfer_cache_entry.h"
#include "cc/paint/skottie_wrapper.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace cc {
namespace {
// A skottie animation with solid green color for the first 2.5 seconds and then
// a solid blue color for the next 2.5 seconds.
constexpr char kData[] =
"{"
" \"v\" : \"4.12.0\","
" \"fr\": 30,"
" \"w\" : 400,"
" \"h\" : 200,"
" \"ip\": 0,"
" \"op\": 150,"
" \"assets\": [],"
" \"layers\": ["
" {"
" \"ty\": 1,"
" \"sw\": 400,"
" \"sh\": 200,"
" \"sc\": \"#00ff00\","
" \"ip\": 0,"
" \"op\": 75"
" },"
" {"
" \"ty\": 1,"
" \"sw\": 400,"
" \"sh\": 200,"
" \"sc\": \"#0000ff\","
" \"ip\": 76,"
" \"op\": 150"
" }"
" ]"
"}";
} // namespace
TEST(SkottieTransferCacheEntryTest, SerializationDeserialization) {
std::vector<uint8_t> a_data(std::strlen(kData));
a_data.assign(reinterpret_cast<const uint8_t*>(kData),
reinterpret_cast<const uint8_t*>(kData) + std::strlen(kData));
scoped_refptr<SkottieWrapper> skottie =
SkottieWrapper::CreateSerializable(std::move(a_data));
// Serialize
auto client_entry(std::make_unique<ClientSkottieTransferCacheEntry>(skottie));
uint32_t size = client_entry->SerializedSize();
std::vector<uint8_t> data(size);
ASSERT_TRUE(client_entry->Serialize(
base::make_span(static_cast<uint8_t*>(data.data()), size)));
// De-serialize
auto entry(std::make_unique<ServiceSkottieTransferCacheEntry>());
ASSERT_TRUE(entry->Deserialize(
nullptr, base::make_span(static_cast<uint8_t*>(data.data()), size)));
EXPECT_EQ(entry->skottie()->id(), skottie->id());
EXPECT_EQ(entry->skottie()->duration(), skottie->duration());
EXPECT_EQ(entry->skottie()->size(), skottie->size());
}
} // namespace cc