Skip to content

Commit e7da04c

Browse files
committed
+ [ios] to eliminate the dependence of inspect and debug
1 parent 8d8b369 commit e7da04c

11 files changed

+156
-27
lines changed

ios/WXDevtool/inspector/DerivedSources/PDNetworkDomain.m

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#import "PDNetworkDomain.h"
1414
#import "PDObject.h"
1515
#import "PDNetworkTypes.h"
16-
#import "WXDebuggerDomainController.h"
16+
#import "WXSourceDebuggerDomainController.h"
1717

1818

1919
@interface PDNetworkDomain ()
@@ -103,7 +103,7 @@ - (void)responseReceivedWithRequestId:(NSString *)requestId frameId:(NSString *)
103103

104104
[self.debuggingServer sendEventWithName:@"Network.responseReceived" parameters:params];
105105

106-
[[WXDebuggerDomainController defaultInstance] getScriptSourceTreeWithId:requestId url:response.url isContentScript:[NSNumber numberWithBool:NO] sourceMapURL:@""];
106+
[[WXSourceDebuggerDomainController defaultInstance] getScriptSourceTreeWithId:requestId url:response.url isContentScript:[NSNumber numberWithBool:NO] sourceMapURL:@""];
107107
}
108108

109109
// Fired when data chunk was received over the network.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* Created by Weex.
3+
* Copyright (c) 2016, Alibaba, Inc. All rights reserved.
4+
*
5+
* This source code is licensed under the Apache Licence 2.0.
6+
* For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
7+
*/
8+
9+
#import "PDDynamicDebuggerDomain.h"
10+
#import "PDObject.h"
11+
#import "PDDebugger.h"
12+
#import <WXDevtool/WXDevtool.h>
13+
14+
@interface WXDebugDomain : PDDynamicDebuggerDomain
15+
16+
@property (nonatomic, assign) id <PDCommandDelegate>delegate;
17+
18+
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* Created by Weex.
3+
* Copyright (c) 2016, Alibaba, Inc. All rights reserved.
4+
*
5+
* This source code is licensed under the Apache Licence 2.0.
6+
* For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
7+
*/
8+
9+
#import "WXDebugDomain.h"
10+
11+
@implementation WXDebugDomain
12+
13+
@dynamic delegate;
14+
15+
+ (NSString *)domainName {
16+
return @"WxDebug";
17+
}
18+
19+
#pragma mark - Public Method
20+
- (void)handleMethodWithName:(NSString *)methodName parameters:(NSDictionary *)params responseCallback:(PDResponseCallback)responseCallback {
21+
if ([methodName isEqualToString:@"enable"] && [self.delegate respondsToSelector:@selector(domain:enableWithCallback:)]) {
22+
[self.delegate domain:self enableWithCallback:^(id error) {
23+
NSMutableDictionary *params = [[NSMutableDictionary alloc] initWithCapacity:2];
24+
[params setObject:[NSNumber numberWithBool:YES] forKey:@"WXDebug_result"];
25+
responseCallback(params, error);
26+
}];
27+
}
28+
}
29+
30+
@end

ios/WXDevtool/inspector/PonyDebugger/PDDebugger.h

+3
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ extern void _PDLogObjectsImpl(NSString *severity, NSArray *arguments);
8888
#pragma mark CSSStyle
8989
- (void)enableCSSStyle;
9090

91+
#pragma mark openDevTool Debug
92+
- (void)enableDevToolDebug;
93+
9194
#pragma mark - listenning on server
9295
//- (void)serverStartWithHost:(NSString *)host port:(NSUInteger)port;
9396

ios/WXDevtool/inspector/PonyDebugger/PDDebugger.m

+35-8
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@
2424
#import "PDDOMDomainController.h"
2525
#import "PDInspectorDomainController.h"
2626
#import "PDConsoleDomainController.h"
27-
#import "WXDebuggerDomainController.h"
27+
#import "WXSourceDebuggerDomainController.h"
2828
#import "WXTimelineDomainController.h"
2929
#import "WXCSSDomainController.h"
30+
#import "WXDebugDomainController.h"
3031
#import "WXDevTool.h"
3132

