@@ -8,7 +8,7 @@ import { connect, sendMessage } from "@Packages/message/client";
88import Cache , { incr } from "@App/app/cache" ;
99import EventEmitter from "eventemitter3" ;
1010import { MessageQueue } from "@Packages/message/message_queue" ;
11- import { RuntimeService } from "./runtime" ;
11+ import { EmitEventRequest , RuntimeService } from "./runtime" ;
1212import { getIcon , isFirefox } from "@App/pkg/utils/utils" ;
1313import { MockMessageConnect } from "@Packages/message/mock_message" ;
1414import i18next , { i18nName } from "@App/locales/locales" ;
@@ -116,6 +116,27 @@ type NotificationData = {
116116
117117export type Api = ( request : Request , con : GetSender ) => Promise < any > ;
118118
119+ // GMExternalDependencies接口定义
120+ // 为了支持外部依赖注入,方便测试和扩展
121+ export interface IGMExternalDependencies {
122+ emitEventToTab ( to : ExtMessageSender , req : EmitEventRequest ) : void ;
123+ }
124+
125+ export class GMExternalDependencies implements IGMExternalDependencies {
126+ constructor ( private runtimeService : RuntimeService ) { }
127+
128+ emitEventToTab ( to : ExtMessageSender , req : EmitEventRequest ) : void {
129+ this . runtimeService . emitEventToTab ( to , req ) ;
130+ }
131+ }
132+
133+ export class MockGMExternalDependencies implements IGMExternalDependencies {
134+ emitEventToTab ( to : ExtMessageSender , req : EmitEventRequest ) : void {
135+ // Mock implementation for testing
136+ console . log ( "Mock emitEventToTab called" , { to, req } ) ;
137+ }
138+ }
139+
119140export default class GMApi {
120141 logger : Logger ;
121142
@@ -128,7 +149,7 @@ export default class GMApi {
128149 private send : MessageSend ,
129150 private mq : MessageQueue ,
130151 private value : ValueService ,
131- private runtime : RuntimeService
152+ private gmExternalDependencies : IGMExternalDependencies
132153 ) {
133154 this . logger = LoggerCore . logger ( ) . with ( { service : "runtime/gm_api" } ) ;
134155 }
@@ -889,7 +910,7 @@ export default class GMApi {
889910 | NotificationData
890911 | undefined ;
891912 if ( sender ) {
892- this . runtime . emitEventToTab ( sender . sender , {
913+ this . gmExternalDependencies . emitEventToTab ( sender . sender , {
893914 event : "GM_notification" ,
894915 eventId : notificationId ,
895916 uuid : sender . uuid ,
@@ -1055,7 +1076,7 @@ export default class GMApi {
10551076 | NotificationData
10561077 | undefined ;
10571078 if ( sender ) {
1058- this . runtime . emitEventToTab ( sender . sender , {
1079+ this . gmExternalDependencies . emitEventToTab ( sender . sender , {
10591080 event : "GM_notification" ,
10601081 eventId : notificationId ,
10611082 uuid : sender . uuid ,
@@ -1143,7 +1164,7 @@ export default class GMApi {
11431164 sender : ExtMessageSender ;
11441165 } ;
11451166 if ( sender ) {
1146- this . runtime . emitEventToTab ( sender . sender , {
1167+ this . gmExternalDependencies . emitEventToTab ( sender . sender , {
11471168 event : "GM_openInTab" ,
11481169 eventId : tabId . toString ( ) ,
11491170 uuid : sender . uuid ,
0 commit comments