#import <Lynx/LynxView.h>
#import <Lynx/LynxBaseInspectorOwner.h>
#import "TestCDPEventListener.h"
@interface LynxViewLifecycleClient : NSObject <LynxViewLifecycle>
@property(nonatomic, weak) LynxView* lynxView;
@end
@implementation LynxViewLifecycleClient {
TestCDPEventListener* _listener;
}
- (void)lynxView:(LynxView *)view didLoadFinishedWithUrl:(NSString *)url {
[self addCDPEventListener:@"TestListener"];
__weak __typeof(self) weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC)),
dispatch_get_main_queue(), ^{
__strong __typeof(weakSelf) strongSelf = weakSelf;
[strongSelf removeCDPEventListener:@"TestListener"];
});
}
- (void)addCDPEventListener:(NSString *)name {
__strong LynxView* view = self.lynxView;
id<LynxBaseInspectorOwner> owner = [view baseInspectorOwner];
_listener = [[TestCDPEventListener alloc] initWithName:name];
[owner addCDPEventListener:name withListener:_listener];
NSString *method = @"{\"id\":1,\"method\":\"Page.startScreencast\",\"params\":{\"format\":\"jpeg\",\"mode\":\"fullscreen\"}}";
[owner invokeCDPFromSDK:method withCallback:^(NSString *result){
}];
}
- (void)removeCDPEventListener:(NSString *)name {
__strong LynxView* view = self.lynxView;
id<LynxBaseInspectorOwner> owner = [view baseInspectorOwner];
[owner removeCDPEventListener:name];
}
@end
@implementation ViewController {
LynxViewLifecycleClient *_client;
}
- (void)viewDidLoad {
[super viewDidLoad];
// ...
_client = [LynxViewLifecycleClient new];
_client.lynxView = lynxView;
[lynxView addLifecycleClient:_client];
}
@end