3233
#import "WXAppConfiguration.h"
@@ -133,10 +134,7 @@ - (void)webSocketDidOpen:(SRWebSocket *)webSocket;
133134
- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(NSString *)message;
134135
{
135136
if ([WXDevTool isDebug]) {
136-
__weak typeof(self) weakSelf = self;
137-
[self _executeBridgeThead:^() {
138-
[weakSelf _evaluateNative:message];
139-
}];
137+
[self _changeToDebugLogicMessage:message];
140138
}
141139

142140
NSDictionary *obj = [NSJSONSerialization JSONObjectWithData:[message dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil];
@@ -154,6 +152,12 @@ - (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(NSString *)message
154152
if (result) {
155153
NSMutableDictionary *newResult = [[NSMutableDictionary alloc] initWithCapacity:result.count];
156154
[result enumerateKeysAndObjectsUsingBlock:^(id key, id val, BOOL *stop) {
155+
if ([key isEqualToString:@"WXDebug_result"]) {
156+
[WXDevTool setDebug:YES];
157+
[WXSDKEngine restart];
158+
[[NSNotificationCenter defaultCenter] postNotificationName:@"RefreshInstance" object:nil];
159+
return;
160+
}
157161
[newResult setObject:[val PD_JSONObjectCopy] forKey:key];
158162
}];
159163
[response setObject:newResult forKey:@"result"];
@@ -443,11 +447,11 @@ - (void)clearConsole;
443447
- (void)enableRemoteDebugger {
444448
[self _addController:[PDRuntimeDomainController defaultInstance]];
445449
[self _addController:[PDPageDomainController defaultInstance]];
446-
[self _addController:[WXDebuggerDomainController defaultInstance]];
450+
[self _addController:[WXSourceDebuggerDomainController defaultInstance]];
447451
}
448452

449453
- (void)remoteDebuggertest {
450-
[[WXDebuggerDomainController defaultInstance] remoteDebuggerControllerTest];
454+
[[WXSourceDebuggerDomainController defaultInstance] remoteDebuggerControllerTest];
451455
}
452456

453457
#pragma mark - Timeline
@@ -460,6 +464,11 @@ - (void)enableCSSStyle {
460464
[self _addController:[WXCSSDomainController defaultInstance]];
461465
}
462466

467+
#pragma mark - DevToolDebug
468+
- (void)enableDevToolDebug {
469+
[self _addController:[WXDebugDomainController defaultInstance]];
470+
}
471+
463472
#pragma mark - WXBridgeProtocol
464473
- (void)executeJSFramework:(NSString *)frameworkScript {
465474
//WXLogInfo(@"======yangshengtao 0:jsThread:%@,currentThread:%@",_bridgeThread,[NSThread currentThread]);
@@ -513,6 +522,13 @@ - (void)resetEnvironment
513522

514523

515524
#pragma mark - Private Methods
525+
- (void)_changeToDebugLogicMessage:(NSString *)message {
526+
__weak typeof(self) weakSelf = self;
527+
[self _executeBridgeThead:^() {
528+
[weakSelf _evaluateNative:message];
529+
}];
530+
}
531+
516532
- (void)_initBridgeThread {
517533
_bridgeThread = [NSThread currentThread];
518534
if (_debugAry.count > 0 && _registerData) {
@@ -559,7 +575,12 @@ - (void)_executeBridgeThead:(dispatch_block_t)block
559575
-(void)_evaluateNative:(NSString *)data
560576
{
561577
NSDictionary *dict = [WXUtility objectFromJSON:data];
562-
NSString *method = [[dict objectForKey:@"method"] substringFromIndex:8];
578+
579+
NSString *fullMethodName = [dict objectForKey:@"method"];
580+
NSInteger dotPosition = [fullMethodName rangeOfString:@"."].location;
581+
NSString *method = [fullMethodName substringFromIndex:dotPosition + 1];
582+
583+
// NSString *method = [[dict objectForKey:@"method"] substringFromIndex:8];
563584
NSDictionary *args = [dict objectForKey:@"params"];
564585

565586
if ([method isEqualToString:@"callNative"]) {
@@ -645,6 +666,12 @@ - (void)_registerDeviceWithParams:(id)params {
645666
[_debugAry insertObject:encodedData atIndex:0];
646667
[self _executionDebugAry];
647668
}];
669+
}else if(![WXDevTool isDebug]) {
670+
[self _executeBridgeThead:^{
671+
_registerData = encodedData;
672+
[_msgAry insertObject:encodedData atIndex:0];
673+
[self _executionMsgAry];
674+
}];
648675
}
649676
}
650677

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/**
2+
* Created by Weex.
3+
* Copyright (c) 2016, Alibaba, Inc. All rights reserved.
4+
*
5+
* This source code is licensed under the Apache Licence 2.0.
6+
* For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
7+
*/
8+
9+
#import <WXDevtool/WXDevtool.h>
10+
#import "PonyDebugger.h"
11+
#import "WXDebugDomain.h"
12+
#import "PDDynamicDebuggerDomain.h"
13+
14+
@interface WXDebugDomainController : PDDomainController <PDCommandDelegate>
15+
16+
@property (nonatomic, strong) WXDebugDomain *domain;
17+
18+
+ (WXDebugDomainController *)defaultInstance;
19+
20+
@end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/**
2+
* Created by Weex.
3+
* Copyright (c) 2016, Alibaba, Inc. All rights reserved.
4+
*
5+
* This source code is licensed under the Apache Licence 2.0.
6+
* For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
7+
*/
8+
9+
#import "WXDebugDomainController.h"
10+
11+
@implementation WXDebugDomainController
12+
@dynamic domain;
13+
14+
+ (WXDebugDomainController *)defaultInstance {
15+
static WXDebugDomainController *defaultInstance = nil;
16+
static dispatch_once_t onceToken;
17+
dispatch_once(&onceToken, ^{
18+
defaultInstance = [[WXDebugDomainController alloc] init];
19+
});
20+
return defaultInstance;
21+
}
22+
23+
+ (Class)domainClass {
24+
return [WXDebugDomain class];
25+
}
26+
27+
#pragma mark - PDCommandDelegate
28+
- (void)domain:(PDDynamicDebuggerDomain *)domain enableWithCallback:(void (^)(id error))callback {
29+
callback(nil);
30+
}
31+
32+
- (void)domain:(PDDynamicDebuggerDomain *)domain disableWithCallback:(void (^)(id error))callback {
33+
34+
}
35+
36+
@end

ios/WXDevtool/inspector/PonyDebugger/WXDebuggerDomainController.h ios/WXDevtool/inspector/PonyDebugger/WXSourceDebuggerDomainController.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@
1010
#import "PDDebuggerDomain.h"
1111
#import "PDDynamicDebuggerDomain.h"
1212

13-
@interface WXDebuggerDomainController : PDDomainController <PDDebuggerCommandDelegate>
13+
@interface WXSourceDebuggerDomainController : PDDomainController <PDDebuggerCommandDelegate>
1414

15-
+ (WXDebuggerDomainController *)defaultInstance;
15+
@property (nonatomic, strong) PDDebuggerDomain *domain;
16+
17+
+ (WXSourceDebuggerDomainController *)defaultInstance;
1618

1719
- (void)remoteDebuggerControllerTest;
1820

@@ -21,6 +23,4 @@
2123
isContentScript:(NSNumber *)isContentScript
2224
sourceMapURL:(NSString *)sourceMapURL;
2325

24-
@property (nonatomic, strong) PDDebuggerDomain *domain;
25-
2626
@end

ios/WXDevtool/inspector/PonyDebugger/WXDebuggerDomainController.m ios/WXDevtool/inspector/PonyDebugger/WXSourceDebuggerDomainController.m

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66
* For the full copyright and license information,please view the LICENSE file in the root directory of this source tree.
77
*/
88

9-
#import "WXDebuggerDomainController.h"
9+
#import "WXSourceDebuggerDomainController.h"
1010

11-
@implementation WXDebuggerDomainController
11+
@implementation WXSourceDebuggerDomainController
1212
@dynamic domain;
1313

14-
+ (WXDebuggerDomainController *)defaultInstance {
15-
static WXDebuggerDomainController *defaultInstance = nil;
14+
+ (WXSourceDebuggerDomainController *)defaultInstance {
15+
static WXSourceDebuggerDomainController *defaultInstance = nil;
1616
static dispatch_once_t onceToken;
1717
dispatch_once(&onceToken, ^{
18-
defaultInstance = [[WXDebuggerDomainController alloc] init];
18+
defaultInstance = [[WXSourceDebuggerDomainController alloc] init];
1919
});
2020
return defaultInstance;
2121
}

ios/WXDevtool/inspector/WXHeader/WXDevTool.m

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ @implementation WXDevTool
1717

1818
+ (void)setDebug:(BOOL)isDebug {
1919
WXDebug = isDebug;
20+
[WXDebugTool setDevToolDebug:YES];
2021
}
2122

2223
+ (BOOL)isDebug {
@@ -82,9 +83,6 @@ + (void)launchDebugWithSocketUrl:(NSString *)url {
8283
}
8384

8485
+ (void)launchDevToolDebugWithUrl:(NSString *)url {
85-
if (WXDebug) {
86-
[WXDebugTool setDevToolDebug:YES];
87-
}
8886
PDDebugger *debugger = [[PDDebugger alloc] init];
8987
// [debugger serverStartWithHost:@"localhost" port:9009];
9088

@@ -112,6 +110,8 @@ + (void)launchDevToolDebugWithUrl:(NSString *)url {
112110

113111
[debugger enableCSSStyle];
114112

113+
[debugger enableDevToolDebug];
114+
115115
[WXSDKEngine connectDevToolServer:url];
116116
}
117117

ios/playground/WeexDemo/Scanner/WXScannerVC.m

-5
Original file line numberDiff line numberDiff line change
@@ -158,16 +158,11 @@ - (BOOL)remoteDebug:(NSURL *)url
158158
return YES;
159159
} else if ([[elts firstObject] isEqualToString:@"_wx_devtool"]) {
160160
NSString *devToolURL = [[elts lastObject] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
161-
[WXDevTool setDebug:YES];
162161
[WXDevTool launchDevToolDebugWithUrl:devToolURL];
163-
164-
[WXSDKEngine restart];
165-
166162
if ([[[self.navigationController viewControllers] objectAtIndex:0] isKindOfClass:NSClassFromString(@"WXDemoViewController")]) {
167163
WXDemoViewController * vc = (WXDemoViewController*)[[self.navigationController viewControllers] objectAtIndex:0];
168164
[self.navigationController popToViewController:vc animated:NO];
169165
}
170-
[[NSNotificationCenter defaultCenter] postNotificationName:@"RefreshInstance" object:nil];
171166

172167
return YES;
173168
}

0 commit comments

Comments
 (0)