blob: 0c048add736b020122d4b27e222f1a3eea858b7b [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.base.task;
/**
* Interface to deserialize an extension from the data contained in a {@link TaskTraits} instance by
* passing it to the {@link TaskTraits#getExtension} method.
*
* @param <Extension>
* @see TaskTraits#getExtension
*/
public interface TaskTraitsExtensionDescriptor<Extension> {
/**
* Used by {@link TaskTraits} to make sure that extension data can be deserialized with this
* descriptor.
*
* @return The id for the extension that can be deserialized by this class.
*/
int getId();
/**
* Deserializes an extension for the data contained in {@link TaskTraits}. Caller must make sure
* that the data is for this extension by matching the extension id contained in the
* {@link TaskTraits} by comparing it to the one returned by {@link #getId}
*
* @param data serialized extension data
* @return Extension instance
*/
Extension fromSerializedData(byte[] data);
/**
* Serializes an extension as data contained in {@link TaskTraits}.
*
* @param extension Extension instance
* @return serialized extension data
*/
byte[] toSerializedData(Extension extension);
}