diff --git a/doric-android/devkit/src/main/java/pub/doric/devkit/DoricDebugJSEngine.java b/doric-android/devkit/src/main/java/pub/doric/devkit/DoricDebugJSEngine.java index a8d66b39..7e96f29b 100644 --- a/doric-android/devkit/src/main/java/pub/doric/devkit/DoricDebugJSEngine.java +++ b/doric-android/devkit/src/main/java/pub/doric/devkit/DoricDebugJSEngine.java @@ -1,3 +1,18 @@ +/* + * Copyright [2019] [Doric.Pub] + * + * Licensed 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. + */ package pub.doric.devkit; import pub.doric.devkit.remote.DoricRemoteJSExecutor; @@ -9,6 +24,7 @@ public class DoricDebugJSEngine extends DoricJSEngine { public DoricDebugJSEngine(WSClient wsClient) { super(); this.wsClient = wsClient; + this.getRegistry().registerMonitor(new DoricDevMonitor()); } @Override diff --git a/doric-iOS/Devkit/Classes/DoricDebugDriver.m b/doric-iOS/Devkit/Classes/DoricDebugDriver.m index 57ced03e..35dc6061 100644 --- a/doric-iOS/Devkit/Classes/DoricDebugDriver.m +++ b/doric-iOS/Devkit/Classes/DoricDebugDriver.m @@ -163,12 +163,10 @@ - (DoricAsyncResult *)createContext:(NSString *)contextId script:(NSString *)scr - (DoricAsyncResult *)destroyContext:(NSString *)contextId { DoricAsyncResult *ret = [[DoricAsyncResult alloc] init]; - __weak typeof(self) _self = self; + NSString *theContextId = self.theContextId; [self.jsExecutor ensureRunOnJSThread:^{ - __strong typeof(_self) self = _self; - if (!self) return; @try { - if ([contextId isEqualToString:self.theContextId]) { + if ([contextId isEqualToString:theContextId]) { [DoricDev.instance stopDebugging:NO]; } [ret setupResult:@YES]; diff --git a/doric-iOS/Devkit/Classes/DoricDebugJSEngine.m b/doric-iOS/Devkit/Classes/DoricDebugJSEngine.m index a22a9e0b..8d084419 100644 --- a/doric-iOS/Devkit/Classes/DoricDebugJSEngine.m +++ b/doric-iOS/Devkit/Classes/DoricDebugJSEngine.m @@ -23,6 +23,7 @@ #import "DoricContext.h" #import "DoricDebugJSEngine.h" #import "DoricRemoteJSExecutor.h" +#import "DoricDevMonitor.h" @interface DoricDebugJSEngine () @property(nonatomic, weak) DoricWSClient *wsClient; @@ -33,6 +34,7 @@ @implementation DoricDebugJSEngine - (instancetype)initWithWSClient:(DoricWSClient *)wsClient { if (self = [super init]) { _wsClient = wsClient; + [self.registry registerMonitor:[DoricDevMonitor new]]; } return self; } diff --git a/doric-iOS/Devkit/Classes/DoricDev.h b/doric-iOS/Devkit/Classes/DoricDev.h index 81d7b402..788b8b8f 100644 --- a/doric-iOS/Devkit/Classes/DoricDev.h +++ b/doric-iOS/Devkit/Classes/DoricDev.h @@ -24,7 +24,8 @@ NS_ASSUME_NONNULL_BEGIN @interface DoricDev : NSObject -@property(nonatomic, strong) DoricWSClient *wsClient; +@property(nonatomic, strong, nullable) DoricWSClient *wsClient; + + (instancetype)instance; - (void)openDevMode;