| /* |
| * 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 "WXDefine.h" |
| #import "WXSDKError.h" |
| |
| @class WXSDKInstance; |
| |
| typedef enum : NSUInteger { |
| // global |
| WXPTInitalize = 0, |
| WXPTInitalizeSync, |
| WXPTFrameworkExecute, |
| // instance |
| WXPTJSDownload, |
| WXPTJSCreateInstance, |
| WXFirstScreenJSFExecuteTime, |
| WXPTFirstScreenRender, |
| WXPTAllRender, |
| WXPTBundleSize, |
| //new point |
| //doc see @WXPerformance |
| WXPTFsCallJsTime, |
| WXPTFsCallJsNum, |
| WXPTFsCallNativeTime, |
| WXPTFsCallNativeNum, |
| WXPTFsCallEventNum, |
| WXPTFsReqNetNum, |
| WXPTCellExceedNum, |
| WXPTMaxDeepVDom, |
| WXPTImgWrongSizeNum, |
| WXPTTimerNum, |
| WXPTInteractionTime, |
| WXPTWrongImgSize, |
| WXPTFsComponentCount, |
| WXPTFsComponentCreateTime, |
| WXPTComponentCount, |
| WXPTComponentCreateTime, |
| //end |
| WXPTEnd |
| } WXPerformanceTag; |
| |
| typedef enum : NSUInteger { |
| WXMTJSFramework, |
| WXMTJSDownload, |
| WXMTJSBridge, |
| WXMTNativeRender, |
| 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) \ |
| NSError *error = [NSError errorWithDomain:WX_ERROR_DOMAIN \ |
| code:errorCode \ |
| userInfo:@{NSLocalizedDescriptionKey:(errorMessage?:@"No message")}]; \ |
| [WXMonitor monitoringPoint:tag didFailWithError:error onPage:pageName]; |
| |
| #define WX_MONITOR_SUCCESS(tag) WX_MONITOR_SUCCESS_ON_PAGE(tag, nil) |
| #define WX_MONITOR_FAIL(tag, errorCode, errorMessage) WX_MONITOR_FAIL_ON_PAGE(tag, errorCode, errorMessage, nil) |
| |
| #define WX_MONITOR_PERF_START(tag) [WXMonitor performancePoint:tag willStartWithInstance:nil]; |
| #define WX_MONITOR_PERF_END(tag) [WXMonitor performancePoint:tag didEndWithInstance:nil]; |
| #define WX_MONITOR_INSTANCE_PERF_START(tag, instance) [WXMonitor performancePoint:tag willStartWithInstance:instance]; |
| #define WX_MONITOR_INSTANCE_PERF_END(tag, instance) [WXMonitor performancePoint:tag didEndWithInstance:instance]; |
| #define WX_MONITOR_PERF_SET(tag, value, instance) [WXMonitor performancePoint:tag didSetValue:value withInstance:instance]; |
| #define WX_MONITOR_INSTANCE_PERF_IS_RECORDED(tag, instance) [WXMonitor performancePoint:tag isRecordedWithInstance:instance] |
| #define WX_MONITOR_INSTANCE_PERF_COMMIT(instance) [WXMonitor performanceFinish:instance] |
| |
| @interface WXMonitor : NSObject |
| |
| + (void)performancePoint:(WXPerformanceTag)tag willStartWithInstance:(WXSDKInstance *)instance; |
| + (void)performancePoint:(WXPerformanceTag)tag didEndWithInstance:(WXSDKInstance *)instance; |
| + (void)performancePoint:(WXPerformanceTag)tag didSetValue:(double)value withInstance:(WXSDKInstance *)instance; |
| + (BOOL)performancePoint:(WXPerformanceTag)tag isRecordedWithInstance:(WXSDKInstance *)instance; |
| + (void)performanceFinish:(WXSDKInstance *)instance; |
| |
| + (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 |