blob: e5fefd3d6c18afd3f1489bf38fc3ecd75103320e [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#import <Foundation/Foundation.h>
#import <JavaScriptCore/JavaScriptCore.h>
NS_ASSUME_NONNULL_BEGIN
@class WXBridgeMethod;
@class WXSDKInstance;
#ifdef __cplusplus
extern "C" {
#endif
void WXPerformBlockOnBridgeThread(void (^block)(void));
void WXPerformBlockSyncOnBridgeThread(void (^block) (void));
void WXPerformBlockOnBackupBridgeThread(void (^block)(void));
void WXPerformBlockOnBridgeThreadForInstance(void (^block)(void), NSString* instance);
void WXPerformBlockSyncOnBridgeThreadForInstance(void (^block) (void), NSString* instance);
#ifdef __cplusplus
}
#endif
@interface WXBridgeManager : NSObject
/**
* return instance at the top of the stack.
**/
@property (nonatomic, weak, readonly) WXSDKInstance *topInstance;
@property (nonatomic, strong) NSMutableDictionary *lastMethodInfo;
+ (instancetype)sharedManager;
/**
* Create Instance Method
* @param instance : instance id
* @param temp : template data
* @param options : parameters
* @param data : external data
**/
- (void)createInstanceForJS:(NSString *)instance
template:(NSString *)temp
options:(NSDictionary * _Nullable)options
data:(id _Nullable)data;
/**
* Create Instance Method
* @param instance : instance id
* @param temp : template data
* @param options : parameters
* @param data : external data
**/
- (void)createInstance:(NSString *)instance
template:(NSString *)temp
options:(NSDictionary * _Nullable)options
data:(id _Nullable)data;
/**
* Create Instance with opcode
* @param instance : instance id
* @param contents : opcode data
* @param options : parameters
* @param data : external data
**/
- (void)createInstance:(NSString *)instance
contents:(NSData *)contents
options:(NSDictionary * _Nullable)options
data:(id _Nullable)data;
/**
* @abstract return currentInstanceId
**/
- (NSArray *)getInstanceIdStack;
/**
* Destroy Instance Method
* @param instance : instance id
**/
- (void)destroyInstance:(NSString *)instance;
/**
* Trigger full GC, for dev and debug only.
**/
- (void)forceGarbageCollection;
/**
* Refresh Instance Method
* @param instance : instance id
* @param data : external data
**/
- (void)refreshInstance:(NSString *)instance data:(id _Nullable)data;
/**
* Unload
**/
- (void)unload;
/**
* Update Instance State Method
* @param instance : instance id
* @param data : parameters
**/
- (void)updateState:(NSString *)instance data:(id _Nullable)data;
/**
* Execute JSFramework Script
* @param script : script code
**/
- (void)executeJsFramework:(NSString *)script;
/**
+ * download JS Script
+ * @param instance : instance id
+ * @param scriptUrl : script url
+ **/
- (void)DownloadJS:(NSString *)instance url:(NSURL *)scriptUrl completion:(void (^)(NSString *script))complection;
/**
* Register JS service Script
* @param name : service name
* @param serviceScript : script code
* @param options : service options
* @param completion : completion callback
**/
- (void)registerService:(NSString *)name withService:(NSString *)serviceScript withOptions:(NSDictionary * _Nullable)options completion:(nullable void(^)(BOOL result))completion;
/**
* Register JS service Script
* @param name : service name
* @param serviceScriptUrl : script url
* @param options : service options
* @param completion : completion callback
**/
-(void)registerService:(NSString *)name withServiceUrl:(NSURL *)serviceScriptUrl withOptions:(NSDictionary * _Nullable)options completion:(nullable void(^)(BOOL result))completion;
/**
* Unregister JS service Script
* @param name : script code
**/
- (void)unregisterService:(NSString *)name;
/**
* Register Modules Method
* @param modules : module list
**/
- (void)registerModules:(NSDictionary *)modules;
/**
* Register Components Method
* @param components component list
**/
- (void)registerComponents:(NSArray* )components;
/**
* FireEvent
* @param instanceId instance id
* @param ref : node reference
* @param type : event type
* @param params : parameters in event object
* @param domChanges dom value changes, used for two-way data binding
**/
- (void)fireEvent:(NSString *)instanceId ref:(NSString *)ref type:(NSString *)type params:(NSDictionary * _Nullable)params domChanges:(NSDictionary * _Nullable)domChanges;
/**
* FireEvent
* @param instanceId instance id
* @param ref : node reference
* @param type : event type
* @param params : parameters in event object
* @param domChanges dom value changes, used for two-way data binding
* @param handlerArguments : arguments passed to event handler
**/
- (void)fireEvent:(NSString *)instanceId ref:(NSString *)ref type:(NSString *)type params:(NSDictionary * _Nullable)params domChanges:(NSDictionary * _Nullable)domChanges handlerArguments:(NSArray * _Nullable)handlerArguments;
- (JSValue *)fireEventWithResult:(NSString *)instanceId ref:(NSString *)ref type:(NSString *)type params:(NSDictionary * _Nullable)params domChanges:(NSDictionary * _Nullable)domChanges;
/**
* componentHook
* @param instanceId : instance id
* @param componentId : compoent id
* @param type : component hook Type, such as life-cycle
* @param hookPhase : hook phase
*/
- (void)callComponentHook:(NSString*)instanceId componentId:(NSString*)componentId type:(NSString*)type hook:(NSString*)hookPhase args:(NSArray* _Nullable)args competion:(nullable void (^)(JSValue * value))complection;
/**
* callBack
*
* @param instanceId instanceId
* @param funcId funcId
* @param params params
* @param keepAlive indicate that whether this func will be reused
*/
- (void)callBack:(NSString *)instanceId funcId:(NSString *)funcId params:(id _Nullable)params keepAlive:(BOOL)keepAlive;
/**
* Connect To WebSocket for devtool debug
* @param url : url to connect
**/
- (void)connectToDevToolWithUrl:(NSURL *)url;
/**
* CallBack
* @param instanceId instance id
* @param funcId : callback id
* @param params : parameters
**/
- (void)callBack:(NSString *)instanceId funcId:(NSString *)funcId params:(id _Nullable)params;
/**
* Connect To WebSocket for collecting log
* @param url : url to connect
**/
- (void)connectToWebSocket:(NSURL *)url;
/**
* Log To WebSocket
* @param flag : the tag to identify
* @param message : message to output
**/
- (void)logToWebSocket:(NSString *)flag message:(NSString *)message;
/**
* Reset Environment
**/
- (void)resetEnvironment;
- (void)fireEvent:(NSString *)instanceId ref:(NSString *)ref type:(NSString *)type params:(NSDictionary * _Nullable)params DEPRECATED_MSG_ATTRIBUTE("Use fireEvent:ref:type:params:domChanges: method instead.");
- (void)executeJsMethod:(WXBridgeMethod *)method DEPRECATED_MSG_ATTRIBUTE();
- (void)callJSMethod:(NSString *)method args:(NSArray *)args;
- (void)executeJSTaskQueue;
- (void)checkJSThread;
+ (NSThread *)jsThread;
@end
NS_ASSUME_NONNULL_END