aboutsummaryrefslogtreecommitdiff
path: root/mojo/android/javatests
diff options
context:
space:
mode:
Diffstat (limited to 'mojo/android/javatests')
-rw-r--r--mojo/android/javatests/AndroidManifest.xml29
-rw-r--r--mojo/android/javatests/DEPS4
-rw-r--r--mojo/android/javatests/apk/.empty0
-rw-r--r--mojo/android/javatests/init_library.cc50
-rw-r--r--mojo/android/javatests/mojo_test_case.cc70
-rw-r--r--mojo/android/javatests/mojo_test_case.h20
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/HandleMock.java226
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java66
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/TestUtils.java32
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsHelperTest.java55
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java241
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTestUtils.java108
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsVersioningTest.java211
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/CallbacksTest.java59
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java108
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/ExecutorFactoryTest.java104
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/InterfaceControlMessageTest.java129
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/InterfacesTest.java284
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/MessageHeaderTest.java69
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/ReadAndDispatchMessageTest.java109
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/RouterTest.java231
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java175
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTest.java237
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java68
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtilTest.java151
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/bindings/test/mojom/mojo/IntegrationTestInterfaceTestHelper.java31
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/system/impl/CoreImplTest.java545
-rw-r--r--mojo/android/javatests/src/org/chromium/mojo/system/impl/WatcherImplTest.java255
-rw-r--r--mojo/android/javatests/validation_test_util.cc54
-rw-r--r--mojo/android/javatests/validation_test_util.h20
30 files changed, 0 insertions, 3741 deletions
diff --git a/mojo/android/javatests/AndroidManifest.xml b/mojo/android/javatests/AndroidManifest.xml
deleted file mode 100644
index 32a3927..0000000
--- a/mojo/android/javatests/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
- <!-- Copyright (c) 2012 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 name must be unique so suffix with "tests" so package loader
- doesn't ignore this. -->
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- package="org.chromium.mojo.tests">
-
- <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" />
-
- <uses-permission android:name="android.permission.INJECT_EVENTS"
- tools:ignore="ProtectedPermissions"/>
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.RUN_INSTRUMENTATION" />
-
- <!-- We add an application tag here just so that we can indicate that this
- package needs to link against the android.test library, which is
- needed when building test cases. -->
- <application>
- <uses-library android:name="android.test.runner" />
- </application>
-
- <instrumentation android:name="android.test.InstrumentationTestRunner"
- android:targetPackage="org.chromium.mojo.tests"
- android:label="Tests for org.chromium.mojo"/>
-
-</manifest>
diff --git a/mojo/android/javatests/DEPS b/mojo/android/javatests/DEPS
deleted file mode 100644
index 78cf465..0000000
--- a/mojo/android/javatests/DEPS
+++ /dev/null
@@ -1,4 +0,0 @@
-include_rules = [
- # out should be allowed by default, but bots are failing on this.
- "+out",
-]
diff --git a/mojo/android/javatests/apk/.empty b/mojo/android/javatests/apk/.empty
deleted file mode 100644
index e69de29..0000000
--- a/mojo/android/javatests/apk/.empty
+++ /dev/null
diff --git a/mojo/android/javatests/init_library.cc b/mojo/android/javatests/init_library.cc
deleted file mode 100644
index 9e1a593..0000000
--- a/mojo/android/javatests/init_library.cc
+++ /dev/null
@@ -1,50 +0,0 @@
-// 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.
-
-#include "base/android/base_jni_onload.h"
-#include "base/android/base_jni_registrar.h"
-#include "base/android/jni_android.h"
-#include "base/android/jni_registrar.h"
-#include "base/android/library_loader/library_loader_hooks.h"
-#include "base/bind.h"
-#include "mojo/android/javatests/mojo_test_case.h"
-#include "mojo/android/javatests/validation_test_util.h"
-#include "mojo/android/system/core_impl.h"
-#include "mojo/android/system/watcher_impl.h"
-#include "mojo/edk/embedder/embedder.h"
-
-namespace {
-
-base::android::RegistrationMethod kMojoRegisteredMethods[] = {
- {"CoreImpl", mojo::android::RegisterCoreImpl},
- {"MojoTestCase", mojo::android::RegisterMojoTestCase},
- {"ValidationTestUtil", mojo::android::RegisterValidationTestUtil},
- {"WatcherImpl", mojo::android::RegisterWatcherImpl},
-};
-
-bool RegisterJNI(JNIEnv* env) {
- return base::android::RegisterJni(env) &&
- RegisterNativeMethods(env, kMojoRegisteredMethods,
- arraysize(kMojoRegisteredMethods));
-}
-
-bool NativeInit() {
- if (!base::android::OnJNIOnLoadInit())
- return false;
-
- mojo::edk::Init();
- return true;
-}
-
-} // namespace
-
-JNI_EXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved) {
- base::android::InitVM(vm);
- JNIEnv* env = base::android::AttachCurrentThread();
- if (!base::android::OnJNIOnLoadRegisterJNI(env) || !RegisterJNI(env) ||
- !NativeInit()) {
- return -1;
- }
- return JNI_VERSION_1_4;
-}
diff --git a/mojo/android/javatests/mojo_test_case.cc b/mojo/android/javatests/mojo_test_case.cc
deleted file mode 100644
index fc59009..0000000
--- a/mojo/android/javatests/mojo_test_case.cc
+++ /dev/null
@@ -1,70 +0,0 @@
-// 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.
-
-#include "mojo/android/javatests/mojo_test_case.h"
-
-#include "base/android/jni_android.h"
-#include "base/android/scoped_java_ref.h"
-#include "base/at_exit.h"
-#include "base/bind.h"
-#include "base/location.h"
-#include "base/logging.h"
-#include "base/message_loop/message_loop.h"
-#include "base/run_loop.h"
-#include "base/single_thread_task_runner.h"
-#include "base/test/test_support_android.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "jni/MojoTestCase_jni.h"
-
-using base::android::JavaParamRef;
-
-namespace {
-
-struct TestEnvironment {
- TestEnvironment() {}
-
- base::ShadowingAtExitManager at_exit;
- base::MessageLoop message_loop;
-};
-
-} // namespace
-
-namespace mojo {
-namespace android {
-
-static void Init(JNIEnv* env, const JavaParamRef<jobject>& jcaller) {
- base::InitAndroidTestMessageLoop();
-}
-
-static jlong SetupTestEnvironment(JNIEnv* env,
- const JavaParamRef<jobject>& jcaller) {
- return reinterpret_cast<intptr_t>(new TestEnvironment());
-}
-
-static void TearDownTestEnvironment(JNIEnv* env,
- const JavaParamRef<jobject>& jcaller,
- jlong test_environment) {
- delete reinterpret_cast<TestEnvironment*>(test_environment);
-}
-
-static void RunLoop(JNIEnv* env,
- const JavaParamRef<jobject>& jcaller,
- jlong timeout_ms) {
- base::RunLoop run_loop;
- if (timeout_ms) {
- base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
- FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
- base::TimeDelta::FromMilliseconds(timeout_ms));
- run_loop.Run();
- } else {
- run_loop.RunUntilIdle();
- }
-}
-
-bool RegisterMojoTestCase(JNIEnv* env) {
- return RegisterNativesImpl(env);
-}
-
-} // namespace android
-} // namespace mojo
diff --git a/mojo/android/javatests/mojo_test_case.h b/mojo/android/javatests/mojo_test_case.h
deleted file mode 100644
index 2ce3428..0000000
--- a/mojo/android/javatests/mojo_test_case.h
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-
-#ifndef MOJO_ANDROID_JAVATESTS_CORE_TEST_H_
-#define MOJO_ANDROID_JAVATESTS_CORE_TEST_H_
-
-#include <jni.h>
-
-#include "base/android/jni_android.h"
-
-namespace mojo {
-namespace android {
-
-JNI_EXPORT bool RegisterMojoTestCase(JNIEnv* env);
-
-} // namespace android
-} // namespace mojo
-
-#endif // MOJO_SYSTEM_ANDROID_JAVATESTS_CORE_TEST_H_
diff --git a/mojo/android/javatests/src/org/chromium/mojo/HandleMock.java b/mojo/android/javatests/src/org/chromium/mojo/HandleMock.java
deleted file mode 100644
index 1f8de94..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/HandleMock.java
+++ /dev/null
@@ -1,226 +0,0 @@
-// 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;
-
-import org.chromium.mojo.system.Core;
-import org.chromium.mojo.system.Core.HandleSignalsState;
-import org.chromium.mojo.system.DataPipe;
-import org.chromium.mojo.system.DataPipe.ConsumerHandle;
-import org.chromium.mojo.system.DataPipe.ProducerHandle;
-import org.chromium.mojo.system.Handle;
-import org.chromium.mojo.system.MessagePipeHandle;
-import org.chromium.mojo.system.MojoResult;
-import org.chromium.mojo.system.ResultAnd;
-import org.chromium.mojo.system.SharedBufferHandle;
-import org.chromium.mojo.system.UntypedHandle;
-import org.chromium.mojo.system.impl.CoreImpl;
-
-import java.nio.ByteBuffer;
-import java.util.List;
-
-/**
- * A mock handle, that does nothing.
- */
-public class HandleMock implements UntypedHandle, MessagePipeHandle,
- ProducerHandle, ConsumerHandle, SharedBufferHandle {
-
- /**
- * @see Handle#close()
- */
- @Override
- public void close() {
- // Do nothing.
- }
-
- /**
- * @see Handle#querySignalsState()
- */
- @Override
- public HandleSignalsState querySignalsState() {
- return null;
- }
-
- /**
- * @see Handle#isValid()
- */
- @Override
- public boolean isValid() {
- return true;
- }
-
- /**
- * @see Handle#toUntypedHandle()
- */
- @Override
- public UntypedHandle toUntypedHandle() {
- return this;
- }
-
- /**
- * @see org.chromium.mojo.system.Handle#getCore()
- */
- @Override
- public Core getCore() {
- return CoreImpl.getInstance();
- }
-
- /**
- * @see org.chromium.mojo.system.UntypedHandle#pass()
- */
- @Override
- public HandleMock pass() {
- return this;
- }
-
- /**
- * @see Handle#releaseNativeHandle()
- */
- @Override
- public int releaseNativeHandle() {
- return 0;
- }
-
- /**
- * @see ConsumerHandle#discardData(int, DataPipe.ReadFlags)
- */
- @Override
- public int discardData(int numBytes, DataPipe.ReadFlags flags) {
- // Do nothing.
- return 0;
- }
-
- /**
- * @see ConsumerHandle#readData(java.nio.ByteBuffer, DataPipe.ReadFlags)
- */
- @Override
- public ResultAnd<Integer> readData(ByteBuffer elements, DataPipe.ReadFlags flags) {
- // Do nothing.
- return new ResultAnd<Integer>(MojoResult.OK, 0);
- }
-
- /**
- * @see ConsumerHandle#beginReadData(int, DataPipe.ReadFlags)
- */
- @Override
- public ByteBuffer beginReadData(int numBytes,
- DataPipe.ReadFlags flags) {
- // Do nothing.
- return null;
- }
-
- /**
- * @see ConsumerHandle#endReadData(int)
- */
- @Override
- public void endReadData(int numBytesRead) {
- // Do nothing.
- }
-
- /**
- * @see ProducerHandle#writeData(java.nio.ByteBuffer, DataPipe.WriteFlags)
- */
- @Override
- public ResultAnd<Integer> writeData(ByteBuffer elements, DataPipe.WriteFlags flags) {
- // Do nothing.
- return new ResultAnd<Integer>(MojoResult.OK, 0);
- }
-
- /**
- * @see ProducerHandle#beginWriteData(int, DataPipe.WriteFlags)
- */
- @Override
- public ByteBuffer beginWriteData(int numBytes,
- DataPipe.WriteFlags flags) {
- // Do nothing.
- return null;
- }
-
- /**
- * @see ProducerHandle#endWriteData(int)
- */
- @Override
- public void endWriteData(int numBytesWritten) {
- // Do nothing.
- }
-
- /**
- * @see MessagePipeHandle#writeMessage(java.nio.ByteBuffer, java.util.List,
- * MessagePipeHandle.WriteFlags)
- */
- @Override
- public void writeMessage(ByteBuffer bytes, List<? extends Handle> handles,
- WriteFlags flags) {
- // Do nothing.
- }
-
- /**
- * @see MessagePipeHandle#readMessage(java.nio.ByteBuffer, int, MessagePipeHandle.ReadFlags)
- */
- @Override
- public ResultAnd<ReadMessageResult> readMessage(
- ByteBuffer bytes, int maxNumberOfHandles, ReadFlags flags) {
- // Do nothing.
- return new ResultAnd<ReadMessageResult>(MojoResult.OK, new ReadMessageResult());
- }
-
- /**
- * @see UntypedHandle#toMessagePipeHandle()
- */
- @Override
- public MessagePipeHandle toMessagePipeHandle() {
- return this;
- }
-
- /**
- * @see UntypedHandle#toDataPipeConsumerHandle()
- */
- @Override
- public ConsumerHandle toDataPipeConsumerHandle() {
- return this;
- }
-
- /**
- * @see UntypedHandle#toDataPipeProducerHandle()
- */
- @Override
- public ProducerHandle toDataPipeProducerHandle() {
- return this;
- }
-
- /**
- * @see UntypedHandle#toSharedBufferHandle()
- */
- @Override
- public SharedBufferHandle toSharedBufferHandle() {
- return this;
- }
-
- /**
- * @see SharedBufferHandle#duplicate(SharedBufferHandle.DuplicateOptions)
- */
- @Override
- public SharedBufferHandle duplicate(DuplicateOptions options) {
- // Do nothing.
- return null;
- }
-
- /**
- * @see SharedBufferHandle#map(long, long, SharedBufferHandle.MapFlags)
- */
- @Override
- public ByteBuffer map(long offset, long numBytes, MapFlags flags) {
- // Do nothing.
- return null;
- }
-
- /**
- * @see SharedBufferHandle#unmap(java.nio.ByteBuffer)
- */
- @Override
- public void unmap(ByteBuffer buffer) {
- // Do nothing.
- }
-
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java b/mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java
deleted file mode 100644
index f4d7ab7..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// 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;
-
-import android.test.InstrumentationTestCase;
-
-import org.chromium.base.ContextUtils;
-import org.chromium.base.annotations.JNINamespace;
-import org.chromium.base.library_loader.LibraryLoader;
-import org.chromium.base.library_loader.LibraryProcessType;
-
-/**
- * Base class to test mojo. Setup the environment.
- */
-@JNINamespace("mojo::android")
-public class MojoTestCase extends InstrumentationTestCase {
-
- private long mTestEnvironmentPointer;
-
- /**
- * @see junit.framework.TestCase#setUp()
- */
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- ContextUtils.initApplicationContext(
- getInstrumentation().getTargetContext().getApplicationContext());
- LibraryLoader.get(LibraryProcessType.PROCESS_BROWSER).ensureInitialized();
- nativeInit();
- mTestEnvironmentPointer = nativeSetupTestEnvironment();
- }
-
- /**
- * @see android.test.InstrumentationTestCase#tearDown()
- */
- @Override
- protected void tearDown() throws Exception {
- nativeTearDownTestEnvironment(mTestEnvironmentPointer);
- super.tearDown();
- }
-
- /**
- * Runs the run loop for the given time.
- */
- protected void runLoop(long timeoutMS) {
- nativeRunLoop(timeoutMS);
- }
-
- /**
- * Runs the run loop until no handle or task are immediately available.
- */
- protected void runLoopUntilIdle() {
- nativeRunLoop(0);
- }
-
- private native void nativeInit();
-
- private native long nativeSetupTestEnvironment();
-
- private native void nativeTearDownTestEnvironment(long testEnvironment);
-
- private native void nativeRunLoop(long timeoutMS);
-
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/TestUtils.java b/mojo/android/javatests/src/org/chromium/mojo/TestUtils.java
deleted file mode 100644
index d10d0d7..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/TestUtils.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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;
-
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-import java.util.Random;
-
-/**
- * Utilities methods for tests.
- */
-public final class TestUtils {
-
- private static final Random RANDOM = new Random();
-
- /**
- * Returns a new direct ByteBuffer of the given size with random (but reproducible) data.
- */
- public static ByteBuffer newRandomBuffer(int size) {
- byte bytes[] = new byte[size];
- RANDOM.setSeed(size);
- RANDOM.nextBytes(bytes);
- ByteBuffer data = ByteBuffer.allocateDirect(size);
- data.order(ByteOrder.LITTLE_ENDIAN);
- data.put(bytes);
- data.flip();
- return data;
- }
-
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsHelperTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsHelperTest.java
deleted file mode 100644
index 38bd348..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsHelperTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// 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 android.support.test.filters.SmallTest;
-
-import junit.framework.TestCase;
-
-import java.nio.charset.Charset;
-
-/**
- * Testing {@link BindingsHelper}.
- */
-public class BindingsHelperTest extends TestCase {
-
- /**
- * Testing {@link BindingsHelper#utf8StringSizeInBytes(String)}.
- */
- @SmallTest
- public void testUTF8StringLength() {
- String[] stringsToTest = {
- "",
- "a",
- "hello world",
- "éléphant",
- "𠜎𠜱𠝹𠱓𠱸𠲖𠳏𠳕",
- "你午饭想吃什么",
- "你午饭想吃什么\0éléphant",
- };
- for (String s : stringsToTest) {
- assertEquals(s.getBytes(Charset.forName("utf8")).length,
- BindingsHelper.utf8StringSizeInBytes(s));
- }
- assertEquals(1, BindingsHelper.utf8StringSizeInBytes("\0"));
- String s = new StringBuilder().appendCodePoint(0x0).appendCodePoint(0x80)
- .appendCodePoint(0x800).appendCodePoint(0x10000).toString();
- assertEquals(10, BindingsHelper.utf8StringSizeInBytes(s));
- assertEquals(10, s.getBytes(Charset.forName("utf8")).length);
- }
-
- /**
- * Testing {@link BindingsHelper#align(int)}.
- */
- @SmallTest
- public void testAlign() {
- for (int i = 0; i < 3 * BindingsHelper.ALIGNMENT; ++i) {
- int j = BindingsHelper.align(i);
- assertTrue(j >= i);
- assertTrue(j % BindingsHelper.ALIGNMENT == 0);
- assertTrue(j - i < BindingsHelper.ALIGNMENT);
- }
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java
deleted file mode 100644
index d280c77..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTest.java
+++ /dev/null
@@ -1,241 +0,0 @@
-// 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 android.support.test.filters.SmallTest;
-
-import junit.framework.TestCase;
-
-import org.chromium.mojo.HandleMock;
-import org.chromium.mojo.bindings.test.mojom.imported.Color;
-import org.chromium.mojo.bindings.test.mojom.imported.Point;
-import org.chromium.mojo.bindings.test.mojom.imported.Shape;
-import org.chromium.mojo.bindings.test.mojom.imported.Thing;
-import org.chromium.mojo.bindings.test.mojom.sample.Bar;
-import org.chromium.mojo.bindings.test.mojom.sample.Bar.Type;
-import org.chromium.mojo.bindings.test.mojom.sample.DefaultsTest;
-import org.chromium.mojo.bindings.test.mojom.sample.Enum;
-import org.chromium.mojo.bindings.test.mojom.sample.Foo;
-import org.chromium.mojo.bindings.test.mojom.sample.InterfaceConstants;
-import org.chromium.mojo.bindings.test.mojom.sample.SampleServiceConstants;
-import org.chromium.mojo.bindings.test.mojom.test_structs.EmptyStruct;
-import org.chromium.mojo.bindings.test.mojom.test_structs.Rect;
-import org.chromium.mojo.system.DataPipe.ConsumerHandle;
-import org.chromium.mojo.system.DataPipe.ProducerHandle;
-import org.chromium.mojo.system.MessagePipeHandle;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Testing generated classes and associated features.
- */
-public class BindingsTest extends TestCase {
-
- /**
- * Create a new typical Bar instance.
- */
- private static Bar newBar() {
- Bar bar = new Bar();
- bar.alpha = (byte) 0x01;
- bar.beta = (byte) 0x02;
- bar.gamma = (byte) 0x03;
- bar.type = Type.BOTH;
- return bar;
- }
-
- /**
- * Create a new typical Foo instance.
- */
- private static Foo createFoo() {
- Foo foo = new Foo();
- foo.name = "HELLO WORLD";
- foo.arrayOfArrayOfBools = new boolean[][] {
- { true, false, true }, { }, { }, { false }, { true } };
- foo.bar = newBar();
- foo.a = true;
- foo.c = true;
- foo.data = new byte[] { 0x01, 0x02, 0x03 };
- foo.extraBars = new Bar[] { newBar(), newBar() };
- String[][][] strings = new String[3][2][1];
- for (int i0 = 0; i0 < strings.length; ++i0) {
- for (int i1 = 0; i1 < strings[i0].length; ++i1) {
- for (int i2 = 0; i2 < strings[i0][i1].length; ++i2) {
- strings[i0][i1][i2] = "Hello(" + i0 + ", " + i1 + ", " + i2 + ")";
- }
- }
- }
- foo.multiArrayOfStrings = strings;
- ConsumerHandle[] inputStreams = new ConsumerHandle[5];
- for (int i = 0; i < inputStreams.length; ++i) {
- inputStreams[i] = new HandleMock();
- }
- foo.inputStreams = inputStreams;
- ProducerHandle[] outputStreams = new ProducerHandle[3];
- for (int i = 0; i < outputStreams.length; ++i) {
- outputStreams[i] = new HandleMock();
- }
- foo.outputStreams = outputStreams;
- foo.source = new HandleMock();
- return foo;
- }
-
- private static Rect createRect(int x, int y, int width, int height) {
- Rect rect = new Rect();
- rect.x = x;
- rect.y = y;
- rect.width = width;
- rect.height = height;
- return rect;
- }
-
- private static <T> void checkConstantField(
- Field field, Class<T> expectedClass, T value) throws IllegalAccessException {
- assertEquals(expectedClass, field.getType());
- assertEquals(Modifier.FINAL, field.getModifiers() & Modifier.FINAL);
- assertEquals(Modifier.STATIC, field.getModifiers() & Modifier.STATIC);
- assertEquals(value, field.get(null));
- }
-
- private static <T> void checkField(Field field, Class<T> expectedClass,
- Object object, T value) throws IllegalArgumentException, IllegalAccessException {
- assertEquals(expectedClass, field.getType());
- assertEquals(0, field.getModifiers() & Modifier.FINAL);
- assertEquals(0, field.getModifiers() & Modifier.STATIC);
- assertEquals(value, field.get(object));
- }
-
- /**
- * Testing constants are correctly generated.
- */
- @SmallTest
- public void testConstants() throws NoSuchFieldException, SecurityException,
- IllegalAccessException {
- checkConstantField(SampleServiceConstants.class.getField("TWELVE"), byte.class, (byte) 12);
- checkConstantField(InterfaceConstants.class.getField("LONG"), long.class, 4405L);
- }
-
- /**
- * Testing enums are correctly generated.
- */
- @SmallTest
- public void testEnums() throws NoSuchFieldException, SecurityException,
- IllegalAccessException {
- checkConstantField(Color.class.getField("RED"), int.class, 0);
- checkConstantField(Color.class.getField("BLACK"), int.class, 1);
-
- checkConstantField(Enum.class.getField("VALUE"), int.class, 0);
-
- checkConstantField(Shape.class.getField("RECTANGLE"), int.class, 1);
- checkConstantField(Shape.class.getField("CIRCLE"), int.class, 2);
- checkConstantField(Shape.class.getField("TRIANGLE"), int.class, 3);
- }
-
- /**
- * Testing default values on structs.
- *
- * @throws IllegalAccessException
- * @throws IllegalArgumentException
- */
- @SmallTest
- public void testStructDefaults() throws NoSuchFieldException, SecurityException,
- IllegalArgumentException, IllegalAccessException {
- // Check default values.
- DefaultsTest test = new DefaultsTest();
-
- checkField(DefaultsTest.class.getField("a0"), byte.class, test, (byte) -12);
- checkField(DefaultsTest.class.getField("a1"), byte.class, test, (byte) 12);
- checkField(DefaultsTest.class.getField("a2"), short.class, test, (short) 1234);
- checkField(DefaultsTest.class.getField("a3"), short.class, test, (short) 34567);
- checkField(DefaultsTest.class.getField("a4"), int.class, test, 123456);
- checkField(DefaultsTest.class.getField("a5"), int.class, test, (int) 3456789012L);
- checkField(DefaultsTest.class.getField("a6"), long.class, test, -111111111111L);
- // -8446744073709551617 == 9999999999999999999 - 2 ^ 64.
- checkField(DefaultsTest.class.getField("a7"), long.class, test, -8446744073709551617L);
- checkField(DefaultsTest.class.getField("a8"), int.class, test, 0x12345);
- checkField(DefaultsTest.class.getField("a9"), int.class, test, -0x12345);
- checkField(DefaultsTest.class.getField("a10"), int.class, test, 1234);
- checkField(DefaultsTest.class.getField("a11"), boolean.class, test, true);
- checkField(DefaultsTest.class.getField("a12"), boolean.class, test, false);
- checkField(DefaultsTest.class.getField("a13"), float.class, test, (float) 123.25);
- checkField(DefaultsTest.class.getField("a14"), double.class, test, 1234567890.123);
- checkField(DefaultsTest.class.getField("a15"), double.class, test, 1E10);
- checkField(DefaultsTest.class.getField("a16"), double.class, test, -1.2E+20);
- checkField(DefaultsTest.class.getField("a17"), double.class, test, +1.23E-20);
- checkField(DefaultsTest.class.getField("a18"), byte[].class, test, null);
- checkField(DefaultsTest.class.getField("a19"), String.class, test, null);
- checkField(DefaultsTest.class.getField("a20"), int.class, test, Bar.Type.BOTH);
- checkField(DefaultsTest.class.getField("a21"), Point.class, test, null);
-
- assertNotNull(test.a22);
- checkField(DefaultsTest.class.getField("a22"), Thing.class, test, test.a22);
- checkField(DefaultsTest.class.getField("a23"), long.class, test, -1L);
- checkField(DefaultsTest.class.getField("a24"), long.class, test, 0x123456789L);
- checkField(DefaultsTest.class.getField("a25"), long.class, test, -0x123456789L);
- }
-
- /**
- * Testing generation of the Foo class.
- *
- * @throws IllegalAccessException
- */
- @SmallTest
- public void testFooGeneration() throws NoSuchFieldException, SecurityException,
- IllegalAccessException {
- // Checking Foo constants.
- checkConstantField(Foo.class.getField("FOOBY"), String.class, "Fooby");
-
- // Checking Foo default values.
- Foo foo = new Foo();
- checkField(Foo.class.getField("name"), String.class, foo, Foo.FOOBY);
-
- assertNotNull(foo.source);
- assertFalse(foo.source.isValid());
- checkField(Foo.class.getField("source"), MessagePipeHandle.class, foo, foo.source);
- }
-
- /**
- * Testing serialization of the Foo class.
- */
- @SmallTest
- public void testFooSerialization() {
- // Checking serialization and deserialization of a Foo object.
- Foo typicalFoo = createFoo();
- Message serializedFoo = typicalFoo.serialize(null);
- Foo deserializedFoo = Foo.deserialize(serializedFoo);
- assertEquals(typicalFoo, deserializedFoo);
- }
-
- /**
- * Testing serialization of the EmptyStruct class.
- */
- @SmallTest
- public void testEmptyStructSerialization() {
- // Checking serialization and deserialization of a EmptyStruct object.
- Message serializedStruct = new EmptyStruct().serialize(null);
- EmptyStruct emptyStruct = EmptyStruct.deserialize(serializedStruct);
- assertNotNull(emptyStruct);
- }
-
- // In testing maps we want to make sure that the key used when inserting an
- // item the key used when looking it up again are different objects. Java
- // has default implementations of equals and hashCode that use reference
- // equality and hashing, respectively, and that's not what we want for our
- // mojom values.
- @SmallTest
- public void testHashMapStructKey() {
- Map<Rect, Integer> map = new HashMap<>();
- map.put(createRect(1, 2, 3, 4), 123);
-
- Rect key = createRect(1, 2, 3, 4);
- assertNotNull(map.get(key));
- assertEquals(123, map.get(key).intValue());
-
- map.remove(key);
- assertTrue(map.isEmpty());
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTestUtils.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTestUtils.java
deleted file mode 100644
index 5554f80..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsTestUtils.java
+++ /dev/null
@@ -1,108 +0,0 @@
-// 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.mojo.TestUtils;
-import org.chromium.mojo.system.Handle;
-import org.chromium.mojo.system.MessagePipeHandle;
-import org.chromium.mojo.system.MojoException;
-import org.chromium.mojo.system.Pair;
-import org.chromium.mojo.system.impl.CoreImpl;
-
-import java.io.Closeable;
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Utility class for bindings tests.
- */
-public class BindingsTestUtils {
-
- /**
- * {@link MessageReceiver} that records any message it receives.
- */
- public static class RecordingMessageReceiver extends SideEffectFreeCloseable
- implements MessageReceiver {
-
- public final List<Message> messages = new ArrayList<Message>();
-
- /**
- * @see MessageReceiver#accept(Message)
- */
- @Override
- public boolean accept(Message message) {
- messages.add(message);
- return true;
- }
- }
-
- /**
- * {@link MessageReceiverWithResponder} that records any message it receives.
- */
- public static class RecordingMessageReceiverWithResponder extends RecordingMessageReceiver
- implements MessageReceiverWithResponder {
-
- public final List<Pair<Message, MessageReceiver>> messagesWithReceivers =
- new ArrayList<Pair<Message, MessageReceiver>>();
-
- /**
- * @see MessageReceiverWithResponder#acceptWithResponder(Message, MessageReceiver)
- */
- @Override
- public boolean acceptWithResponder(Message message, MessageReceiver responder) {
- messagesWithReceivers.add(Pair.create(message, responder));
- return true;
- }
- }
-
- /**
- * {@link ConnectionErrorHandler} that records any error it received.
- */
- public static class CapturingErrorHandler implements ConnectionErrorHandler {
-
- private MojoException mLastMojoException = null;
-
- /**
- * @see ConnectionErrorHandler#onConnectionError(MojoException)
- */
- @Override
- public void onConnectionError(MojoException e) {
- mLastMojoException = e;
- }
-
- /**
- * Returns the last recorded exception.
- */
- public MojoException getLastMojoException() {
- return mLastMojoException;
- }
-
- }
-
- /**
- * Creates a new valid {@link Message}. The message will have a valid header.
- */
- public static Message newRandomMessage(int size) {
- assert size > 16;
- ByteBuffer message = TestUtils.newRandomBuffer(size);
- int[] headerAsInts = {16, 2, 0, 0};
- for (int i = 0; i < 4; ++i) {
- message.putInt(4 * i, headerAsInts[i]);
- }
- message.position(0);
- return new Message(message, new ArrayList<Handle>());
- }
-
- public static <I extends Interface, P extends Interface.Proxy> P newProxyOverPipe(
- Interface.Manager<I, P> manager, I impl, List<Closeable> toClose) {
- Pair<MessagePipeHandle, MessagePipeHandle> handles =
- CoreImpl.getInstance().createMessagePipe(null);
- P proxy = manager.attachProxy(handles.first, 0);
- toClose.add(proxy);
- manager.bind(impl, handles.second);
- return proxy;
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsVersioningTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsVersioningTest.java
deleted file mode 100644
index eea92ab..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/BindingsVersioningTest.java
+++ /dev/null
@@ -1,211 +0,0 @@
-// Copyright 2015 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 android.support.test.filters.SmallTest;
-
-import org.chromium.mojo.MojoTestCase;
-import org.chromium.mojo.bindings.test.mojom.test_structs.MultiVersionStruct;
-import org.chromium.mojo.bindings.test.mojom.test_structs.MultiVersionStructV0;
-import org.chromium.mojo.bindings.test.mojom.test_structs.MultiVersionStructV1;
-import org.chromium.mojo.bindings.test.mojom.test_structs.MultiVersionStructV3;
-import org.chromium.mojo.bindings.test.mojom.test_structs.MultiVersionStructV5;
-import org.chromium.mojo.bindings.test.mojom.test_structs.MultiVersionStructV7;
-import org.chromium.mojo.bindings.test.mojom.test_structs.Rect;
-import org.chromium.mojo.system.impl.CoreImpl;
-
-/**
- * Testing generated classes with the [MinVersion] annotation. Struct in this test are from:
- * mojo/public/interfaces/bindings/tests/rect.mojom and
- * mojo/public/interfaces/bindings/tests/test_structs.mojom
- */
-public class BindingsVersioningTest extends MojoTestCase {
- private static Rect newRect(int factor) {
- Rect rect = new Rect();
- rect.x = factor;
- rect.y = 2 * factor;
- rect.width = 10 * factor;
- rect.height = 20 * factor;
- return rect;
- }
-
- private static MultiVersionStruct newStruct() {
- MultiVersionStruct struct = new MultiVersionStruct();
- struct.fInt32 = 123;
- struct.fRect = newRect(5);
- struct.fString = "hello";
- struct.fArray = new byte[] {10, 9, 8};
- struct.fBool = true;
- struct.fInt16 = 256;
- return struct;
- }
-
- /**
- * Testing serializing old struct version to newer one.
- */
- @SmallTest
- public void testOldToNew() {
- {
- MultiVersionStructV0 v0 = new MultiVersionStructV0();
- v0.fInt32 = 123;
- MultiVersionStruct expected = new MultiVersionStruct();
- expected.fInt32 = 123;
-
- MultiVersionStruct output = MultiVersionStruct.deserialize(v0.serialize(null));
- assertEquals(expected, output);
- assertEquals(0, v0.getVersion());
- assertEquals(0, output.getVersion());
- }
-
- {
- MultiVersionStructV1 v1 = new MultiVersionStructV1();
- v1.fInt32 = 123;
- v1.fRect = newRect(5);
- MultiVersionStruct expected = new MultiVersionStruct();
- expected.fInt32 = 123;
- expected.fRect = newRect(5);
-
- MultiVersionStruct output = MultiVersionStruct.deserialize(v1.serialize(null));
- assertEquals(expected, output);
- assertEquals(1, v1.getVersion());
- assertEquals(1, output.getVersion());
- }
-
- {
- MultiVersionStructV3 v3 = new MultiVersionStructV3();
- v3.fInt32 = 123;
- v3.fRect = newRect(5);
- v3.fString = "hello";
- MultiVersionStruct expected = new MultiVersionStruct();
- expected.fInt32 = 123;
- expected.fRect = newRect(5);
- expected.fString = "hello";
-
- MultiVersionStruct output = MultiVersionStruct.deserialize(v3.serialize(null));
- assertEquals(expected, output);
- assertEquals(3, v3.getVersion());
- assertEquals(3, output.getVersion());
- }
-
- {
- MultiVersionStructV5 v5 = new MultiVersionStructV5();
- v5.fInt32 = 123;
- v5.fRect = newRect(5);
- v5.fString = "hello";
- v5.fArray = new byte[] {10, 9, 8};
- MultiVersionStruct expected = new MultiVersionStruct();
- expected.fInt32 = 123;
- expected.fRect = newRect(5);
- expected.fString = "hello";
- expected.fArray = new byte[] {10, 9, 8};
-
- MultiVersionStruct output = MultiVersionStruct.deserialize(v5.serialize(null));
- assertEquals(expected, output);
- assertEquals(5, v5.getVersion());
- assertEquals(5, output.getVersion());
- }
-
- {
- int expectedHandle = 42;
- MultiVersionStructV7 v7 = new MultiVersionStructV7();
- v7.fInt32 = 123;
- v7.fRect = newRect(5);
- v7.fString = "hello";
- v7.fArray = new byte[] {10, 9, 8};
- v7.fMessagePipe = CoreImpl.getInstance()
- .acquireNativeHandle(expectedHandle)
- .toMessagePipeHandle();
- v7.fBool = true;
- MultiVersionStruct expected = new MultiVersionStruct();
- expected.fInt32 = 123;
- expected.fRect = newRect(5);
- expected.fString = "hello";
- expected.fArray = new byte[] {10, 9, 8};
- expected.fBool = true;
-
- MultiVersionStruct output = MultiVersionStruct.deserialize(v7.serialize(null));
-
- // Handles must be tested separately.
- assertEquals(expectedHandle, output.fMessagePipe.releaseNativeHandle());
- output.fMessagePipe = expected.fMessagePipe;
-
- assertEquals(expected, output);
- assertEquals(7, v7.getVersion());
- assertEquals(7, output.getVersion());
- }
- }
-
- /**
- * Testing serializing new struct version to older one.
- */
- @SmallTest
- public void testNewToOld() {
- MultiVersionStruct struct = newStruct();
- {
- MultiVersionStructV0 expected = new MultiVersionStructV0();
- expected.fInt32 = 123;
-
- MultiVersionStructV0 output = MultiVersionStructV0.deserialize(struct.serialize(null));
- assertEquals(expected, output);
- assertEquals(9, output.getVersion());
- }
-
- {
- MultiVersionStructV1 expected = new MultiVersionStructV1();
- expected.fInt32 = 123;
- expected.fRect = newRect(5);
-
- MultiVersionStructV1 output = MultiVersionStructV1.deserialize(struct.serialize(null));
- assertEquals(expected, output);
- assertEquals(9, output.getVersion());
- }
-
- {
- MultiVersionStructV3 expected = new MultiVersionStructV3();
- expected.fInt32 = 123;
- expected.fRect = newRect(5);
- expected.fString = "hello";
-
- MultiVersionStructV3 output = MultiVersionStructV3.deserialize(struct.serialize(null));
- assertEquals(expected, output);
- assertEquals(9, output.getVersion());
- }
-
- {
- MultiVersionStructV5 expected = new MultiVersionStructV5();
- expected.fInt32 = 123;
- expected.fRect = newRect(5);
- expected.fString = "hello";
- expected.fArray = new byte[] {10, 9, 8};
-
- MultiVersionStructV5 output = MultiVersionStructV5.deserialize(struct.serialize(null));
- assertEquals(expected, output);
- assertEquals(9, output.getVersion());
- }
-
- {
- int expectedHandle = 42;
- MultiVersionStructV7 expected = new MultiVersionStructV7();
- expected.fInt32 = 123;
- expected.fRect = newRect(5);
- expected.fString = "hello";
- expected.fArray = new byte[] {10, 9, 8};
- expected.fBool = true;
-
- MultiVersionStruct input = struct;
- input.fMessagePipe = CoreImpl.getInstance()
- .acquireNativeHandle(expectedHandle)
- .toMessagePipeHandle();
-
- MultiVersionStructV7 output = MultiVersionStructV7.deserialize(input.serialize(null));
-
- assertEquals(expectedHandle, output.fMessagePipe.releaseNativeHandle());
- output.fMessagePipe = expected.fMessagePipe;
-
- assertEquals(expected, output);
- assertEquals(9, output.getVersion());
- }
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/CallbacksTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/CallbacksTest.java
deleted file mode 100644
index 497be65..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/CallbacksTest.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// 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 android.support.test.filters.SmallTest;
-
-import junit.framework.TestCase;
-
-import org.chromium.mojo.bindings.Callbacks.Callback1;
-import org.chromium.mojo.bindings.Callbacks.Callback7;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Testing generated callbacks
- */
-public class CallbacksTest extends TestCase {
-
- /**
- * Testing {@link Callback1}.
- */
- @SmallTest
- public void testCallback1() {
- final List<Integer> parameters = new ArrayList<Integer>();
- new Callback1<Integer>() {
- @Override
- public void call(Integer i1) {
- parameters.add(i1);
- }
- }.call(1);
- assertEquals(Arrays.asList(1), parameters);
- }
-
- /**
- * Testing {@link Callback7}.
- */
- @SmallTest
- public void testCallback7() {
- final List<Integer> parameters = new ArrayList<Integer>();
- new Callback7<Integer, Integer, Integer, Integer, Integer, Integer, Integer>() {
- @Override
- public void call(Integer i1, Integer i2, Integer i3, Integer i4, Integer i5, Integer i6,
- Integer i7) {
- parameters.add(i1);
- parameters.add(i2);
- parameters.add(i3);
- parameters.add(i4);
- parameters.add(i5);
- parameters.add(i6);
- parameters.add(i7);
- }
- }.call(1, 2, 3, 4, 5, 6, 7);
- assertEquals(Arrays.asList(1, 2, 3, 4, 5, 6, 7), parameters);
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java
deleted file mode 100644
index 15f9f1f..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/ConnectorTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-// 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 android.support.test.filters.SmallTest;
-
-import org.chromium.mojo.MojoTestCase;
-import org.chromium.mojo.bindings.BindingsTestUtils.CapturingErrorHandler;
-import org.chromium.mojo.bindings.BindingsTestUtils.RecordingMessageReceiver;
-import org.chromium.mojo.system.Core;
-import org.chromium.mojo.system.Handle;
-import org.chromium.mojo.system.MessagePipeHandle;
-import org.chromium.mojo.system.MojoResult;
-import org.chromium.mojo.system.Pair;
-import org.chromium.mojo.system.ResultAnd;
-import org.chromium.mojo.system.impl.CoreImpl;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-
-/**
- * Testing the {@link Connector} class.
- */
-public class ConnectorTest extends MojoTestCase {
-
- private static final int DATA_LENGTH = 1024;
-
- private MessagePipeHandle mHandle;
- private Connector mConnector;
- private Message mTestMessage;
- private RecordingMessageReceiver mReceiver;
- private CapturingErrorHandler mErrorHandler;
-
- /**
- * @see MojoTestCase#setUp()
- */
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- Core core = CoreImpl.getInstance();
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(
- new MessagePipeHandle.CreateOptions());
- mHandle = handles.first;
- mConnector = new Connector(handles.second);
- mReceiver = new RecordingMessageReceiver();
- mConnector.setIncomingMessageReceiver(mReceiver);
- mErrorHandler = new CapturingErrorHandler();
- mConnector.setErrorHandler(mErrorHandler);
- mConnector.start();
- mTestMessage = BindingsTestUtils.newRandomMessage(DATA_LENGTH);
- assertNull(mErrorHandler.getLastMojoException());
- assertEquals(0, mReceiver.messages.size());
- }
-
- /**
- * @see MojoTestCase#tearDown()
- */
- @Override
- protected void tearDown() throws Exception {
- mConnector.close();
- mHandle.close();
- super.tearDown();
- }
-
- /**
- * Test sending a message through a {@link Connector}.
- */
- @SmallTest
- public void testSendingMessage() {
- mConnector.accept(mTestMessage);
- assertNull(mErrorHandler.getLastMojoException());
- ByteBuffer received = ByteBuffer.allocateDirect(DATA_LENGTH);
- ResultAnd<MessagePipeHandle.ReadMessageResult> result =
- mHandle.readMessage(received, 0, MessagePipeHandle.ReadFlags.NONE);
- assertEquals(MojoResult.OK, result.getMojoResult());
- assertEquals(DATA_LENGTH, result.getValue().getMessageSize());
- assertEquals(mTestMessage.getData(), received);
- }
-
- /**
- * Test receiving a message through a {@link Connector}
- */
- @SmallTest
- public void testReceivingMessage() {
- mHandle.writeMessage(mTestMessage.getData(), new ArrayList<Handle>(),
- MessagePipeHandle.WriteFlags.NONE);
- runLoopUntilIdle();
- assertNull(mErrorHandler.getLastMojoException());
- assertEquals(1, mReceiver.messages.size());
- Message received = mReceiver.messages.get(0);
- assertEquals(0, received.getHandles().size());
- assertEquals(mTestMessage.getData(), received.getData());
- }
-
- /**
- * Test receiving an error through a {@link Connector}.
- */
- @SmallTest
- public void testErrors() {
- mHandle.close();
- runLoopUntilIdle();
- assertNotNull(mErrorHandler.getLastMojoException());
- assertEquals(MojoResult.FAILED_PRECONDITION,
- mErrorHandler.getLastMojoException().getMojoResult());
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ExecutorFactoryTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ExecutorFactoryTest.java
deleted file mode 100644
index cabe230..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/ExecutorFactoryTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// 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 android.support.test.filters.SmallTest;
-
-import org.chromium.mojo.MojoTestCase;
-import org.chromium.mojo.system.impl.CoreImpl;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.BrokenBarrierException;
-import java.util.concurrent.CyclicBarrier;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-/**
- * Testing the executor factory.
- */
-public class ExecutorFactoryTest extends MojoTestCase {
-
- private static final long RUN_LOOP_TIMEOUT_MS = 50;
- private static final int CONCURRENCY_LEVEL = 5;
- private static final ExecutorService WORKERS = Executors.newFixedThreadPool(CONCURRENCY_LEVEL);
-
- private Executor mExecutor;
- private List<Thread> mThreadContainer;
-
- /**
- * @see MojoTestCase#setUp()
- */
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mExecutor = ExecutorFactory.getExecutorForCurrentThread(CoreImpl.getInstance());
- mThreadContainer = new ArrayList<Thread>();
- }
-
- /**
- * Testing the {@link Executor} when called from the executor thread.
- */
- @SmallTest
- public void testExecutorOnCurrentThread() {
- Runnable action = new Runnable() {
- @Override
- public void run() {
- mThreadContainer.add(Thread.currentThread());
- }
- };
- mExecutor.execute(action);
- mExecutor.execute(action);
- assertEquals(0, mThreadContainer.size());
- runLoop(RUN_LOOP_TIMEOUT_MS);
- assertEquals(2, mThreadContainer.size());
- for (Thread thread : mThreadContainer) {
- assertEquals(Thread.currentThread(), thread);
- }
- }
-
- /**
- * Testing the {@link Executor} when called from another thread.
- */
- @SmallTest
- public void testExecutorOnOtherThread() {
- final CyclicBarrier barrier = new CyclicBarrier(CONCURRENCY_LEVEL + 1);
- for (int i = 0; i < CONCURRENCY_LEVEL; ++i) {
- WORKERS.execute(new Runnable() {
- @Override
- public void run() {
- mExecutor.execute(new Runnable() {
-
- @Override
- public void run() {
- mThreadContainer.add(Thread.currentThread());
- }
- });
- try {
- barrier.await();
- } catch (InterruptedException e) {
- fail("Unexpected exception: " + e.getMessage());
- } catch (BrokenBarrierException e) {
- fail("Unexpected exception: " + e.getMessage());
- }
- }
- });
- }
- try {
- barrier.await();
- } catch (InterruptedException e) {
- fail("Unexpected exception: " + e.getMessage());
- } catch (BrokenBarrierException e) {
- fail("Unexpected exception: " + e.getMessage());
- }
- assertEquals(0, mThreadContainer.size());
- runLoop(RUN_LOOP_TIMEOUT_MS);
- assertEquals(CONCURRENCY_LEVEL, mThreadContainer.size());
- for (Thread thread : mThreadContainer) {
- assertEquals(Thread.currentThread(), thread);
- }
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfaceControlMessageTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfaceControlMessageTest.java
deleted file mode 100644
index 8cdd4ab..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfaceControlMessageTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2015 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 android.support.test.filters.SmallTest;
-
-import org.chromium.mojo.MojoTestCase;
-import org.chromium.mojo.bindings.Callbacks.Callback1;
-import org.chromium.mojo.bindings.test.mojom.sample.Enum;
-import org.chromium.mojo.bindings.test.mojom.sample.IntegerAccessor;
-import org.chromium.mojo.system.MojoException;
-
-import java.io.Closeable;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Tests for interface control messages.
- */
-public class InterfaceControlMessageTest extends MojoTestCase {
- private final List<Closeable> mCloseablesToClose = new ArrayList<Closeable>();
-
- /**
- * See mojo/public/interfaces/bindings/tests/sample_interfaces.mojom.
- */
- class IntegerAccessorImpl extends SideEffectFreeCloseable implements IntegerAccessor {
- private long mValue = 0;
- private int mEnum = 0;
- private boolean mEncounteredError = false;
-
- /**
- * @see ConnectionErrorHandler#onConnectionError(MojoException)
- */
- @Override
- public void onConnectionError(MojoException e) {
- mEncounteredError = true;
- }
-
- /**
- * @see IntegerAccessor#getInteger(IntegerAccessor.GetIntegerResponse)
- */
- @Override
- public void getInteger(GetIntegerResponse response) {
- response.call(mValue, mEnum);
- }
-
- /**
- * @see IntegerAccessor#setInteger(long, int)
- */
- @Override
- public void setInteger(long value, int enumValue) {
- mValue = value;
- mEnum = enumValue;
- }
-
- public long getValue() {
- return mValue;
- }
-
- public boolean encounteredError() {
- return mEncounteredError;
- }
- }
-
- /**
- * @see MojoTestCase#tearDown()
- */
- @Override
- protected void tearDown() throws Exception {
- // Close the elements in the reverse order they were added. This is needed because it is an
- // error to close the handle of a proxy without closing the proxy first.
- Collections.reverse(mCloseablesToClose);
- for (Closeable c : mCloseablesToClose) {
- c.close();
- }
- super.tearDown();
- }
-
- @SmallTest
- public void testQueryVersion() {
- IntegerAccessor.Proxy p = BindingsTestUtils.newProxyOverPipe(
- IntegerAccessor.MANAGER, new IntegerAccessorImpl(), mCloseablesToClose);
- assertEquals(0, p.getProxyHandler().getVersion());
- p.getProxyHandler().queryVersion(new Callback1<Integer>() {
- @Override
- public void call(Integer version) {
- assertEquals(3, version.intValue());
- }
- });
- runLoopUntilIdle();
- assertEquals(3, p.getProxyHandler().getVersion());
- }
-
- @SmallTest
- public void testRequireVersion() {
- IntegerAccessorImpl impl = new IntegerAccessorImpl();
- IntegerAccessor.Proxy p = BindingsTestUtils.newProxyOverPipe(
- IntegerAccessor.MANAGER, impl, mCloseablesToClose);
-
- assertEquals(0, p.getProxyHandler().getVersion());
-
- p.getProxyHandler().requireVersion(1);
- assertEquals(1, p.getProxyHandler().getVersion());
- p.setInteger(123, Enum.VALUE);
- runLoopUntilIdle();
- assertFalse(impl.encounteredError());
- assertEquals(123, impl.getValue());
-
- p.getProxyHandler().requireVersion(3);
- assertEquals(3, p.getProxyHandler().getVersion());
- p.setInteger(456, Enum.VALUE);
- runLoopUntilIdle();
- assertFalse(impl.encounteredError());
- assertEquals(456, impl.getValue());
-
- // Require a version that is not supported by the implementation side.
- p.getProxyHandler().requireVersion(4);
- // getVersion() is updated synchronously.
- assertEquals(4, p.getProxyHandler().getVersion());
- p.setInteger(789, Enum.VALUE);
- runLoopUntilIdle();
- assertTrue(impl.encounteredError());
- // The call to setInteger() after requireVersion() is ignored.
- assertEquals(456, impl.getValue());
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfacesTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfacesTest.java
deleted file mode 100644
index d8bd3e8..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/InterfacesTest.java
+++ /dev/null
@@ -1,284 +0,0 @@
-// 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 android.support.test.filters.SmallTest;
-
-import org.chromium.mojo.MojoTestCase;
-import org.chromium.mojo.bindings.BindingsTestUtils.CapturingErrorHandler;
-import org.chromium.mojo.bindings.test.mojom.imported.ImportedInterface;
-import org.chromium.mojo.bindings.test.mojom.sample.Factory;
-import org.chromium.mojo.bindings.test.mojom.sample.NamedObject;
-import org.chromium.mojo.bindings.test.mojom.sample.NamedObject.GetNameResponse;
-import org.chromium.mojo.bindings.test.mojom.sample.Request;
-import org.chromium.mojo.bindings.test.mojom.sample.Response;
-import org.chromium.mojo.system.DataPipe.ConsumerHandle;
-import org.chromium.mojo.system.MessagePipeHandle;
-import org.chromium.mojo.system.Pair;
-import org.chromium.mojo.system.impl.CoreImpl;
-
-import java.io.Closeable;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Tests for interfaces / proxies / stubs generated for sample_factory.mojom.
- */
-public class InterfacesTest extends MojoTestCase {
-
- private static final String OBJECT_NAME = "hello world";
-
- private final List<Closeable> mCloseablesToClose = new ArrayList<Closeable>();
-
- /**
- * Basic implementation of {@link NamedObject}.
- */
- public static class MockNamedObjectImpl extends CapturingErrorHandler implements NamedObject {
-
- private String mName = "";
-
- /**
- * @see org.chromium.mojo.bindings.Interface#close()
- */
- @Override
- public void close() {
- }
-
- @Override
- public void setName(String name) {
- mName = name;
- }
-
- @Override
- public void getName(GetNameResponse callback) {
- callback.call(mName);
- }
-
- public String getNameSynchronously() {
- return mName;
- }
- }
-
- /**
- * Implementation of {@link GetNameResponse} keeping track of usage.
- */
- public static class RecordingGetNameResponse implements GetNameResponse {
- private String mName;
- private boolean mCalled;
-
- public RecordingGetNameResponse() {
- reset();
- }
-
- @Override
- public void call(String name) {
- mName = name;
- mCalled = true;
- }
-
- public String getName() {
- return mName;
- }
-
- public boolean wasCalled() {
- return mCalled;
- }
-
- public void reset() {
- mName = null;
- mCalled = false;
- }
- }
-
- /**
- * Basic implementation of {@link Factory}.
- */
- public class MockFactoryImpl extends CapturingErrorHandler implements Factory {
-
- private boolean mClosed = false;
-
- public boolean isClosed() {
- return mClosed;
- }
-
- /**
- * @see org.chromium.mojo.bindings.Interface#close()
- */
- @Override
- public void close() {
- mClosed = true;
- }
-
- @Override
- public void doStuff(Request request, MessagePipeHandle pipe, DoStuffResponse callback) {
- if (pipe != null) {
- pipe.close();
- }
- Response response = new Response();
- response.x = 42;
- callback.call(response, "Hello");
- }
-
- @Override
- public void doStuff2(ConsumerHandle pipe, DoStuff2Response callback) {
- callback.call("World");
- }
-
- @Override
- public void createNamedObject(InterfaceRequest<NamedObject> obj) {
- NamedObject.MANAGER.bind(new MockNamedObjectImpl(), obj);
- }
-
- @Override
- public void requestImportedInterface(InterfaceRequest<ImportedInterface> obj,
- RequestImportedInterfaceResponse callback) {
- throw new UnsupportedOperationException("Not implemented.");
- }
-
- @Override
- public void takeImportedInterface(ImportedInterface obj,
- TakeImportedInterfaceResponse callback) {
- throw new UnsupportedOperationException("Not implemented.");
- }
- }
-
- /**
- * Implementation of DoStuffResponse that keeps track of if the response is called.
- */
- public static class DoStuffResponseImpl implements Factory.DoStuffResponse {
- private boolean mResponseCalled = false;
-
- public boolean wasResponseCalled() {
- return mResponseCalled;
- }
-
- @Override
- public void call(Response response, String string) {
- mResponseCalled = true;
- }
- }
-
- /**
- * @see MojoTestCase#tearDown()
- */
- @Override
- protected void tearDown() throws Exception {
- // Close the elements in the reverse order they were added. This is needed because it is an
- // error to close the handle of a proxy without closing the proxy first.
- Collections.reverse(mCloseablesToClose);
- for (Closeable c : mCloseablesToClose) {
- c.close();
- }
- super.tearDown();
- }
-
- /**
- * Check that the given proxy receives the calls. If |impl| is not null, also check that the
- * calls are forwared to |impl|.
- */
- private void checkProxy(NamedObject.Proxy proxy, MockNamedObjectImpl impl) {
- RecordingGetNameResponse callback = new RecordingGetNameResponse();
- CapturingErrorHandler errorHandler = new CapturingErrorHandler();
- proxy.getProxyHandler().setErrorHandler(errorHandler);
-
- if (impl != null) {
- assertNull(impl.getLastMojoException());
- assertEquals("", impl.getNameSynchronously());
- }
-
- proxy.getName(callback);
- runLoopUntilIdle();
-
- assertNull(errorHandler.getLastMojoException());
- assertTrue(callback.wasCalled());
- assertEquals("", callback.getName());
-
- callback.reset();
- proxy.setName(OBJECT_NAME);
- runLoopUntilIdle();
-
- assertNull(errorHandler.getLastMojoException());
- if (impl != null) {
- assertNull(impl.getLastMojoException());
- assertEquals(OBJECT_NAME, impl.getNameSynchronously());
- }
-
- proxy.getName(callback);
- runLoopUntilIdle();
-
- assertNull(errorHandler.getLastMojoException());
- assertTrue(callback.wasCalled());
- assertEquals(OBJECT_NAME, callback.getName());
- }
-
- @SmallTest
- public void testName() {
- assertEquals("sample::NamedObject", NamedObject.MANAGER.getName());
- }
-
- @SmallTest
- public void testProxyAndStub() {
- MockNamedObjectImpl impl = new MockNamedObjectImpl();
- NamedObject.Proxy proxy =
- NamedObject.MANAGER.buildProxy(null, NamedObject.MANAGER.buildStub(null, impl));
-
- checkProxy(proxy, impl);
- }
-
- @SmallTest
- public void testProxyAndStubOverPipe() {
- MockNamedObjectImpl impl = new MockNamedObjectImpl();
- NamedObject.Proxy proxy =
- BindingsTestUtils.newProxyOverPipe(NamedObject.MANAGER, impl, mCloseablesToClose);
-
- checkProxy(proxy, impl);
- }
-
- @SmallTest
- public void testFactoryOverPipe() {
- Factory.Proxy proxy = BindingsTestUtils.newProxyOverPipe(
- Factory.MANAGER, new MockFactoryImpl(), mCloseablesToClose);
- Pair<NamedObject.Proxy, InterfaceRequest<NamedObject>> request =
- NamedObject.MANAGER.getInterfaceRequest(CoreImpl.getInstance());
- mCloseablesToClose.add(request.first);
- proxy.createNamedObject(request.second);
-
- checkProxy(request.first, null);
- }
-
- @SmallTest
- public void testInterfaceClosing() {
- MockFactoryImpl impl = new MockFactoryImpl();
- Factory.Proxy proxy =
- BindingsTestUtils.newProxyOverPipe(Factory.MANAGER, impl, mCloseablesToClose);
-
- assertFalse(impl.isClosed());
-
- proxy.close();
- runLoopUntilIdle();
-
- assertTrue(impl.isClosed());
- }
-
- @SmallTest
- public void testResponse() {
- MockFactoryImpl impl = new MockFactoryImpl();
- Factory.Proxy proxy =
- BindingsTestUtils.newProxyOverPipe(Factory.MANAGER, impl, mCloseablesToClose);
- Request request = new Request();
- request.x = 42;
- Pair<MessagePipeHandle, MessagePipeHandle> handles =
- CoreImpl.getInstance().createMessagePipe(null);
- DoStuffResponseImpl response = new DoStuffResponseImpl();
- proxy.doStuff(request, handles.first, response);
-
- assertFalse(response.wasResponseCalled());
-
- runLoopUntilIdle();
-
- assertTrue(response.wasResponseCalled());
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageHeaderTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageHeaderTest.java
deleted file mode 100644
index b2e6ac8..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/MessageHeaderTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// 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 android.support.test.filters.SmallTest;
-
-import junit.framework.TestCase;
-
-import org.chromium.mojo.bindings.test.mojom.imported.Point;
-
-/**
- * Testing internal classes of interfaces.
- */
-public class MessageHeaderTest extends TestCase {
-
- /**
- * Testing that headers are identical after being serialized/deserialized.
- */
- @SmallTest
- public void testSimpleMessageHeader() {
- final int xValue = 1;
- final int yValue = 2;
- final int type = 6;
- Point p = new Point();
- p.x = xValue;
- p.y = yValue;
- ServiceMessage message = p.serializeWithHeader(null, new MessageHeader(type));
-
- MessageHeader header = message.getHeader();
- assertTrue(header.validateHeader(type, 0));
- assertEquals(type, header.getType());
- assertEquals(0, header.getFlags());
-
- Point p2 = Point.deserialize(message.getPayload());
- assertNotNull(p2);
- assertEquals(p.x, p2.x);
- assertEquals(p.y, p2.y);
- }
-
- /**
- * Testing that headers are identical after being serialized/deserialized.
- */
- @SmallTest
- public void testMessageWithRequestIdHeader() {
- final int xValue = 1;
- final int yValue = 2;
- final int type = 6;
- final long requestId = 0x1deadbeafL;
- Point p = new Point();
- p.x = xValue;
- p.y = yValue;
- ServiceMessage message = p.serializeWithHeader(null,
- new MessageHeader(type, MessageHeader.MESSAGE_EXPECTS_RESPONSE_FLAG, 0));
- message.setRequestId(requestId);
-
- MessageHeader header = message.getHeader();
- assertTrue(header.validateHeader(type, MessageHeader.MESSAGE_EXPECTS_RESPONSE_FLAG));
- assertEquals(type, header.getType());
- assertEquals(MessageHeader.MESSAGE_EXPECTS_RESPONSE_FLAG, header.getFlags());
- assertEquals(requestId, header.getRequestId());
-
- Point p2 = Point.deserialize(message.getPayload());
- assertNotNull(p2);
- assertEquals(p.x, p2.x);
- assertEquals(p.y, p2.y);
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ReadAndDispatchMessageTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ReadAndDispatchMessageTest.java
deleted file mode 100644
index 51dbd22..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/ReadAndDispatchMessageTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-// 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 android.support.test.filters.SmallTest;
-
-import org.chromium.mojo.MojoTestCase;
-import org.chromium.mojo.bindings.BindingsTestUtils.RecordingMessageReceiver;
-import org.chromium.mojo.system.Core;
-import org.chromium.mojo.system.DataPipe;
-import org.chromium.mojo.system.Handle;
-import org.chromium.mojo.system.MessagePipeHandle;
-import org.chromium.mojo.system.MojoException;
-import org.chromium.mojo.system.MojoResult;
-import org.chromium.mojo.system.Pair;
-import org.chromium.mojo.system.impl.CoreImpl;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Testing {@link Connector#readAndDispatchMessage}.
- */
-public class ReadAndDispatchMessageTest extends MojoTestCase {
-
- private static final int DATA_SIZE = 1024;
-
- private ByteBuffer mData;
- private Pair<MessagePipeHandle, MessagePipeHandle> mHandles;
- private List<Handle> mHandlesToSend = new ArrayList<Handle>();
- private List<Handle> mHandlesToClose = new ArrayList<Handle>();
- private RecordingMessageReceiver mMessageReceiver;
-
- /**
- * @see org.chromium.mojo.MojoTestCase#setUp()
- */
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- Core core = CoreImpl.getInstance();
- mData = BindingsTestUtils.newRandomMessage(DATA_SIZE).getData();
- mMessageReceiver = new RecordingMessageReceiver();
- mHandles = core.createMessagePipe(new MessagePipeHandle.CreateOptions());
- Pair<DataPipe.ProducerHandle, DataPipe.ConsumerHandle> datapipe = core.createDataPipe(null);
- mHandlesToSend.addAll(Arrays.asList(datapipe.first, datapipe.second));
- mHandlesToClose.addAll(Arrays.asList(mHandles.first, mHandles.second));
- mHandlesToClose.addAll(mHandlesToSend);
- }
-
- /**
- * @see org.chromium.mojo.MojoTestCase#tearDown()
- */
- @Override
- protected void tearDown() throws Exception {
- for (Handle handle : mHandlesToClose) {
- handle.close();
- }
- super.tearDown();
- }
-
- /**
- * Testing {@link Connector#readAndDispatchMessage(MessagePipeHandle, MessageReceiver)}
- */
- @SmallTest
- public void testReadAndDispatchMessage() {
- mHandles.first.writeMessage(mData, mHandlesToSend, MessagePipeHandle.WriteFlags.NONE);
- assertEquals(MojoResult.OK, Connector.readAndDispatchMessage(mHandles.second,
- mMessageReceiver).getMojoResult());
- assertEquals(1, mMessageReceiver.messages.size());
- Message message = mMessageReceiver.messages.get(0);
- mHandlesToClose.addAll(message.getHandles());
- assertEquals(mData, message.getData());
- assertEquals(2, message.getHandles().size());
- for (Handle handle : message.getHandles()) {
- assertTrue(handle.isValid());
- }
- }
-
- /**
- * Testing {@link Connector#readAndDispatchMessage(MessagePipeHandle, MessageReceiver)}
- * with no message available.
- */
- @SmallTest
- public void testReadAndDispatchMessageOnEmptyHandle() {
- assertEquals(MojoResult.SHOULD_WAIT, Connector.readAndDispatchMessage(mHandles.second,
- mMessageReceiver).getMojoResult());
- assertEquals(0, mMessageReceiver.messages.size());
- }
-
- /**
- * Testing {@link Connector#readAndDispatchMessage(MessagePipeHandle, MessageReceiver)}
- * on closed handle.
- */
- @SmallTest
- public void testReadAndDispatchMessageOnClosedHandle() {
- mHandles.first.close();
- try {
- Connector.readAndDispatchMessage(mHandles.second, mMessageReceiver);
- fail("MojoException should have been thrown");
- } catch (MojoException expected) {
- assertEquals(MojoResult.FAILED_PRECONDITION, expected.getMojoResult());
- }
- assertEquals(0, mMessageReceiver.messages.size());
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/RouterTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/RouterTest.java
deleted file mode 100644
index 6aa1726..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/RouterTest.java
+++ /dev/null
@@ -1,231 +0,0 @@
-// 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 android.support.test.filters.SmallTest;
-
-import org.chromium.base.annotations.SuppressFBWarnings;
-import org.chromium.mojo.MojoTestCase;
-import org.chromium.mojo.bindings.BindingsTestUtils.CapturingErrorHandler;
-import org.chromium.mojo.bindings.BindingsTestUtils.RecordingMessageReceiverWithResponder;
-import org.chromium.mojo.system.Core;
-import org.chromium.mojo.system.Core.HandleSignals;
-import org.chromium.mojo.system.Handle;
-import org.chromium.mojo.system.MessagePipeHandle;
-import org.chromium.mojo.system.MojoResult;
-import org.chromium.mojo.system.Pair;
-import org.chromium.mojo.system.ResultAnd;
-import org.chromium.mojo.system.impl.CoreImpl;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-
-/**
- * Testing {@link Router}
- */
-public class RouterTest extends MojoTestCase {
-
- private MessagePipeHandle mHandle;
- private Router mRouter;
- private RecordingMessageReceiverWithResponder mReceiver;
- private CapturingErrorHandler mErrorHandler;
-
- /**
- * @see MojoTestCase#setUp()
- */
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- Core core = CoreImpl.getInstance();
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- mHandle = handles.first;
- mRouter = new RouterImpl(handles.second);
- mReceiver = new RecordingMessageReceiverWithResponder();
- mRouter.setIncomingMessageReceiver(mReceiver);
- mErrorHandler = new CapturingErrorHandler();
- mRouter.setErrorHandler(mErrorHandler);
- mRouter.start();
- }
-
- /**
- * Testing sending a message via the router that expected a response.
- */
- @SmallTest
- public void testSendingToRouterWithResponse() {
- final int requestMessageType = 0xdead;
- final int responseMessageType = 0xbeaf;
-
- // Sending a message expecting a response.
- MessageHeader header = new MessageHeader(requestMessageType,
- MessageHeader.MESSAGE_EXPECTS_RESPONSE_FLAG, 0);
- Encoder encoder = new Encoder(CoreImpl.getInstance(), header.getSize());
- header.encode(encoder);
- mRouter.acceptWithResponder(encoder.getMessage(), mReceiver);
- ByteBuffer receiveBuffer = ByteBuffer.allocateDirect(header.getSize());
- ResultAnd<MessagePipeHandle.ReadMessageResult> result =
- mHandle.readMessage(receiveBuffer, 0, MessagePipeHandle.ReadFlags.NONE);
-
- assertEquals(MojoResult.OK, result.getMojoResult());
- MessageHeader receivedHeader = new Message(
- receiveBuffer, new ArrayList<Handle>()).asServiceMessage().getHeader();
-
- assertEquals(header.getType(), receivedHeader.getType());
- assertEquals(header.getFlags(), receivedHeader.getFlags());
- assertTrue(receivedHeader.getRequestId() != 0);
-
- // Sending the response.
- MessageHeader responseHeader = new MessageHeader(responseMessageType,
- MessageHeader.MESSAGE_IS_RESPONSE_FLAG, receivedHeader.getRequestId());
- encoder = new Encoder(CoreImpl.getInstance(), header.getSize());
- responseHeader.encode(encoder);
- Message responseMessage = encoder.getMessage();
- mHandle.writeMessage(responseMessage.getData(), new ArrayList<Handle>(),
- MessagePipeHandle.WriteFlags.NONE);
- runLoopUntilIdle();
-
- assertEquals(1, mReceiver.messages.size());
- ServiceMessage receivedResponseMessage = mReceiver.messages.get(0).asServiceMessage();
- assertEquals(MessageHeader.MESSAGE_IS_RESPONSE_FLAG,
- receivedResponseMessage.getHeader().getFlags());
- assertEquals(responseMessage.getData(), receivedResponseMessage.getData());
- }
-
- /**
- * Sends a message to the Router.
- *
- * @param messageIndex Used when sending multiple messages to indicate the index of this
- * message.
- * @param requestMessageType The message type to use in the header of the sent message.
- * @param requestId The requestId to use in the header of the sent message.
- */
- private void sendMessageToRouter(int messageIndex, int requestMessageType, int requestId) {
- MessageHeader header = new MessageHeader(
- requestMessageType, MessageHeader.MESSAGE_EXPECTS_RESPONSE_FLAG, requestId);
- Encoder encoder = new Encoder(CoreImpl.getInstance(), header.getSize());
- header.encode(encoder);
- Message headerMessage = encoder.getMessage();
- mHandle.writeMessage(headerMessage.getData(), new ArrayList<Handle>(),
- MessagePipeHandle.WriteFlags.NONE);
- runLoopUntilIdle();
-
- assertEquals(messageIndex + 1, mReceiver.messagesWithReceivers.size());
- Pair<Message, MessageReceiver> receivedMessage =
- mReceiver.messagesWithReceivers.get(messageIndex);
- assertEquals(headerMessage.getData(), receivedMessage.first.getData());
- }
-
- /**
- * Sends a response message from the Router.
- *
- * @param messageIndex Used when sending responses to multiple messages to indicate the index
- * of the message that this message is a response to.
- * @param responseMessageType The message type to use in the header of the response message.
- */
- private void sendResponseFromRouter(int messageIndex, int responseMessageType) {
- Pair<Message, MessageReceiver> receivedMessage =
- mReceiver.messagesWithReceivers.get(messageIndex);
-
- long requestId = receivedMessage.first.asServiceMessage().getHeader().getRequestId();
-
- MessageHeader responseHeader = new MessageHeader(
- responseMessageType, MessageHeader.MESSAGE_IS_RESPONSE_FLAG, requestId);
- Encoder encoder = new Encoder(CoreImpl.getInstance(), responseHeader.getSize());
- responseHeader.encode(encoder);
- Message message = encoder.getMessage();
- receivedMessage.second.accept(message);
-
- ByteBuffer receivedResponseMessage = ByteBuffer.allocateDirect(responseHeader.getSize());
- ResultAnd<MessagePipeHandle.ReadMessageResult> result =
- mHandle.readMessage(receivedResponseMessage, 0, MessagePipeHandle.ReadFlags.NONE);
-
- assertEquals(MojoResult.OK, result.getMojoResult());
- assertEquals(message.getData(), receivedResponseMessage);
- }
-
- /**
- * Clears {@code mReceiver.messagesWithReceivers} allowing all message receivers to be
- * finalized.
- * <p>
- * Since there is no way to force the Garbage Collector to actually call finalize and we want to
- * test the effects of the finalize() method, we explicitly call finalize() on all of the
- * message receivers. We do this in a custom thread to better approximate what the JVM does.
- */
- private void clearAllMessageReceivers() {
- Thread myFinalizerThread = new Thread() {
- @Override
- @SuppressFBWarnings("FI_EXPLICIT_INVOCATION")
- public void run() {
- for (Pair<Message, MessageReceiver> receivedMessage :
- mReceiver.messagesWithReceivers) {
- RouterImpl.ResponderThunk thunk =
- (RouterImpl.ResponderThunk) receivedMessage.second;
- try {
- thunk.finalize();
- } catch (Throwable e) {
- throw new RuntimeException(e);
- }
- }
- }
- };
- myFinalizerThread.start();
- try {
- myFinalizerThread.join();
- } catch (InterruptedException e) {
- // ignore.
- }
- mReceiver.messagesWithReceivers.clear();
- }
-
- /**
- * Testing receiving a message via the router that expected a response.
- */
- @SmallTest
- public void testReceivingViaRouterWithResponse() {
- final int requestMessageType = 0xdead;
- final int responseMessageType = 0xbeef;
- final int requestId = 0xdeadbeaf;
-
- // Send a message expecting a response.
- sendMessageToRouter(0, requestMessageType, requestId);
-
- // Sending the response.
- sendResponseFromRouter(0, responseMessageType);
- }
-
- /**
- * Tests that if a callback is dropped (i.e. becomes unreachable and is finalized
- * without being used), then the message pipe will be closed.
- */
- @SmallTest
- public void testDroppingReceiverWithoutUsingIt() {
- // Send 10 messages to the router without sending a response.
- for (int i = 0; i < 10; i++) {
- sendMessageToRouter(i, i, i);
- }
-
- // Now send the 10 responses. This should work fine.
- for (int i = 0; i < 10; i++) {
- sendResponseFromRouter(i, i);
- }
-
- // Clear all MessageRecievers so that the ResponderThunks will
- // be finalized.
- clearAllMessageReceivers();
-
- // Send another message to the router without sending a response.
- sendMessageToRouter(0, 0, 0);
-
- // Clear the MessageReciever so that the ResponderThunk will
- // be finalized. Since the RespondeThunk was never used, this
- // should close the pipe.
- clearAllMessageReceivers();
- // The close() occurs asynchronously on this thread.
- runLoopUntilIdle();
-
- // Confirm that the pipe was closed on the Router side.
- HandleSignals closedFlag = HandleSignals.none().setPeerClosed(true);
- assertEquals(closedFlag, mHandle.querySignalsState().getSatisfiedSignals());
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java
deleted file mode 100644
index 2c17e3a..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/SerializationTest.java
+++ /dev/null
@@ -1,175 +0,0 @@
-// 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 android.support.test.filters.SmallTest;
-
-import junit.framework.TestCase;
-
-import org.chromium.mojo.HandleMock;
-import org.chromium.mojo.bindings.test.mojom.mojo.Struct1;
-import org.chromium.mojo.bindings.test.mojom.mojo.Struct2;
-import org.chromium.mojo.bindings.test.mojom.mojo.Struct3;
-import org.chromium.mojo.bindings.test.mojom.mojo.Struct4;
-import org.chromium.mojo.bindings.test.mojom.mojo.Struct5;
-import org.chromium.mojo.bindings.test.mojom.mojo.Struct6;
-import org.chromium.mojo.bindings.test.mojom.mojo.StructOfNullables;
-
-import java.nio.ByteBuffer;
-
-/**
- * Tests for the serialization logic of the generated structs, using structs defined in
- * mojo/public/interfaces/bindings/tests/serialization_test_structs.mojom .
- */
-public class SerializationTest extends TestCase {
-
- private static void assertThrowsSerializationException(Struct struct) {
- try {
- struct.serialize(null);
- fail("Serialization of invalid struct should have thrown an exception.");
- } catch (SerializationException ex) {
- // Expected.
- }
- }
-
- /**
- * Verifies that serializing a struct with an invalid handle of a non-nullable type throws an
- * exception.
- */
- @SmallTest
- public void testHandle() {
- Struct2 struct = new Struct2();
- assertFalse(struct.hdl.isValid());
- assertThrowsSerializationException(struct);
-
- // Make the struct valid and verify that it serializes without an exception.
- struct.hdl = new HandleMock();
- struct.serialize(null);
- }
-
- /**
- * Verifies that serializing a struct with a null struct pointer throws an exception.
- */
- @SmallTest
- public void testStructPointer() {
- Struct3 struct = new Struct3();
- assertNull(struct.struct1);
- assertThrowsSerializationException(struct);
-
- // Make the struct valid and verify that it serializes without an exception.
- struct.struct1 = new Struct1();
- struct.serialize(null);
- }
-
- /**
- * Verifies that serializing a struct with an array of structs throws an exception when the
- * struct is invalid.
- */
- @SmallTest
- public void testStructArray() {
- Struct4 struct = new Struct4();
- assertNull(struct.data);
- assertThrowsSerializationException(struct);
-
- // Create the (1-element) array but have the element null.
- struct.data = new Struct1[1];
- assertThrowsSerializationException(struct);
-
- // Create the array element, struct should serialize now.
- struct.data[0] = new Struct1();
- struct.serialize(null);
- }
-
- /**
- * Verifies that serializing a struct with a fixed-size array of incorrect length throws an
- * exception.
- */
- @SmallTest
- public void testFixedSizeArray() {
- Struct5 struct = new Struct5();
- assertNull(struct.pair);
- assertThrowsSerializationException(struct);
-
- // Create the (1-element) array, 2-element array is required.
- struct.pair = new Struct1[1];
- struct.pair[0] = new Struct1();
- assertThrowsSerializationException(struct);
-
- // Create the array of a correct size, struct should serialize now.
- struct.pair = new Struct1[2];
- struct.pair[0] = new Struct1();
- struct.pair[1] = new Struct1();
- struct.serialize(null);
- }
-
- /**
- * Verifies that serializing a struct with a null string throws an exception.
- */
- @SmallTest
- public void testString() {
- Struct6 struct = new Struct6();
- assertNull(struct.str);
- assertThrowsSerializationException(struct);
-
- // Make the struct valid and verify that it serializes without an exception.
- struct.str = "";
- struct.serialize(null);
- }
-
- /**
- * Verifies that a struct with an invalid nullable handle, null nullable struct pointer and null
- * nullable string serializes without an exception.
- */
- @SmallTest
- public void testNullableFields() {
- StructOfNullables struct = new StructOfNullables();
- assertFalse(struct.hdl.isValid());
- assertNull(struct.struct1);
- assertNull(struct.str);
- struct.serialize(null);
- }
-
- /**
- * Verifies that a struct can be serialized to and deserialized from a ByteBuffer.
- */
- @SmallTest
- public void testByteBufferSerialization() {
- Struct1 input = new Struct1();
- input.i = 0x7F;
-
- ByteBuffer buf = input.serialize();
-
- byte[] expected_raw_bytes = {16, 0, 0, 0, 0, 0, 0, 0, 0x7F, 0, 0, 0, 0, 0, 0, 0};
- ByteBuffer expected_buf = ByteBuffer.wrap(expected_raw_bytes);
- assertEquals(expected_buf, buf);
-
- Struct1 output = Struct1.deserialize(buf);
- assertEquals(0x7F, output.i);
- }
-
- /**
- * Verifies that a struct with handles cannot be serialized to a ByteBuffer.
- */
- @SmallTest
- public void testByteBufferSerializationWithHandles() {
- StructOfNullables struct = new StructOfNullables();
- assertFalse(struct.hdl.isValid());
- assertNull(struct.struct1);
- assertNull(struct.str);
-
- // It is okay to serialize invalid handles.
- struct.serialize();
-
- struct.hdl = new HandleMock();
-
- try {
- struct.serialize();
- fail("Serializing a struct with handles to a ByteBuffer should have thrown an "
- + "exception.");
- } catch (UnsupportedOperationException ex) {
- // Expected.
- }
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTest.java
deleted file mode 100644
index 8424618..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTest.java
+++ /dev/null
@@ -1,237 +0,0 @@
-// 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 android.support.test.filters.SmallTest;
-
-import org.chromium.base.test.util.UrlUtils;
-import org.chromium.mojo.HandleMock;
-import org.chromium.mojo.MojoTestCase;
-import org.chromium.mojo.bindings.test.mojom.mojo.ConformanceTestInterface;
-import org.chromium.mojo.bindings.test.mojom.mojo.IntegrationTestInterface;
-import org.chromium.mojo.bindings.test.mojom.mojo.IntegrationTestInterfaceTestHelper;
-import org.chromium.mojo.system.Handle;
-import org.chromium.mojo.system.impl.CoreImpl;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Scanner;
-
-/**
- * Testing validation upon deserialization using the interfaces defined in the
- * mojo/public/interfaces/bindings/tests/validation_test_interfaces.mojom file.
- * <p>
- * One needs to pass '--test_data=bindings:{path to mojo/public/interfaces/bindings/tests/data}' to
- * the test_runner script for this test to find the validation data it needs.
- */
-public class ValidationTest extends MojoTestCase {
-
- /**
- * The path where validation test data is.
- */
- private static final File VALIDATION_TEST_DATA_PATH =
- new File(UrlUtils.getIsolatedTestFilePath(
- "mojo/public/interfaces/bindings/tests/data/validation"));
-
- /**
- * The data needed for a validation test.
- */
- private static class TestData {
- public File dataFile;
- public ValidationTestUtil.Data inputData;
- public String expectedResult;
- }
-
- private static class DataFileFilter implements FileFilter {
- private final String mPrefix;
-
- public DataFileFilter(String prefix) {
- this.mPrefix = prefix;
- }
-
- @Override
- public boolean accept(File pathname) {
- // TODO(yzshen, qsr): skip some interface versioning tests.
- if (pathname.getName().startsWith("conformance_mthd13_good_2")) {
- return false;
- }
- return pathname.isFile() && pathname.getName().startsWith(mPrefix)
- && pathname.getName().endsWith(".data");
- }
- }
-
- private static String getStringContent(File f) throws FileNotFoundException {
- try (Scanner scanner = new Scanner(f)) {
- scanner.useDelimiter("\\Z");
- StringBuilder result = new StringBuilder();
- while (scanner.hasNext()) {
- result.append(scanner.next());
- }
- return result.toString().trim();
- }
- }
-
- private static List<TestData> getTestData(String prefix)
- throws FileNotFoundException {
- List<TestData> results = new ArrayList<TestData>();
-
- // Fail if the test data is not present.
- if (!VALIDATION_TEST_DATA_PATH.isDirectory()) {
- fail("No test data directory found. "
- + "Expected directory at: " + VALIDATION_TEST_DATA_PATH);
- }
-
- File[] files = VALIDATION_TEST_DATA_PATH.listFiles(new DataFileFilter(prefix));
- if (files != null) {
- for (File dataFile : files) {
- File resultFile = new File(dataFile.getParent(),
- dataFile.getName().replaceFirst("\\.data$", ".expected"));
- TestData testData = new TestData();
- testData.dataFile = dataFile;
- testData.inputData = ValidationTestUtil.parseData(getStringContent(dataFile));
- testData.expectedResult = getStringContent(resultFile);
- results.add(testData);
- }
- }
- return results;
- }
-
- /**
- * Runs all the test with the given prefix on the given {@link MessageReceiver}.
- */
- private static void runTest(String prefix, MessageReceiver messageReceiver)
- throws FileNotFoundException {
- List<TestData> testData = getTestData(prefix);
- for (TestData test : testData) {
- assertNull("Unable to read: " + test.dataFile.getName()
- + ": " + test.inputData.getErrorMessage(),
- test.inputData.getErrorMessage());
- List<Handle> handles = new ArrayList<Handle>();
- for (int i = 0; i < test.inputData.getHandlesCount(); ++i) {
- handles.add(new HandleMock());
- }
- Message message = new Message(test.inputData.getData(), handles);
- boolean passed = messageReceiver.accept(message);
- if (passed && !test.expectedResult.equals("PASS")) {
- fail("Input: " + test.dataFile.getName()
- + ": The message should have been refused. Expected error: "
- + test.expectedResult);
- }
- if (!passed && test.expectedResult.equals("PASS")) {
- fail("Input: " + test.dataFile.getName()
- + ": The message should have been accepted.");
- }
- }
- }
-
- private static class RoutingMessageReceiver implements MessageReceiver {
- private final MessageReceiverWithResponder mRequest;
- private final MessageReceiver mResponse;
-
- private RoutingMessageReceiver(MessageReceiverWithResponder request,
- MessageReceiver response) {
- this.mRequest = request;
- this.mResponse = response;
- }
-
- /**
- * @see MessageReceiver#accept(Message)
- */
- @Override
- public boolean accept(Message message) {
- try {
- MessageHeader header = message.asServiceMessage().getHeader();
- if (header.hasFlag(MessageHeader.MESSAGE_IS_RESPONSE_FLAG)) {
- return mResponse.accept(message);
- } else {
- return mRequest.acceptWithResponder(message, new SinkMessageReceiver());
- }
- } catch (DeserializationException e) {
- return false;
- }
- }
-
- /**
- * @see MessageReceiver#close()
- */
- @Override
- public void close() {
- }
-
- }
-
- /**
- * A trivial message receiver that refuses all messages it receives.
- */
- private static class SinkMessageReceiver implements MessageReceiverWithResponder {
-
- @Override
- public boolean accept(Message message) {
- return true;
- }
-
- @Override
- public void close() {
- }
-
- @Override
- public boolean acceptWithResponder(Message message, MessageReceiver responder) {
- return true;
- }
- }
-
- /**
- * Testing the conformance suite.
- */
- @SmallTest
- public void testConformance() throws FileNotFoundException {
- runTest("conformance_",
- ConformanceTestInterface.MANAGER.buildStub(CoreImpl.getInstance(),
- ConformanceTestInterface.MANAGER.buildProxy(
- CoreImpl.getInstance(), new SinkMessageReceiver())));
- }
-
- /**
- * Testing the integration suite for message headers.
- */
- @SmallTest
- public void testIntegrationMessageHeader() throws FileNotFoundException {
- runTest("integration_msghdr_",
- new RoutingMessageReceiver(IntegrationTestInterface.MANAGER.buildStub(null,
- IntegrationTestInterface.MANAGER.buildProxy(null,
- new SinkMessageReceiver())),
- IntegrationTestInterfaceTestHelper
- .newIntegrationTestInterfaceMethodCallback()));
- }
-
- /**
- * Testing the integration suite for request messages.
- */
- @SmallTest
- public void testIntegrationRequestMessage() throws FileNotFoundException {
- runTest("integration_intf_rqst_",
- new RoutingMessageReceiver(IntegrationTestInterface.MANAGER.buildStub(null,
- IntegrationTestInterface.MANAGER.buildProxy(null,
- new SinkMessageReceiver())),
- IntegrationTestInterfaceTestHelper
- .newIntegrationTestInterfaceMethodCallback()));
- }
-
- /**
- * Testing the integration suite for response messages.
- */
- @SmallTest
- public void testIntegrationResponseMessage() throws FileNotFoundException {
- runTest("integration_intf_resp_",
- new RoutingMessageReceiver(IntegrationTestInterface.MANAGER.buildStub(null,
- IntegrationTestInterface.MANAGER.buildProxy(null,
- new SinkMessageReceiver())),
- IntegrationTestInterfaceTestHelper
- .newIntegrationTestInterfaceMethodCallback()));
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java
deleted file mode 100644
index 91b993c..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtil.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// 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);
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtilTest.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtilTest.java
deleted file mode 100644
index 623abc3..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/ValidationTestUtilTest.java
+++ /dev/null
@@ -1,151 +0,0 @@
-// 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 android.support.test.filters.SmallTest;
-
-import org.chromium.mojo.MojoTestCase;
-
-import java.nio.ByteBuffer;
-import java.nio.ByteOrder;
-
-/**
- * Testing {@link ValidationTestUtil}.
- */
-public class ValidationTestUtilTest extends MojoTestCase {
-
- /**
- * Check that the input parser is correct on a given input.
- */
- public static void checkInputParser(
- String input, boolean isInputValid, ByteBuffer expectedData, int expectedHandlesCount) {
- ValidationTestUtil.Data data = ValidationTestUtil.parseData(input);
- if (isInputValid) {
- assertNull(data.getErrorMessage());
- assertEquals(expectedData, data.getData());
- assertEquals(expectedHandlesCount, data.getHandlesCount());
- } else {
- assertNotNull(data.getErrorMessage());
- assertNull(data.getData());
- }
- }
-
- /**
- * Testing {@link ValidationTestUtil#parseData(String)}.
- */
- @SmallTest
- public void testCorrectMessageParsing() {
- {
- // Test empty input.
- String input = "";
- ByteBuffer expected = ByteBuffer.allocateDirect(0);
- expected.order(ByteOrder.LITTLE_ENDIAN);
-
- checkInputParser(input, true, expected, 0);
- }
- {
- // Test input that only consists of comments and whitespaces.
- String input = " \t // hello world \n\r \t// the answer is 42 ";
- ByteBuffer expected = ByteBuffer.allocateDirect(0);
- expected.order(ByteOrder.nativeOrder());
-
- checkInputParser(input, true, expected, 0);
- }
- {
- String input = "[u1]0x10// hello world !! \n\r \t [u2]65535 \n"
- + "[u4]65536 [u8]0xFFFFFFFFFFFFFFFF 0 0Xff";
- ByteBuffer expected = ByteBuffer.allocateDirect(17);
- expected.order(ByteOrder.nativeOrder());
- expected.put((byte) 0x10);
- expected.putShort((short) 65535);
- expected.putInt(65536);
- expected.putLong(-1);
- expected.put((byte) 0);
- expected.put((byte) 0xff);
- expected.flip();
-
- checkInputParser(input, true, expected, 0);
- }
- {
- String input = "[s8]-0x800 [s1]-128\t[s2]+0 [s4]-40";
- ByteBuffer expected = ByteBuffer.allocateDirect(15);
- expected.order(ByteOrder.nativeOrder());
- expected.putLong(-0x800);
- expected.put((byte) -128);
- expected.putShort((short) 0);
- expected.putInt(-40);
- expected.flip();
-
- checkInputParser(input, true, expected, 0);
- }
- {
- String input = "[b]00001011 [b]10000000 // hello world\r [b]00000000";
- ByteBuffer expected = ByteBuffer.allocateDirect(3);
- expected.order(ByteOrder.nativeOrder());
- expected.put((byte) 11);
- expected.put((byte) 128);
- expected.put((byte) 0);
- expected.flip();
-
- checkInputParser(input, true, expected, 0);
- }
- {
- String input = "[f]+.3e9 [d]-10.03";
- ByteBuffer expected = ByteBuffer.allocateDirect(12);
- expected.order(ByteOrder.nativeOrder());
- expected.putFloat(+.3e9f);
- expected.putDouble(-10.03);
- expected.flip();
-
- checkInputParser(input, true, expected, 0);
- }
- {
- String input = "[dist4]foo 0 [dist8]bar 0 [anchr]foo [anchr]bar";
- ByteBuffer expected = ByteBuffer.allocateDirect(14);
- expected.order(ByteOrder.nativeOrder());
- expected.putInt(14);
- expected.put((byte) 0);
- expected.putLong(9);
- expected.put((byte) 0);
- expected.flip();
-
- checkInputParser(input, true, expected, 0);
- }
- {
- String input = "// This message has handles! \n[handles]50 [u8]2";
- ByteBuffer expected = ByteBuffer.allocateDirect(8);
- expected.order(ByteOrder.nativeOrder());
- expected.putLong(2);
- expected.flip();
-
- checkInputParser(input, true, expected, 50);
- }
-
- // Test some failure cases.
- {
- String error_inputs[] = {
- "/ hello world",
- "[u1]x",
- "[u2]-1000",
- "[u1]0x100",
- "[s2]-0x8001",
- "[b]1",
- "[b]1111111k",
- "[dist4]unmatched",
- "[anchr]hello [dist8]hello",
- "[dist4]a [dist4]a [anchr]a",
- "[dist4]a [anchr]a [dist4]a [anchr]a",
- "0 [handles]50"
- };
-
- for (String input : error_inputs) {
- ByteBuffer expected = ByteBuffer.allocateDirect(0);
- expected.order(ByteOrder.nativeOrder());
- checkInputParser(input, false, expected, 0);
- }
- }
-
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/bindings/test/mojom/mojo/IntegrationTestInterfaceTestHelper.java b/mojo/android/javatests/src/org/chromium/mojo/bindings/test/mojom/mojo/IntegrationTestInterfaceTestHelper.java
deleted file mode 100644
index 8fb79d7..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/bindings/test/mojom/mojo/IntegrationTestInterfaceTestHelper.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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.test.mojom.mojo;
-
-import org.chromium.mojo.bindings.MessageReceiver;
-import org.chromium.mojo.bindings.test.mojom.mojo.IntegrationTestInterface.Method0Response;
-import org.chromium.mojo.bindings.test.mojom.mojo.IntegrationTestInterface_Internal.IntegrationTestInterfaceMethod0ResponseParamsForwardToCallback;
-
-/**
- * Helper class to access {@link IntegrationTestInterface_Internal} package protected method for
- * tests.
- */
-public class IntegrationTestInterfaceTestHelper {
-
- private static final class SinkMethod0Response implements Method0Response {
- @Override
- public void call(byte[] arg1) {
- }
- }
-
- /**
- * Creates a new {@link MessageReceiver} to use for the callback of
- * |IntegrationTestInterface#method0(Method0Response)|.
- */
- public static MessageReceiver newIntegrationTestInterfaceMethodCallback() {
- return new IntegrationTestInterfaceMethod0ResponseParamsForwardToCallback(
- new SinkMethod0Response());
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/system/impl/CoreImplTest.java b/mojo/android/javatests/src/org/chromium/mojo/system/impl/CoreImplTest.java
deleted file mode 100644
index 5120198..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/system/impl/CoreImplTest.java
+++ /dev/null
@@ -1,545 +0,0 @@
-// 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.system.impl;
-
-import android.support.test.filters.SmallTest;
-
-import org.chromium.mojo.MojoTestCase;
-import org.chromium.mojo.system.Core;
-import org.chromium.mojo.system.Core.HandleSignals;
-import org.chromium.mojo.system.DataPipe;
-import org.chromium.mojo.system.Handle;
-import org.chromium.mojo.system.InvalidHandle;
-import org.chromium.mojo.system.MessagePipeHandle;
-import org.chromium.mojo.system.MojoException;
-import org.chromium.mojo.system.MojoResult;
-import org.chromium.mojo.system.Pair;
-import org.chromium.mojo.system.ResultAnd;
-import org.chromium.mojo.system.SharedBufferHandle;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-
-/**
- * Testing the core API.
- */
-public class CoreImplTest extends MojoTestCase {
- private static final long RUN_LOOP_TIMEOUT_MS = 5;
-
- private static final ScheduledExecutorService WORKER =
- Executors.newSingleThreadScheduledExecutor();
-
- private static final HandleSignals ALL_SIGNALS =
- HandleSignals.none().setPeerClosed(true).setReadable(true).setWritable(true);
-
- private List<Handle> mHandlesToClose = new ArrayList<Handle>();
-
- /**
- * @see MojoTestCase#tearDown()
- */
- @Override
- protected void tearDown() throws Exception {
- MojoException toThrow = null;
- for (Handle handle : mHandlesToClose) {
- try {
- handle.close();
- } catch (MojoException e) {
- if (toThrow == null) {
- toThrow = e;
- }
- }
- }
- if (toThrow != null) {
- throw toThrow;
- }
- super.tearDown();
- }
-
- private void addHandleToClose(Handle handle) {
- mHandlesToClose.add(handle);
- }
-
- private void addHandlePairToClose(Pair<? extends Handle, ? extends Handle> handles) {
- mHandlesToClose.add(handles.first);
- mHandlesToClose.add(handles.second);
- }
-
- private static void checkSendingMessage(MessagePipeHandle in, MessagePipeHandle out) {
- Random random = new Random();
-
- // Writing a random 8 bytes message.
- byte[] bytes = new byte[8];
- random.nextBytes(bytes);
- ByteBuffer buffer = ByteBuffer.allocateDirect(bytes.length);
- buffer.put(bytes);
- in.writeMessage(buffer, null, MessagePipeHandle.WriteFlags.NONE);
-
- // Try to read into a small buffer.
- ByteBuffer receiveBuffer = ByteBuffer.allocateDirect(bytes.length / 2);
- ResultAnd<MessagePipeHandle.ReadMessageResult> result =
- out.readMessage(receiveBuffer, 0, MessagePipeHandle.ReadFlags.NONE);
- assertEquals(MojoResult.RESOURCE_EXHAUSTED, result.getMojoResult());
- assertEquals(bytes.length, result.getValue().getMessageSize());
- assertEquals(0, result.getValue().getHandlesCount());
-
- // Read into a correct buffer.
- receiveBuffer = ByteBuffer.allocateDirect(bytes.length);
- result = out.readMessage(receiveBuffer, 0, MessagePipeHandle.ReadFlags.NONE);
- assertEquals(MojoResult.OK, result.getMojoResult());
- assertEquals(bytes.length, result.getValue().getMessageSize());
- assertEquals(0, result.getValue().getHandlesCount());
- assertEquals(0, receiveBuffer.position());
- assertEquals(result.getValue().getMessageSize(), receiveBuffer.limit());
- byte[] receivedBytes = new byte[result.getValue().getMessageSize()];
- receiveBuffer.get(receivedBytes);
- assertTrue(Arrays.equals(bytes, receivedBytes));
- }
-
- private static void checkSendingData(DataPipe.ProducerHandle in, DataPipe.ConsumerHandle out) {
- Random random = new Random();
-
- // Writing a random 8 bytes message.
- byte[] bytes = new byte[8];
- random.nextBytes(bytes);
- ByteBuffer buffer = ByteBuffer.allocateDirect(bytes.length);
- buffer.put(bytes);
- ResultAnd<Integer> result = in.writeData(buffer, DataPipe.WriteFlags.NONE);
- assertEquals(MojoResult.OK, result.getMojoResult());
- assertEquals(bytes.length, result.getValue().intValue());
-
- // Query number of bytes available.
- ResultAnd<Integer> readResult = out.readData(null, DataPipe.ReadFlags.none().query(true));
- assertEquals(MojoResult.OK, readResult.getMojoResult());
- assertEquals(bytes.length, readResult.getValue().intValue());
-
- // Peek data into a buffer.
- ByteBuffer peekBuffer = ByteBuffer.allocateDirect(bytes.length);
- readResult = out.readData(peekBuffer, DataPipe.ReadFlags.none().peek(true));
- assertEquals(MojoResult.OK, readResult.getMojoResult());
- assertEquals(bytes.length, readResult.getValue().intValue());
- assertEquals(bytes.length, peekBuffer.limit());
- byte[] peekBytes = new byte[bytes.length];
- peekBuffer.get(peekBytes);
- assertTrue(Arrays.equals(bytes, peekBytes));
-
- // Read into a buffer.
- ByteBuffer receiveBuffer = ByteBuffer.allocateDirect(bytes.length);
- readResult = out.readData(receiveBuffer, DataPipe.ReadFlags.NONE);
- assertEquals(MojoResult.OK, readResult.getMojoResult());
- assertEquals(bytes.length, readResult.getValue().intValue());
- assertEquals(0, receiveBuffer.position());
- assertEquals(bytes.length, receiveBuffer.limit());
- byte[] receivedBytes = new byte[bytes.length];
- receiveBuffer.get(receivedBytes);
- assertTrue(Arrays.equals(bytes, receivedBytes));
- }
-
- private static void checkSharing(SharedBufferHandle in, SharedBufferHandle out) {
- Random random = new Random();
-
- ByteBuffer buffer1 = in.map(0, 8, SharedBufferHandle.MapFlags.NONE);
- assertEquals(8, buffer1.capacity());
- ByteBuffer buffer2 = out.map(0, 8, SharedBufferHandle.MapFlags.NONE);
- assertEquals(8, buffer2.capacity());
-
- byte[] bytes = new byte[8];
- random.nextBytes(bytes);
- buffer1.put(bytes);
-
- byte[] receivedBytes = new byte[bytes.length];
- buffer2.get(receivedBytes);
-
- assertTrue(Arrays.equals(bytes, receivedBytes));
-
- in.unmap(buffer1);
- out.unmap(buffer2);
- }
-
- /**
- * Testing that Core can be retrieved from a handle.
- */
- @SmallTest
- public void testGetCore() {
- Core core = CoreImpl.getInstance();
-
- Pair<? extends Handle, ? extends Handle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
- assertEquals(core, handles.first.getCore());
- assertEquals(core, handles.second.getCore());
-
- handles = core.createDataPipe(null);
- addHandlePairToClose(handles);
- assertEquals(core, handles.first.getCore());
- assertEquals(core, handles.second.getCore());
-
- SharedBufferHandle handle = core.createSharedBuffer(null, 100);
- SharedBufferHandle handle2 = handle.duplicate(null);
- addHandleToClose(handle);
- addHandleToClose(handle2);
- assertEquals(core, handle.getCore());
- assertEquals(core, handle2.getCore());
- }
-
- private static void createAndCloseMessagePipe(MessagePipeHandle.CreateOptions options) {
- Core core = CoreImpl.getInstance();
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(options);
- handles.first.close();
- handles.second.close();
- }
-
- /**
- * Testing {@link MessagePipeHandle} creation.
- */
- @SmallTest
- public void testMessagePipeCreation() {
- // Test creation with null options.
- createAndCloseMessagePipe(null);
- // Test creation with default options.
- createAndCloseMessagePipe(new MessagePipeHandle.CreateOptions());
- }
-
- /**
- * Testing {@link MessagePipeHandle}.
- */
- @SmallTest
- public void testMessagePipeEmpty() {
- Core core = CoreImpl.getInstance();
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- // Testing read on an empty pipe.
- ResultAnd<MessagePipeHandle.ReadMessageResult> readResult =
- handles.first.readMessage(null, 0, MessagePipeHandle.ReadFlags.NONE);
- assertEquals(MojoResult.SHOULD_WAIT, readResult.getMojoResult());
-
- handles.first.close();
- handles.second.close();
- }
-
- /**
- * Testing {@link MessagePipeHandle}.
- */
- @SmallTest
- public void testMessagePipeSend() {
- Core core = CoreImpl.getInstance();
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- checkSendingMessage(handles.first, handles.second);
- checkSendingMessage(handles.second, handles.first);
- }
-
- /**
- * Testing {@link MessagePipeHandle}.
- */
- @SmallTest
- public void testMessagePipeReceiveOnSmallBuffer() {
- Random random = new Random();
- Core core = CoreImpl.getInstance();
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- // Writing a random 8 bytes message.
- byte[] bytes = new byte[8];
- random.nextBytes(bytes);
- ByteBuffer buffer = ByteBuffer.allocateDirect(bytes.length);
- buffer.put(bytes);
- handles.first.writeMessage(buffer, null, MessagePipeHandle.WriteFlags.NONE);
-
- ByteBuffer receiveBuffer = ByteBuffer.allocateDirect(1);
- ResultAnd<MessagePipeHandle.ReadMessageResult> result =
- handles.second.readMessage(receiveBuffer, 0, MessagePipeHandle.ReadFlags.NONE);
- assertEquals(MojoResult.RESOURCE_EXHAUSTED, result.getMojoResult());
- assertEquals(bytes.length, result.getValue().getMessageSize());
- assertEquals(0, result.getValue().getHandlesCount());
- }
-
- /**
- * Testing {@link MessagePipeHandle}.
- */
- @SmallTest
- public void testMessagePipeSendHandles() {
- Core core = CoreImpl.getInstance();
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- Pair<MessagePipeHandle, MessagePipeHandle> handlesToShare = core.createMessagePipe(null);
- addHandlePairToClose(handles);
- addHandlePairToClose(handlesToShare);
-
- handles.first.writeMessage(null, Collections.<Handle>singletonList(handlesToShare.second),
- MessagePipeHandle.WriteFlags.NONE);
- assertFalse(handlesToShare.second.isValid());
- ResultAnd<MessagePipeHandle.ReadMessageResult> readMessageResult =
- handles.second.readMessage(null, 1, MessagePipeHandle.ReadFlags.NONE);
- assertEquals(1, readMessageResult.getValue().getHandlesCount());
- MessagePipeHandle newHandle =
- readMessageResult.getValue().getHandles().get(0).toMessagePipeHandle();
- addHandleToClose(newHandle);
- assertTrue(newHandle.isValid());
- checkSendingMessage(handlesToShare.first, newHandle);
- checkSendingMessage(newHandle, handlesToShare.first);
- }
-
- private static void createAndCloseDataPipe(DataPipe.CreateOptions options) {
- Core core = CoreImpl.getInstance();
- Pair<DataPipe.ProducerHandle, DataPipe.ConsumerHandle> handles =
- core.createDataPipe(options);
- handles.first.close();
- handles.second.close();
- }
-
- /**
- * Testing {@link DataPipe}.
- */
- @SmallTest
- public void testDataPipeCreation() {
- // Create datapipe with null options.
- createAndCloseDataPipe(null);
- DataPipe.CreateOptions options = new DataPipe.CreateOptions();
- // Create datapipe with element size set.
- options.setElementNumBytes(24);
- createAndCloseDataPipe(options);
- // Create datapipe with capacity set.
- options.setCapacityNumBytes(1024 * options.getElementNumBytes());
- createAndCloseDataPipe(options);
- }
-
- /**
- * Testing {@link DataPipe}.
- */
- @SmallTest
- public void testDataPipeSend() {
- Core core = CoreImpl.getInstance();
-
- Pair<DataPipe.ProducerHandle, DataPipe.ConsumerHandle> handles = core.createDataPipe(null);
- addHandlePairToClose(handles);
-
- checkSendingData(handles.first, handles.second);
- }
-
- /**
- * Testing {@link DataPipe}.
- */
- @SmallTest
- public void testDataPipeTwoPhaseSend() {
- Random random = new Random();
- Core core = CoreImpl.getInstance();
- Pair<DataPipe.ProducerHandle, DataPipe.ConsumerHandle> handles = core.createDataPipe(null);
- addHandlePairToClose(handles);
-
- // Writing a random 8 bytes message.
- byte[] bytes = new byte[8];
- random.nextBytes(bytes);
- ByteBuffer buffer = handles.first.beginWriteData(bytes.length, DataPipe.WriteFlags.NONE);
- assertTrue(buffer.capacity() >= bytes.length);
- buffer.put(bytes);
- handles.first.endWriteData(bytes.length);
-
- // Read into a buffer.
- ByteBuffer receiveBuffer =
- handles.second.beginReadData(bytes.length, DataPipe.ReadFlags.NONE);
- assertEquals(0, receiveBuffer.position());
- assertEquals(bytes.length, receiveBuffer.limit());
- byte[] receivedBytes = new byte[bytes.length];
- receiveBuffer.get(receivedBytes);
- assertTrue(Arrays.equals(bytes, receivedBytes));
- handles.second.endReadData(bytes.length);
- }
-
- /**
- * Testing {@link DataPipe}.
- */
- @SmallTest
- public void testDataPipeDiscard() {
- Random random = new Random();
- Core core = CoreImpl.getInstance();
- Pair<DataPipe.ProducerHandle, DataPipe.ConsumerHandle> handles = core.createDataPipe(null);
- addHandlePairToClose(handles);
-
- // Writing a random 8 bytes message.
- byte[] bytes = new byte[8];
- random.nextBytes(bytes);
- ByteBuffer buffer = ByteBuffer.allocateDirect(bytes.length);
- buffer.put(bytes);
- ResultAnd<Integer> result = handles.first.writeData(buffer, DataPipe.WriteFlags.NONE);
- assertEquals(MojoResult.OK, result.getMojoResult());
- assertEquals(bytes.length, result.getValue().intValue());
-
- // Discard bytes.
- final int nbBytesToDiscard = 4;
- assertEquals(nbBytesToDiscard,
- handles.second.discardData(nbBytesToDiscard, DataPipe.ReadFlags.NONE));
-
- // Read into a buffer.
- ByteBuffer receiveBuffer = ByteBuffer.allocateDirect(bytes.length - nbBytesToDiscard);
- ResultAnd<Integer> readResult =
- handles.second.readData(receiveBuffer, DataPipe.ReadFlags.NONE);
- assertEquals(MojoResult.OK, readResult.getMojoResult());
- assertEquals(bytes.length - nbBytesToDiscard, readResult.getValue().intValue());
- assertEquals(0, receiveBuffer.position());
- assertEquals(bytes.length - nbBytesToDiscard, receiveBuffer.limit());
- byte[] receivedBytes = new byte[bytes.length - nbBytesToDiscard];
- receiveBuffer.get(receivedBytes);
- assertTrue(Arrays.equals(
- Arrays.copyOfRange(bytes, nbBytesToDiscard, bytes.length), receivedBytes));
- }
-
- /**
- * Testing {@link SharedBufferHandle}.
- */
- @SmallTest
- public void testSharedBufferCreation() {
- Core core = CoreImpl.getInstance();
- // Test creation with empty options.
- core.createSharedBuffer(null, 8).close();
- // Test creation with default options.
- core.createSharedBuffer(new SharedBufferHandle.CreateOptions(), 8).close();
- }
-
- /**
- * Testing {@link SharedBufferHandle}.
- */
- @SmallTest
- public void testSharedBufferDuplication() {
- Core core = CoreImpl.getInstance();
- SharedBufferHandle handle = core.createSharedBuffer(null, 8);
- addHandleToClose(handle);
-
- // Test duplication with empty options.
- handle.duplicate(null).close();
- // Test creation with default options.
- handle.duplicate(new SharedBufferHandle.DuplicateOptions()).close();
- }
-
- /**
- * Testing {@link SharedBufferHandle}.
- */
- @SmallTest
- public void testSharedBufferSending() {
- Core core = CoreImpl.getInstance();
- SharedBufferHandle handle = core.createSharedBuffer(null, 8);
- addHandleToClose(handle);
- SharedBufferHandle newHandle = handle.duplicate(null);
- addHandleToClose(newHandle);
-
- checkSharing(handle, newHandle);
- checkSharing(newHandle, handle);
- }
-
- /**
- * Testing that invalid handle can be used with this implementation.
- */
- @SmallTest
- public void testInvalidHandle() {
- Core core = CoreImpl.getInstance();
- Handle handle = InvalidHandle.INSTANCE;
-
- // Checking sending an invalid handle.
- // Until the behavior is changed on the C++ side, handle gracefully 2 different use case:
- // - Receive a INVALID_ARGUMENT exception
- // - Receive an invalid handle on the other side.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
- try {
- handles.first.writeMessage(null, Collections.<Handle>singletonList(handle),
- MessagePipeHandle.WriteFlags.NONE);
- ResultAnd<MessagePipeHandle.ReadMessageResult> readMessageResult =
- handles.second.readMessage(null, 1, MessagePipeHandle.ReadFlags.NONE);
- assertEquals(1, readMessageResult.getValue().getHandlesCount());
- assertFalse(readMessageResult.getValue().getHandles().get(0).isValid());
- } catch (MojoException e) {
- assertEquals(MojoResult.INVALID_ARGUMENT, e.getMojoResult());
- }
- }
-
- /**
- * Testing the pass method on message pipes.
- */
- @SmallTest
- public void testMessagePipeHandlePass() {
- Core core = CoreImpl.getInstance();
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- assertTrue(handles.first.isValid());
- MessagePipeHandle handleClone = handles.first.pass();
-
- addHandleToClose(handleClone);
-
- assertFalse(handles.first.isValid());
- assertTrue(handleClone.isValid());
- checkSendingMessage(handleClone, handles.second);
- checkSendingMessage(handles.second, handleClone);
- }
-
- /**
- * Testing the pass method on data pipes.
- */
- @SmallTest
- public void testDataPipeHandlePass() {
- Core core = CoreImpl.getInstance();
- Pair<DataPipe.ProducerHandle, DataPipe.ConsumerHandle> handles = core.createDataPipe(null);
- addHandlePairToClose(handles);
-
- DataPipe.ProducerHandle producerClone = handles.first.pass();
- DataPipe.ConsumerHandle consumerClone = handles.second.pass();
-
- addHandleToClose(producerClone);
- addHandleToClose(consumerClone);
-
- assertFalse(handles.first.isValid());
- assertFalse(handles.second.isValid());
- assertTrue(producerClone.isValid());
- assertTrue(consumerClone.isValid());
- checkSendingData(producerClone, consumerClone);
- }
-
- /**
- * Testing the pass method on shared buffers.
- */
- @SmallTest
- public void testSharedBufferPass() {
- Core core = CoreImpl.getInstance();
- SharedBufferHandle handle = core.createSharedBuffer(null, 8);
- addHandleToClose(handle);
- SharedBufferHandle newHandle = handle.duplicate(null);
- addHandleToClose(newHandle);
-
- SharedBufferHandle handleClone = handle.pass();
- SharedBufferHandle newHandleClone = newHandle.pass();
-
- addHandleToClose(handleClone);
- addHandleToClose(newHandleClone);
-
- assertFalse(handle.isValid());
- assertTrue(handleClone.isValid());
- checkSharing(handleClone, newHandleClone);
- checkSharing(newHandleClone, handleClone);
- }
-
- /**
- * esting handle conversion to native and back.
- */
- @SmallTest
- public void testHandleConversion() {
- Core core = CoreImpl.getInstance();
- Pair<MessagePipeHandle, MessagePipeHandle> handles = core.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- MessagePipeHandle converted =
- core.acquireNativeHandle(handles.first.releaseNativeHandle()).toMessagePipeHandle();
- addHandleToClose(converted);
-
- assertFalse(handles.first.isValid());
-
- checkSendingMessage(converted, handles.second);
- checkSendingMessage(handles.second, converted);
- }
-}
diff --git a/mojo/android/javatests/src/org/chromium/mojo/system/impl/WatcherImplTest.java b/mojo/android/javatests/src/org/chromium/mojo/system/impl/WatcherImplTest.java
deleted file mode 100644
index e14adb1..0000000
--- a/mojo/android/javatests/src/org/chromium/mojo/system/impl/WatcherImplTest.java
+++ /dev/null
@@ -1,255 +0,0 @@
-// Copyright 2016 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.system.impl;
-
-import android.support.test.filters.SmallTest;
-
-import org.chromium.mojo.MojoTestCase;
-import org.chromium.mojo.system.Core;
-import org.chromium.mojo.system.Handle;
-import org.chromium.mojo.system.InvalidHandle;
-import org.chromium.mojo.system.MessagePipeHandle;
-import org.chromium.mojo.system.MojoException;
-import org.chromium.mojo.system.MojoResult;
-import org.chromium.mojo.system.Pair;
-import org.chromium.mojo.system.Watcher;
-import org.chromium.mojo.system.Watcher.Callback;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Testing the Watcher.
- */
-public class WatcherImplTest extends MojoTestCase {
- private List<Handle> mHandlesToClose = new ArrayList<Handle>();
- private Watcher mWatcher;
- private Core mCore;
-
- /**
- * @see MojoTestCase#setUp()
- */
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- mWatcher = new WatcherImpl();
- mCore = CoreImpl.getInstance();
- }
-
- /**
- * @see MojoTestCase#tearDown()
- */
- @Override
- protected void tearDown() throws Exception {
- mWatcher.destroy();
- MojoException toThrow = null;
- for (Handle handle : mHandlesToClose) {
- try {
- handle.close();
- } catch (MojoException e) {
- if (toThrow == null) {
- toThrow = e;
- }
- }
- }
- if (toThrow != null) {
- throw toThrow;
- }
- super.tearDown();
- }
-
- private void addHandlePairToClose(Pair<? extends Handle, ? extends Handle> handles) {
- mHandlesToClose.add(handles.first);
- mHandlesToClose.add(handles.second);
- }
-
- private static class WatcherResult implements Callback {
- private int mResult = Integer.MIN_VALUE;
- private MessagePipeHandle mReadPipe;
-
- /**
- * @param readPipe A MessagePipeHandle to read from when onResult triggers success.
- */
- public WatcherResult(MessagePipeHandle readPipe) {
- mReadPipe = readPipe;
- }
- public WatcherResult() {
- this(null);
- }
-
- /**
- * @see Callback#onResult(int)
- */
- @Override
- public void onResult(int result) {
- this.mResult = result;
-
- if (result == MojoResult.OK && mReadPipe != null) {
- mReadPipe.readMessage(
- null, 0, MessagePipeHandle.ReadFlags.none().setMayDiscard(true));
- }
- }
-
- /**
- * @return the result
- */
- public int getResult() {
- return mResult;
- }
- }
-
- /**
- * Testing {@link Watcher} implementation.
- */
- @SmallTest
- public void testCorrectResult() {
- // Checking a correct result.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = mCore.createMessagePipe(null);
- addHandlePairToClose(handles);
- final WatcherResult watcherResult = new WatcherResult(handles.first);
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- mWatcher.start(handles.first, Core.HandleSignals.READABLE, watcherResult);
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- handles.second.writeMessage(
- ByteBuffer.allocateDirect(1), null, MessagePipeHandle.WriteFlags.NONE);
- runLoopUntilIdle();
- assertEquals(MojoResult.OK, watcherResult.getResult());
- }
-
- /**
- * Testing {@link Watcher} implementation.
- */
- @SmallTest
- public void testClosingPeerHandle() {
- // Closing the peer handle.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = mCore.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- final WatcherResult watcherResult = new WatcherResult();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- mWatcher.start(handles.first, Core.HandleSignals.READABLE, watcherResult);
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- handles.second.close();
- runLoopUntilIdle();
- assertEquals(MojoResult.FAILED_PRECONDITION, watcherResult.getResult());
- }
-
- /**
- * Testing {@link Watcher} implementation.
- */
- @SmallTest
- public void testClosingWatchedHandle() {
- // Closing the peer handle.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = mCore.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- final WatcherResult watcherResult = new WatcherResult();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- mWatcher.start(handles.first, Core.HandleSignals.READABLE, watcherResult);
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- handles.first.close();
- runLoopUntilIdle();
- assertEquals(MojoResult.CANCELLED, watcherResult.getResult());
- }
-
- /**
- * Testing {@link Watcher} implementation.
- */
- @SmallTest
- public void testInvalidHandle() {
- // Closing the peer handle.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = mCore.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- final WatcherResult watcherResult = new WatcherResult();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- handles.first.close();
- assertEquals(MojoResult.INVALID_ARGUMENT,
- mWatcher.start(handles.first, Core.HandleSignals.READABLE, watcherResult));
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
- }
-
- /**
- * Testing {@link Watcher} implementation.
- */
- @SmallTest
- public void testDefaultInvalidHandle() {
- final WatcherResult watcherResult = new WatcherResult();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- assertEquals(MojoResult.INVALID_ARGUMENT,
- mWatcher.start(InvalidHandle.INSTANCE, Core.HandleSignals.READABLE, watcherResult));
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
- }
-
- /**
- * Testing {@link Watcher} implementation.
- */
- @SmallTest
- public void testCancel() {
- // Closing the peer handle.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = mCore.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- final WatcherResult watcherResult = new WatcherResult();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- mWatcher.start(handles.first, Core.HandleSignals.READABLE, watcherResult);
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- mWatcher.cancel();
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- handles.second.writeMessage(
- ByteBuffer.allocateDirect(1), null, MessagePipeHandle.WriteFlags.NONE);
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
- }
-
- /**
- * Testing {@link Watcher} implementation.
- */
- @SmallTest
- public void testImmediateCancelOnInvalidHandle() {
- // Closing the peer handle.
- Pair<MessagePipeHandle, MessagePipeHandle> handles = mCore.createMessagePipe(null);
- addHandlePairToClose(handles);
-
- final WatcherResult watcherResult = new WatcherResult();
- handles.first.close();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
-
- mWatcher.start(handles.first, Core.HandleSignals.READABLE, watcherResult);
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
- mWatcher.cancel();
-
- runLoopUntilIdle();
- assertEquals(Integer.MIN_VALUE, watcherResult.getResult());
- }
-}
diff --git a/mojo/android/javatests/validation_test_util.cc b/mojo/android/javatests/validation_test_util.cc
deleted file mode 100644
index 75f79b3..0000000
--- a/mojo/android/javatests/validation_test_util.cc
+++ /dev/null
@@ -1,54 +0,0 @@
-// 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.
-
-#include "mojo/android/javatests/validation_test_util.h"
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "base/android/jni_android.h"
-#include "base/android/jni_string.h"
-#include "base/android/scoped_java_ref.h"
-#include "base/test/test_support_android.h"
-#include "jni/ValidationTestUtil_jni.h"
-#include "mojo/public/cpp/bindings/tests/validation_test_input_parser.h"
-
-using base::android::JavaParamRef;
-using base::android::ScopedJavaLocalRef;
-
-namespace mojo {
-namespace android {
-
-bool RegisterValidationTestUtil(JNIEnv* env) {
- return RegisterNativesImpl(env);
-}
-
-ScopedJavaLocalRef<jobject> ParseData(
- JNIEnv* env,
- const JavaParamRef<jclass>& jcaller,
- const JavaParamRef<jstring>& data_as_string) {
- std::string input =
- base::android::ConvertJavaStringToUTF8(env, data_as_string);
- std::vector<uint8_t> data;
- size_t num_handles;
- std::string error_message;
- if (!test::ParseValidationTestInput(
- input, &data, &num_handles, &error_message)) {
- ScopedJavaLocalRef<jstring> j_error_message =
- base::android::ConvertUTF8ToJavaString(env, error_message);
- return Java_ValidationTestUtil_buildData(env, nullptr, 0, j_error_message);
- }
- void* data_ptr = &data[0];
- if (!data_ptr) {
- DCHECK(!data.size());
- data_ptr = &data;
- }
- jobject byte_buffer =
- env->NewDirectByteBuffer(data_ptr, data.size());
- return Java_ValidationTestUtil_buildData(env, byte_buffer, num_handles,
- nullptr);
-}
-
-} // namespace android
-} // namespace mojo
diff --git a/mojo/android/javatests/validation_test_util.h b/mojo/android/javatests/validation_test_util.h
deleted file mode 100644
index f58dc07..0000000
--- a/mojo/android/javatests/validation_test_util.h
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-
-#ifndef MOJO_ANDROID_JAVATESTS_VALIDATION_TEST_UTIL_H_
-#define MOJO_ANDROID_JAVATESTS_VALIDATION_TEST_UTIL_H_
-
-#include <jni.h>
-
-#include "base/android/jni_android.h"
-
-namespace mojo {
-namespace android {
-
-JNI_EXPORT bool RegisterValidationTestUtil(JNIEnv* env);
-
-} // namespace android
-} // namespace mojo
-
-#endif // MOJO_SYSTEM_ANDROID_JAVATESTS_VALIDATION_TEST_UTIL_H_