From c4f5018ab2720e481452fa2488f474f120ba7b51 Mon Sep 17 00:00:00 2001 From: Andrew Yang Date: Thu, 19 Sep 2024 16:59:26 +1000 Subject: [PATCH] feat: rename webview plugin --- .github/workflows/test.yml | 4 +- .../project.pbxproj | 34 +++++----- .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../{WebView.mm => ImmutableWebView.mm} | 24 +++---- Plugins/Mac/install.sh | 4 +- .../Immutable.Passport.Runtime.Private.asmdef | 2 +- .../Public/Immutable.Passport.Runtime.asmdef | 2 +- ...ndle.meta => ImmutableWebView.bundle.meta} | 0 .../Contents/Info.plist | 20 +++--- .../Contents/MacOS/ImmutableWebView} | Bin 217008 -> 200720 bytes .../Contents/Resources/InfoPlist.strings | Bin .../Contents/_CodeSignature/CodeResources | 0 .../Gree/Assets/Plugins/WebViewObject.cs | 56 +++++++-------- .../Gree/Assets/Plugins/WebViewObject.cs.meta | 2 +- .../iOS/{WebView.mm => ImmutableWebView.mm} | 64 +++++++++--------- ...bView.mm.meta => ImmutableWebView.mm.meta} | 0 ...webview.asmdef => ImmutableWebView.asmdef} | 4 +- ...mdef.meta => ImmutableWebView.asmdef.meta} | 0 19 files changed, 109 insertions(+), 107 deletions(-) rename Plugins/Mac/{WebView.xcodeproj => ImmutableWebView.xcodeproj}/project.pbxproj (89%) rename Plugins/Mac/{WebView.xcodeproj => ImmutableWebView.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (100%) rename Plugins/Mac/{WebView.xcodeproj => ImmutableWebView.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename Plugins/Mac/Sources/{WebView.mm => ImmutableWebView.mm} (94%) rename src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/{WebView.bundle.meta => ImmutableWebView.bundle.meta} (100%) rename src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/{WebView.bundle => ImmutableWebView.bundle}/Contents/Info.plist (78%) rename src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/{WebView.bundle/Contents/MacOS/WebView => ImmutableWebView.bundle/Contents/MacOS/ImmutableWebView} (58%) rename src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/{WebView.bundle => ImmutableWebView.bundle}/Contents/Resources/InfoPlist.strings (100%) rename src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/{WebView.bundle => ImmutableWebView.bundle}/Contents/_CodeSignature/CodeResources (100%) rename src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/iOS/{WebView.mm => ImmutableWebView.mm} (86%) rename src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/iOS/{WebView.mm.meta => ImmutableWebView.mm.meta} (100%) rename src/Packages/Passport/Runtime/ThirdParty/Gree/{unity-webview.asmdef => ImmutableWebView.asmdef} (84%) rename src/Packages/Passport/Runtime/ThirdParty/Gree/{unity-webview.asmdef.meta => ImmutableWebView.asmdef.meta} (100%) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 40728c78..56991855 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,13 +25,13 @@ jobs: projectPath: './sample' githubToken: ${{ secrets.GITHUB_TOKEN }} testMode: 'EditMode' - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 if: always() with: name: Test results path: ${{ steps.passportTest.outputs.artifactsPath }} - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 if: always() with: name: Coverage results diff --git a/Plugins/Mac/WebView.xcodeproj/project.pbxproj b/Plugins/Mac/ImmutableWebView.xcodeproj/project.pbxproj similarity index 89% rename from Plugins/Mac/WebView.xcodeproj/project.pbxproj rename to Plugins/Mac/ImmutableWebView.xcodeproj/project.pbxproj index 62c5f4aa..58e1dd71 100644 --- a/Plugins/Mac/WebView.xcodeproj/project.pbxproj +++ b/Plugins/Mac/ImmutableWebView.xcodeproj/project.pbxproj @@ -12,7 +12,7 @@ 81B8C535151078DB000C56DC /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81B8C534151078DB000C56DC /* WebKit.framework */; }; 81B8C53815108B89000C56DC /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81B8C53715108B89000C56DC /* Carbon.framework */; }; 81E2C20C14C5684A004CE5C2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81E2C20B14C5684A004CE5C2 /* Cocoa.framework */; }; - 81F4B4D914C6888B001B4465 /* WebView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 81F4B4D814C6888B001B4465 /* WebView.mm */; }; + 81F4B4D914C6888B001B4465 /* ImmutableWebView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 81F4B4D814C6888B001B4465 /* ImmutableWebView.mm */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -23,11 +23,11 @@ 8102525614C569D80022296D /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Prefix.pch; path = Resources/Prefix.pch; sourceTree = SOURCE_ROOT; }; 81B8C534151078DB000C56DC /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; }; 81B8C53715108B89000C56DC /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; - 81E2C20814C5684A004CE5C2 /* WebView.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WebView.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 81E2C20814C5684A004CE5C2 /* ImmutableWebView.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ImmutableWebView.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 81E2C20B14C5684A004CE5C2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 81E2C20E14C5684A004CE5C2 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 81E2C21014C5684A004CE5C2 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - 81F4B4D814C6888B001B4465 /* WebView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebView.mm; path = Sources/WebView.mm; sourceTree = ""; }; + 81F4B4D814C6888B001B4465 /* ImmutableWebView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ImmutableWebView.mm; path = Sources/ImmutableWebView.mm; sourceTree = ""; }; 81F81AEC14D76D2400845D4C /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -49,7 +49,7 @@ 8102525914C573EB0022296D /* Sources */ = { isa = PBXGroup; children = ( - 81F4B4D814C6888B001B4465 /* WebView.mm */, + 81F4B4D814C6888B001B4465 /* ImmutableWebView.mm */, ); name = Sources; sourceTree = ""; @@ -67,7 +67,7 @@ 81E2C20914C5684A004CE5C2 /* Products */ = { isa = PBXGroup; children = ( - 81E2C20814C5684A004CE5C2 /* WebView.bundle */, + 81E2C20814C5684A004CE5C2 /* ImmutableWebView.bundle */, ); name = Products; sourceTree = ""; @@ -101,9 +101,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 81E2C20714C5684A004CE5C2 /* WebView */ = { + 81E2C20714C5684A004CE5C2 /* ImmutableWebView */ = { isa = PBXNativeTarget; - buildConfigurationList = 81E2C21A14C5684A004CE5C2 /* Build configuration list for PBXNativeTarget "WebView" */; + buildConfigurationList = 81E2C21A14C5684A004CE5C2 /* Build configuration list for PBXNativeTarget "ImmutableWebView" */; buildPhases = ( 81E2C20414C5684A004CE5C2 /* Sources */, 81E2C20514C5684A004CE5C2 /* Frameworks */, @@ -113,9 +113,9 @@ ); dependencies = ( ); - name = WebView; + name = ImmutableWebView; productName = WebView; - productReference = 81E2C20814C5684A004CE5C2 /* WebView.bundle */; + productReference = 81E2C20814C5684A004CE5C2 /* ImmutableWebView.bundle */; productType = "com.apple.product-type.bundle"; }; /* End PBXNativeTarget section */ @@ -127,7 +127,7 @@ BuildIndependentTargetsInParallel = YES; LastUpgradeCheck = 1200; }; - buildConfigurationList = 81E2C20214C5684A004CE5C2 /* Build configuration list for PBXProject "WebView" */; + buildConfigurationList = 81E2C20214C5684A004CE5C2 /* Build configuration list for PBXProject "ImmutableWebView" */; compatibilityVersion = "Xcode 8.0"; developmentRegion = en; hasScannedForEncodings = 0; @@ -140,7 +140,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 81E2C20714C5684A004CE5C2 /* WebView */, + 81E2C20714C5684A004CE5C2 /* ImmutableWebView */, ); }; /* End PBXProject section */ @@ -161,7 +161,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 81F4B4D914C6888B001B4465 /* WebView.mm in Sources */, + 81F4B4D914C6888B001B4465 /* ImmutableWebView.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -280,7 +280,8 @@ LD_RUNPATH_SEARCH_PATHS = ""; LIBRARY_SEARCH_PATHS = "$(inherited)"; MACOSX_DEPLOYMENT_TARGET = 12.4; - PRODUCT_BUNDLE_IDENTIFIER = "net.gree.unitywebview.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_BUNDLE_IDENTIFIER = "Immutable.Browser.--PRODUCT-NAME-rfc1034identifier-"; + "PRODUCT_BUNDLE_IDENTIFIER[sdk=macosx*]" = Immutable.Browser.WebView; PRODUCT_NAME = "$(TARGET_NAME)"; USE_HEADERMAP = YES; WRAPPER_EXTENSION = bundle; @@ -301,7 +302,8 @@ LD_RUNPATH_SEARCH_PATHS = ""; LIBRARY_SEARCH_PATHS = "$(inherited)"; MACOSX_DEPLOYMENT_TARGET = 12.4; - PRODUCT_BUNDLE_IDENTIFIER = "net.gree.unitywebview.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_BUNDLE_IDENTIFIER = "Immutable.Browser.--PRODUCT-NAME-rfc1034identifier-"; + "PRODUCT_BUNDLE_IDENTIFIER[sdk=macosx*]" = Immutable.Browser.WebView; PRODUCT_NAME = "$(TARGET_NAME)"; USE_HEADERMAP = YES; WRAPPER_EXTENSION = bundle; @@ -311,7 +313,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 81E2C20214C5684A004CE5C2 /* Build configuration list for PBXProject "WebView" */ = { + 81E2C20214C5684A004CE5C2 /* Build configuration list for PBXProject "ImmutableWebView" */ = { isa = XCConfigurationList; buildConfigurations = ( 81E2C21814C5684A004CE5C2 /* Debug */, @@ -320,7 +322,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 81E2C21A14C5684A004CE5C2 /* Build configuration list for PBXNativeTarget "WebView" */ = { + 81E2C21A14C5684A004CE5C2 /* Build configuration list for PBXNativeTarget "ImmutableWebView" */ = { isa = XCConfigurationList; buildConfigurations = ( 81E2C21B14C5684A004CE5C2 /* Debug */, diff --git a/Plugins/Mac/WebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Plugins/Mac/ImmutableWebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from Plugins/Mac/WebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Plugins/Mac/ImmutableWebView.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/Plugins/Mac/WebView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Plugins/Mac/ImmutableWebView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Plugins/Mac/WebView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Plugins/Mac/ImmutableWebView.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Plugins/Mac/Sources/WebView.mm b/Plugins/Mac/Sources/ImmutableWebView.mm similarity index 94% rename from Plugins/Mac/Sources/WebView.mm rename to Plugins/Mac/Sources/ImmutableWebView.mm index 300168a7..c9c39e0c 100644 --- a/Plugins/Mac/Sources/WebView.mm +++ b/Plugins/Mac/Sources/ImmutableWebView.mm @@ -374,26 +374,26 @@ - (nonnull ASPresentationAnchor)presentationAnchorForWebAuthenticationSession:(n @end extern "C" { -void *_CWebViewPlugin_Init(const char *ua); -void _CWebViewPlugin_Destroy(void *instance); -void _CWebViewPlugin_LoadURL(void *instance, const char *url); -void _CWebViewPlugin_EvaluateJS(void *instance, const char *url); -void _CWebViewPlugin_SetDelegate(DelegateCallbackFunction callback); -void _CWebViewPlugin_LaunchAuthURL(void *instance, const char *url, const char *redirectUri); +void *_CImmutableWebViewPlugin_Init(const char *ua); +void _CImmutableWebViewPlugin_Destroy(void *instance); +void _CImmutableWebViewPlugin_LoadURL(void *instance, const char *url); +void _CImmutableWebViewPlugin_EvaluateJS(void *instance, const char *url); +void _CImmutableWebViewPlugin_SetDelegate(DelegateCallbackFunction callback); +void _CImmutableWebViewPlugin_LaunchAuthURL(void *instance, const char *url, const char *redirectUri); } -void _CWebViewPlugin_SetDelegate(DelegateCallbackFunction callback) { +void _CImmutableWebViewPlugin_SetDelegate(DelegateCallbackFunction callback) { delegateCallback = callback; } -void *_CWebViewPlugin_Init(const char *ua) +void *_CImmutableWebViewPlugin_Init(const char *ua) { CWebViewPlugin *webViewPlugin = [[CWebViewPlugin alloc] initWithUa:ua]; [_instances addObject:webViewPlugin]; return (__bridge_retained void *)webViewPlugin; } -void _CWebViewPlugin_Destroy(void *instance) +void _CImmutableWebViewPlugin_Destroy(void *instance) { if (instance == NULL) return; @@ -403,7 +403,7 @@ void _CWebViewPlugin_Destroy(void *instance) webViewPlugin = nil; } -void _CWebViewPlugin_LoadURL(void *instance, const char *url) +void _CImmutableWebViewPlugin_LoadURL(void *instance, const char *url) { if (instance == NULL) return; @@ -411,7 +411,7 @@ void _CWebViewPlugin_LoadURL(void *instance, const char *url) [webViewPlugin loadURL:url]; } -void _CWebViewPlugin_EvaluateJS(void *instance, const char *js) +void _CImmutableWebViewPlugin_EvaluateJS(void *instance, const char *js) { if (instance == NULL) return; @@ -419,7 +419,7 @@ void _CWebViewPlugin_EvaluateJS(void *instance, const char *js) [webViewPlugin evaluateJS:js]; } -void _CWebViewPlugin_LaunchAuthURL(void *instance, const char *url, const char *redirectUri) +void _CImmutableWebViewPlugin_LaunchAuthURL(void *instance, const char *url, const char *redirectUri) { if (instance == NULL) return; diff --git a/Plugins/Mac/install.sh b/Plugins/Mac/install.sh index 59951737..eb5e05ce 100755 --- a/Plugins/Mac/install.sh +++ b/Plugins/Mac/install.sh @@ -1,9 +1,9 @@ #!/bin/bash DSTDIR="../../src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/" rm -rf DerivedData -xcodebuild -target WebView -configuration Release -arch x86_64 -arch arm64 build CONFIGURATION_BUILD_DIR='DerivedData' | xcbeautify +xcodebuild -target ImmutableWebView -configuration Release -arch x86_64 -arch arm64 build CONFIGURATION_BUILD_DIR='DerivedData' | xcbeautify mkdir -p $DSTDIR -cp -r DerivedData/WebView.bundle $DSTDIR +cp -r DerivedData/ImmutableWebView.bundle $DSTDIR rm -rf DerivedData cp *.bundle.meta $DSTDIR diff --git a/src/Packages/Passport/Runtime/Scripts/Private/Immutable.Passport.Runtime.Private.asmdef b/src/Packages/Passport/Runtime/Scripts/Private/Immutable.Passport.Runtime.Private.asmdef index afa21bb6..c686db84 100644 --- a/src/Packages/Passport/Runtime/Scripts/Private/Immutable.Passport.Runtime.Private.asmdef +++ b/src/Packages/Passport/Runtime/Scripts/Private/Immutable.Passport.Runtime.Private.asmdef @@ -5,7 +5,7 @@ "VoltstroStudios.UnityWebBrowser", "UniTask", "Immutable.Browser.Core", - "unity-webview", + "Immutable.Browser.Gree", "Immutable.Passport.Core.Logging" ], "includePlatforms": [ diff --git a/src/Packages/Passport/Runtime/Scripts/Public/Immutable.Passport.Runtime.asmdef b/src/Packages/Passport/Runtime/Scripts/Public/Immutable.Passport.Runtime.asmdef index 882b7caa..3571bee6 100644 --- a/src/Packages/Passport/Runtime/Scripts/Public/Immutable.Passport.Runtime.asmdef +++ b/src/Packages/Passport/Runtime/Scripts/Public/Immutable.Passport.Runtime.asmdef @@ -5,7 +5,7 @@ "VoltstroStudios.UnityWebBrowser", "UniTask", "Immutable.Browser.Core", - "unity-webview", + "Immutable.Browser.Gree", "Immutable.Passport.Runtime.Private", "Immutable.Passport.Core.Logging" ], diff --git a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebView.bundle.meta b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/ImmutableWebView.bundle.meta similarity index 100% rename from src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebView.bundle.meta rename to src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/ImmutableWebView.bundle.meta diff --git a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebView.bundle/Contents/Info.plist b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/ImmutableWebView.bundle/Contents/Info.plist similarity index 78% rename from src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebView.bundle/Contents/Info.plist rename to src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/ImmutableWebView.bundle/Contents/Info.plist index 6c26a9f4..b53c3f00 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebView.bundle/Contents/Info.plist +++ b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/ImmutableWebView.bundle/Contents/Info.plist @@ -3,17 +3,17 @@ BuildMachineOSBuild - 23B81 + 23G93 CFBundleDevelopmentRegion English CFBundleExecutable - WebView + ImmutableWebView CFBundleIdentifier - net.gree.unitywebview.WebView + Immutable.Browser.WebView CFBundleInfoDictionaryVersion 6.0 CFBundleName - WebView + ImmutableWebView CFBundlePackageType BNDL CFBundleShortVersionString @@ -29,19 +29,19 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - + 24A336 DTPlatformName macosx DTPlatformVersion - 14.0 + 15.0 DTSDKBuild - 23A334 + 24A336 DTSDKName - macosx14.0 + macosx15.0 DTXcode - 1501 + 1600 DTXcodeBuild - 15A507 + 16A242d LSMinimumSystemVersion 12.4 diff --git a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebView.bundle/Contents/MacOS/WebView b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/ImmutableWebView.bundle/Contents/MacOS/ImmutableWebView similarity index 58% rename from src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebView.bundle/Contents/MacOS/WebView rename to src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/ImmutableWebView.bundle/Contents/MacOS/ImmutableWebView index ce554fbb458103dda710b9fd84910eb013112c7e..69570514f2f6067f66da134c953dfc87a1bf4a43 100755 GIT binary patch delta 30435 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 o;x#I3I6}+;k5FtVgCQ2hto%X zHu(A|UH)%AoNnRtYXNvM9g_raqAOv1M@{Sh#=xblUR2dODr5ar$@1H%>p`)xW`omcPFJmKN~X`+=KxZFPJc^=YpS&$ZMx z%vLP6d7Gd4{k=a}?%Vr@<-XqPZ2bqeJwNU-uHLcxg(njIC%=8WOZO2O0ecGfN18T< zUd>te=S81gT?RIdDBON*!JCJ&%4UCB>eZHY}oPDi#>BXT^wibee}i4IRSp3_55LNXk1Zcmpl6_76csi ze)HI-TaA6SH@Xh(WgX=)>aUyq-e2ZmAraPq@@@mYpS{1TP2rZWoA2#fRCLL#uP)m+ z?d8uuTD>?$+b~DTwDjN5BYw{1)K5!KY@hvG#!t=5!Z%IrxckKM;RjY^^{E+B80j;k zMZ3^%Ui&PhX>wezjox!69=NJO-o5ST?kfxzjWO+Ci`=Ka-8eS$%Fg%mO_P65 z85eH4UOpu4n{S?4RMovjeA^qFbGI4JZ`OV1jOtcvzFRlP{fCO{S;y+ zm{8Qg^5y=C>g;DyZ~p#|zF`xmEP>r64XUBECoUCKmDa5{mzE0AqNUPP?f?6&z1NO0J-+9C&wHNd``-PSS^Ky4+H2qU zUVG1yHF<#r8-v!=4soVvnpVxEX@Q`cW-7wxnF7SBZH@V?n{IUL?upMah3hGC&1wve zB@s>A9Us(_2r&QpS1*7#&@m;Ms%x;TfDG>Hs8&hB3 z9B;F}mm+xD9?nGAOo?Ujwi=nKGSMQ5mYM3gXqduuOF|{RU-x=7ayWfikQB&C)#r8Z zTEl;)gab5#rh{! z@I);&tz!dVtH(IXJvmFt&K9kHiv!pg)(JO}> z5vCLRHAg>>%Vp|cJ%{sZvK}c;&o!5+O}!LA%2^kmn-xvkDB$b{_|h*Yb@o3VYSJRt z#?Jd`bk|SM>}{)5-!utD znDpR2q5AgT?>vB)^m(SD7NBWSCf(AfzW!+PY(Gz2MLj>cm8paNb#ix8Y%IdanTTKcL!}^4fC@vWc z4N0zIBu#vV@)SEqv|^S zR#7I@XkNU?T{7FI^l2ig*szY~q!A+N0E${jNx9a?WE~7^EF|JxA1Ax67}f!ZCoKIj zYaYse4z-1N?Od+3l{Hltnm%^8o%T|s?V{C%%nsMSgqR}3dLvHOr8J!Cav<4t!?6BN zJhy!*N=APqyS__y{bpD{X2~xgDM~*HMrnNrj+27u4a2&TrQRVacjE#;^db5*SuY+P z(;$oTRB^Zxj+X|}x9H!|B;<}Ardw0mI|Ha4E(Z;4OSi1smtj=5k7@ju#9qO`YqM+) zckB=}r{sC0A^y3T4*s8j7}jsQ30_x9pG)bkghP;NM>tL5b#%BFqQbwT>kR8~2#Cs0mxX^@0335}j zy>o}E+>grKuTk#9nEMVV3gzr&UFG!14I1K;{Txz6;dc;0OQuqGH)VI*LqvV8Jt&K- zIOcHtPLoER^0v@MGpfIf1Q#9`?a+k=dlYrGd*LC6(>?gOVO=D-S4bDQF`paO$+DHS;5KBqIlEC)C>^fjMMYlSOuGOIkQ?`x_)iOUnv&U(7~# z>~7Sc60Ct@e1uAL^NW6Mx;?lVu=VvJ1MOV)i1|ooih$ z8clntb2W-FtSSFeYlzU=le5P?sI?`tBg?feDc9OjD6Q(N)NMaRjiS!K(FqZ^T?8BaeFj)36>zDl%QxS4;?vJOm&bgfnCh;@mtG zxnq zDH?)m{A5_GLMWaO=5WLlmi`*NbTMYU!`)ysRo89LTSA1^$vGGZ4wtjIfGXI*k_nWXwq%`;(gy!fMbUJ^54&AHg zPipR*&AMj@-7ul7`La@?HN%jqT9bh|T9dUA6QvA;LQN3M_fb|6%_`jX80y$u>vvL< zVXY1cR5Zs)qGzIZiR3C%dk~(%|&HNT);J zZSO%HO5^x8C%qw(64qc3E)*;=DP31EHOq@xBoZ)v=1DzC2JLxivM97G*>w%)I4c|i z87Lcpf@ty3HZYo!a;-MBG1-;69=(dgKiNHHjbUv>Nz00Ym!0uL#BG0%dMh{f4%%y2 zD^a3*Au{}lQ^RRk@7lq@y!@pWNm*}--b}~?3knVES&_Wov9rAII_?i%nnjv(W4|Y1 zxBYPxfYnKoxwZTp#y%8~C&uOlR=$puyAn2ItLTO%mh>d-w(kzkAwHdJn_~_e)(rh( zdZe>C)fd(Q&W-k*|53=RmiGV;U3FWu$~qEN5RJ!1UYVu+h4evT2U>~ej@=?Az5O#M zNzcNv{I;zqq~yz*L}?gHk><$ld&Vl7{xfWIh^X23nf~(RkQ$FmEwf0Ao3t#^k4z4C zcBY)vUqA0MVW|nzwIAtsf0#nuW=$7`!G6b;dsM#=9rh|*O6`;{oezyG~O#9KB=Ok@A|MV~Iql<1JC+p=t+_&roR zhui-(A(5~m$#o80Gl4qNZGT!Q8Hq+cr|-;&aLz=5s`XDJE_RY5P=HnJaPJ`XvJZN5 z%@R>Fc@QC)$}_CdoYX=j!A7Pd^#c@SSZh&|J9Z&e1y)asWLH!phkMov^vEkTWNGfc zJNvrI5?mK)6TQ*~EKJhxtK&Rq%yPrU(0Yp%vDhAn$xgzm`2F$+;}uJv3?B0=AS;G90t`u;gRsDBa`IL@p2RIk{#kd*8y zjyKLwFK&b)qHBpd#pJICIj~5;Z9lny)LIuqEy@)KQ5qCbpDZ~LfctCwXcRXaEUGN+ zM(INT-I716{j~~VvI=P*5^}*CoDB)bwfuir>fIR z>&tnQ%Jcpr^5TeuGBi ztz7H(Vz|)g8hYm$^_*kCZ zatY&<=GewE`ScuWAI`o6mWUU1pbh#Fl!e|EUEWlrV&-*4M0B|wk%X8_C>QOcg0YGs zMB)vLSVcRririCh*KSZ%A3L*&^C*pxOZLXjDC&(_N$9#AGLPt_S0uX)*dKXGuaxZi zU>AF_X9{-k(%a}pRJV&5DNLRb;L{!#i_%JxtBS-kv*nqA1|U`K%yt)bZ?1JiBnWqB z7}Bp+61#2VhN1^BV_*nYB&`@DGbwb*yJIggosf97g-pC$MGf3&^s86~$B?uFZyQdU z?B9``dm(n%vxwy^Jgx;V8-}tR?hygB^xgL3$Y)qzV14V#^|coIX3{WP`% zO$fI=0u3>&<2c)Bl`S?xCVxH)lR^x0Jd4CaM4rRpVg|@zeuOmN{lhRy8is`FcG7Ts0JkjmR6)iRcb4j|Ghcb^-FQI<83EYu=S<0YSuUfzTCh+ z5wQjb^tWcUHF@-Nv+8z!c{Ww)yy)%Tl#Jd^tV|t>l@@D33riXUVpQq!YeQ7*A-IQi z(PL)U8d8b#_=!AtaBKOY(1?8omyN5D&=|W0%WuJKY!$s_t3}c=N`mc3(z(`VVnP~x zo!F*tm|d@Tvn){^oIq0a!Ym=GHKmO7c!G79g(R^{xJ87vHbg!m8vsKaZw#@Z*lGHo zvzs>Vg@jW7(g1nwDy<4y8Ys_l!`hs(yBj~E_ns40`x1>G=5l4+xg4%zBaI6%1BdF1 z=0rJBAw~Ds?WnsL`hDumK@X22VR!7C z$XasSU#Qt2+DOKsVGT#JJe9tkj>KH+`!q$+(T3Gu6jNMcQq{13Av2O0T+#$$n0=R^ zQZx&5>^AY-u{)@!m7=Ji>H4a<5zh9a5Jz3SbRF;O%C@1dx2ZIK5x!_x7s{-w#S->^ z8U&}KGn5EjYR-u1gz125&KZXuH80v(U8JGA z0}v5spXly?Hl{2_$?6LC%>?n4{6l;QDm6>MENpd@>H{OwbU+ocy<_2AkAbs%=y7~@O_jOMs znZwhlCYT}3C^x#k5vokIHYf%RA}ep2Un=u|4#BSp;XcPZkI-7GNrj0PatRW>62$$0(j zd`r+$B*<0Zj?LEZ%x~CfBslUR$Z3NCm&lNQa~RYgy%wNl4G?By?0hQMZNEn~cE|ql zh(2IJoq*d@!ORW%SkGKgx9%nCy>e@Czp}(W)$ER zSqv?*d4u|wI8YN=`R`C_NlO9!r;6=GTJ$5YhJk4`zGkEE>*D)Y@vT9T(bz1$D~Ruk z;yXZmR}tTV;=49|>n)r?&M1LfiSO3pyN&p6i|>o0#BaJeCX|u(rF z5fZZNYFa+x`G{vA-teYjtU&w-GOtH`DdOG1pLfeJau9Ea_>Ma$0EHb6fk}DSFm9r- zPZ1xB_#VW!B0i(cFl>nLK>XV8hEWUh6HspIy?%y~ovvw_078`5zl9>idn0}x@y8L5gv?dMTSHH??Jwo@@*g`es)sfsH6wM*%v5b~QcuJt zj>$>|Yx=CznOQ^AvL+24nA}Ml{CHxAL0L1>rcTsmre^h@F>PGx%$fbCP0Q${jTt|_ z-`MojaaoMIkeoWt6MPKuBj57zbA5Zf)(duFN zs9)m=dk2zvF9qETdH^)PtEPPe8XJf49;0bzdw>TTnus4U$71$^HUfRIABJ=DdSuV}X7oFU%a8_}n#fSdCB!(=Wg+nD$$whrAMIp1ep1?S9fT z+++?ju{0gZ1jx%j`P-5~aAbt+h3rypVOMV_x?L=XE1@p_D zojGYTLApxV2#C;qA`y#r8oMlYy$au8-4Xws5C2`PFXI2;!!Kg~Eg$|jlJC?EpM=d5 zq#{ceQ5$`U@B&w~t`C35L-^U;0N;ka#0_{v=yBRuJ?`ueX;~SjGPSIgPr)%L z7mKE_oOu>)0_%~~rl}=h^IYt1t`oV3dnwzyThVXJ87uJ|Pec!MQ?vg}PwyV)u9ctT z=6~Z^+rwNZ=~EuG*O~oq_oC-k4|8~g^hdI2nJIDz>+Y8{n`t*sOiyzilg%?d5kvL` z&M6w`lRi!OCr|CeK72b*fHEJxgV&nxjC8PmUp<xcdt`ZL z#Pc$)M{Uq7=A0Z)$3$~`HI|KG7t&ZB<2nTl8VnbyR+5j8m3htBlDDqZp4 z;B+;xzcKDKPwJa3s2V>%jFs46yZiCh_>s?ULvQXhpcRN9_?j5X1kq0DM|L%-oX+cJ zz2~SpR;`XOw*apWvUZ(V!&Ty#w$$K#B0M7FrMjPrsJ6IP(#9WIrFzNRcHG}#`l<7 z_>`*;isfd})H!*S6*XZxng!LdxR~(48e`+3G?Ol$KN(T#4}RDl7^ zn8abCJtlB#hd9UI*cNFZp4S=e*>Zyv!UERQ4jFGQr#Id25+@a>y3^ z&R#)#<3svBwwu29iTKJ7J*}3T!~FK{Ht7RS*Y!+XZf;WjQe{jGQ)Mo2N?g!_#4KSKq*geC=?nprneLdZ5h*> z3WY?*^tM9b3BpbkNRKQOGFX5fTPQdg)1wQ8zcHrA7YeU4rZ*T0I~mhk424e^)0+&1 zbByV2hQcjiC$*R!X(&_(k}aag8VYq7)1wWA=8VTPjs*@2%F%Y_h-59B((yUVcnznQ zF+R??*Fsv&(Y$RN&yFB2je-6`!n9ico^dYj8hojVmyg)$6!>j zCUh4`{i(qie_|ZpD;dwRz)i+m8F$zx)4ybVmT@JRBb5Ip<9NoF{Zf7oV|mYmwa>UU zr+RVa`bKc(j7f*3f~Zsw`h+YzZRk+FmEB*tq5#`wFy2&;pA;F!!%M7Um#X8TOy zuNh0b6|1DSOqaJ!O>4qf+PT=-7|SO$ENjNv38`-jaJBlHHi_`#_!KiElLgK)&Sq?a z%y|0ZP>S^N3V_;Cd2bx2@BOw;`TyDa1gVXX8~2MVv4QA=$)GaoxLP>wuk;U#1vbJsS}t^ zWD@%(LB9qu#a3eKV5Wnb#6lDG<`=>mDz*|+=QW+*Bvz8Br$bD!m6$rl=~ySR1^x85 zA*R?$Or7p@+LPFe{q$=PQ*0%s4t+8LNGzIpZ2C~W`FCLr6m0Swi4URMpS1ogtn3T+oX-zO6(ZpAJGgFJ2q0k1~J7} zV)TO!g`N12SgTQb^UGlk64zVtAVlLcw71CY0it%Q~w5o$q6}6mcT@qFc@<+yMSD*z+>E%n2);lrOLZ?lKu-a{? zoxvfRmcsTnRr^s%{l3)a_a$`mb{JV$0m|6emigpQq+ zmN7nBWs_*2bYqG3O!qf6^1SSC>OMdWTAIn8V>4@kYh#*(=YS!@)YPn26KABRwwgsvnUgwpHoRXvQ!1L0 z;_AP6_^F<6RM~OKI(}Y_=xarj?-+0OTzqOz(3O2FKJ2`-SM55pHaEJqFz?-(*@+!D zHhcfOo*Sp0t^bzx=e`OXKK$zXN>7twbDT5ri6_?%f92Etb8C#;7H=PU=2rY?rTZ3b zN>BUs-QPE?G^h8NmGf@U-{-#GVz|Tj=$$iuKeT&!&$_c;1qKdyyK1x56XWgO9d+hD z(muA*zE|fT__1w%M$aoF2KWDa!->=0pVIN&UlunRz0)){{D&thc6@2vGc~>|9Juf6 zZ~H`EsJ-iD=Z%D>m*V@3nceevX3vBwt?M57$D&(ZKkXD+@W^vtj|#oFXiBZ5Idx0h z)~??pG5yGu7VWF-=%WR;Sy%J*ZCCdWJbnJmtxa31hIjWgIb=?WYx?x5N0)SORWfy` zf7OMf8(kVR=+eUZvxWw}*81kQGn+e&+xFC^!5^oG6zwXTu;8hu5B@ym*%|9jd=>n&r*ZGBu*bStFLq1DfBDh_CiNK{`|WoBf|n-wZ%Ip8o|b*! z^QN0l92(I(=+T+6Gj4b`$G5Fs+IReoaL31&ihGvBvhtV`R=8IT<+DPgnzQe5Zi_XbJMO-ZzSo~t>gZr1B`=|#xl?S`<~6T8^dxkkol znIvW&q8apeL%P*suKKefnZW#KLn3OW$Q(O4%WJ^=S3@FdrOGr|N+P5Hi+u90hJ;k- zboEC=GUXo)xidqGALMLzW{5u;vU{e)>W_x(mVY#)%6!S5&I_uF{G%ZY7D;xFSXH>u z0job6Qiwkqvd7`c?u?FlxFvBgDf_DL;?T*{Nav*1XQT^)|kXd&#*#MjQP`qLU*C*eKSRRd|;Yq zGHosVXtyc8f@#gVB2%ilOIy#xBGXD!X5r68Cf&bsmVGUH^5(eLJgX0yI-9aQM-H0C znX(F76`O9DAQg7l^r*=k(7tfc5mP&}Ij()7`>5$^DDf3(saRGc=?RU=I3erwW+Ak{~MFdRG9Fs z>35SS?u@CTDbdsGj42$X=~+Q~Npj_+Da?5(@i$DWo0c|lziH<1(>Bd^Qhg3!(&J$@ zhlXWMhIGGt{LA}Jio~}}k?xmWyxcNzpU_%Ep4=~2ePtN0!7d~B%LQ;!Bri+hehIhC zONcwk{qih)H;)65`{f11>Bk>(zw7`X&Gm?r`{f$MpGBP9FP|(ij5Uap`{nUc6oA6W z{W9uDR1R@+zZ{16Q4~z>myiDh??}YS{W1=&n~fkt?w9$ujDg0Abm@LM>F4_`!%3>e zAp^Nz);ePtfhdgJFION=EhG0!+gZaHk2twsMj;*tJjpd^c!800vAo1c zxLBHl7Zrw7F#puqnVCi{vS{)kun`cU%|s#=?chwJHu@5Q783D~`S3Sl&J*9)g|dM8 z7k%W9O1@LO;ghg_f>fks5w+2m2rIdw0Y3cKAHtu+4e)JPE;pd2(BrhRdi;#>kd~E* z1J$C1`4k+%1^D)a`X#=pkNiz>0$a3bZ+;gP|F=n02aD#L!HKQrUk$-6Rj_o4EGmb> zB~oe2<9<|HlwX?4tz08ic7fU@%I@;vH|B{@ z;=}L2Yshz|bzuFzdTz?bxB1H=9s7_BLwK$n6RwVFs=VRMW_{XX#!5VsJ6X2RqTLns zhL`Lt+3t=^pJ2Lx>9b7V^{h>RH`0H%xPN=_xVkZ7$FXSjsFvi^m`P5J{hZdRvf3Ys z>e&d0@B%Mf-)=$e0-0RB48poaG<xFW~y8hUu3+O z=@(3IGA-s^D4Y+0{({0~VmveEGJT%u`%Dip{hp~hMQ$<<;BmJy4P*K!(>_dxGfiW< zgebWru42YorfMQJ$i7EWeHMPNwP{{)}-6(~7*pqm@fyJTrzeoy>G4({)Uh4WdpA zwP~u&Q0+myscCADIl+5PJ)UD{8HZ?vpZ7ICW->LAo`u2eS=d{87N!Z$!gT}80iMnM z&BIK1dKh4?X%Bht4RR99dy~G;zE0l-BEIHL=`eWo^>T;7meN0P=`_!g<>prCZ5fn{ zpnC37E`oH`qo7;_H#1f)f<=s#i{Mel%0-Z_h!m8IAYBzHu#2Em+!=|XTm(;cC8TL> zD#4G$B=3@hm5U(VDJhUI0j1|BN=!}zgz2tHLAeOhos)uc5v02(1?eJ)_R}Slf^re0 z%P0lqBIxKVv2qclODYBBB1o523iRtcRe&z76qJjgyoTO)5tP?ab`f+U1Kn;ZC>O!o zjFpQZU3w`f7r~-|5-S%$dXk|)E`nixnx-BgBNzt`mg!v?M=>TBLMLTNW=0kZWH8QU zyo&KI#`%m-Gd{}rD&y;n?=cP>A}i1|P*yOCagRW(c2NOlJjVhVjNfCtit!1?`HV{$ zA7yL`;vQh!f^pzbS%Cz`QH*H7J|QdcI^!tD&ST6- zX2$o7GZ^1xyozxHi>y#S;|`3EGVaItI^!9P1Bc5BEMpucu~XZ`jAR!02jdLJR~WBi z{3qjl#?`CK3LRzKlJRxMy%`6NkQK;a93?Que+4s=Szs6A491@^Ud8xF#`%mZ)Zhv* zj$nM9ac{!nl*U{7{@R^%J?zH*BQ@d95|AS z*Rx?rPSF_3jS23pl+fU0jpK))-M;T9Le4X*%83&G*6%am<$R9OYv|rOsvp_Nn z+yf@pVfrbCLeJU~uV9?cIFGT;I3-1hOP|Mz^0AaSUs5{odz?-_j)adonehiR=oOU$ zc`%Rwy{1x#U`(&76dq+vud5Ui8Ph8(g(n!7J6|&{cfMxqq~})(e`5wc!%}#iF+Imp z*vXilWhs!~B~_4~XDOUxjAvRAZZW3US_&2FN_l#W94oA8_O$?CTl(DtC3UgY~7Bra<)zt*qNg#Z|htZP~O(t7%Ok< z^Nf|Zb<+@35EE4^k`)}pSh-9sVXQo+HZoQoQ^kbI{a3k6-BB6#Nrln%WdX`%DwT2F z{W5($W92e+h;cTj|H)W+OtlD=`pP(cD6o@Spj@UFv4C=!+R9kDOr2EeAIl2(HINFG z%T!Os%4KQ+<7Nk?{C38Z7@ui?^-mR0E>l&*q(bE~)t<3(nHtAfxlCn(&s za(BZhu@F?T;jE6HWWBej;H4KY#F51CZcwa-sLB`65 z$^_nc`r;7rB?Nd03)UkIAH=OZCf!`8y1EwZL^8P}F7-s}=J1A!O&VL_OWhWfyLE*Q zo^;(DR!{MjoVrCc@QiuZT*tFhH(NX_o;6#ltLudFurBgkML7|Qt@5i|hVrmJ>WO?7 zVv4QA)a65YSfBKyk(gpDF?Aisveos@O_Q-Mo~K^@Tp3^k-43;ww3IBU4V+4o{i~r7E@(Qx`SmWS!%Ai^LRL ziK+XWa(K_qR$}V5r<|-a2Y8yJ4Gk4v$*EhQ^0LmB zauJHJA1+Y$c{{n99w% zXrSjBmT^PHS8_)O%1NjEtdFvs;ww4&xt79@_)y=S9Vk4g62MIC7 zR$^;dOgUPw86=#*6PU zn@R*FyTlulT|)B8E+Mm_iI3Sp*xPIXzVB&Gb^{4`+YN-h%?85C)0)f%!ro>BVQ;g6 zu(#Pj*xPJqQVR#8x7|Pj-gX0FZ?l20x7k40+iVc&USewvw^U;*+AIaY#2!lZ@WP#I4lQx56lF@-ev<~Z?l20x7k3r z+-&f?@)CY#BJ03=s*rWyjeqvRWE^;>lX2jU$vE)Fz8= z%jVfmwc=>$kSnuVGqipQtA(q4q19SZuFz^J(!N0QYCjOJ(3qaXNHM}gT%qZIjmq#} z^o6dXM=QG}fMJR^b7cW9=`#(E8TW z@c*@r(1q1Endki{JfRC~ZZQW}GsXPBbcJqEamg+kBDu(^{L4C%)Bp_ z23%}eVC}R2&~MSjX}>J~`A+7$p2nG9cUkXE~{#>YM7e6j3;XZ<3Zbc25E$cZr{>L#69@VsTvt7Ug**=}!G^2fDd9Vc#!-aPJu zy9b@)Qol;;x`H|$jP)bn>gzZ@MswC3DyGf&9Qh)W1qxk!uq`NZm? z1q<0iHzP|&9C@YNw&P3uR-dUC{zu98 z_BL%|b6SLc?djOO@4f4x*}H0eyEOc_iWB=6TzRaY{luN*>DJWjUpoD1aV)C!s^9N> zMt9lTpm+79SI++Ms{b;h|H*w9honSB^qHS#`(azR8CR=JT9oOmpZd2!GgJLre|GA0 TV$kA@TnJ^Z;0J diff --git a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebView.bundle/Contents/Resources/InfoPlist.strings b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/ImmutableWebView.bundle/Contents/Resources/InfoPlist.strings similarity index 100% rename from src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebView.bundle/Contents/Resources/InfoPlist.strings rename to src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/ImmutableWebView.bundle/Contents/Resources/InfoPlist.strings diff --git a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebView.bundle/Contents/_CodeSignature/CodeResources b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/ImmutableWebView.bundle/Contents/_CodeSignature/CodeResources similarity index 100% rename from src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebView.bundle/Contents/_CodeSignature/CodeResources rename to src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/ImmutableWebView.bundle/Contents/_CodeSignature/CodeResources diff --git a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebViewObject.cs b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebViewObject.cs index 453f236b..20c115bf 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebViewObject.cs +++ b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebViewObject.cs @@ -94,38 +94,38 @@ public void call(String message) { #if UNITY_IPHONE && !UNITY_EDITOR [DllImport("__Internal")] - private static extern IntPtr _CWebViewPlugin_Init(string ua); + private static extern IntPtr _CImmutableWebViewPlugin_Init(string ua); [DllImport("__Internal")] - private static extern int _CWebViewPlugin_Destroy(IntPtr instance); + private static extern int _CImmutableWebViewPlugin_Destroy(IntPtr instance); [DllImport("__Internal")] - private static extern void _CWebViewPlugin_LoadURL( + private static extern void _CImmutableWebViewPlugin_LoadURL( IntPtr instance, string url); [DllImport("__Internal")] - private static extern void _CWebViewPlugin_EvaluateJS( + private static extern void _CImmutableWebViewPlugin_EvaluateJS( IntPtr instance, string url); [DllImport("__Internal")] - private static extern void _CWebViewPlugin_LaunchAuthURL(IntPtr instance, string url); + private static extern void _CImmutableWebViewPlugin_LaunchAuthURL(IntPtr instance, string url); [DllImport("__Internal")] - private static extern void _CWebViewPlugin_SetDelegate(DelegateMessage callback); + private static extern void _CImmutableWebViewPlugin_SetDelegate(DelegateMessage callback); [DllImport("__Internal")] - private static extern void _CWebViewPlugin_ClearCache(IntPtr instance, bool includeDiskFiles); + private static extern void _CImmutableWebViewPlugin_ClearCache(IntPtr instance, bool includeDiskFiles); [DllImport("__Internal")] - private static extern void _CWebViewPlugin_ClearStorage(IntPtr instance); + private static extern void _CImmutableWebViewPlugin_ClearStorage(IntPtr instance); #elif UNITY_STANDALONE_OSX || (UNITY_ANDROID && UNITY_EDITOR_OSX) || (UNITY_IPHONE && UNITY_EDITOR_OSX) - [DllImport("WebView")] - private static extern IntPtr _CWebViewPlugin_Init(string ua); - [DllImport("WebView")] - private static extern int _CWebViewPlugin_Destroy(IntPtr instance); - [DllImport("WebView")] - private static extern void _CWebViewPlugin_LoadURL( + [DllImport("ImmutableWebView")] + private static extern IntPtr _CImmutableWebViewPlugin_Init(string ua); + [DllImport("ImmutableWebView")] + private static extern int _CImmutableWebViewPlugin_Destroy(IntPtr instance); + [DllImport("ImmutableWebView")] + private static extern void _CImmutableWebViewPlugin_LoadURL( IntPtr instance, string url); - [DllImport("WebView")] - private static extern void _CWebViewPlugin_EvaluateJS( + [DllImport("ImmutableWebView")] + private static extern void _CImmutableWebViewPlugin_EvaluateJS( IntPtr instance, string url); - [DllImport("WebView")] - private static extern void _CWebViewPlugin_LaunchAuthURL(IntPtr instance, string url, string redirectUri); - [DllImport("WebView")] - private static extern void _CWebViewPlugin_SetDelegate(DelegateMessage callback); + [DllImport("ImmutableWebView")] + private static extern void _CImmutableWebViewPlugin_LaunchAuthURL(IntPtr instance, string url, string redirectUri); + [DllImport("ImmutableWebView")] + private static extern void _CImmutableWebViewPlugin_SetDelegate(DelegateMessage callback); #elif UNITY_WEBGL [DllImport("__Internal")] private static extern void _gree_unity_webview_init(); @@ -238,13 +238,13 @@ public void Init( //TODO: UNSUPPORTED PassportLogger.Error("Webview is not supported on this platform."); #elif UNITY_IPHONE || UNITY_STANDALONE_OSX || (UNITY_ANDROID && UNITY_EDITOR_OSX) - webView = _CWebViewPlugin_Init(ua); + webView = _CImmutableWebViewPlugin_Init(ua); Singleton.Instance.onJS = ((message) => CallFromJS(message)); Singleton.Instance.onError = ((id, message) => CallOnError(id, message)); Singleton.Instance.onHttpError = ((id, message) => CallOnHttpError(id, message)); Singleton.Instance.onAuth = ((message) => CallOnAuth(message)); Singleton.Instance.onLog = ((message) => CallOnLog(message)); - _CWebViewPlugin_SetDelegate(delegateMessageReceived); + _CImmutableWebViewPlugin_SetDelegate(delegateMessageReceived); #elif UNITY_ANDROID webView = new AndroidJavaObject("net.gree.unitywebview.CWebViewPluginNoUi"); webView.Call("Init", ua); @@ -269,7 +269,7 @@ public void LoadURL(string url) #elif UNITY_STANDALONE_OSX || UNITY_IPHONE || (UNITY_ANDROID && UNITY_EDITOR_OSX) if (webView == IntPtr.Zero) return; - _CWebViewPlugin_LoadURL(webView, url); + _CImmutableWebViewPlugin_LoadURL(webView, url); #elif UNITY_ANDROID if (webView == null) return; @@ -290,7 +290,7 @@ public void EvaluateJS(string js) #elif UNITY_STANDALONE_OSX || UNITY_IPHONE || (UNITY_ANDROID && UNITY_EDITOR_OSX) if (webView == IntPtr.Zero) return; - _CWebViewPlugin_EvaluateJS(webView, js); + _CImmutableWebViewPlugin_EvaluateJS(webView, js); #elif UNITY_ANDROID if (webView == null) return; @@ -303,11 +303,11 @@ public void LaunchAuthURL(string url, string redirectUri) #if UNITY_STANDALONE_OSX || (UNITY_ANDROID && UNITY_EDITOR_OSX) || (UNITY_IPHONE && UNITY_EDITOR_OSX) if (webView == IntPtr.Zero) return; - _CWebViewPlugin_LaunchAuthURL(webView, url, redirectUri != null ? redirectUri : ""); + _CImmutableWebViewPlugin_LaunchAuthURL(webView, url, redirectUri != null ? redirectUri : ""); #elif UNITY_IPHONE && !UNITY_EDITOR_WIN if (webView == IntPtr.Zero) return; - _CWebViewPlugin_LaunchAuthURL(webView, url); + _CImmutableWebViewPlugin_LaunchAuthURL(webView, url); #else UnityEngine.Application.OpenURL(url); #endif @@ -365,7 +365,7 @@ public void ClearCache(bool includeDiskFiles) #if UNITY_IPHONE && !UNITY_EDITOR if (webView == IntPtr.Zero) return; - _CWebViewPlugin_ClearCache(webView, includeDiskFiles); + _CImmutableWebViewPlugin_ClearCache(webView, includeDiskFiles); #elif UNITY_ANDROID && !UNITY_EDITOR if (webView == null) return; @@ -380,7 +380,7 @@ public void ClearStorage() #if UNITY_IPHONE && !UNITY_EDITOR if (webView == IntPtr.Zero) return; - _CWebViewPlugin_ClearStorage(webView); + _CImmutableWebViewPlugin_ClearStorage(webView); #elif UNITY_ANDROID && !UNITY_EDITOR if (webView == null) return; diff --git a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebViewObject.cs.meta b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebViewObject.cs.meta index 32948634..32bdcb48 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebViewObject.cs.meta +++ b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/WebViewObject.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d4d2b188f50df4b299eb714ef4360ee9 +guid: 43078641b40584a8e94b32e5367fb0de MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/iOS/WebView.mm b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/iOS/ImmutableWebView.mm similarity index 86% rename from src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/iOS/WebView.mm rename to src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/iOS/ImmutableWebView.mm index 5e90df3f..df22cde1 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/iOS/WebView.mm +++ b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/iOS/ImmutableWebView.mm @@ -31,7 +31,7 @@ DelegateCallbackFunction delegateCallback = NULL; // cf. https://stackoverflow.com/questions/26383031/wkwebview-causes-my-view-controller-to-leak/33365424#33365424 -@interface WeakScriptMessageDelegate : NSObject +@interface ImmutableWeakScriptMessageDelegate : NSObject @property (nonatomic, weak) id scriptDelegate; @@ -39,7 +39,7 @@ - (instancetype)initWithDelegate:(id)scriptDelegate; @end -@implementation WeakScriptMessageDelegate +@implementation ImmutableWeakScriptMessageDelegate - (instancetype)initWithDelegate:(id)scriptDelegate { @@ -87,17 +87,17 @@ - (void)load:(NSURLRequest *)request } @end -@interface CWebViewPlugin : NSObject +@interface CImmutableWebViewPlugin : NSObject { WKWebView *webView; } @end -@implementation CWebViewPlugin +@implementation CImmutableWebViewPlugin static WKProcessPool *_sharedProcessPool; static NSMutableArray *_instances = [[NSMutableArray alloc] init]; -static CWebViewPlugin *__delegate = nil; +static CImmutableWebViewPlugin *__delegate = nil; static ASWebAuthenticationSession *_authSession; - (id)initWithUa:(const char *)ua @@ -110,9 +110,9 @@ - (id)initWithUa:(const char *)ua WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init]; WKUserContentController *controller = [[WKUserContentController alloc] init]; - [controller addScriptMessageHandler:[[WeakScriptMessageDelegate alloc] initWithDelegate:self] name:@"unityControl"]; - [controller addScriptMessageHandler:[[WeakScriptMessageDelegate alloc] initWithDelegate:self] name:@"saveDataURL"]; - [controller addScriptMessageHandler:[[WeakScriptMessageDelegate alloc] initWithDelegate:self] name:@"logHandler"]; + [controller addScriptMessageHandler:[[ImmutableWeakScriptMessageDelegate alloc] initWithDelegate:self] name:@"unityControl"]; + [controller addScriptMessageHandler:[[ImmutableWeakScriptMessageDelegate alloc] initWithDelegate:self] name:@"saveDataURL"]; + [controller addScriptMessageHandler:[[ImmutableWeakScriptMessageDelegate alloc] initWithDelegate:self] name:@"logHandler"]; NSString *str = @"\ window.Unity = { \ call: function(msg) { \ @@ -185,7 +185,7 @@ + (void)resetSharedProcessPool { // cf. https://stackoverflow.com/questions/33156567/getting-all-cookies-from-wkwebview/49744695#49744695 _sharedProcessPool = [[WKProcessPool alloc] init]; - [_instances enumerateObjectsUsingBlock:^(CWebViewPlugin *obj, NSUInteger idx, BOOL *stop) { + [_instances enumerateObjectsUsingBlock:^(CImmutableWebViewPlugin *obj, NSUInteger idx, BOOL *stop) { if ([obj->webView isKindOfClass:[WKWebView class]]) { WKWebView *webView = (WKWebView *)obj->webView; webView.configuration.processPool = _sharedProcessPool; @@ -401,73 +401,73 @@ - (void)clearStorage @end extern "C" { - void *_CWebViewPlugin_Init(const char *ua); - void _CWebViewPlugin_Destroy(void *instance); - void _CWebViewPlugin_LoadURL(void *instance, const char *url); - void _CWebViewPlugin_EvaluateJS(void *instance, const char *url); - void _CWebViewPlugin_SetDelegate(DelegateCallbackFunction callback); - void _CWebViewPlugin_LaunchAuthURL(void *instance, const char *url); - void _CWebViewPlugin_ClearCache(void *instance, BOOL includeDiskFiles); - void _CWebViewPlugin_ClearStorage(void *instance); + void *_CImmutableWebViewPlugin_Init(const char *ua); + void _CImmutableWebViewPlugin_Destroy(void *instance); + void _CImmutableWebViewPlugin_LoadURL(void *instance, const char *url); + void _CImmutableWebViewPlugin_EvaluateJS(void *instance, const char *url); + void _CImmutableWebViewPlugin_SetDelegate(DelegateCallbackFunction callback); + void _CImmutableWebViewPlugin_LaunchAuthURL(void *instance, const char *url); + void _CImmutableWebViewPlugin_ClearCache(void *instance, BOOL includeDiskFiles); + void _CImmutableWebViewPlugin_ClearStorage(void *instance); } -void _CWebViewPlugin_SetDelegate(DelegateCallbackFunction callback) { +void _CImmutableWebViewPlugin_SetDelegate(DelegateCallbackFunction callback) { delegateCallback = callback; } -void *_CWebViewPlugin_Init(const char *ua) +void *_CImmutableWebViewPlugin_Init(const char *ua) { - CWebViewPlugin *webViewPlugin = [[CWebViewPlugin alloc] initWithUa:ua]; + CImmutableWebViewPlugin *webViewPlugin = [[CImmutableWebViewPlugin alloc] initWithUa:ua]; [_instances addObject:webViewPlugin]; return (__bridge_retained void *)webViewPlugin; } -void _CWebViewPlugin_Destroy(void *instance) +void _CImmutableWebViewPlugin_Destroy(void *instance) { if (instance == NULL) return; - CWebViewPlugin *webViewPlugin = (__bridge_transfer CWebViewPlugin *)instance; + CImmutableWebViewPlugin *webViewPlugin = (__bridge_transfer CImmutableWebViewPlugin *)instance; [_instances removeObject:webViewPlugin]; [webViewPlugin dispose]; webViewPlugin = nil; } -void _CWebViewPlugin_LoadURL(void *instance, const char *url) +void _CImmutableWebViewPlugin_LoadURL(void *instance, const char *url) { if (instance == NULL) return; - CWebViewPlugin *webViewPlugin = (__bridge CWebViewPlugin *)instance; + CImmutableWebViewPlugin *webViewPlugin = (__bridge CImmutableWebViewPlugin *)instance; [webViewPlugin loadURL:url]; } -void _CWebViewPlugin_EvaluateJS(void *instance, const char *js) +void _CImmutableWebViewPlugin_EvaluateJS(void *instance, const char *js) { if (instance == NULL) return; - CWebViewPlugin *webViewPlugin = (__bridge CWebViewPlugin *)instance; + CImmutableWebViewPlugin *webViewPlugin = (__bridge CImmutableWebViewPlugin *)instance; [webViewPlugin evaluateJS:js]; } -void _CWebViewPlugin_LaunchAuthURL(void *instance, const char *url) +void _CImmutableWebViewPlugin_LaunchAuthURL(void *instance, const char *url) { if (instance == NULL) return; - CWebViewPlugin *webViewPlugin = (__bridge CWebViewPlugin *)instance; + CImmutableWebViewPlugin *webViewPlugin = (__bridge CImmutableWebViewPlugin *)instance; [webViewPlugin launchAuthURL:url]; } -void _CWebViewPlugin_ClearCache(void *instance, BOOL includeDiskFiles) +void _CImmutableWebViewPlugin_ClearCache(void *instance, BOOL includeDiskFiles) { if (instance == NULL) return; - CWebViewPlugin *webViewPlugin = (__bridge CWebViewPlugin *)instance; + CImmutableWebViewPlugin *webViewPlugin = (__bridge CImmutableWebViewPlugin *)instance; [webViewPlugin clearCache:includeDiskFiles]; } -void _CWebViewPlugin_ClearStorage(void *instance) +void _CImmutableWebViewPlugin_ClearStorage(void *instance) { if (instance == NULL) return; - CWebViewPlugin *webViewPlugin = (__bridge CWebViewPlugin *)instance; + CImmutableWebViewPlugin *webViewPlugin = (__bridge CImmutableWebViewPlugin *)instance; [webViewPlugin clearStorage]; } \ No newline at end of file diff --git a/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/iOS/WebView.mm.meta b/src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/iOS/ImmutableWebView.mm.meta similarity index 100% rename from src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/iOS/WebView.mm.meta rename to src/Packages/Passport/Runtime/ThirdParty/Gree/Assets/Plugins/iOS/ImmutableWebView.mm.meta diff --git a/src/Packages/Passport/Runtime/ThirdParty/Gree/unity-webview.asmdef b/src/Packages/Passport/Runtime/ThirdParty/Gree/ImmutableWebView.asmdef similarity index 84% rename from src/Packages/Passport/Runtime/ThirdParty/Gree/unity-webview.asmdef rename to src/Packages/Passport/Runtime/ThirdParty/Gree/ImmutableWebView.asmdef index cc46948b..fa0dcb48 100644 --- a/src/Packages/Passport/Runtime/ThirdParty/Gree/unity-webview.asmdef +++ b/src/Packages/Passport/Runtime/ThirdParty/Gree/ImmutableWebView.asmdef @@ -1,6 +1,6 @@ { - "name": "unity-webview", - "rootNamespace": "", + "name": "Immutable.Browser.Gree", + "rootNamespace": "Immutable.Browser.Gree", "references": [ "GUID:95d173a3e67b39d40803000ed05b79f4", "GUID:a0996310e1aa34b7fbf14df5d255461d" diff --git a/src/Packages/Passport/Runtime/ThirdParty/Gree/unity-webview.asmdef.meta b/src/Packages/Passport/Runtime/ThirdParty/Gree/ImmutableWebView.asmdef.meta similarity index 100% rename from src/Packages/Passport/Runtime/ThirdParty/Gree/unity-webview.asmdef.meta rename to src/Packages/Passport/Runtime/ThirdParty/Gree/ImmutableWebView.asmdef.meta