blob: f0b19118a9097e495cf4be983947c11c2c7b05ce [file] [log] [blame]
// Copyright 2013 The Flutter 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 com.example.alternate_language_test_plugin;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.example.alternate_language_test_plugin.CoreTests.AllNullableTypes;
import com.example.alternate_language_test_plugin.CoreTests.AllNullableTypesWrapper;
import com.example.alternate_language_test_plugin.CoreTests.AllTypes;
import com.example.alternate_language_test_plugin.CoreTests.FlutterIntegrationCoreApi;
import com.example.alternate_language_test_plugin.CoreTests.HostIntegrationCoreApi;
import com.example.alternate_language_test_plugin.CoreTests.Result;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
/** This plugin handles the native side of the integration tests in example/integration_test/. */
public class AlternateLanguageTestPlugin implements FlutterPlugin, HostIntegrationCoreApi {
@Nullable FlutterIntegrationCoreApi flutterApi = null;
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
HostIntegrationCoreApi.setup(binding.getBinaryMessenger(), this);
flutterApi = new FlutterIntegrationCoreApi(binding.getBinaryMessenger());
}
@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {}
// HostIntegrationCoreApi
@Override
public void noop() {}
@Override
public @NonNull AllTypes echoAllTypes(@NonNull AllTypes everything) {
return everything;
}
@Override
public @Nullable AllNullableTypes echoAllNullableTypes(@Nullable AllNullableTypes everything) {
return everything;
}
@Override
public void throwError() {
throw new RuntimeException("An error");
}
@Override
public Long echoInt(@NonNull Long anInt) {
return anInt;
}
@Override
public Double echoDouble(@NonNull Double aDouble) {
return aDouble;
}
@Override
public Boolean echoBool(@NonNull Boolean aBool) {
return aBool;
}
@Override
public String echoString(@NonNull String aString) {
return aString;
}
@Override
public byte[] echoUint8List(@NonNull byte[] aUint8List) {
return aUint8List;
}
@Override
public @NonNull Object echoObject(@NonNull Object anObject) {
return anObject;
}
@Override
public @Nullable String extractNestedNullableString(@NonNull AllNullableTypesWrapper wrapper) {
return wrapper.getValues().getANullableString();
}
@Override
public @NonNull AllNullableTypesWrapper createNestedNullableString(
@Nullable String nullableString) {
AllNullableTypes innerObject =
new AllNullableTypes.Builder().setANullableString(nullableString).build();
return new AllNullableTypesWrapper.Builder().setValues(innerObject).build();
}
@Override
public @NonNull AllNullableTypes sendMultipleNullableTypes(
@Nullable Boolean aNullableBool,
@Nullable Long aNullableInt,
@Nullable String aNullableString) {
AllNullableTypes someThings =
new AllNullableTypes.Builder()
.setANullableBool(aNullableBool)
.setANullableInt(aNullableInt)
.setANullableString(aNullableString)
.build();
return someThings;
}
@Override
public @Nullable Long echoNullableInt(@Nullable Long aNullableInt) {
return aNullableInt;
}
@Override
public @Nullable Double echoNullableDouble(@Nullable Double aNullableDouble) {
return aNullableDouble;
}
@Override
public @Nullable Boolean echoNullableBool(@Nullable Boolean aNullableBool) {
return aNullableBool;
}
@Override
public @Nullable String echoNullableString(@Nullable String aNullableString) {
return aNullableString;
}
@Override
public @Nullable byte[] echoNullableUint8List(@Nullable byte[] aNullableUint8List) {
return aNullableUint8List;
}
@Override
public @Nullable Object echoNullableObject(@Nullable Object aNullableObject) {
return aNullableObject;
}
@Override
public void noopAsync(Result<Void> result) {
result.success(null);
}
@Override
public void echoAsyncString(@NonNull String aString, Result<String> result) {
result.success(aString);
}
@Override
public void callFlutterNoop(Result<Void> result) {
flutterApi.noop(
new FlutterIntegrationCoreApi.Reply<Void>() {
public void reply(Void value) {
result.success(value);
}
});
}
@Override
public void callFlutterEchoString(@NonNull String aString, Result<String> result) {
flutterApi.echoString(
aString,
new FlutterIntegrationCoreApi.Reply<String>() {
public void reply(String value) {
result.success(value);
}
});
}
}