@@ -53,10 +53,14 @@ public class InAppBrowserPlugin: CAPPlugin, CAPBridgedPlugin {
5353 guard let options: OSInAppBrowserWebViewModel = self . createModel ( for: call. getObject ( " options " ) ) else {
5454 return self . error ( call, type: . inputArgumentsIssue( target: . webView) )
5555 }
56+ let customHeaders = call. getObject ( " customHeaders " ) ? . compactMapValues {
57+ ( $0 as? String ) ?? ( $0 as? NSNumber ) ? . stringValue
58+ }
5659 DispatchQueue . main. async {
5760 engine. openWebView (
58- url,
59- options. toWebViewOptions ( ) ,
61+ url: url,
62+ options: options. toWebViewOptions ( ) ,
63+ customHeaders: customHeaders,
6064 onDelegateClose: { [ weak self] in
6165 self ? . bridge? . viewController? . dismiss ( animated: true )
6266 } ,
@@ -65,7 +69,7 @@ public class InAppBrowserPlugin: CAPPlugin, CAPBridgedPlugin {
6569 } ,
6670 onDelegateAlertController: { [ weak self] alert in
6771 self ? . bridge? . viewController? . presentedViewController? . show ( alert, sender: nil )
68- } , { [ weak self] event, viewControllerToOpen, data in
72+ } , completionHandler : { [ weak self] event, viewControllerToOpen, data in
6973 self ? . handleResult ( event, for: call, checking: viewControllerToOpen, data: data, error: . failedToOpen( url: url. absoluteString, onTarget: . webView) )
7074 }
7175 )
@@ -75,22 +79,22 @@ public class InAppBrowserPlugin: CAPPlugin, CAPBridgedPlugin {
7579
7680 @objc func close( _ call: CAPPluginCall ) {
7781 guard loadEngineIfNeeded ( call) != nil else { return }
78- if let openedViewController {
79- DispatchQueue . main. async {
80- openedViewController. dismiss ( animated: true ) { [ weak self] in
81- self ? . success ( call)
82- }
82+ guard let openedViewController else {
83+ error ( call, type: . noBrowserToClose)
84+ return
85+ }
86+ DispatchQueue . main. async {
87+ openedViewController. dismiss ( animated: true ) { [ weak self] in
88+ self ? . success ( call)
8389 }
84- } else {
85- self . error ( call, type: . noBrowserToClose)
8690 }
8791 }
8892}
8993
9094private extension InAppBrowserPlugin {
9195 func loadEngineIfNeeded( _ call: CAPPluginCall ) -> OSInAppBrowserEngine ? {
92- if self . engine == nil { self . load ( ) }
93- guard let engine = self . engine else {
96+ if self . engine == nil { load ( ) }
97+ guard let engine else {
9498 self . error ( call, type: . bridgeNotInitialised)
9599 return nil
96100 }
@@ -124,11 +128,11 @@ private extension InAppBrowserPlugin {
124128 func handleResult( _ event: OSIABEventType ? , for call: CAPPluginCall , checking viewController: UIViewController ? , data: [ String : Any ] ? , error: OSInAppBrowserError ) {
125129 if let event {
126130 if event == . pageClosed {
127- self . openedViewController = nil
131+ openedViewController = nil
128132 }
129- self . notifyListeners ( event. rawValue, data: data)
133+ notifyListeners ( event. rawValue, data: data)
130134 } else if let viewController {
131- self . present ( viewController) { [ weak self] in
135+ present ( viewController) { [ weak self] in
132136 self ? . openedViewController = viewController
133137 self ? . success ( call)
134138 }
@@ -173,9 +177,10 @@ private extension InAppBrowserPlugin {
173177}
174178
175179private extension OSInAppBrowserEngine {
180+
176181 func openExternalBrowser( _ url: URL , _ completionHandler: @escaping ( Bool ) -> Void ) {
177182 let router = OSIABApplicationRouterAdapter ( )
178- self . openExternalBrowser ( url, routerDelegate: router, completionHandler)
183+ openExternalBrowser ( url, routerDelegate: router, completionHandler)
179184 }
180185
181186 func openSystemBrowser( _ url: URL , _ options: OSIABSystemBrowserOptions , _ completionHandler: @escaping ( OSIABEventType ? , UIViewController ? ) -> Void ) {
@@ -184,16 +189,17 @@ private extension OSInAppBrowserEngine {
184189 onBrowserPageLoad: { completionHandler ( . pageLoadCompleted, nil ) } ,
185190 onBrowserClosed: { completionHandler ( . pageClosed, nil ) }
186191 )
187- self . openSystemBrowser ( url, routerDelegate: router) { completionHandler ( nil , $0) }
192+ openSystemBrowser ( url, routerDelegate: router) { completionHandler ( nil , $0) }
188193 }
189194
190195 func openWebView(
191- _ url: URL ,
192- _ options: OSIABWebViewOptions ,
196+ url: URL ,
197+ options: OSIABWebViewOptions ,
198+ customHeaders: [ String : String ] ? = nil ,
193199 onDelegateClose: @escaping ( ) -> Void ,
194200 onDelegateURL: @escaping ( URL ) -> Void ,
195201 onDelegateAlertController: @escaping ( UIAlertController ) -> Void ,
196- _ completionHandler: @escaping ( OSIABEventType ? , UIViewController ? , [ String : Any ] ? ) -> Void
202+ completionHandler: @escaping ( OSIABEventType ? , UIViewController ? , [ String : Any ] ? ) -> Void
197203 ) {
198204 let callbackHandler = OSIABWebViewCallbackHandler (
199205 onDelegateURL: onDelegateURL,
@@ -208,8 +214,8 @@ private extension OSInAppBrowserEngine {
208214 completionHandler ( . pageNavigationCompleted, nil , [ " url " : url ?? " " ] )
209215 }
210216 )
211- let router = OSIABWebViewRouterAdapter ( options, cacheManager: OSIABBrowserCacheManager ( dataStore: . default( ) ) , callbackHandler: callbackHandler)
212- self . openWebView ( url, routerDelegate: router) { completionHandler ( nil , $0, nil ) }
217+ let router = OSIABWebViewRouterAdapter ( options: options , customHeaders : customHeaders , cacheManager: OSIABBrowserCacheManager ( dataStore: . default( ) ) , callbackHandler: callbackHandler)
218+ openWebView ( url, routerDelegate: router) { completionHandler ( nil , $0, nil ) }
213219 }
214220}
215221
0 commit comments