// 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. package org.chromium.mojo.bindings; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; import java.nio.ByteBuffer; import java.nio.ByteOrder; /** * Utility class for testing message validation. The file format used to describe a message is * described in The format is described in * mojo/public/cpp/bindings/tests/validation_test_input_parser.h */ @JNINamespace("mojo::android") public class ValidationTestUtil { /** * Content of a '.data' file. */ public static class Data { private final ByteBuffer mData; private final int mHandlesCount; private final String mErrorMessage; public ByteBuffer getData() { return mData; } public int getHandlesCount() { return mHandlesCount; } public String getErrorMessage() { return mErrorMessage; } private Data(ByteBuffer data, int handlesCount, String errorMessage) { this.mData = data; this.mHandlesCount = handlesCount; this.mErrorMessage = errorMessage; } } /** * Parse a '.data' file. */ public static Data parseData(String dataAsString) { return nativeParseData(dataAsString); } private static native Data nativeParseData(String dataAsString); @CalledByNative private static Data buildData(ByteBuffer data, int handlesCount, String errorMessage) { ByteBuffer copiedData = null; if (data != null) { copiedData = ByteBuffer.allocateDirect(data.limit()); copiedData.order(ByteOrder.LITTLE_ENDIAN); copiedData.put(data); copiedData.flip(); } return new Data(copiedData, handlesCount, errorMessage); } }