T-M4-01/02/03 GenericWebContainer(§11.3 第二套机制,不挂桥):
- javaScriptProxy 注入 settings 对象 6 方法(SettingsProxy,函数回调避开 ArkTS 对象字面量限制)
- 首次 100% runJavaScript 直调 getWebdata('<data>');返回键 isbackfinishweb→gamebackkeydown /
isexitdialogeshow→退出确认→backgameData();关闭 pop({data}) 101 语义回上层
- orientation "1"竖/其他横(window.setPreferredOrientation);browser 隐式 want
T-M3-06 NavProvider:OpenurlTitleData(开通用容器,onPop→callHandler getWebdata)、
SwitchOverGameData(同容器 loadUrl 切子游戏+重注入 app_data(launchtype'1')+方向+复位首屏标志)、
getGameinstall(同步 1/0 查 <解压根>/<dir>/index.html)、backgameData(重载大厅+待加载后 getWebdata)
导航解耦:common NavEvents(名+具名 payload interface);NavProvider 发 EventBus → BridgeGameContainer 执行
(容器持 pathStack/controller)。EventBus payload 放宽为 Object(ArkTS 禁 Record 字面量),用 GenericEventData
domain AppDataInjector.buildValues 复用(StartupOrchestrator + 子游戏切换共用,去重)
组装根装配 NavProvider
devecocli build 通过。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
38 lines
2.8 KiB
Plaintext
38 lines
2.8 KiB
Plaintext
/**
|
||
* 组装根(框架 §6.2 DI)。**唯一知道"全部能力"的地方**。
|
||
*
|
||
* 桥核心、容器都不感知具体能力;新增/裁剪能力只改这里一行。
|
||
* M2:仅示例能力(验证插件模式)。M3:替换为全部真实 Provider + 占位桩
|
||
* (RoomStubProvider/PayStubProvider,§6.5),契约 handler 名/数量不变。
|
||
*/
|
||
import { CapabilityProvider, EchoSampleProvider, RoomStubProvider, PayStubProvider,
|
||
VibrateProvider, ClipboardProvider, AppSystemProvider, DeviceProvider,
|
||
NetworkProvider, ShareProvider, LoginProvider, PhotoProvider, ShakeProvider,
|
||
ScanProvider, CameraProvider, LocationProvider, AudioProvider, NavProvider } from 'feature_capabilities';
|
||
|
||
export function buildCapabilities(): CapabilityProvider[] {
|
||
return [
|
||
new EchoSampleProvider(), // M2 回显样板(M3 全部 Provider 就位后可移除)
|
||
// —— M3 已落地能力(顺序无关,互不依赖)——
|
||
new AppSystemProvider(), // orientation/browser/finsh/openApplyDownloadpath/notification
|
||
new VibrateProvider(), // vibrator/repeatvibrator/canclevibrator
|
||
new ClipboardProvider(), // gameCopytext/gamepastetext
|
||
new DeviceProvider(), // getTime/getphonestate/getbattery/getwifiLevel/getphoneInfo/getmarketname/getothername/getOther/getcompareCode
|
||
new NetworkProvider(), // getnetwork + 出站广播
|
||
new ShareProvider(), // friendsSharetypeUrlToptitleDescript → sharesuccess(微信)
|
||
new LoginProvider(), // accreditlogin → sharelogin(微信 code 模式,profile 待服务端)
|
||
new PhotoProvider(), // getphoto 批量下载 → getphoto
|
||
new ShakeProvider(), // startshake/SwitchShake/stopshake → shakeEnd
|
||
new ScanProvider(), // opensaoma → getsaomaData
|
||
new CameraProvider(), // opencamera → getcameraaAddress
|
||
new LocationProvider(), // startlocation/getlocationinfo → getlocationinfo
|
||
new AudioProvider(), // mediaTypeAudio/srcIsloop/voicePlaying(播放);prepareaudio 录音分档
|
||
new NavProvider(), // OpenurlTitleData/SwitchOverGameData/getGameinstall/backgameData
|
||
// —— 暂缓能力占位桩(§6.5)——
|
||
new RoomStubProvider(),
|
||
new PayStubProvider(),
|
||
// —— M3 待落地:DeviceProvider/NetworkProvider/ShakeProvider/LocationProvider/AudioProvider/
|
||
// ScanProvider/CameraProvider/PhotoProvider/NavProvider/ShareProvider/LoginProvider ——
|
||
];
|
||
}
|