@@ -28,6 +28,7 @@ import { ResourceService } from "./resource";
2828import { LocalStorageDAO } from "@App/app/repo/localStorage" ;
2929import Logger from "@App/app/logger/logger" ;
3030import { getMetadataStr , getUserConfigStr } from "@App/pkg/utils/script" ;
31+ import { GMInfoEnv } from "../content/gm_api" ;
3132
3233// 为了优化性能,存储到缓存时删除了code、value与resource
3334export interface ScriptMatchInfo extends ScriptRunResouce {
@@ -58,6 +59,7 @@ export class RuntimeService {
5859
5960 isEnableDeveloperMode = false ;
6061 isEnableUserscribe = true ;
62+ userAgentData : typeof GM_info . userAgentData = { } ;
6163
6264 constructor (
6365 private systemConfig : SystemConfig ,
@@ -72,6 +74,25 @@ export class RuntimeService {
7274 this . logger = LoggerCore . logger ( { component : "runtime" } ) ;
7375 }
7476
77+ async initUserAgentData ( ) {
78+ // @ts -ignore
79+ if ( navigator . userAgentData ) {
80+ // @ts -ignore
81+ this . userAgentData = {
82+ // @ts -ignore
83+ brands : navigator . userAgentData . brands ,
84+ // @ts -ignore
85+ mobile : navigator . userAgentData . mobile ,
86+ // @ts -ignore
87+ platform : navigator . userAgentData . platform ,
88+ } ;
89+ // 处理architecture和bitness
90+ const platformInfo = await chrome . runtime . getPlatformInfo ( ) ;
91+ this . userAgentData . architecture = platformInfo . nacl_arch ;
92+ this . userAgentData . bitness = platformInfo . arch . includes ( "64" ) ? "64" : "32" ;
93+ }
94+ }
95+
7596 async init ( ) {
7697 // 启动gm api
7798 const permission = new PermissionVerify ( this . group . group ( "permission" ) , this . mq ) ;
@@ -206,6 +227,8 @@ export class RuntimeService {
206227 } ) ;
207228 // 加载黑名单
208229 this . loadBlacklist ( await this . systemConfig . getBlacklist ( ) ) ;
230+ // 初始化一下userAgentData
231+ this . initUserAgentData ( ) ;
209232 }
210233
211234 private loadBlacklist ( blacklist : string ) {
@@ -515,7 +538,15 @@ export class RuntimeService {
515538 scripts : enableScript ,
516539 } ) ;
517540
518- return { flag : scriptFlag , scripts : enableScript } ;
541+ return {
542+ flag : scriptFlag ,
543+ scripts : enableScript ,
544+ envInfo : {
545+ sandboxMode : "raw" ,
546+ isIncognito : chrome . extension . inIncognitoContext ,
547+ userAgentData : this . userAgentData ,
548+ } as GMInfoEnv ,
549+ } ;
519550 }
520551
521552 // 停止脚本
0 commit comments