From cbf2cc4c7eb580b1c734a9473df3fb2536449859 Mon Sep 17 00:00:00 2001 From: andycall Date: Sun, 7 Jul 2024 00:47:18 -0700 Subject: [PATCH 1/5] feat: add support for flutter 3.22 version. --- bridge/scripts/code_generator/package.json | 2 +- .../macos/Runner.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- webf/lib/src/bridge/binding.dart | 3 ++- webf/lib/src/bridge/from_native.dart | 3 ++- webf/lib/src/bridge/to_native.dart | 21 ++++++++++++------- webf/lib/src/dom/sliver_manager.dart | 4 ++++ webf/lib/src/launcher/controller.dart | 18 ++++++++++++++++ 8 files changed, 43 insertions(+), 12 deletions(-) diff --git a/bridge/scripts/code_generator/package.json b/bridge/scripts/code_generator/package.json index 0241beee21..313b95d98f 100644 --- a/bridge/scripts/code_generator/package.json +++ b/bridge/scripts/code_generator/package.json @@ -9,7 +9,7 @@ "author": "", "license": "ISC", "dependencies": { - "@types/lodash": "^4.14.172", + "@types/lodash": "4.14.172", "@types/node": "16.9.2", "commander": "^8.1.0", "glob": "^7.1.7", diff --git a/webf/example/macos/Runner.xcodeproj/project.pbxproj b/webf/example/macos/Runner.xcodeproj/project.pbxproj index 664b1d536f..fc615ecee0 100644 --- a/webf/example/macos/Runner.xcodeproj/project.pbxproj +++ b/webf/example/macos/Runner.xcodeproj/project.pbxproj @@ -202,7 +202,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = "The Flutter Authors"; TargetAttributes = { 33CC10EC2044A3C60003C045 = { diff --git a/webf/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/webf/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index aae12fcb81..5721ea5474 100644 --- a/webf/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/webf/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ _dispatchCaptureEventToNative(Event event) async { await _dispatchEventToNative(event, true); } -void _handleDispatchResult(_DispatchEventResultContext context, Pointer returnValue) { +void _handleDispatchResult(Object contextHandle, Pointer returnValue) { + _DispatchEventResultContext context = contextHandle as _DispatchEventResultContext; Pointer dispatchResult = fromNativeValue(context.controller.view, returnValue).cast(); Event event = context.event; event.cancelable = dispatchResult.ref.canceled; diff --git a/webf/lib/src/bridge/from_native.dart b/webf/lib/src/bridge/from_native.dart index 5e17ebfe99..a6ca2d9c64 100644 --- a/webf/lib/src/bridge/from_native.dart +++ b/webf/lib/src/bridge/from_native.dart @@ -117,7 +117,8 @@ class _InvokeModuleResultContext { {this.errmsgPtr, this.data, this.stopwatch}); } -void _handleInvokeModuleResult(_InvokeModuleResultContext context, Pointer result) { +void _handleInvokeModuleResult(Object handle, Pointer result) { + _InvokeModuleResultContext context = handle as _InvokeModuleResultContext; var returnValue = fromNativeValue(context.currentView, result); if (enableWebFCommandLog && context.stopwatch != null) { diff --git a/webf/lib/src/bridge/to_native.dart b/webf/lib/src/bridge/to_native.dart index bebe473ba0..d412314a57 100644 --- a/webf/lib/src/bridge/to_native.dart +++ b/webf/lib/src/bridge/to_native.dart @@ -136,7 +136,8 @@ typedef NativeInvokeModuleCallback = Void Function(Handle object, Pointer>('invokeModuleEvent').asFunction(); -void _invokeModuleCallback(_InvokeModuleCallbackContext context, Pointer dispatchResult) { +void _invokeModuleCallback(Object handle, Pointer dispatchResult) { + _InvokeModuleCallbackContext context = handle as _InvokeModuleCallbackContext; dynamic result = fromNativeValue(context.controller.view, dispatchResult); malloc.free(dispatchResult); malloc.free(context.extraData); @@ -272,7 +273,8 @@ class _EvaluateScriptsContext { _EvaluateScriptsContext(this.completer, this.originalCodeBytes, this.codePtr, this.url, this.cacheKey); } -void handleEvaluateScriptsResult(_EvaluateScriptsContext context, int result) { +void handleEvaluateScriptsResult(Object handle, int result) { + _EvaluateScriptsContext context = handle as _EvaluateScriptsContext; if (context.bytecodes != null) { Uint8List bytes = context.bytecodes!.value.asTypedList(context.bytecodeLen!.value); // Save to disk cache @@ -361,7 +363,8 @@ class _EvaluateQuickjsByteCodeContext { _EvaluateQuickjsByteCodeContext(this.completer, this.bytes); } -void handleEvaluateQuickjsByteCodeResult(_EvaluateQuickjsByteCodeContext context, int result) { +void handleEvaluateQuickjsByteCodeResult(Object handle, int result) { + _EvaluateQuickjsByteCodeContext context = handle as _EvaluateQuickjsByteCodeContext; malloc.free(context.bytes); context.completer.complete(result == 1); } @@ -385,7 +388,8 @@ Future evaluateQuickjsByteCode(double contextId, Uint8List bytes, { Evalua return completer.future; } -void _handleParseHTMLContextResult(_ParseHTMLContext context) { +void _handleParseHTMLContextResult(Object handle) { + _ParseHTMLContext context = handle as _ParseHTMLContext; context.completer.complete(); } @@ -466,7 +470,8 @@ class _DumpQuickjsByteCodeContext { _DumpQuickjsByteCodeContext(this.completer, this.bytecodes, this.bytecodeLen); } -void _handleQuickjsByteCodeResults(_DumpQuickjsByteCodeContext context) { +void _handleQuickjsByteCodeResults(Object handle) { + _DumpQuickjsByteCodeContext context = handle as _DumpQuickjsByteCodeContext; Uint8List bytes = context.bytecodes.value.asTypedList(context.bytecodeLen.value); context.completer.complete(bytes); } @@ -529,7 +534,8 @@ typedef DartDisposePageSync = void Function(double, Pointer, Pointer final DartDisposePageSync _disposePageSync = WebFDynamicLibrary.ref.lookup>('disposePageSync').asFunction(); -void _handleDisposePageResult(_DisposePageContext context) { +void _handleDisposePageResult(Object handle) { + _DisposePageContext context = handle as _DisposePageContext; context.completer.complete(); } @@ -578,7 +584,8 @@ final DartAllocateNewPageSync _allocateNewPageSync = final DartAllocateNewPage _allocateNewPage = WebFDynamicLibrary.ref.lookup>('allocateNewPage').asFunction(); -void _handleAllocateNewPageResult(_AllocateNewPageContext context, Pointer page) { +void _handleAllocateNewPageResult(Object handle, Pointer page) { + _AllocateNewPageContext context = handle as _AllocateNewPageContext; assert(!_allocatedPages.containsKey(context.contextId)); _allocatedPages[context.contextId] = page; context.completer.complete(); diff --git a/webf/lib/src/dom/sliver_manager.dart b/webf/lib/src/dom/sliver_manager.dart index 9276a8335a..1015f2b70a 100644 --- a/webf/lib/src/dom/sliver_manager.dart +++ b/webf/lib/src/dom/sliver_manager.dart @@ -141,6 +141,10 @@ class RenderSliverElementChildManager implements RenderSliverBoxChildManager { final int remainingCount = childCount - lastIndex - 1; return trailingScrollOffset + averageExtent * remainingCount; } + + @override + // TODO: add impl for estimatedChildCount + int? get estimatedChildCount => null; } /// Used for the placeholder for empty sliver item. diff --git a/webf/lib/src/launcher/controller.dart b/webf/lib/src/launcher/controller.dart index 62435c375f..1b7136adb4 100644 --- a/webf/lib/src/launcher/controller.dart +++ b/webf/lib/src/launcher/controller.dart @@ -17,6 +17,7 @@ import 'package:flutter/animation.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/scheduler.dart'; +import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart' show RouteInformation, WidgetsBinding, WidgetsBindingObserver, AnimationController, BuildContext, View; import 'package:webf/css.dart'; @@ -815,6 +816,23 @@ class WebFViewController implements WidgetsBindingObserver { Future didRequestAppExit() async { return ui.AppExitResponse.exit; } + + @override + void handleCancelBackGesture() { + } + + @override + void handleCommitBackGesture() { + } + + @override + bool handleStartBackGesture(backEvent) { + return true; + } + + @override + void handleUpdateBackGestureProgress(backEvent) { + } } // An controller designed to control kraken's functional modules. From 01d1a92522f7f9ce9c532dd866f3b547ef4e15b7 Mon Sep 17 00:00:00 2001 From: andycall Date: Sun, 7 Jul 2024 00:48:22 -0700 Subject: [PATCH 2/5] feat: upgrade ci to flutter 3.22.2 --- .github/workflows/integration_test_flutter.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/integration_test_flutter.yml b/.github/workflows/integration_test_flutter.yml index 9ab345bbc2..8934f91890 100644 --- a/.github/workflows/integration_test_flutter.yml +++ b/.github/workflows/integration_test_flutter.yml @@ -5,7 +5,7 @@ on: [workflow_dispatch, pull_request] env: nodeVersion: "16" cmakeVersion: "3.22.x" - flutter: "3.19.3" + flutter: "3.22.2" # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: From 0cb69451e8993d77f1587782f3a2f67c9c3cef35 Mon Sep 17 00:00:00 2001 From: andycall Date: Sun, 7 Jul 2024 11:12:34 -0700 Subject: [PATCH 3/5] fix: fix integration test. --- integration_tests/lib/bridge/to_native.dart | 3 ++- integration_tests/macos/Runner.xcodeproj/project.pbxproj | 2 +- .../Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/integration_tests/lib/bridge/to_native.dart b/integration_tests/lib/bridge/to_native.dart index a56f5b124c..8ef21ec965 100644 --- a/integration_tests/lib/bridge/to_native.dart +++ b/integration_tests/lib/bridge/to_native.dart @@ -57,7 +57,8 @@ class _ExecuteTestContext { _ExecuteTestContext(this.completer, this.profileOp); } -void _handleExecuteTestResult(_ExecuteTestContext context, Pointer resultData) { +void _handleExecuteTestResult(Object handle, Pointer resultData) { + _ExecuteTestContext context = handle as _ExecuteTestContext; String status = nativeStringToString(resultData); context.completer.complete(status); diff --git a/integration_tests/macos/Runner.xcodeproj/project.pbxproj b/integration_tests/macos/Runner.xcodeproj/project.pbxproj index b445de9e87..6dfe34e8d9 100644 --- a/integration_tests/macos/Runner.xcodeproj/project.pbxproj +++ b/integration_tests/macos/Runner.xcodeproj/project.pbxproj @@ -206,7 +206,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 33CC10EC2044A3C60003C045 = { diff --git a/integration_tests/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/integration_tests/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index b1cfbd3576..b7212bc9be 100644 --- a/integration_tests/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/integration_tests/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ Date: Sun, 7 Jul 2024 17:36:14 -0700 Subject: [PATCH 4/5] fix: fix integration test. --- integration_tests/specs/css/css-display/opacity.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/integration_tests/specs/css/css-display/opacity.ts b/integration_tests/specs/css/css-display/opacity.ts index 8408b80ce0..87348908bf 100644 --- a/integration_tests/specs/css/css-display/opacity.ts +++ b/integration_tests/specs/css/css-display/opacity.ts @@ -32,7 +32,7 @@ describe('Opacity', () => { opacity: 0.5, }); - await snapshot(); + await snapshot(0.5); done(); }); }); From f71b73044d121223acd8ef061bf26a1c42dce7f5 Mon Sep 17 00:00:00 2001 From: andycall Date: Sun, 7 Jul 2024 17:38:42 -0700 Subject: [PATCH 5/5] test: split out more spec groups. --- integration_tests/spec_group.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/integration_tests/spec_group.json b/integration_tests/spec_group.json index 118319f717..d11a5905f1 100644 --- a/integration_tests/spec_group.json +++ b/integration_tests/spec_group.json @@ -76,10 +76,20 @@ ] }, { - "name": "TransformsAndAnimations", + "name": "Transforms", + "specs": [ + "specs/css/css-transforms/**/*.{js,jsx,ts,tsx,html}" + ] + }, + { + "name": "Transitions", + "specs": [ + "specs/css/css-transitions/**/*.{js,jsx,ts,tsx,html}" + ] + }, + { + "name": "Animations", "specs": [ - "specs/css/css-transforms/**/*.{js,jsx,ts,tsx,html}", - "specs/css/css-transitions/**/*.{js,jsx,ts,tsx,html}", "specs/css/css-animations/**/*.{js,jsx,ts,tsx,html}" ] },