134504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org/*
234504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org * Copyright 2013 Google Inc.
334504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org *
434504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be
534504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org * found in the LICENSE file.
634504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org */
734504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org
834504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org#include "SkFlattenableSerialization.h"
934504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org
1034504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org#include "SkData.h"
1177e079af1a909ee9d14306db48561d77e2f9fcabcommit-bot@chromium.org#include "SkValidatingReadBuffer.h"
128b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org#include "SkWriteBuffer.h"
1334504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org
1477e079af1a909ee9d14306db48561d77e2f9fcabcommit-bot@chromium.orgSkData* SkValidatingSerializeFlattenable(SkFlattenable* flattenable) {
15a2bd2d12ad9504583e9311404fcd82b40df49d30commit-bot@chromium.org    SkWriteBuffer writer(SkWriteBuffer::kValidation_Flag);
1634504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org    writer.writeFlattenable(flattenable);
176fcd28ba1de83b72f4c8343ccec27d26c127de32reed@google.com    size_t size = writer.bytesWritten();
1833a30503d76fdd989358cedd78445ba96bb809ddreed    SkData* data = SkData::NewUninitialized(size);
1933a30503d76fdd989358cedd78445ba96bb809ddreed    writer.writeToMemory(data->writable_data());
2033a30503d76fdd989358cedd78445ba96bb809ddreed    return data;
2134504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org}
2234504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org
2377e079af1a909ee9d14306db48561d77e2f9fcabcommit-bot@chromium.orgSkFlattenable* SkValidatingDeserializeFlattenable(const void* data, size_t size,
2477e079af1a909ee9d14306db48561d77e2f9fcabcommit-bot@chromium.org                                                  SkFlattenable::Type type) {
2577e079af1a909ee9d14306db48561d77e2f9fcabcommit-bot@chromium.org    SkValidatingReadBuffer buffer(data, size);
2677e079af1a909ee9d14306db48561d77e2f9fcabcommit-bot@chromium.org    return buffer.readFlattenable(type);
2734504ad9242e1c45ef9c1eb74edf437992df98b4commit-bot@chromium.org}
28