Skip to content

Commit f48114c

Browse files
author
lemon
committed
add logger
1 parent 7f14494 commit f48114c

File tree

6 files changed

+63
-5
lines changed

6 files changed

+63
-5
lines changed

README.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
# UPDATES
66

7+
* 2017/04/20 add Logger that will log the important information which is helpful for debug
8+
79
* 2017/04/09 adding the retry mechanism of injecting bridge
810

911
* 2017/04/08 invoke Java synchornized from Javascript is now enable in `feature/sync`
@@ -125,7 +127,7 @@ You can set your policy according to the current page's url and the parameters y
125127

126128
**因为JavaScript是单线程的,所以我们能确保同一个页面不会出现重复注入bridge的情况**
127129

128-
#### 使用apt技术注册handler
130+
#### ✔️ 使用apt技术注册handler
129131

130132
支持使用apt技术,完成注册handler的功能,步骤如下:
131133

app/src/main/java/tech/easily/easybridge/MainActivity.kt

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class MainActivity : AppCompatActivity() {
3333
})
3434
}
3535
EBHandlerManager.register(webView)
36+
webView.setDebuggable(BuildConfig.DEBUG)
3637
webView.webViewClient = object : WebViewClient() {
3738
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
3839
return false

easybridge/src/main/java/tech/easily/easybridge/lib/EasyBridge.java

+16-4
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ final class EasyBridge {
5454
*/
5555
@JavascriptInterface
5656
public void enqueue(String handlerName, String currentPageUrl, final String parameters, String callbackId) {
57+
Logger.debug(String.format("receive call from JavaScript,[handlerName]:%s [currentPage]:%s [parameters]:%s [requestId]:%s", handlerName, currentPageUrl, parameters, callbackId));
5758
final Gson gson = new GsonBuilder().create();
5859
final ResultCallBack callBack = new ResultCallBack(callbackId) {
5960
@Override
@@ -62,22 +63,30 @@ public void onResult(Object result) {
6263
}
6364
};
6465
if (TextUtils.isEmpty(handlerName)) {
65-
callBack.onResult(CallBackMessage.generateErrorMessage(CallBackMessage.CODE_INVALID_HANDLER, "the handlerName is not invalid"));
66+
String errorMessage = "the [handlerName]:" + handlerName + " is not invalid";
67+
callBack.onResult(CallBackMessage.generateErrorMessage(CallBackMessage.CODE_INVALID_HANDLER, errorMessage));
68+
Logger.error(errorMessage);
6669
return;
6770
}
6871
final BridgeHandler handler = findTargetHandler(handlerName);
6972
if (handler == null) {
70-
callBack.onResult(CallBackMessage.generateErrorMessage(CallBackMessage.CODE_NO_HANDLER, "handler with name " + handlerName + " is not registered in Java code"));
73+
String errorMessage = "the [handlerName]:" + handlerName + " is not registered in Java code";
74+
callBack.onResult(CallBackMessage.generateErrorMessage(CallBackMessage.CODE_NO_HANDLER, errorMessage));
75+
Logger.error(errorMessage);
7176
return;
7277
}
7378
// global security check
7479
if (!checkGlobalSecurity(currentPageUrl, parameters)) {
75-
callBack.onResult(CallBackMessage.generateErrorMessage(CODE_SECURITY_FORBIDDEN, "handler with name " + handlerName + " is not allowed to invoke in page:" + currentPageUrl + " by the global Security Checker"));
80+
String errorMessage = "the [handlerName]:" + handlerName + " is not allowed to invoke in [page]:" + currentPageUrl + " by the global Security Checker,with [parameters]:" + parameters;
81+
callBack.onResult(CallBackMessage.generateErrorMessage(CODE_SECURITY_FORBIDDEN, errorMessage));
82+
Logger.error(errorMessage);
7683
return;
7784
}
7885
// handler security check
7986
if (handler.securityPolicyChecker() != null && !handler.securityPolicyChecker().check(currentPageUrl, parameters)) {
80-
callBack.onResult(CallBackMessage.generateErrorMessage(CODE_SECURITY_FORBIDDEN, "handler with name " + handlerName + " is not allowed to invoke in page:" + currentPageUrl));
87+
String errorMessage = "the [handlerName]:" + handlerName + " is not allowed to invoke in [page]:" + currentPageUrl + ",with [parameters]:" + parameters;
88+
callBack.onResult(CallBackMessage.generateErrorMessage(CODE_SECURITY_FORBIDDEN, errorMessage));
89+
Logger.error(errorMessage);
8190
return;
8291
}
8392
// invoke the handler in main thread
@@ -109,6 +118,7 @@ public void run() {
109118
resultCallBack.onResult(result);
110119
}
111120
});
121+
Logger.debug(String.format("receive result from JavaScript,[callbackId]:%s [result]:%s", callbackId, result));
112122
}
113123
}
114124

@@ -120,6 +130,7 @@ void callHandler(String handlerName, String parameters, ResultCallBack resultCal
120130
}
121131
String executeScript = String.format(EXECUTE_SCRIPT, bridgeName, handlerName, parameters, callbackId);
122132
executeScriptInMain(executeScript);
133+
Logger.debug(String.format("call JavaScript in Java,[handlerName]:%s [parameters]:%s [requestId]:%s", handlerName, parameters, callbackId));
123134
}
124135

125136

@@ -136,6 +147,7 @@ private void dispatchResult(String callbackId, String parameters) {
136147
}
137148
final String callBackScript = String.format(CALLBACK_FUNCTION, bridgeName, callbackId, parameters);
138149
executeScriptInMain(callBackScript);
150+
Logger.debug(String.format("dispatchResult to JavaScript,[callbackId]:%s [result]:%s", callbackId, parameters));
139151
}
140152

141153
private void executeScriptInMain(final String script) {

easybridge/src/main/java/tech/easily/easybridge/lib/EasyBridgeWebChromeClient.java

+7
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public void onProgressChanged(WebView view, int newProgress) {
4545
}
4646
// TODO: 2018/4/3 it seems that the url received here possibly not the same as the real page url we look forward to
4747
if (easyBridgeWebView.checkSecurityGlobally(view.getUrl(), SECURITY_CHECK_PARAMETERS)) {
48+
Logger.debug("start to inject bridge at [page]:" + view.getUrl() + " [currentLoadingProgress]:" + newProgress);
4849
injectBridgeTask.start();
4950
} else {
5051
deleteBridge();
@@ -63,6 +64,9 @@ private void injectBridge() {
6364
easyBridgeWebView.evaluateJavascript(injectScript);
6465
}
6566

67+
private String getCurrentURL() {
68+
return easyBridgeWebView == null ? "" : easyBridgeWebView.getUrl();
69+
}
6670

6771
private boolean isInjected() {
6872
return easyBridgeWebView != null && easyBridgeWebView.isInjected();
@@ -100,6 +104,9 @@ private static class InjectBridgeTask implements Runnable {
100104
@Override
101105
public void run() {
102106
if (!webChromeClient.isInjected() && retryCount <= RETRY_COUNT) {
107+
if (retryCount > 0) {
108+
Logger.debug("retry to inject bridge at [page]:+" + webChromeClient.getCurrentURL() + ",retry time:" + retryCount);
109+
}
103110
webChromeClient.injectBridge();
104111
retryCount++;
105112
mainHandler.postDelayed(this, RETRY_DELAY_INTERVAL);

easybridge/src/main/java/tech/easily/easybridge/lib/EasyBridgeWebView.java

+6
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ private void initWebView() {
7676
registerHandler(new BaseBridgeHandler(REGISTER_INJECT_FINISHED, this) {
7777
@Override
7878
public void onCall(String parameters, ResultCallBack callBack) {
79+
Logger.debug("inject bridge success in page:" + getUrl());
7980
setInjected(true);
8081
}
8182
});
@@ -139,6 +140,11 @@ public void setPolicyChecker(SecurityPolicyChecker policyChecker) {
139140
this.policyChecker = policyChecker;
140141
}
141142

143+
public EasyBridgeWebView setDebuggable(boolean debuggable) {
144+
Logger.setDebuggable(debuggable);
145+
return this;
146+
}
147+
142148
public void evaluateJavascript(String script) {
143149
evaluateJavascript(script, new ValueCallback<String>() {
144150
@Override
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package tech.easily.easybridge.lib;
2+
3+
import android.util.Log;
4+
5+
/**
6+
* Created by hzyangjiehao on 2018/4/20.
7+
*/
8+
final class Logger {
9+
10+
static boolean debuggable;
11+
private static final String TAG = "EasyBridge";
12+
13+
public static void setDebuggable(boolean debuggable) {
14+
Logger.debuggable = debuggable;
15+
}
16+
17+
static void debug(String message) {
18+
if (!debuggable) {
19+
return;
20+
}
21+
Log.d(TAG, message);
22+
}
23+
24+
static void error(String message) {
25+
if (!debuggable) {
26+
return;
27+
}
28+
Log.e(TAG, message);
29+
}
30+
}

0 commit comments

Comments
 (0)