blob: 396f5f72383241b3b516c83e76d50ad6dfa59cc2 [file] [log] [blame]
// Copyright 2014 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.
library authentication_impl_db_mojom;
import 'package:mojo/bindings.dart' as bindings;
class Db extends bindings.Struct {
static const List<bindings.StructDataHeader> kVersions = const [
const bindings.StructDataHeader(24, 0)
];
int version = 0;
Map<String, String> lastSelectedAccounts = null;
Db() : super(kVersions.last.size);
static Db deserialize(bindings.Message message) {
var decoder = new bindings.Decoder(message);
var result = decode(decoder);
if (decoder.excessHandles != null) {
decoder.excessHandles.forEach((h) => h.close());
}
return result;
}
static Db decode(bindings.Decoder decoder0) {
if (decoder0 == null) {
return null;
}
Db result = new Db();
var mainDataHeader = decoder0.decodeStructDataHeader();
if (mainDataHeader.version <= kVersions.last.version) {
// Scan in reverse order to optimize for more recent versions.
for (int i = kVersions.length - 1; i >= 0; --i) {
if (mainDataHeader.version >= kVersions[i].version) {
if (mainDataHeader.size == kVersions[i].size) {
// Found a match.
break;
}
throw new bindings.MojoCodecError(
'Header size doesn\'t correspond to known version size.');
}
}
} else if (mainDataHeader.size < kVersions.last.size) {
throw new bindings.MojoCodecError(
'Message newer than the last known version cannot be shorter than '
'required by the last known version.');
}
if (mainDataHeader.version >= 0) {
result.version = decoder0.decodeUint32(8);
}
if (mainDataHeader.version >= 0) {
var decoder1 = decoder0.decodePointer(16, false);
{
decoder1.decodeDataHeaderForMap();
List<String> keys0;
List<String> values0;
{
var decoder2 = decoder1.decodePointer(bindings.ArrayDataHeader.kHeaderSize, false);
{
var si2 = decoder2.decodeDataHeaderForPointerArray(bindings.kUnspecifiedArrayLength);
keys0 = new List<String>(si2.numElements);
for (int i2 = 0; i2 < si2.numElements; ++i2) {
keys0[i2] = decoder2.decodeString(bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i2, false);
}
}
}
{
var decoder2 = decoder1.decodePointer(bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize, false);
{
var si2 = decoder2.decodeDataHeaderForPointerArray(keys0.length);
values0 = new List<String>(si2.numElements);
for (int i2 = 0; i2 < si2.numElements; ++i2) {
values0[i2] = decoder2.decodeString(bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i2, false);
}
}
}
result.lastSelectedAccounts = new Map<String, String>.fromIterables(
keys0, values0);
}
}
return result;
}
void encode(bindings.Encoder encoder) {
var encoder0 = encoder.getStructEncoderAtOffset(kVersions.last);
try {
encoder0.encodeUint32(version, 8);
} on bindings.MojoCodecError catch(e) {
e.message = "Error encountered while encoding field "
"version of struct Db: $e";
rethrow;
}
try {
if (lastSelectedAccounts == null) {
encoder0.encodeNullPointer(16, false);
} else {
var encoder1 = encoder0.encoderForMap(16);
var keys0 = lastSelectedAccounts.keys.toList();
var values0 = lastSelectedAccounts.values.toList();
{
var encoder2 = encoder1.encodePointerArray(keys0.length, bindings.ArrayDataHeader.kHeaderSize, bindings.kUnspecifiedArrayLength);
for (int i1 = 0; i1 < keys0.length; ++i1) {
encoder2.encodeString(keys0[i1], bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1, false);
}
}
{
var encoder2 = encoder1.encodePointerArray(values0.length, bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize, bindings.kUnspecifiedArrayLength);
for (int i1 = 0; i1 < values0.length; ++i1) {
encoder2.encodeString(values0[i1], bindings.ArrayDataHeader.kHeaderSize + bindings.kPointerSize * i1, false);
}
}
}
} on bindings.MojoCodecError catch(e) {
e.message = "Error encountered while encoding field "
"lastSelectedAccounts of struct Db: $e";
rethrow;
}
}
String toString() {
return "Db("
"version: $version" ", "
"lastSelectedAccounts: $lastSelectedAccounts" ")";
}
Map toJson() {
Map map = new Map();
map["version"] = version;
map["lastSelectedAccounts"] = lastSelectedAccounts;
return map;
}
}