dart format

This commit is contained in:
ekibun
2020-09-27 01:28:02 +08:00
parent ec7c7fd7cf
commit 097e118e5d
5 changed files with 71 additions and 33 deletions

View File

@@ -18,8 +18,8 @@ void main() {
// Verify that platform version is retrieved. // Verify that platform version is retrieved.
expect( expect(
find.byWidgetPredicate( find.byWidgetPredicate(
(Widget widget) => widget is Text && (Widget widget) =>
widget.data.startsWith('Running on:'), widget is Text && widget.data.startsWith('Running on:'),
), ),
findsOneWidget, findsOneWidget,
); );

View File

@@ -3,7 +3,7 @@
* @Author: ekibun * @Author: ekibun
* @Date: 2020-09-19 10:29:04 * @Date: 2020-09-19 10:29:04
* @LastEditors: ekibun * @LastEditors: ekibun
* @LastEditTime: 2020-09-24 23:25:32 * @LastEditTime: 2020-09-27 01:12:16
*/ */
import 'dart:ffi'; import 'dart:ffi';
import 'dart:io'; import 'dart:io';
@@ -84,16 +84,20 @@ Pointer jsThrowInternalError(Pointer ctx, String message) {
} }
/// JSValue *jsEXCEPTION() /// JSValue *jsEXCEPTION()
final Pointer Function() jsEXCEPTION = final Pointer Function() jsEXCEPTION = qjsLib
qjsLib.lookup<NativeFunction<Pointer Function()>>("jsEXCEPTION").asFunction(); .lookup<NativeFunction<Pointer Function()>>("jsEXCEPTION")
.asFunction();
/// JSValue *jsUNDEFINED() /// JSValue *jsUNDEFINED()
final Pointer Function() jsUNDEFINED = final Pointer Function() jsUNDEFINED = qjsLib
qjsLib.lookup<NativeFunction<Pointer Function()>>("jsUNDEFINED").asFunction(); .lookup<NativeFunction<Pointer Function()>>("jsUNDEFINED")
.asFunction();
/// JSRuntime *jsNewRuntime(JSChannel channel) /// JSRuntime *jsNewRuntime(JSChannel channel)
final Pointer Function( final Pointer Function(
Pointer<NativeFunction<Pointer Function(Pointer ctx, Pointer method, Pointer argv)>>, Pointer<
NativeFunction<
Pointer Function(Pointer ctx, Pointer method, Pointer argv)>>,
) _jsNewRuntime = qjsLib ) _jsNewRuntime = qjsLib
.lookup< .lookup<
NativeFunction< NativeFunction<
@@ -209,7 +213,13 @@ Pointer jsEval(
) { ) {
var utf8input = Utf8.toUtf8(input); var utf8input = Utf8.toUtf8(input);
var utf8filename = Utf8.toUtf8(filename); var utf8filename = Utf8.toUtf8(filename);
var val = _jsEval(ctx, utf8input, Utf8.strlen(utf8input), utf8filename, evalFlags); var val = _jsEval(
ctx,
utf8input,
Utf8.strlen(utf8input),
utf8filename,
evalFlags,
);
free(utf8input); free(utf8input);
free(utf8filename); free(utf8filename);
runtimeOpaques[jsGetRuntime(ctx)].port.sendPort.send('eval'); runtimeOpaques[jsGetRuntime(ctx)].port.sendPort.send('eval');
@@ -532,18 +542,23 @@ final Pointer Function(
/// int jsDefinePropertyValue(JSContext *ctx, JSValueConst *this_obj, /// int jsDefinePropertyValue(JSContext *ctx, JSValueConst *this_obj,
/// JSAtom prop, JSValue *val, int flags) /// JSAtom prop, JSValue *val, int flags)
final int Function(Pointer ctx, Pointer thisObj, int prop, Pointer val, int flag) final int Function(
jsDefinePropertyValue = qjsLib Pointer ctx,
.lookup< Pointer thisObj,
NativeFunction< int prop,
Int32 Function( Pointer val,
Pointer, int flag,
Pointer, ) jsDefinePropertyValue = qjsLib
Uint32, .lookup<
Pointer, NativeFunction<
Int32, Int32 Function(
)>>("jsDefinePropertyValue") Pointer,
.asFunction(); Pointer,
Uint32,
Pointer,
Int32,
)>>("jsDefinePropertyValue")
.asFunction();
/// void jsFreeAtom(JSContext *ctx, JSAtom v) /// void jsFreeAtom(JSContext *ctx, JSAtom v)
final Pointer Function( final Pointer Function(
@@ -618,8 +633,9 @@ final int Function(
.asFunction(); .asFunction();
/// uint32_t sizeOfJSValue() /// uint32_t sizeOfJSValue()
final int Function() _sizeOfJSValue = final int Function() _sizeOfJSValue = qjsLib
qjsLib.lookup<NativeFunction<Uint32 Function()>>("sizeOfJSValue").asFunction(); .lookup<NativeFunction<Uint32 Function()>>("sizeOfJSValue")
.asFunction();
final sizeOfJSValue = _sizeOfJSValue(); final sizeOfJSValue = _sizeOfJSValue();
@@ -664,7 +680,9 @@ Pointer jsCall(
Pointer thisObj, Pointer thisObj,
List<Pointer> argv, List<Pointer> argv,
) { ) {
Pointer jsArgs = allocate<Uint8>(count: argv.length > 0 ? sizeOfJSValue * argv.length : 1); Pointer jsArgs = allocate<Uint8>(
count: argv.length > 0 ? sizeOfJSValue * argv.length : 1,
);
for (int i = 0; i < argv.length; ++i) { for (int i = 0; i < argv.length; ++i) {
Pointer jsArg = argv[i]; Pointer jsArg = argv[i];
setJSValueList(jsArgs, i, jsArg); setJSValueList(jsArgs, i, jsArg);

View File

@@ -3,7 +3,7 @@
* @Author: ekibun * @Author: ekibun
* @Date: 2020-08-08 08:29:09 * @Date: 2020-08-08 08:29:09
* @LastEditors: ekibun * @LastEditors: ekibun
* @LastEditTime: 2020-09-21 23:59:40 * @LastEditTime: 2020-09-27 01:08:14
*/ */
import 'dart:async'; import 'dart:async';
import 'dart:ffi'; import 'dart:ffi';
@@ -33,7 +33,12 @@ class FlutterQjs {
if (method.address != 0) { if (method.address != 0) {
if (methodHandler == null) throw Exception("No MethodHandler"); if (methodHandler == null) throw Exception("No MethodHandler");
var argvs = jsToDart(ctx, argv); var argvs = jsToDart(ctx, argv);
return dartToJs(ctx, methodHandler(Utf8.fromUtf8(method.cast<Utf8>()), argvs)); return dartToJs(
ctx,
methodHandler(
Utf8.fromUtf8(method.cast<Utf8>()),
argvs,
));
} }
if (moduleHandler == null) throw Exception("No ModuleHandler"); if (moduleHandler == null) throw Exception("No ModuleHandler");
var ret = Utf8.toUtf8(moduleHandler(Utf8.fromUtf8(argv.cast<Utf8>()))); var ret = Utf8.toUtf8(moduleHandler(Utf8.fromUtf8(argv.cast<Utf8>())));
@@ -42,7 +47,10 @@ class FlutterQjs {
}); });
return ret; return ret;
} catch (e, stack) { } catch (e, stack) {
var err = jsThrowInternalError(ctx, e.toString() + "\n" + stack.toString()); var err = jsThrowInternalError(
ctx,
e.toString() + "\n" + stack.toString(),
);
if (method.address == 0) { if (method.address == 0) {
jsFreeValue(ctx, err); jsFreeValue(ctx, err);
return Pointer.fromAddress(0); return Pointer.fromAddress(0);
@@ -92,7 +100,12 @@ class FlutterQjs {
break; break;
} }
} }
List jsPromises = runtimeOpaques[_rt].ref.where((v) => v is JSPromise).toList(); List jsPromises = runtimeOpaques[_rt]
.ref
.where(
(v) => v is JSPromise,
)
.toList();
for (JSPromise jsPromise in jsPromises) { for (JSPromise jsPromise in jsPromises) {
if (jsPromise.checkResolveReject()) { if (jsPromise.checkResolveReject()) {
jsPromise.release(); jsPromise.release();

View File

@@ -68,7 +68,11 @@ class JSFunction extends JSRefValue {
@override @override
noSuchMethod(Invocation invocation) { noSuchMethod(Invocation invocation) {
if (val == null) return; if (val == null) return;
List<Pointer> args = invocation.positionalArguments.map((e) => dartToJs(ctx, e)).toList(); List<Pointer> args = invocation.positionalArguments
.map(
(e) => dartToJs(ctx, e),
)
.toList();
Pointer jsRet = jsCall(ctx, val, null, args); Pointer jsRet = jsCall(ctx, val, null, args);
for (Pointer jsArg in args) { for (Pointer jsArg in args) {
jsFreeValue(ctx, jsArg); jsFreeValue(ctx, jsArg);
@@ -109,7 +113,8 @@ String parseJSException(Pointer ctx, {Pointer e}) {
Pointer dartToJs(Pointer ctx, dynamic val, {Map<dynamic, dynamic> cache}) { Pointer dartToJs(Pointer ctx, dynamic val, {Map<dynamic, dynamic> cache}) {
if (val is Future) { if (val is Future) {
var resolvingFunc = allocate<Uint8>(count: sizeOfJSValue * 2); var resolvingFunc = allocate<Uint8>(count: sizeOfJSValue * 2);
var resolvingFunc2 = Pointer.fromAddress(resolvingFunc.address + sizeOfJSValue); var resolvingFunc2 =
Pointer.fromAddress(resolvingFunc.address + sizeOfJSValue);
var ret = jsNewPromiseCapability(ctx, resolvingFunc); var ret = jsNewPromiseCapability(ctx, resolvingFunc);
var res = jsToDart(ctx, resolvingFunc); var res = jsToDart(ctx, resolvingFunc);
var rej = jsToDart(ctx, resolvingFunc2); var rej = jsToDart(ctx, resolvingFunc2);
@@ -235,7 +240,8 @@ dynamic jsToDart(Pointer ctx, Pointer val, {Map<int, dynamic> cache}) {
var jsAtom = jsPropertyEnumGetAtom(ptab.value, i); var jsAtom = jsPropertyEnumGetAtom(ptab.value, i);
var jsAtomValue = jsAtomToValue(ctx, jsAtom); var jsAtomValue = jsAtomToValue(ctx, jsAtom);
var jsProp = jsGetProperty(ctx, val, jsAtom); var jsProp = jsGetProperty(ctx, val, jsAtom);
ret[jsToDart(ctx, jsAtomValue, cache: cache)] = jsToDart(ctx, jsProp, cache: cache); ret[jsToDart(ctx, jsAtomValue, cache: cache)] =
jsToDart(ctx, jsProp, cache: cache);
jsFreeValue(ctx, jsAtomValue); jsFreeValue(ctx, jsAtomValue);
jsFreeValue(ctx, jsProp); jsFreeValue(ctx, jsProp);
jsFreeAtom(ctx, jsAtom); jsFreeAtom(ctx, jsAtom);
@@ -273,7 +279,8 @@ Pointer jsNewContextWithPromsieWrapper(Pointer rt) {
runtimeOpaques[rt].promsieToFuture = (promise) { runtimeOpaques[rt].promsieToFuture = (promise) {
var completer = Completer(); var completer = Completer();
var wrapper = promiseWrapper.val; var wrapper = promiseWrapper.val;
if (wrapper == null) completer.completeError(Exception("Runtime has been released!")); if (wrapper == null)
completer.completeError(Exception("Runtime has been released!"));
var jsPromise = jsCall(ctx, wrapper, null, [promise]); var jsPromise = jsCall(ctx, wrapper, null, [promise]);
runtimeOpaques[rt].ref.add(JSPromise(ctx, jsPromise, completer)); runtimeOpaques[rt].ref.add(JSPromise(ctx, jsPromise, completer));
jsFreeValue(ctx, jsPromise); jsFreeValue(ctx, jsPromise);

View File

@@ -10,7 +10,7 @@ environment:
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
ffi: 0.1.3 ffi: ^0.1.3
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: