blob: 0e6069c2c4962accf85bc935073f628955228cfe [file] [log] [blame]
/*
* 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.
*/
package com.taobao.weex.utils;
import android.app.Activity;
import android.content.Context;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import com.taobao.weex.WXSDKInstance;
import com.taobao.weex.WXSDKManager;
import com.taobao.weex.adapter.IWXJSExceptionAdapter;
import com.taobao.weex.performance.IWXAnalyzer;
import com.taobao.weex.common.WXErrorCode;
import com.taobao.weex.common.WXJSExceptionInfo;
import com.taobao.weex.common.WXPerformance;
import com.taobao.weex.performance.WXAnalyzerDataTransfer;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created on 2017/10/13.
*/
public class WXExceptionUtils {
/**
* degradeUrl for degrade case
*/
public static String degradeUrl = "BundleUrlDefaultDegradeUrl";
/**
* commitCriticalExceptionRT eg:JsRuntime Exception or JsFramework Init Exception
* @param instanceId
* @param errCode
* @param function
* @param exception
* @param extParams
*/
public static void commitCriticalExceptionRT(@Nullable final String instanceId,
@Nullable final WXErrorCode errCode,
@Nullable final String function,
@Nullable final String exception,
@Nullable final Map<String,String> extParams ) {
IWXJSExceptionAdapter adapter = WXSDKManager.getInstance().getIWXJSExceptionAdapter();
WXSDKInstance instance;
WXJSExceptionInfo exceptionCommit;
String bundleUrlCommit = "BundleUrlDefault";
String instanceIdCommit = "InstanceIdDefalut";
String exceptionMsgCommit = exception;
Map<String, String> commitMap = extParams;
if (null == commitMap){
commitMap = new HashMap<>();
}
commitMap.put("activity","empty");
if (!TextUtils.isEmpty(instanceId)) {
instanceIdCommit = instanceId;
instance = WXSDKManager.getInstance().getSDKInstance(instanceId);
if (null != instance && instance.getContainerView() != null){
Context c = instance.getContainerView().getContext();
if (c instanceof Activity){
commitMap.put("activity",c.getClass().getSimpleName());
}
}
if (null != instance) {
bundleUrlCommit = instance.getBundleUrl();
commitMap.put("templateInfo",instance.getTemplateInfo());
if (TextUtils.isEmpty(bundleUrlCommit) || bundleUrlCommit.equals(WXPerformance.DEFAULT)) {
if (!TextUtils.equals(degradeUrl, "BundleUrlDefaultDegradeUrl")) {
bundleUrlCommit = degradeUrl;
} else
bundleUrlCommit = WXSDKInstance.requestUrl;
}
}
} else {//instance is null for instance id is null
if (!TextUtils.isEmpty(WXSDKInstance.requestUrl)) {
bundleUrlCommit = WXSDKInstance.requestUrl;
}
if (commitMap.size() > 0) {
bundleUrlCommit = TextUtils.isEmpty(commitMap.get("weexUrl")) ? commitMap.get("weexUrl")
: commitMap.get("bundleUrl");
}
}
exceptionCommit = new WXJSExceptionInfo(instanceIdCommit, bundleUrlCommit, errCode, function, exceptionMsgCommit, commitMap);
if (adapter != null) {
adapter.onJSException(exceptionCommit);
}
WXAnalyzerDataTransfer.transferError(exceptionCommit, instanceId);
}
}