You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by ac...@apache.org on 2018/04/26 06:30:14 UTC
incubator-weex git commit: [WEEX-305][iOS] support more performance
point * [iOS] support more performance point [Forced Update!]
Repository: incubator-weex
Updated Branches:
refs/heads/master 4876bc4b0 -> 481a998bc (forced update)
[WEEX-305][iOS] support more performance point
* [iOS] support more performance point
* [iOS] fix compile
close #1129
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/481a998b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/481a998b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/481a998b
Branch: refs/heads/master
Commit: 481a998bc81ca78a7d91601519d64809d0ccfdd9
Parents: c31f7d2
Author: zhongcang <qh...@gmail.com>
Authored: Wed Mar 28 13:25:07 2018 +0800
Committer: acton393 <zh...@gmail.com>
Committed: Thu Apr 26 14:28:45 2018 +0800
----------------------------------------------------------------------
.../WeexDemo.xcodeproj/project.pbxproj | 10 +-
ios/playground/WeexDemo/AppDelegate.m | 9 +
ios/playground/WeexDemo/debug/DebugAnalyzer.h | 24 ++
ios/playground/WeexDemo/debug/DebugAnzlyzer.m | 30 +++
ios/sdk/WeexSDK.xcodeproj/project.pbxproj | 50 +++-
.../WeexSDK/Sources/Bridge/WXBridgeContext.m | 19 +-
.../Sources/Component/WXImageComponent.m | 10 +
ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h | 20 ++
ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m | 106 +++++++++
.../WeexSDK/Sources/Layout/WXComponent+Layout.m | 9 +
.../WeexSDK/Sources/Manager/WXBridgeManager.m | 6 +
.../Sources/Manager/WXComponentManager.m | 52 +++++
.../WeexSDK/Sources/Manager/WXTracingManager.m | 2 +-
ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m | 7 +
.../Sources/Model/WXSDKInstance_performance.h | 67 ++++++
.../Sources/Model/WXSDKInstance_performance.m | 35 +++
ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m | 6 +
ios/sdk/WeexSDK/Sources/Module/WXTimerModule.m | 6 +
.../Sources/Monitor/WXAnalyzerCenter+Transfer.h | 15 ++
.../WeexSDK/Sources/Monitor/WXAnalyzerCenter.h | 16 ++
.../WeexSDK/Sources/Monitor/WXAnalyzerCenter.m | 234 +++++++++++++++++++
.../WeexSDK/Sources/Monitor/WXExceptionUtils.m | 5 +
ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.h | 27 +++
ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.m | 75 ++++--
.../Sources/Protocol/WXAnalyzerProtocol.h | 25 ++
.../Sources/Protocol/WXAppMonitorProtocol.h | 19 ++
ios/sdk/WeexSDK/Sources/View/WXRootView.h | 2 +
ios/sdk/WeexSDK/Sources/View/WXRootView.m | 17 ++
ios/sdk/WeexSDK/Sources/WeexSDK.h | 2 +
29 files changed, 880 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/playground/WeexDemo.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo.xcodeproj/project.pbxproj b/ios/playground/WeexDemo.xcodeproj/project.pbxproj
index 674d57d..9721ca7 100644
--- a/ios/playground/WeexDemo.xcodeproj/project.pbxproj
+++ b/ios/playground/WeexDemo.xcodeproj/project.pbxproj
@@ -7,6 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
+ 17C1DB57206B675D000E0CEB /* DebugAnzlyzer.m in Sources */ = {isa = PBXBuildFile; fileRef = 17C1DB56206B675D000E0CEB /* DebugAnzlyzer.m */; };
2AE88A2C1C8544E6003329DE /* WXScannerVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AE88A2B1C8544E6003329DE /* WXScannerVC.m */; };
564B94671DD9C65000441C8D /* WeexUITestDemo-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 564B94661DD9C65000441C8D /* WeexUITestDemo-Info.plist */; };
59EA0DA71D2E7D19004F904A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 59EA0DA61D2E7D19004F904A /* Images.xcassets */; };
@@ -66,6 +67,8 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
+ 17C1DB55206B6729000E0CEB /* DebugAnalyzer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DebugAnalyzer.h; path = debug/DebugAnalyzer.h; sourceTree = "<group>"; };
+ 17C1DB56206B675D000E0CEB /* DebugAnzlyzer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = DebugAnzlyzer.m; path = debug/DebugAnzlyzer.m; sourceTree = "<group>"; };
1888E2C5769382461DEDC97D /* Pods-WeexUITestDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WeexUITestDemo.release.xcconfig"; path = "Pods/Target Support Files/Pods-WeexUITestDemo/Pods-WeexUITestDemo.release.xcconfig"; sourceTree = "<group>"; };
2278B1B1FCE894EDAF9F0171 /* Pods-WeexUITestDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WeexUITestDemo.debug.xcconfig"; path = "Pods/Target Support Files/Pods-WeexUITestDemo/Pods-WeexUITestDemo.debug.xcconfig"; sourceTree = "<group>"; };
22E4D2883CC56188A2CA9C13 /* Pods-WeexDemo.uitest.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WeexDemo.uitest.xcconfig"; path = "Pods/Target Support Files/Pods-WeexDemo/Pods-WeexDemo.uitest.xcconfig"; sourceTree = "<group>"; };
@@ -293,6 +296,8 @@
DCABAFF01D029685001C8592 /* WXATLoggerPlugin.m */,
DCABAFF11D029685001C8592 /* WXATViewHierarchyPlugin.h */,
DCABAFF21D029685001C8592 /* WXATViewHierarchyPlugin.m */,
+ 17C1DB55206B6729000E0CEB /* DebugAnalyzer.h */,
+ 17C1DB56206B675D000E0CEB /* DebugAnzlyzer.m */,
);
name = debug;
sourceTree = "<group>";
@@ -521,7 +526,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
showEnvVarsInLog = 0;
};
84361D6F1CA10F8E00F43825 /* [CP] Copy Pods Resources */ = {
@@ -580,7 +585,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n";
showEnvVarsInLog = 0;
};
C715566148067A7FFAB7797D /* [CP] Copy Pods Resources */ = {
@@ -616,6 +621,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ 17C1DB57206B675D000E0CEB /* DebugAnzlyzer.m in Sources */,
DCABAFF31D029685001C8592 /* WXATLoggerPlugin.m in Sources */,
DC15A3D0200E30FC009C8977 /* WXNavigationHandlerImpl.m in Sources */,
2AE88A2C1C8544E6003329DE /* WXScannerVC.m in Sources */,
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/playground/WeexDemo/AppDelegate.m
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/AppDelegate.m b/ios/playground/WeexDemo/AppDelegate.m
index 3bf6c31..7687f47 100644
--- a/ios/playground/WeexDemo/AppDelegate.m
+++ b/ios/playground/WeexDemo/AppDelegate.m
@@ -36,6 +36,12 @@
#import "WXConfigCenterProtocol.h"
#import "WXConfigCenterDefaultImpl.h"
#import "WXNavigationHandlerImpl.h"
+//#import "WXAnalyzerCenter.h"
+
+
+#ifdef DEBUG
+#import "DebugAnalyzer.h"
+#endif
@interface AppDelegate ()
@end
@@ -124,6 +130,9 @@
[WXSDKEngine registerModule:@"titleBar" withClass:NSClassFromString(@"WXTitleBarModule")];
[WXSDKEngine registerExtendCallNative:@"test" withClass:NSClassFromString(@"WXExtendCallNativeTest")];
[WXSDKEngine registerModule:@"ext" withClass:[WXExtModule class]];
+#ifdef DEBUG
+ [WXAnalyzerCenter addWxAnalyzer:[DebugAnalyzer new]];
+#endif
#if !(TARGET_IPHONE_SIMULATOR)
[self checkUpdate];
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/playground/WeexDemo/debug/DebugAnalyzer.h
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/debug/DebugAnalyzer.h b/ios/playground/WeexDemo/debug/DebugAnalyzer.h
new file mode 100644
index 0000000..99838d0
--- /dev/null
+++ b/ios/playground/WeexDemo/debug/DebugAnalyzer.h
@@ -0,0 +1,24 @@
+/*
+ * 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 <WeexSDK/WeexSDK.h>
+
+
+@interface DebugAnalyzer :NSObject<WXAnalyzerProtocol>
+@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/playground/WeexDemo/debug/DebugAnzlyzer.m
----------------------------------------------------------------------
diff --git a/ios/playground/WeexDemo/debug/DebugAnzlyzer.m b/ios/playground/WeexDemo/debug/DebugAnzlyzer.m
new file mode 100644
index 0000000..0a84bb8
--- /dev/null
+++ b/ios/playground/WeexDemo/debug/DebugAnzlyzer.m
@@ -0,0 +1,30 @@
+/*
+ * 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 <WeexSDK/WeexSDK.h>
+#import "DebugAnalyzer.h"
+
+
+@implementation DebugAnalyzer
+- (void)transfer:(NSDictionary *) value
+{
+ NSLog(@"DebugAnalyzer value : %@",value);
+}
+@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
index e698847..a4c0db2 100644
--- a/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
+++ b/ios/sdk/WeexSDK.xcodeproj/project.pbxproj
@@ -8,6 +8,19 @@
/* Begin PBXBuildFile section */
042013AD1E66CD6A001FC79C /* WXValidateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 042013AC1E66CD6A001FC79C /* WXValidateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 170B4664208733AF00562666 /* WXAnalyzerCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 17C74F092072145000AB4CAB /* WXAnalyzerCenter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 170B4665208733BF00562666 /* WXAnalyzerCenter+Transfer.h in Headers */ = {isa = PBXBuildFile; fileRef = 17C74F082072145000AB4CAB /* WXAnalyzerCenter+Transfer.h */; };
+ 170B4668208733E500562666 /* WXAnalyzerCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 17C74F0A2072145100AB4CAB /* WXAnalyzerCenter.m */; };
+ 17B122212090AA9300387E33 /* WXSDKInstance_performance.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B1221F2090AA9300387E33 /* WXSDKInstance_performance.m */; };
+ 17B122222090AA9300387E33 /* WXSDKInstance_performance.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B122202090AA9300387E33 /* WXSDKInstance_performance.h */; };
+ 17B122252090AAB000387E33 /* WXSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B122232090AAB000387E33 /* WXSDKError.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 17B122262090AAB000387E33 /* WXSDKError.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B122242090AAB000387E33 /* WXSDKError.m */; };
+ 17B122272090ABAC00387E33 /* WXSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B122232090AAB000387E33 /* WXSDKError.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 17C74F0B2072145100AB4CAB /* WXAnalyzerCenter+Transfer.h in Headers */ = {isa = PBXBuildFile; fileRef = 17C74F082072145000AB4CAB /* WXAnalyzerCenter+Transfer.h */; };
+ 17C74F0C2072145100AB4CAB /* WXAnalyzerCenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 17C74F092072145000AB4CAB /* WXAnalyzerCenter.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 17C74F0D2072145100AB4CAB /* WXAnalyzerCenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 17C74F0A2072145100AB4CAB /* WXAnalyzerCenter.m */; };
+ 17C74F0F2072147B00AB4CAB /* WXAnalyzerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 17C74F0E2072147A00AB4CAB /* WXAnalyzerProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 17F2D6E72087227300084378 /* WXAnalyzerProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 17C74F0E2072147A00AB4CAB /* WXAnalyzerProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
1C1A2BED1D91172800539AA1 /* WXConvertTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C1A2BEC1D91172800539AA1 /* WXConvertTests.m */; };
1D3000F11D40B9AC004F3B4F /* WXClipboardModule.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D3000EF1D40B9AB004F3B4F /* WXClipboardModule.h */; };
1D3000F21D40B9AC004F3B4F /* WXClipboardModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3000F01D40B9AB004F3B4F /* WXClipboardModule.m */; };
@@ -28,7 +41,6 @@
2A8E658B1C7C7AA20025C7B7 /* WXVideoComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A8E65891C7C7AA20025C7B7 /* WXVideoComponent.m */; };
2A919DA61E321F1F006EB6B5 /* WXBridgeMethod.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A919DA41E321F1F006EB6B5 /* WXBridgeMethod.h */; };
2A919DA71E321F1F006EB6B5 /* WXBridgeMethod.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A919DA51E321F1F006EB6B5 /* WXBridgeMethod.m */; };
- 2AAFC1B61C48DFF70026D2FE /* WXSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AAFC1B41C48DFF70026D2FE /* WXSDKError.h */; settings = {ATTRIBUTES = (Public, ); }; };
2AC750241C7565690041D390 /* WXIndicatorComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AC750221C7565690041D390 /* WXIndicatorComponent.h */; settings = {ATTRIBUTES = (Public, ); }; };
2AC750251C7565690041D390 /* WXIndicatorComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AC750231C7565690041D390 /* WXIndicatorComponent.m */; };
2AE5B7521CAB7DBD0082FDDB /* WXAComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AE5B7501CAB7DBD0082FDDB /* WXAComponent.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -445,7 +457,6 @@
DCA445A21EFA570100D0CFA8 /* WXScrollerComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 77E65A171C155F25008B8775 /* WXScrollerComponent.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCA445A31EFA570800D0CFA8 /* WXSDKManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 77D161261C02DE1A0010B15B /* WXSDKManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCA445A41EFA570E00D0CFA8 /* WXSDKInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = 77D161221C02DDD10010B15B /* WXSDKInstance.h */; settings = {ATTRIBUTES = (Public, ); }; };
- DCA445A51EFA571600D0CFA8 /* WXSDKError.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AAFC1B41C48DFF70026D2FE /* WXSDKError.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCA445A61EFA571E00D0CFA8 /* WXSDKEngine.h in Headers */ = {isa = PBXBuildFile; fileRef = 77D1611E1C02DDB40010B15B /* WXSDKEngine.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCA445A71EFA572300D0CFA8 /* WXRootViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 59A5962D1CB632050012CD52 /* WXRootViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCA445A81EFA572B00D0CFA8 /* WXResourceResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 742AD72A1DF98C45007DC46C /* WXResourceResponse.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -622,6 +633,14 @@
/* Begin PBXFileReference section */
042013AC1E66CD6A001FC79C /* WXValidateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXValidateProtocol.h; sourceTree = "<group>"; };
+ 17B1221F2090AA9300387E33 /* WXSDKInstance_performance.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXSDKInstance_performance.m; sourceTree = "<group>"; };
+ 17B122202090AA9300387E33 /* WXSDKInstance_performance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXSDKInstance_performance.h; sourceTree = "<group>"; };
+ 17B122232090AAB000387E33 /* WXSDKError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXSDKError.h; sourceTree = "<group>"; };
+ 17B122242090AAB000387E33 /* WXSDKError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXSDKError.m; sourceTree = "<group>"; };
+ 17C74F082072145000AB4CAB /* WXAnalyzerCenter+Transfer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "WXAnalyzerCenter+Transfer.h"; sourceTree = "<group>"; };
+ 17C74F092072145000AB4CAB /* WXAnalyzerCenter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXAnalyzerCenter.h; sourceTree = "<group>"; };
+ 17C74F0A2072145100AB4CAB /* WXAnalyzerCenter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXAnalyzerCenter.m; sourceTree = "<group>"; };
+ 17C74F0E2072147A00AB4CAB /* WXAnalyzerProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXAnalyzerProtocol.h; sourceTree = "<group>"; };
1C1A2BEC1D91172800539AA1 /* WXConvertTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXConvertTests.m; sourceTree = "<group>"; };
1D3000EF1D40B9AB004F3B4F /* WXClipboardModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXClipboardModule.h; sourceTree = "<group>"; };
1D3000F01D40B9AB004F3B4F /* WXClipboardModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXClipboardModule.m; sourceTree = "<group>"; };
@@ -643,7 +662,6 @@
2A8E65891C7C7AA20025C7B7 /* WXVideoComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXVideoComponent.m; sourceTree = "<group>"; };
2A919DA41E321F1F006EB6B5 /* WXBridgeMethod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXBridgeMethod.h; sourceTree = "<group>"; };
2A919DA51E321F1F006EB6B5 /* WXBridgeMethod.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXBridgeMethod.m; sourceTree = "<group>"; };
- 2AAFC1B41C48DFF70026D2FE /* WXSDKError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WXSDKError.h; path = ../Engine/WXSDKError.h; sourceTree = "<group>"; };
2AC750221C7565690041D390 /* WXIndicatorComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXIndicatorComponent.h; sourceTree = "<group>"; };
2AC750231C7565690041D390 /* WXIndicatorComponent.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WXIndicatorComponent.m; sourceTree = "<group>"; };
2AE5B7501CAB7DBD0082FDDB /* WXAComponent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXAComponent.h; sourceTree = "<group>"; };
@@ -1103,7 +1121,9 @@
749DC2781D408265009E1C91 /* Monitor */ = {
isa = PBXGroup;
children = (
- 2AAFC1B41C48DFF70026D2FE /* WXSDKError.h */,
+ 17C74F092072145000AB4CAB /* WXAnalyzerCenter.h */,
+ 17C74F0A2072145100AB4CAB /* WXAnalyzerCenter.m */,
+ 17C74F082072145000AB4CAB /* WXAnalyzerCenter+Transfer.h */,
749DC2791D40827B009E1C91 /* WXMonitor.h */,
749DC27A1D40827B009E1C91 /* WXMonitor.m */,
841CD1041F97399C0081196D /* WXExceptionUtils.h */,
@@ -1345,10 +1365,12 @@
77D1611B1C02DD3C0010B15B /* Model */ = {
isa = PBXGroup;
children = (
+ 17B122202090AA9300387E33 /* WXSDKInstance_performance.h */,
+ 17B1221F2090AA9300387E33 /* WXSDKInstance_performance.m */,
+ 77D161221C02DDD10010B15B /* WXSDKInstance.h */,
59A5961A1CB630F10012CD52 /* WXComponent+Navigation.h */,
59A5961B1CB630F10012CD52 /* WXComponent+Navigation.m */,
748B25161C44A6F9005D491E /* WXSDKInstance_private.h */,
- 77D161221C02DDD10010B15B /* WXSDKInstance.h */,
77D161231C02DDD10010B15B /* WXSDKInstance.m */,
DCF343651E49CAEE00A2FB34 /* WXJSExceptionInfo.h */,
DCF343661E49CAEE00A2FB34 /* WXJSExceptionInfo.m */,
@@ -1359,6 +1381,7 @@
77D1611C1C02DD3C0010B15B /* Protocol */ = {
isa = PBXGroup;
children = (
+ 17C74F0E2072147A00AB4CAB /* WXAnalyzerProtocol.h */,
59A596171CB630E50012CD52 /* WXNavigationProtocol.h */,
DCDFED001E68238F00C228D7 /* WXJSExceptionProtocol.h */,
2AE5B7551CABA04E0082FDDB /* WXEventModuleProtocol.h */,
@@ -1381,6 +1404,8 @@
77D1611D1C02DDA40010B15B /* Engine */ = {
isa = PBXGroup;
children = (
+ 17B122232090AAB000387E33 /* WXSDKError.h */,
+ 17B122242090AAB000387E33 /* WXSDKError.m */,
77D1611E1C02DDB40010B15B /* WXSDKEngine.h */,
77D1611F1C02DDB40010B15B /* WXSDKEngine.m */,
);
@@ -1593,6 +1618,7 @@
74CFDD3D1F459400007A1A66 /* WXRecycleListDataManager.h in Headers */,
77D161201C02DDB40010B15B /* WXSDKEngine.h in Headers */,
745ED2DA1C5F2C7E002DB5A8 /* WXView.h in Headers */,
+ 17B122252090AAB000387E33 /* WXSDKError.h in Headers */,
59D3CA411CF9ED57008835DC /* Layout.h in Headers */,
2AE5B7521CAB7DBD0082FDDB /* WXAComponent.h in Headers */,
77D1614F1C02E3880010B15B /* WXUtility.h in Headers */,
@@ -1606,6 +1632,7 @@
74CFDD411F45941E007A1A66 /* WXRecycleListTemplateManager.h in Headers */,
1D3000F11D40B9AC004F3B4F /* WXClipboardModule.h in Headers */,
59A583081CF5B2FD0081FD3E /* WXNavigationDefaultImpl.h in Headers */,
+ 17B122222090AA9300387E33 /* WXSDKInstance_performance.h in Headers */,
775BEE4E1C16F993008D1629 /* WXDefine.h in Headers */,
77D161241C02DDD10010B15B /* WXSDKInstance.h in Headers */,
DC6836E61EBB12B200AD2D84 /* WXConfigCenterProtocol.h in Headers */,
@@ -1619,6 +1646,7 @@
2AE5B7561CABA04E0082FDDB /* WXEventModuleProtocol.h in Headers */,
C4C30DE91E1B833D00786B6C /* WXComponent+PseudoClassManagement.h in Headers */,
591DD3321D23AD5800BE8709 /* WXErrorView.h in Headers */,
+ 17C74F0B2072145100AB4CAB /* WXAnalyzerCenter+Transfer.h in Headers */,
D362F94F1C83EDA20003F546 /* WXWebViewModule.h in Headers */,
C4F012861E150307003378D0 /* WXWebSocketLoader.h in Headers */,
C4E97D331F1EF46D00ABC314 /* WXTracingManager.h in Headers */,
@@ -1656,6 +1684,7 @@
74A4BA9A1CB3BAA100195969 /* WXThreadSafeMutableDictionary.h in Headers */,
74A4BA9E1CB3C0A100195969 /* WXHandlerFactory.h in Headers */,
741DFE021DDD7D18009B020F /* WXRoundedRect.h in Headers */,
+ 17C74F0F2072147B00AB4CAB /* WXAnalyzerProtocol.h in Headers */,
7423899B1C3174EB00D748CA /* WXWeakObjectWrapper.h in Headers */,
74BF19F81F5139BB00AEE3D7 /* WXJSASTParser.h in Headers */,
59A596191CB630E50012CD52 /* WXNavigationProtocol.h in Headers */,
@@ -1691,6 +1720,7 @@
59A582D41CF481110081FD3E /* WXAppMonitorProtocol.h in Headers */,
2A837AB61CD9DE9200AEDF03 /* WXRefreshComponent.h in Headers */,
C43C03E81EC8ACA40044C7FF /* WXPrerenderManager.h in Headers */,
+ 17C74F0C2072145100AB4CAB /* WXAnalyzerCenter.h in Headers */,
74B232D21D2A2BA4006322EA /* WXLayoutDefine.h in Headers */,
C4B834281DE69B09007AD27E /* WXPickerModule.h in Headers */,
59A596311CB632050012CD52 /* WXRootViewController.h in Headers */,
@@ -1719,7 +1749,6 @@
77D1613C1C02DEA60010B15B /* WXJSCoreBridge.h in Headers */,
74D205201E091B8000128F44 /* WXCallJSMethod.h in Headers */,
741DFE061DDD9B30009B020F /* UIBezierPath+Weex.h in Headers */,
- 2AAFC1B61C48DFF70026D2FE /* WXSDKError.h in Headers */,
BA5F00F11FC5AFFE00F76B5C /* WXLocaleModule.h in Headers */,
742AD72E1DF98C45007DC46C /* WXResourceRequest.h in Headers */,
D317338C1C57257000BB7539 /* WXTransform.h in Headers */,
@@ -1749,10 +1778,10 @@
DCA445BE1EFA57BB00D0CFA8 /* WXComponentManager.h in Headers */,
DCA4459E1EFA56E500D0CFA8 /* WXUtility.h in Headers */,
DCA445B91EFA579D00D0CFA8 /* WXErrorView.h in Headers */,
+ 170B4665208733BF00562666 /* WXAnalyzerCenter+Transfer.h in Headers */,
DCA445A01EFA56F400D0CFA8 /* WXType.h in Headers */,
DCA445B21EFA576D00D0CFA8 /* WXListComponent.h in Headers */,
333D9A281F41507A007CED39 /* WXTransition.h in Headers */,
- DCA445A51EFA571600D0CFA8 /* WXSDKError.h in Headers */,
DCA445AD1EFA575100D0CFA8 /* WXNavigationProtocol.h in Headers */,
DCA445B01EFA576200D0CFA8 /* WXModalUIModule.h in Headers */,
DCA445A61EFA571E00D0CFA8 /* WXSDKEngine.h in Headers */,
@@ -1792,6 +1821,7 @@
DCA445A11EFA56FA00D0CFA8 /* WXScrollerProtocol.h in Headers */,
DCA445DE1EFA59B800D0CFA8 /* WXSectionDataController.h in Headers */,
DCA445F01EFA5A1D00D0CFA8 /* WXComponent_internal.h in Headers */,
+ 170B4664208733AF00562666 /* WXAnalyzerCenter.h in Headers */,
74B81AE71F73C3E900D3A61D /* WXRecycleListTemplateManager.h in Headers */,
DCA445ED1EFA5A1200D0CFA8 /* WXTransform.h in Headers */,
DCA445DB1EFA59AA00D0CFA8 /* WXRecyclerComponent.h in Headers */,
@@ -1819,6 +1849,8 @@
DCA446101EFA5A8500D0CFA8 /* WXBridgeMethod.h in Headers */,
DCA446171EFA5A9900D0CFA8 /* WXPolyfillSet.h in Headers */,
DCA446291EFA688B00D0CFA8 /* WeexSDK.h in Headers */,
+ 17B122272090ABAC00387E33 /* WXSDKError.h in Headers */,
+ 17F2D6E72087227300084378 /* WXAnalyzerProtocol.h in Headers */,
DC7764961F3C685600B5727E /* WXRecyclerDragController.h in Headers */,
DCA446161EFA5A9600D0CFA8 /* WXJSCoreBridge.h in Headers */,
DCA445F51EFA5A2A00D0CFA8 /* WXURLRewriteDefaultImpl.h in Headers */,
@@ -2167,6 +2199,7 @@
594C28921CF9E61A009793A4 /* WXAnimationModule.m in Sources */,
59A5961D1CB630F10012CD52 /* WXComponent+Navigation.m in Sources */,
77D161631C02ED790010B15B /* WXLog.m in Sources */,
+ 17C74F0D2072145100AB4CAB /* WXAnalyzerCenter.m in Sources */,
744BEA5A1D0520F300452B5D /* WXComponent+Layout.m in Sources */,
59A582FD1CF5B17B0081FD3E /* WXBridgeContext.m in Sources */,
743933B51C7ED9AA00773BB7 /* WXSimulatorShortcutManager.m in Sources */,
@@ -2204,6 +2237,7 @@
DC7764931F3C2CA300B5727E /* WXRecyclerDragController.m in Sources */,
744D61151E4AF23E00B624B3 /* WXDiffUtil.m in Sources */,
74EF31AE1DE58BE200667A07 /* WXURLRewriteDefaultImpl.m in Sources */,
+ 17B122262090AAB000387E33 /* WXSDKError.m in Sources */,
C4B3D6D51E6954300013F38D /* WXEditComponent.m in Sources */,
C4C30DE81E1B833D00786B6C /* WXComponent+PseudoClassManagement.m in Sources */,
74915F481C8EB02B00BEBCC0 /* WXAssert.m in Sources */,
@@ -2241,6 +2275,7 @@
77D161211C02DDB40010B15B /* WXSDKEngine.m in Sources */,
D33451091D3E19480083598A /* WXCanvasComponent.m in Sources */,
74A4BA971CB365D100195969 /* WXAppConfiguration.m in Sources */,
+ 17B122212090AA9300387E33 /* WXSDKInstance_performance.m in Sources */,
59A583091CF5B2FD0081FD3E /* WXNavigationDefaultImpl.m in Sources */,
746B923C1F46BE36009AE86B /* WXCellSlotComponent.m in Sources */,
7463192A1C71B92600EFEBD4 /* WXModalUIModule.m in Sources */,
@@ -2341,6 +2376,7 @@
DCA4456E1EFA55B300D0CFA8 /* WXModalUIModule.m in Sources */,
DCA4456F1EFA55B300D0CFA8 /* WXWebViewModule.m in Sources */,
DCA445701EFA55B300D0CFA8 /* WXCanvasModule.m in Sources */,
+ 170B4668208733E500562666 /* WXAnalyzerCenter.m in Sources */,
DCA445711EFA55B300D0CFA8 /* WXMetaModule.m in Sources */,
DCA445721EFA55B300D0CFA8 /* WXBoxShadow.m in Sources */,
DCA445731EFA55B300D0CFA8 /* NSTimer+Weex.m in Sources */,
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m b/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m
index 6e48a99..d545d96 100644
--- a/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m
+++ b/ios/sdk/WeexSDK/Sources/Bridge/WXBridgeContext.m
@@ -46,6 +46,7 @@
#import "WXMonitor.h"
#import "WXAppMonitorProtocol.h"
#import "WXConfigCenterProtocol.h"
+#import "WXSDKInstance_performance.h"
#define SuppressPerformSelectorLeakWarning(Stuff) \
do { \
@@ -417,6 +418,9 @@ _Pragma("clang diagnostic pop") \
WXLogInfo(@"instance already destroyed, task ignored");
return -1;
}
+
+ NSTimeInterval startTime = CACurrentMediaTime()*1000;
+
for (NSDictionary *task in tasks) {
NSString *methodName = task[@"method"];
NSArray *arguments = task[@"args"];
@@ -435,7 +439,11 @@ _Pragma("clang diagnostic pop") \
}
[self performSelector:@selector(_sendQueueLoop) withObject:nil];
-
+ if (!instance.isJSCreateFinish) {
+ NSTimeInterval diff = CACurrentMediaTime()*1000-startTime;
+ instance.performance.fsCallNativeNum++;
+ instance.performance.fsCallNativeTime = instance.performance.fsCallNativeTime + diff;
+ }
return 1;
}
@@ -856,11 +864,20 @@ _Pragma("clang diagnostic pop") \
if ([tasks count] > 0 && execIns) {
WXSDKInstance * execInstance = [WXSDKManager instanceForID:execIns];
+ NSTimeInterval start = -1;
+ if (execInstance && !(execInstance.isJSCreateFinish)) {
+ start = CACurrentMediaTime()*1000;
+ }
if (execInstance.instanceJavaScriptContext && execInstance.bundleType) {
[self callJSMethod:@"__WEEX_CALL_JAVASCRIPT__" args:@[execIns, tasks] onContext:execInstance.instanceJavaScriptContext completion:nil];
} else {
[self callJSMethod:@"callJS" args:@[execIns, tasks]];
}
+ if (execInstance && !(execInstance.isJSCreateFinish)) {
+ NSTimeInterval diff = CACurrentMediaTime()*1000 - start;
+ execInstance.performance.fsCallJsNum++;
+ execInstance.performance.fsCallJsTime = execInstance.performance.fsCallJsTime+ diff;
+ }
}
if (hasTask) {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Component/WXImageComponent.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Component/WXImageComponent.m b/ios/sdk/WeexSDK/Sources/Component/WXImageComponent.m
index 6d602be..c3dbcc2 100644
--- a/ios/sdk/WeexSDK/Sources/Component/WXImageComponent.m
+++ b/ios/sdk/WeexSDK/Sources/Component/WXImageComponent.m
@@ -33,6 +33,8 @@
#import "WXConfigCenterProtocol.h"
#import "WXSDKEngine.h"
#import <pthread/pthread.h>
+#import "WXMonitor.h"
+#import "WXSDKInstance_performance.h"
@interface WXImageView : UIImageView
@@ -401,6 +403,14 @@ WX_EXPORT_METHOD(@selector(save:))
}
[strongSelf fireEvent:@"load" params:@{ @"success": error? @false : @true,@"size":sizeDict}];
}
+ //check view/img size
+ if (!error && image && weakSelf.view) {
+ double imageSize = image.size.width * image.scale * image.size.height * image.scale;
+ double viewSize = weakSelf.view.frame.size.height * weakSelf.view.frame.size.width;
+ if (imageSize > viewSize) {
+ self.weexInstance.performance.imgWrongSizeNum++;
+ }
+ }
}];
} else {
dispatch_async(WXImageUpdateQueue, ^{
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h b/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h
index c272982..718c29a 100644
--- a/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h
+++ b/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.h
@@ -69,3 +69,23 @@ typedef NS_ENUM(int, WXSDKErrCode)
WX_KEY_EXCEPTION_ABILITY_DOWN_ = -9603,
};
+typedef NS_ENUM (int,WXSDKErrorType)
+{
+ JS_ERROR,
+ NATIVE_ERROR,
+ RENDER_ERROR,
+ DEGRAD_ERROR
+};
+
+typedef NS_ENUM (int,WXSDKErrorGroup){
+ JS,
+ NATIVE
+};
+
+@interface WXSDKErrCodeUtil :NSObject
+
++ (WXSDKErrorType) getErrorTypeByCode:(WXSDKErrCode) code;
++ (WXSDKErrorGroup) getErrorGroupByCode:(WXSDKErrCode) code;
+
+@end
+
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m b/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m
new file mode 100644
index 0000000..2340186
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Engine/WXSDKError.m
@@ -0,0 +1,106 @@
+/*
+ * 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 "WXSDKError.h"
+
+#define ERROR_TYPE @"type"
+#define ERROR_GROUP @"groupe"
+
+@implementation WXSDKErrCodeUtil
+
++(WXSDKErrorType)getErrorTypeByCode:(WXSDKErrCode)code
+{
+ NSDictionary* codeMap = [[self getMap] objectForKey:@(code)];
+ if (!codeMap) {
+ return NATIVE_ERROR;
+ }
+ return [[codeMap objectForKey:ERROR_TYPE] intValue];
+}
+
+
++(WXSDKErrorGroup) getErrorGroupByCode:(WXSDKErrCode)code
+{
+ NSDictionary* codeMap = [[self getMap] objectForKey:@(code)];
+ if (!codeMap) {
+ return NATIVE;
+ }
+ return [[codeMap objectForKey:ERROR_GROUP] intValue];
+}
+
++(NSDictionary *) getMap
+{
+ static NSDictionary *codeMap;
+ static dispatch_once_t onceToken;
+
+ dispatch_once(&onceToken, ^{
+
+ codeMap=@{
+ @(WX_ERR_JSFRAMEWORK_START):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_JSFRAMEWORK_LOAD):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_JSFRAMEWORK_EXECUTE):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_JSFRAMEWORK_END):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+
+ @(WX_ERR_JSBRIDGE_START):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_RENDER_CREATEBODY):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_INVOKE_NATIVE):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_JS_EXECUTE):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_JSBRIDGE_END):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+
+ @(WX_ERR_RENDER_START):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_JSFRAMEWORK_START):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_RENDER_UPDATTR):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_RENDER_UPDSTYLE):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_RENDER_ADDELEMENT):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_RENDER_REMOVEELEMENT):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_RENDER_MOVEELEMENT):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_RENDER_ADDEVENT):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_RENDER_REMOVEEVENT):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_RENDER_SCROLLTOELEMENT):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_RENDER_END):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+
+ @(WX_ERR_DOWNLOAD_START):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_JSBUNDLE_DOWNLOAD):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_JSBUNDLE_STRING_CONVERT):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_NOT_CONNECTED_TO_INTERNET):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_CANCEL):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_DOWNLOAD_END):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+
+ @(WX_KEY_EXCEPTION_SDK_INIT):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_KEY_EXCEPTION_INVOKE):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_KEY_EXCEPTION_JS_DOWNLOAD):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_KEY_EXCEPTION_DOM):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_KEY_EXCEPTION_WXBRIDGE):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+
+ @(WX_KEY_EXCEPTION_DEGRADE):@{ERROR_TYPE:@(DEGRAD_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_KEY_EXCEPTION_DEGRADE_CHECK_CONTENT_LENGTH_FAILED):@{ERROR_TYPE:@(DEGRAD_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_KEY_EXCEPTION_DEGRADE_BUNDLE_CONTENTTYPE_ERROR):@{ERROR_TYPE:@(DEGRAD_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_KEY_EXCEPTION_DEGRADE_OTHER_CAUSE):@{ERROR_TYPE:@(DEGRAD_ERROR),ERROR_GROUP:@(JS)},
+
+ @(WX_KEY_EXCEPTION_ABILITY_DOWN):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_KEY_EXCEPTION_ABILITY_DOWN_IMAGE):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_KEY_EXCEPTION_ABILITY_DOWN_TOH5):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_ERR_JSFRAMEWORK_START):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)},
+ @(WX_KEY_EXCEPTION_ABILITY_DOWN_):@{ERROR_TYPE:@(JS_ERROR),ERROR_GROUP:@(JS)}
+ };
+ });
+ return codeMap;
+}
+
+@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.m b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.m
index aac8566..b3907af 100644
--- a/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.m
+++ b/ios/sdk/WeexSDK/Sources/Layout/WXComponent+Layout.m
@@ -26,6 +26,8 @@
#import "WXSDKInstance_private.h"
#import "WXComponent+BoxShadow.h"
#import "WXLayoutDefine.h"
+#import "WXMonitor.h"
+#import "WXSDKInstance_performance.h"
@implementation WXComponent (Layout)
@@ -134,6 +136,13 @@
- (void)_frameDidCalculated:(BOOL)isChanged
{
WXAssertComponentThread();
+ if (isChanged) {
+ CGFloat mainScreenWidth = [[UIScreen mainScreen] bounds].size.width;
+ CGFloat mainScreenHeight = [[UIScreen mainScreen] bounds].size.height;
+ if (mainScreenHeight/2 < _calculatedFrame.size.height && mainScreenWidth/2 < _calculatedFrame.size.width) {
+ [self weexInstance].performance.cellExceedNum++;
+ }
+ }
if ([self isViewLoaded] && isChanged && [self isViewFrameSyncWithCalculated]) {
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
index 64d901d..3a9e27e 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXBridgeManager.m
@@ -29,6 +29,8 @@
#import "WXDebugTool.h"
#import "WXTracingManager.h"
#import "WXBridgeContext.h"
+#import "WXMonitor.h"
+#import "WXSDKInstance_performance.h"
@interface WXBridgeManager ()
@@ -345,6 +347,10 @@ void WXPerformBlockSyncOnBridgeThread(void (^block) (void))
}
WXSDKInstance *instance = [WXSDKManager instanceForID:instanceId];
+ if(instance && !instance.isJSCreateFinish)
+ {
+ instance.performance.fsCallEventNum++;
+ }
WXCallJSMethod *method = [[WXCallJSMethod alloc] initWithModuleName:nil methodName:@"fireEvent" arguments:args instance:instance];
[self callJsMethod:method];
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Manager/WXComponentManager.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXComponentManager.m b/ios/sdk/WeexSDK/Sources/Manager/WXComponentManager.m
index 1413402..175aeb7 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXComponentManager.m
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXComponentManager.m
@@ -37,6 +37,8 @@
#import "WXPrerenderManager.h"
#import "WXTracingManager.h"
#import "WXLayoutDefine.h"
+#import "WXSDKInstance_performance.h"
+#import "WXRootView.h"
static NSThread *WXComponentThread;
@@ -284,12 +286,16 @@ static css_node_t * rootNodeGetChild(void *context, int i)
component->_lazyCreateView = YES;
}
+ [self recordMaximumVirtualDom:component];
+
if (!component->_isTemplate) {
__weak typeof(self) weakSelf = self;
+ BOOL isFSCreateFinish = [self weexInstance].isJSCreateFinish;
[self _addUITask:^{
[WXTracingManager startTracingWithInstanceId:weakSelf.weexInstance.instanceId ref:componentData[@"ref"] className:nil name:componentData[@"type"] phase:WXTracingBegin functionName:@"addElement" options:@{@"threadName":WXTUIThread}];
[supercomponent insertSubview:component atIndex:index];
[WXTracingManager startTracingWithInstanceId:weakSelf.weexInstance.instanceId ref:componentData[@"ref"] className:nil name:componentData[@"type"] phase:WXTracingEnd functionName:@"addElement" options:@{@"threadName":WXTUIThread}];
+ [weakSelf onElementChange:isFSCreateFinish];
}];
}
@@ -348,6 +354,7 @@ static css_node_t * rootNodeGetChild(void *context, int i)
[_indexDict removeObjectForKey:ref];
__weak typeof(self) weakSelf = self;
+ BOOL isFSCreateFinish = [self weexInstance].isJSCreateFinish;
[self _addUITask:^{
[WXTracingManager startTracingWithInstanceId:weakSelf.weexInstance.instanceId ref:ref className:nil name:nil phase:WXTracingBegin functionName:@"removeElement" options:@{@"threadName":WXTUIThread}];
if (component.supercomponent) {
@@ -355,9 +362,53 @@ static css_node_t * rootNodeGetChild(void *context, int i)
}
[component removeFromSuperview];
[WXTracingManager startTracingWithInstanceId:weakSelf.weexInstance.instanceId ref:ref className:nil name:nil phase:WXTracingEnd functionName:@"removeElement" options:@{@"threadName":WXTUIThread}];
+ [weakSelf onElementChange:isFSCreateFinish];
}];
[self _checkFixedSubcomponentToRemove:component];
+
+}
+
+- (void)onElementChange:(BOOL)isFSCreateFinish
+{
+ if (!isFSCreateFinish) {
+ return;
+ }
+
+ UIView *root = [self weexInstance].rootView;
+ BOOL hasEvent = TRUE;
+ if (root && [root isKindOfClass:[WXRootView class]]) {
+ WXRootView* wxRootView = (WXRootView *)root;
+ hasEvent = [wxRootView isHasEvent];
+ }
+ if (hasEvent) {
+ return;
+ }
+ double current = CACurrentMediaTime()*1000;
+
+ double diff = current - [self weexInstance].performance.jsCreateFinishTime;
+ if (diff > 8000) {
+ return;
+ }
+ [self weexInstance].performance.interactionTime = current - self.weexInstance.performance.renderTimeOrigin;
+}
+
+- (void)recordMaximumVirtualDom:(WXComponent*) component
+{
+ WXAssertComponentExist(component);
+ if(!component){
+ return;
+ }
+ int maxDeep =0;
+ while (component) {
+ maxDeep++;
+ component = component.supercomponent;
+ }
+ if(maxDeep > [self weexInstance].performance.maxVdomDeep)
+ {
+ [self weexInstance].performance.maxVdomDeep = maxDeep;
+ }
+
}
- (void)_checkFixedSubcomponentToRemove:(WXComponent *)component
@@ -678,6 +729,7 @@ static css_node_t * rootNodeGetChild(void *context, int i)
instance.renderFinish(rootView);
}
}];
+ [instance updatePerDicAfterCreateFinish];
}
- (void)updateFinish
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Manager/WXTracingManager.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Manager/WXTracingManager.m b/ios/sdk/WeexSDK/Sources/Manager/WXTracingManager.m
index 07237e6..e0f00e2 100644
--- a/ios/sdk/WeexSDK/Sources/Manager/WXTracingManager.m
+++ b/ios/sdk/WeexSDK/Sources/Manager/WXTracingManager.m
@@ -364,7 +364,7 @@
tracing.parentId = [self getParentId:task tracing:tracing];
}
}
-
+
}
if([WXTracingEnd isEqualToString:tracing.ph]){ // deal end
NSMutableArray *tracings = task.tracings;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
index 50de348..4f6f2ec 100644
--- a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
+++ b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m
@@ -49,6 +49,7 @@
#import "WXMonitor.h"
#import "WXBridgeContext.h"
#import "WXJSCoreBridge.h"
+#import "WXSDKInstance_performance.h"
NSString *const bundleUrlOptionKey = @"bundleUrl";
@@ -115,6 +116,8 @@ typedef enum : NSUInteger {
_trackComponent = NO;
_performanceCommit = NO;
+ _performance = [[WXPerformance alloc] init];
+
id configCenter = [WXSDKEngine handlerForProtocol:@protocol(WXConfigCenterProtocol)];
if ([configCenter respondsToSelector:@selector(configForKey:defaultValue:isDefault:)]) {
_syncDestroyComponentManager = [[configCenter configForKey:@"iOS_weex_ext_config.syncDestroyComponentManager" defaultValue:@(YES) isDefault:NULL] boolValue];
@@ -229,6 +232,7 @@ typedef enum : NSUInteger {
WXLogError(@"Fail to find instanceļ¼");
return;
}
+ self.performance.renderTimeOrigin = CACurrentMediaTime()*1000;
if (![WXUtility isBlankString:self.pageName]) {
WXLog(@"Start rendering page:%@", self.pageName);
@@ -407,6 +411,8 @@ typedef enum : NSUInteger {
[strongSelf _renderWithMainBundleString:jsBundleString];
[WXTracingManager setBundleJSType:jsBundleString instanceId:weakSelf.instanceId];
+ [WXMonitor performanceFinishWithState:DebugAfterRequest instance:strongSelf];
+
};
_mainBundleLoader.onFailed = ^(NSError *loadError) {
@@ -504,6 +510,7 @@ typedef enum : NSUInteger {
}
if (!_performanceCommit && state == WeexInstanceDisappear) {
+ [self updatePerDicBeforExit];
WX_MONITOR_INSTANCE_PERF_COMMIT(self);
_performanceCommit = YES;
}
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance_performance.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance_performance.h b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance_performance.h
new file mode 100644
index 0000000..03f1b99
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance_performance.h
@@ -0,0 +1,67 @@
+/*
+ * 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 "WXSDKInstance.h"
+
+@interface WXPerformance : NSObject
+
+
+@property (nonatomic, assign) double renderTimeOrigin;
+@property (nonatomic, assign) double jsCreateFinishTime;
+
+//firsrScreen call jsMethod totalTime
+@property (nonatomic, assign) double fsCallJsTime;
+//firsrScreen call jsMethod totalNum
+@property (nonatomic, assign) double fsCallJsNum;
+//firsrScreen call nativeMethod totalTime
+@property (nonatomic, assign) double fsCallNativeTime;
+//firsrScreen call nativeMethod totalNum
+@property (nonatomic, assign) double fsCallNativeNum;
+//firsrScreen call event totalNum
+@property (nonatomic, assign) double fsCallEventNum;
+//firsrScreen request netWrork totalNum
+@property (nonatomic, assign) double fsReqNetNum;
+//
+@property (nonatomic, assign) double cellExceedNum;
+//max dom deep
+@property (nonatomic, assign) double maxVdomDeep;
+//unMatch img in imgView num
+@property (nonatomic, assign) double imgWrongSizeNum;
+//call setTimeOut Num
+@property (nonatomic, assign) double timerNum;
+//time of user could interace : firsrScreen view or async load veiew(net lazyload) are show)
+@property (nonatomic, assign) double interactionTime;
+
+@end
+
+
+@interface WXSDKInstance ()
+
+@property (nonatomic, assign) BOOL isJSCreateFinish;
+@property (nonatomic,strong) WXPerformance* performance;
+
+@end
+
+@interface WXSDKInstance (Performance)
+
+- (void) updatePerDicAfterCreateFinish;
+- (void) updatePerDicBeforExit;
+@end
+
+
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance_performance.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance_performance.m b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance_performance.m
new file mode 100644
index 0000000..f2c11bd
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance_performance.m
@@ -0,0 +1,35 @@
+
+#import <Foundation/Foundation.h>
+#import "WXSDKInstance_performance.h"
+#import "WXMonitor.h"
+
+@implementation WXPerformance
+
+@end
+
+@implementation WXSDKInstance (Performance)
+
+- (void) updatePerDicAfterCreateFinish
+{
+ [WXMonitor performanceFinishWithState:DebugAfterFSFinish instance:self];
+ self.performance.jsCreateFinishTime = CACurrentMediaTime()*1000;
+ self.isJSCreateFinish = TRUE;
+ WX_MONITOR_PERF_SET(WXPTFsCallJsNum, self.performance.fsCallJsNum, self);
+ WX_MONITOR_PERF_SET(WXPTFsCallJsTime, self.performance.fsCallJsTime, self);
+ WX_MONITOR_PERF_SET(WXPTFsCallNativeNum, self.performance.fsCallNativeNum, self);
+ WX_MONITOR_PERF_SET(WXPTFsCallNativeTime, self.performance.fsCallNativeTime, self);
+ WX_MONITOR_PERF_SET(WXPTFsReqNetNum, self.performance.fsReqNetNum, self);
+ WX_MONITOR_PERF_SET(WXPTTimerNum, self.performance.timerNum, self);
+}
+
+
+- (void)updatePerDicBeforExit
+{
+ WX_MONITOR_PERF_SET(WXPTCellExceedNum,self.performance.cellExceedNum,self);
+ WX_MONITOR_PERF_SET(WXPTMaxDeepVDom,self.performance.maxVdomDeep,self);
+ WX_MONITOR_PERF_SET(WXPTImgWrongSizeNum,self.performance.imgWrongSizeNum,self);
+ WX_MONITOR_PERF_SET(WXPTImgWrongSizeNum,self.performance.imgWrongSizeNum,self);
+ WX_MONITOR_PERF_SET(WXPTInteractionTime,self.performance.interactionTime,self);
+}
+
+@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m b/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
index 046d683..abbbb50 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXStreamModule.m
@@ -25,6 +25,8 @@
#import "WXURLRewriteProtocol.h"
#import "WXResourceLoader.h"
#import "WXSDKEngine.h"
+#import "WXSDKInstance_performance.h"
+#import "WXMonitor.h"
@implementation WXStreamModule
@@ -128,6 +130,10 @@ WX_EXPORT_METHOD(@selector(fetchWithArrayBuffer:options:callback:progressCallbac
return nil;
}
+ if (self.weexInstance && !weexInstance.isJSCreateFinish) {
+ self.weexInstance.performance.fsReqNetNum++;
+ }
+
WXResourceRequest *request = [WXResourceRequest requestWithURL:[NSURL URLWithString:urlStr] resourceType:WXResourceTypeOthers referrer:nil cachePolicy:NSURLRequestUseProtocolCachePolicy];
// parse http method
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Module/WXTimerModule.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Module/WXTimerModule.m b/ios/sdk/WeexSDK/Sources/Module/WXTimerModule.m
index 6855466..0827b63 100644
--- a/ios/sdk/WeexSDK/Sources/Module/WXTimerModule.m
+++ b/ios/sdk/WeexSDK/Sources/Module/WXTimerModule.m
@@ -21,6 +21,8 @@
#import "WXSDKManager.h"
#import "WXLog.h"
#import "WXAssert.h"
+#import "WXMonitor.h"
+#import "WXSDKInstance_performance.h"
@interface WXTimerTarget : NSObject
@@ -41,6 +43,10 @@
_callbackID = callbackID;
_weexInstance = weexInstance;
_shouldRepeat = shouldRepeat;
+
+ if (weexInstance && !weexInstance.isJSCreateFinish) {
+ weexInstance.performance.timerNum++;
+ }
}
return self;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Monitor/WXAnalyzerCenter+Transfer.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Monitor/WXAnalyzerCenter+Transfer.h b/ios/sdk/WeexSDK/Sources/Monitor/WXAnalyzerCenter+Transfer.h
new file mode 100644
index 0000000..ebdea69
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Monitor/WXAnalyzerCenter+Transfer.h
@@ -0,0 +1,15 @@
+
+#import <Foundation/Foundation.h>
+#import "WXSDKInstance.h"
+#import "WXMonitor.h"
+#import "WXAnalyzerCenter.h"
+
+@interface WXAnalyzerCenter (Transfer)
+
++(void) transDataOnState:(CommitState) timeState withInstaneId:(NSString *)instanceId data:(NSDictionary *)data ;
+
++ (void) transErrorInfo:(WXJSExceptionInfo *)errorInfo;
+
++ (BOOL) needTransfer;
+
+@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Monitor/WXAnalyzerCenter.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Monitor/WXAnalyzerCenter.h b/ios/sdk/WeexSDK/Sources/Monitor/WXAnalyzerCenter.h
new file mode 100644
index 0000000..18b548f
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Monitor/WXAnalyzerCenter.h
@@ -0,0 +1,16 @@
+
+#import <Foundation/Foundation.h>
+#import "WXAnalyzerProtocol.h"
+
+@interface WXAnalyzerCenter : NSObject
+
++(NSMutableArray<WXAnalyzerProtocol> *) getAnalyzerList;
+
++(void) addWxAnalyzer:(id<WXAnalyzerProtocol>)handler;
+
++(void) rmWxAnalyzer:(id<WXAnalyzerProtocol>)handler;
+
++(void) setOpen:(BOOL)isOpen;
++(BOOL) isOpen;
+
+@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Monitor/WXAnalyzerCenter.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Monitor/WXAnalyzerCenter.m b/ios/sdk/WeexSDK/Sources/Monitor/WXAnalyzerCenter.m
new file mode 100644
index 0000000..181f923
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Monitor/WXAnalyzerCenter.m
@@ -0,0 +1,234 @@
+#import <Foundation/Foundation.h>
+#import "WXAnalyzerCenter.h"
+#import "WXAnalyzerProtocol.h"
+#import "WXAppMonitorProtocol.h"
+#import "WXSDKManager.h"
+#import "WXLog.h"
+#import "WXTracingManager.h"
+#import "WXAnalyzerCenter.h"
+#import "WXAnalyzerCenter+Transfer.h"
+#import "WXUtility.h"
+
+@interface WXAnalyzerCenter ()
+@property (nonatomic, strong) NSMutableArray<WXAnalyzerProtocol> *analyzerList;
+@property (nonatomic, assign) BOOL anzlyzerSwitch;
+@end
+
+@implementation WXAnalyzerCenter
+
++ (instancetype) sharedInstance{
+
+ static WXAnalyzerCenter *instance = nil;
+ static dispatch_once_t once;
+
+ dispatch_once(&once, ^{
+ instance = [[WXAnalyzerCenter alloc] init];
+ instance.analyzerList= [NSMutableArray<WXAnalyzerProtocol> new];
+ instance.anzlyzerSwitch = FALSE;
+ });
+
+ return instance;
+}
+
++ (void) transDataOnState:(CommitState) timeState withInstaneId:(NSString *)instanceId data:(NSDictionary *)data
+{
+ if (![self isOpen]) {
+ return;
+ }
+ if (!instanceId) {
+ return;
+ }
+ WXSDKInstance * instance = [WXSDKManager instanceForID:instanceId];
+ if (!instance) {
+ return;
+ }
+
+ NSDictionary *commitDimenKeys = [self getKeys:TRUE];
+ NSDictionary *commitMeasureKeys = [self getKeys:FALSE];
+ for(id key in data){
+ if([self checkDataWithSate:timeState checkKey:key limitDic:commitMeasureKeys]){
+ [self _transMeasureValue:instance key:key withVal:[data valueForKey:key]];
+ }else if([self checkDataWithSate:timeState checkKey:key limitDic:commitDimenKeys]){
+ [self _transDimenValue:instance key:key withVal:[data valueForKey:key]];
+ }else{
+ // WXLogDebug(@"WXAnalyzerDataTransfer -> unKnowPerformanceKey :%@",key);
+ }
+ }
+}
+
++(BOOL) checkDataWithSate:(CommitState)timeState checkKey:(id)key limitDic:(NSDictionary *)limitDic
+{
+ if (!key || ![key isKindOfClass:[NSString class]]) {
+ return FALSE;
+ }
+
+ if (![limitDic objectForKey:key]) {
+ return FALSE;
+ }
+ CommitState limitSate = [[limitDic objectForKey:key] intValue];
+ if (timeState != limitSate) {
+ return FALSE;
+ }
+ return TRUE;
+}
+
++ (NSDictionary *) getKeys:(BOOL) measureOrDimen
+{
+ static NSDictionary *commitDimenKeys;
+ static NSDictionary *commitMeasureKeys;
+ static dispatch_once_t onceToken;
+
+ dispatch_once(&onceToken, ^{
+ // non-standard perf commit names, remove this hopefully.
+
+ commitDimenKeys =@{
+ BIZTYPE: [NSNumber numberWithInt:DebugAfterFSFinish],
+ PAGENAME: [NSNumber numberWithInt:DebugAfterRequest],
+ WXSDKVERSION: [NSNumber numberWithInt:DebugAfterRequest],
+ JSLIBVERSION: [NSNumber numberWithInt:DebugAfterRequest],
+ JSLIBSIZE: [NSNumber numberWithInt:DebugAfterRequest],
+ WXREQUESTTYPE: [NSNumber numberWithInt:DebugAfterRequest],
+ WXCONNECTIONTYPE: [NSNumber numberWithInt:DebugAfterRequest],
+ NETWORKTYPE: [NSNumber numberWithInt:DebugAfterRequest],
+ CACHETYPE: [NSNumber numberWithInt:DebugAfterRequest],
+ WXCUSTOMMONITORINFO: [NSNumber numberWithInt:DebugAfterRequest]
+ };
+ commitMeasureKeys =@{
+ SDKINITTIME: [NSNumber numberWithInt:DebugAfterFSFinish],
+ SDKINITINVOKETIME: [NSNumber numberWithInt:DebugAfterFSFinish],
+ JSLIBINITTIME: [NSNumber numberWithInt:DebugAfterFSFinish],
+ JSTEMPLATESIZE: [NSNumber numberWithInt:DebugAfterRequest],
+ NETWORKTIME: [NSNumber numberWithInt:DebugAfterRequest],
+ COMMUNICATETIME: [NSNumber numberWithInt:DebugAfterExist],
+ SCREENRENDERTIME: [NSNumber numberWithInt:DebugAfterExist],
+ TOTALTIME: [NSNumber numberWithInt:DebugAfterExist],
+ FIRSETSCREENJSFEXECUTETIME: [NSNumber numberWithInt:DebugAfterFSFinish],
+ CALLCREATEINSTANCETIME: [NSNumber numberWithInt:DebugAfterFSFinish],
+ COMMUNICATETOTALTIME: [NSNumber numberWithInt:DebugAfterExist],
+ FSRENDERTIME: [NSNumber numberWithInt:DebugAfterExist],
+ COMPONENTCOUNT: [NSNumber numberWithInt:DebugAfterExist],
+ CACHEPROCESSTIME: [NSNumber numberWithInt:DebugAfterRequest],
+ CACHERATIO: [NSNumber numberWithInt:DebugAfterRequest],
+ M_FS_CALL_JS_TIME: [NSNumber numberWithInt:DebugAfterFSFinish],
+ M_FS_CALL_JS_NUM: [NSNumber numberWithInt:DebugAfterFSFinish],
+ M_FS_CALL_NATIVE_TIME: [NSNumber numberWithInt:DebugAfterFSFinish],
+ M_FS_CALL_NATIVE_NUM: [NSNumber numberWithInt:DebugAfterFSFinish],
+ M_FS_CALL_EVENT_NUM: [NSNumber numberWithInt:DebugAfterFSFinish],
+ M_CELL_EXCEED_NUM: [NSNumber numberWithInt:DebugAfterFSFinish],
+ M_MAX_DEEP_VDOM: [NSNumber numberWithInt:DebugAfterExist],
+ M_IMG_WRONG_SIZE_NUM: [NSNumber numberWithInt:DebugAfterExist],
+ M_TIMER_NUM: [NSNumber numberWithInt:DebugAfterFSFinish]
+ };
+
+ });
+ return measureOrDimen?commitMeasureKeys:commitDimenKeys;
+}
+
++ (void) _transMeasureValue:(WXSDKInstance *)instance key:(NSString *)commitKey withVal:(id)commitVal
+{
+ [self _transDataToAnaylzer:instance
+ withModule:MODULE_PERFORMANCE
+ withType:TYPE_MEASURE_REAL
+ withData:@{commitKey:commitVal}
+ ];
+}
+
++ (void) _transDimenValue:(WXSDKInstance *)instance key:(NSString *)commitKey withVal:(id)commitVal
+{
+ [self _transDataToAnaylzer:instance
+ withModule:MODULE_PERFORMANCE
+ withType:TYPE_DIMEN_REAL
+ withData:@{commitKey:commitVal}
+ ];
+}
+
++(void) _transDataToAnaylzer:(WXSDKInstance *)instance withModule:(NSString *)module withType:(NSString *)type withData:(NSDictionary *)data
+{
+ NSMutableArray* analyzerList = [self getAnalyzerList];
+ if (nil == analyzerList) {
+ return;
+ }
+
+ NSMutableDictionary *wrapDic = [data mutableCopy];
+ [wrapDic setObject:instance.instanceId forKey:@"instanceId"];
+ [wrapDic setObject:[instance.scriptURL absoluteString] forKey:@"url"];
+ [wrapDic setValue:GROUP_ANALYZER forKey:@"group"];
+ [wrapDic setValue:module forKey:@"module"];
+ [wrapDic setValue:type forKey:@"type"];
+
+
+ if ([self needTransfer]) {
+ for (id analyzer in analyzerList) {
+ if ( [analyzer respondsToSelector:(@selector(transfer:))])
+ {
+ [analyzer performSelector:@selector(transfer:) withObject:wrapDic];
+ }
+ }
+ }
+
+
+}
+
++(void)transErrorInfo:(WXJSExceptionInfo *)errorInfo
+{
+ if (!errorInfo) {
+ return;
+ }
+ WXSDKInstance *instance = [WXSDKManager instanceForID:errorInfo.instanceId];
+ if (!instance) {
+ return;
+ }
+ NSDictionary *dic= @{
+ @"errorCode":errorInfo.errorCode,
+ @"errorGroup":@"",
+ @"errorMsg":errorInfo.exception
+ };
+
+ [self _transDataToAnaylzer:instance
+ withModule:MODULE_ERROR
+ withType:TYPE_JS_ERROR
+ withData:dic
+ ];
+}
+
++ (void) addWxAnalyzer:(id<WXAnalyzerProtocol>)handler
+{
+ if (!handler) {
+ return;
+ }
+ [[WXAnalyzerCenter sharedInstance].analyzerList addObject:handler];
+}
+
++ (void) rmWxAnalyzer:(id<WXAnalyzerProtocol>)handler
+{
+ if (!handler) {
+ return;
+ }
+ [[WXAnalyzerCenter sharedInstance].analyzerList removeObject:handler];
+}
+
++ (NSMutableArray<WXAnalyzerProtocol> *)getAnalyzerList
+{
+ return [WXAnalyzerCenter sharedInstance].analyzerList;
+}
+
++(BOOL) needTransfer
+{
+ NSMutableArray* analyzerList = [self getAnalyzerList];
+ if (nil == analyzerList || analyzerList.count <= 0) {
+ return FALSE;
+ }
+ return TRUE;
+}
+
++ (void)setOpen:(BOOL)isOpen
+{
+ [WXAnalyzerCenter sharedInstance].anzlyzerSwitch = isOpen;
+}
+
++ (BOOL)isOpen
+{
+ return [WXAnalyzerCenter sharedInstance].anzlyzerSwitch;
+}
+
+@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.m b/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.m
index de784fd..246b077 100644
--- a/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.m
+++ b/ios/sdk/WeexSDK/Sources/Monitor/WXExceptionUtils.m
@@ -25,6 +25,8 @@
#import "WXJSExceptionInfo.h"
#import "WXUtility.h"
#import "WXSDKManager.h"
+#import "WXAnalyzerCenter+Transfer.h"
+
@implementation WXExceptionUtils
@@ -52,6 +54,9 @@
if ([jsExceptionHandler respondsToSelector:@selector(onJSException:)]) {
[jsExceptionHandler onJSException:jsExceptionInfo];
}
+ if ([WXAnalyzerCenter isOpen]) {
+ [WXAnalyzerCenter transErrorInfo:jsExceptionInfo];
+ }
}
@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.h b/ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.h
index 4a399d2..c5b27d8 100644
--- a/ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.h
+++ b/ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.h
@@ -35,6 +35,21 @@ typedef enum : NSUInteger {
WXPTFirstScreenRender,
WXPTAllRender,
WXPTBundleSize,
+ //new point
+ //doc see @WXPerformance
+ WXPTFsCallJsTime,
+ WXPTFsCallJsNum,
+ WXPTFsCallNativeTime,
+ WXPTFsCallNativeNum,
+ WXPTFsCallEventNum,
+ WXPTFsReqNetNum,
+ WXPTCellExceedNum,
+ WXPTMaxDeepVDom,
+ WXPTImgWrongSizeNum,
+ WXPTTimerNum,
+ WXPTInteractionTime,
+ WXPTWrongImgSize,
+ //end
WXPTEnd
} WXPerformanceTag;
@@ -46,6 +61,16 @@ typedef enum : NSUInteger {
WXMTJSService,
} WXMonitorTag;
+typedef NS_ENUM(NSInteger, CommitState)
+{
+ MonitorCommit,
+
+ //just use on Debug mode
+ DebugAfterRequest,
+ DebugAfterFSFinish,
+ DebugAfterExist,
+ DebugOnRealTime
+};
#define WX_MONITOR_SUCCESS_ON_PAGE(tag, pageName) [WXMonitor monitoringPointDidSuccess:tag onPage:pageName];
#define WX_MONITOR_FAIL_ON_PAGE(tag, errorCode, errorMessage, pageName) \
@@ -76,4 +101,6 @@ NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN \
+ (void)monitoringPointDidSuccess:(WXMonitorTag)tag onPage:(NSString *)pageName;
+ (void)monitoringPoint:(WXMonitorTag)tag didFailWithError:(NSError *)error onPage:(NSString *)pageName;
++ (void)performanceFinishWithState:(CommitState) state instance:(WXSDKInstance *)instance;
+
@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.m b/ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.m
index db215b1..cb7c4ee 100644
--- a/ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.m
+++ b/ios/sdk/WeexSDK/Sources/Monitor/WXMonitor.m
@@ -6,7 +6,7 @@
* 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,
@@ -28,6 +28,11 @@
#import "WXThreadSafeMutableDictionary.h"
#import "WXAppConfiguration.h"
#import "WXTracingManager.h"
+#import "WXAnalyzerProtocol.h"
+#import "WXSDKInstance_performance.h"
+
+#import "WXAnalyzerCenter+Transfer.h"
+
NSString *const kStartKey = @"start";
NSString *const kEndKey = @"end";
@@ -44,6 +49,7 @@ static WXThreadSafeMutableDictionary *globalPerformanceDict;
NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:2];
dict[kStartKey] = @(CACurrentMediaTime() * 1000);
performanceDict[@(tag)] = dict;
+ [dict setValue:@(tag) forKey:@"tag"];
}
+ (void)performancePoint:(WXPerformanceTag)tag didEndWithInstance:(WXSDKInstance *)instance
@@ -61,7 +67,7 @@ static WXThreadSafeMutableDictionary *globalPerformanceDict;
}
dict[kEndKey] = @(CACurrentMediaTime() * 1000);
-
+
// if (tag == WXPTAllRender) {
// [self performanceFinish:instance];
// }
@@ -92,6 +98,21 @@ static WXThreadSafeMutableDictionary *globalPerformanceDict;
+ (void)performanceFinish:(WXSDKInstance *)instance
{
+ [self performanceFinishWithState:MonitorCommit instance:instance];
+}
+
++ (void)performanceFinishWithState:(CommitState) state instance:(WXSDKInstance *)instance
+{
+ BOOL collectValue = (state == MonitorCommit);
+
+#ifdef DEBUG
+ collectValue = TRUE;
+#endif
+
+ if(!collectValue)
+ {
+ return;
+ }
NSMutableDictionary *commitDict = [NSMutableDictionary dictionary];
commitDict[BIZTYPE] = instance.bizType ?: @"";
@@ -134,12 +155,12 @@ static WXThreadSafeMutableDictionary *globalPerformanceDict;
WXPerformBlockOnComponentThread(^{
commitDict[COMPONENTCOUNT] = @([instance numberOfComponents]);
WXPerformBlockOnMainThread(^{
- [self commitPerformanceWithDict:commitDict instance:instance];
+ [self commitPerformanceWithDict:commitDict instance:instance comitState:state];
});
});
}
-+ (void)commitPerformanceWithDict:(NSMutableDictionary *)commitDict instance:(WXSDKInstance *)instance
++ (void)commitPerformanceWithDict:(NSMutableDictionary *)commitDict instance:(WXSDKInstance *)instance comitState:(CommitState) state
{
static NSDictionary *commitKeyDict;
static dispatch_once_t onceToken;
@@ -154,7 +175,19 @@ static WXThreadSafeMutableDictionary *globalPerformanceDict;
@(WXFirstScreenJSFExecuteTime) : FIRSETSCREENJSFEXECUTETIME,
@(WXPTFirstScreenRender) : SCREENRENDERTIME,
@(WXPTAllRender) : TOTALTIME,
- @(WXPTBundleSize) : JSTEMPLATESIZE
+ @(WXPTBundleSize) : JSTEMPLATESIZE,
+ @(WXPTFsCallJsTime): M_FS_CALL_JS_TIME,
+ @(WXPTFsCallJsNum): M_FS_CALL_JS_NUM,
+ @(WXPTFsCallNativeTime): M_FS_CALL_NATIVE_TIME,
+ @(WXPTFsCallNativeNum): M_FS_CALL_NATIVE_NUM,
+ @(WXPTFsCallEventNum): M_FS_CALL_EVENT_NUM,
+ @(WXPTMaxDeepVDom): M_MAX_DEEP_VDOM,
+ @(WXPTImgWrongSizeNum): M_IMG_WRONG_SIZE_NUM,
+ @(WXPTTimerNum): M_TIMER_NUM,
+ @(WXPTCellExceedNum):M_CELL_EXCEED_NUM,
+ @(WXPTWrongImgSize):M_IMG_WRONG_SIZE_NUM,
+ @(WXPTInteractionTime):M_INTERACTION_TIME,
+ @(WXPTFsReqNetNum):M_FS_REQUEST_NET_NUM
};
});
@@ -169,12 +202,18 @@ static WXThreadSafeMutableDictionary *globalPerformanceDict;
NSNumber *end = keyDict[kEndKey];
if (!start || !end) {
- WXLogWarning(@"Performance point:%d, in instance:%@, did not have a start or end", tag, instance);
+ if (state == MonitorCommit) {
+ WXLogWarning(@"Performance point:%d, in instance:%@, did not have a start or end", tag, instance);
+ }
continue;
}
NSString *commitKey = commitKeyDict[@(tag)];
- commitDict[commitKey] = @([end integerValue] - [start integerValue]);
+ if (commitKey) {
+ commitDict[commitKey] = @([end integerValue] - [start integerValue]);
+ }else{
+ WXLogWarning(@"commitKey is nil with tag :%d",tag);
+ }
}
commitDict[@"instanceId"] = [instance instanceId]?:@"";
@@ -193,14 +232,22 @@ static WXThreadSafeMutableDictionary *globalPerformanceDict;
else {
commitDict[FSRENDERTIME] = @"-1";
}
-
- id<WXAppMonitorProtocol> appMonitor = [WXHandlerFactory handlerForProtocol:@protocol(WXAppMonitorProtocol)];
- if (appMonitor && [appMonitor respondsToSelector:@selector(commitAppMonitorArgs:)]){
- [appMonitor commitAppMonitorArgs:commitDict];
+ if(state == MonitorCommit)
+ {
+ id<WXAppMonitorProtocol> appMonitor = [WXHandlerFactory handlerForProtocol:@protocol(WXAppMonitorProtocol)];
+ if (appMonitor && [appMonitor respondsToSelector:@selector(commitAppMonitorArgs:)]){
+ [appMonitor commitAppMonitorArgs:commitDict];
+ }
+
+ [self printPerformance:commitDict];
+ [WXTracingManager commitTracingSummaryInfo:commitDict withInstanceId:instance.instanceId];
+ }
+ if ([WXAnalyzerCenter isOpen]) {
+ if (state == MonitorCommit) {
+ state = DebugAfterExist;
+ }
+ [WXAnalyzerCenter transDataOnState:state withInstaneId:instance.instanceId data:commitDict];
}
-
- [self printPerformance:commitDict];
- [WXTracingManager commitTracingSummaryInfo:commitDict withInstanceId:instance.instanceId];
}
+ (NSMutableDictionary *)performanceDictForInstance:(WXSDKInstance *)instance
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Protocol/WXAnalyzerProtocol.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Protocol/WXAnalyzerProtocol.h b/ios/sdk/WeexSDK/Sources/Protocol/WXAnalyzerProtocol.h
new file mode 100644
index 0000000..73223cc
--- /dev/null
+++ b/ios/sdk/WeexSDK/Sources/Protocol/WXAnalyzerProtocol.h
@@ -0,0 +1,25 @@
+#import <Foundation/Foundation.h>
+#import "WXAppMonitorProtocol.h"
+
+#define GROUP_ANALYZER @"WXAnalyzer"
+#define MODULE_PERFORMANCE @"WXPerformance"
+#define MODULE_ERROR @"WXError"
+#define TYPE_MEASURE_REAL @"measure_real_time"
+#define TYPE_DIMEN_REAL @"dimen_real_time"
+#define TYPE_JS_ERROR @"js"
+
+@protocol WXAnalyzerProtocol <NSObject>
+
+
+@required
+/**
+ @param value = @{
+ @"group":group,
+ @"module":module,
+ @"type":type,
+ @"data":jsonData
+ };
+ */
+- (void)transfer:(NSDictionary *) value;
+
+@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/Protocol/WXAppMonitorProtocol.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/Protocol/WXAppMonitorProtocol.h b/ios/sdk/WeexSDK/Sources/Protocol/WXAppMonitorProtocol.h
index e2f0465..65a86a2 100644
--- a/ios/sdk/WeexSDK/Sources/Protocol/WXAppMonitorProtocol.h
+++ b/ios/sdk/WeexSDK/Sources/Protocol/WXAppMonitorProtocol.h
@@ -19,6 +19,7 @@
#import "WXModuleProtocol.h"
+/** dimenValue */
#define BIZTYPE @"bizType"
#define PAGENAME @"pageName"
#define WXSDKVERSION @"WXSDKVersion"
@@ -30,6 +31,8 @@
#define CACHETYPE @"cacheType"
#define WXCUSTOMMONITORINFO @"customMonitorInfo"
+/** measureValue */
+
#define SDKINITTIME @"SDKInitTime"
#define SDKINITINVOKETIME @"SDKInitInvokeTime"
#define JSLIBINITTIME @"JSLibInitTime"
@@ -48,6 +51,22 @@
#define CACHEPROCESSTIME @"cacheProcessTime"
#define CACHERATIO @"cacheRatio"
+//todo new point
+#define M_FS_CALL_JS_TIME @"fsCallJsTotalTime"
+#define M_FS_CALL_JS_NUM @"fsCallJsTotalNum"
+#define M_FS_CALL_NATIVE_TIME @"fsCallNativeTotalTime"
+#define M_FS_CALL_NATIVE_NUM @"fsCallNativeTotalNum"
+#define M_FS_CALL_EVENT_NUM @"fsCallEventTotalNum"
+#define M_FS_REQUEST_NET_NUM @"fsRequestNum"
+#define M_CELL_EXCEED_NUM @"cellExceedNum"
+#define M_MAX_DEEP_VDOM @"maxDeepVDomLayer"
+#define M_IMG_WRONG_SIZE_NUM @"imgSizeCount"
+#define M_TIMER_NUM @"timerCount"
+#define M_WRONG_IMG_NUM @"imgSizeCount"
+#define M_INTERACTION_TIME @"interactionTime"
+
+
+
@protocol WXAppMonitorProtocol <WXModuleProtocol>
- (void)commitAppMonitorArgs:(NSDictionary *)args;
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/View/WXRootView.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/View/WXRootView.h b/ios/sdk/WeexSDK/Sources/View/WXRootView.h
index b0605be..2f1453f 100644
--- a/ios/sdk/WeexSDK/Sources/View/WXRootView.h
+++ b/ios/sdk/WeexSDK/Sources/View/WXRootView.h
@@ -24,4 +24,6 @@
@property (nonatomic, weak) WXSDKInstance *instance;
+- (BOOL) isHasEvent;
+
@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/View/WXRootView.m
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/View/WXRootView.m b/ios/sdk/WeexSDK/Sources/View/WXRootView.m
index acb2a3d..11fb48d 100644
--- a/ios/sdk/WeexSDK/Sources/View/WXRootView.m
+++ b/ios/sdk/WeexSDK/Sources/View/WXRootView.m
@@ -20,6 +20,12 @@
#import "WXRootView.h"
#import "WXSDKInstance.h"
+@interface WXRootView()
+
+@property (nonatomic, assign) BOOL mHasEvent;
+
+@end
+
@implementation WXRootView
- (void)setFrame:(CGRect)frame
@@ -36,4 +42,15 @@
}
}
+- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
+{
+ _mHasEvent = TRUE;
+ return [super hitTest:point withEvent:event];
+}
+
+- (BOOL)isHasEvent
+{
+ return false;
+}
+
@end
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/481a998b/ios/sdk/WeexSDK/Sources/WeexSDK.h
----------------------------------------------------------------------
diff --git a/ios/sdk/WeexSDK/Sources/WeexSDK.h b/ios/sdk/WeexSDK/Sources/WeexSDK.h
index 3ed4385..9d5ddcd 100644
--- a/ios/sdk/WeexSDK/Sources/WeexSDK.h
+++ b/ios/sdk/WeexSDK/Sources/WeexSDK.h
@@ -68,6 +68,8 @@
#import "WXBaseViewController.h"
#import "WXAppMonitorProtocol.h"
#import "WXAppConfiguration.h"
+#import "WXAnalyzerProtocol.h"
+#import "WXAnalyzerCenter.h"
#import "WXAComponent.h"
#import "NSObject+WXSwizzle.h"
#import "Layout.h"