Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ export default class ErikaFlutterPlugin implements FlutterPlugin, MethodCallHand
}

private openPlayer(args: Map<string, ESObject>, result: MethodResult): void {
const metadataValue = args.get('metadata');
const metadataValue: ESObject = args.get('metadata');
let metadata: ErikaMediaMetadata | null = null;
if (metadataValue !== undefined && metadataValue !== null) {
metadata = this.parseMediaMetadata(metadataValue);
Expand All @@ -268,7 +268,7 @@ export default class ErikaFlutterPlugin implements FlutterPlugin, MethodCallHand
}
}
const playerId = this.numberArg(args, 'playerId', 0);
const nativeArgs = new Map<string, ESObject>(args);
const nativeArgs: Map<string, ESObject> = new Map<string, ESObject>(args);
nativeArgs.delete('metadata');
if (!this.invokePlayerNative('open', nativeArgs, result)) {
return;
Expand Down Expand Up @@ -530,15 +530,15 @@ export default class ErikaFlutterPlugin implements FlutterPlugin, MethodCallHand
if (!(value instanceof Map)) {
return null;
}
const metadata = value as Map<string, ESObject>;
const titleValue = metadata.get('title');
const metadata: Map<string, ESObject> = value as Map<string, ESObject>;
const titleValue: ESObject = metadata.get('title');
if (typeof titleValue !== 'string' || titleValue.length === 0) {
return null;
}
const parsed: ErikaMediaMetadata = { title: titleValue };
const artist = metadata.get('artist');
const album = metadata.get('album');
const artwork = metadata.get('artwork');
const artist: ESObject = metadata.get('artist');
const album: ESObject = metadata.get('album');
const artwork: ESObject = metadata.get('artwork');
if (typeof artist === 'string') {
parsed.artist = artist;
}
Expand Down Expand Up @@ -631,7 +631,8 @@ export default class ErikaFlutterPlugin implements FlutterPlugin, MethodCallHand
if (!this.players.has(playerId)) {
return;
}
const args = extra ?? new Map<string, ESObject>();
const args: Map<string, ESObject> =
extra ?? new Map<string, ESObject>();
args.set('playerId', playerId);
const raw = erikaNative.nativeInvoke(
playerId,
Expand Down
19 changes: 19 additions & 0 deletions packages/erika_flutter/test/ohos_screenshot_contract_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -84,4 +84,23 @@ void main() {
contains(r'$<TARGET_FILE_DIR:${PLUGIN_NAME}>/liberika_capi.so'),
);
});

test('OpenHarmony media controls avoid implicit ESObject types', () {
final plugin = File(
'ohos/src/main/ets/components/plugin/ErikaFlutterPlugin.ets',
).readAsStringSync();

for (final declaration in <String>[
"const metadataValue: ESObject = args.get('metadata');",
'const nativeArgs: Map<string, ESObject> =',
'const metadata: Map<string, ESObject> =',
"const titleValue: ESObject = metadata.get('title');",
"const artist: ESObject = metadata.get('artist');",
"const album: ESObject = metadata.get('album');",
"const artwork: ESObject = metadata.get('artwork');",
'const args: Map<string, ESObject> =',
]) {
expect(plugin, contains(declaration));
}
});
}
Loading