package triaina.webview.bridge; import java.util.Random; import javax.inject.Inject; import triaina.commons.workerservice.Job; import triaina.commons.workerservice.NetworkWorkerService; import triaina.webview.Callback; import triaina.webview.WebViewBridge; import triaina.webview.annotation.Bridge; import triaina.webview.entity.device.NetHttpSendParams; import triaina.webview.entity.device.NetHttpSendResult; import triaina.webview.job.HttpRequestJob; import triaina.webview.receiver.CallbackReceiver; import android.content.Context; import android.os.Handler; import android.webkit.CookieManager; public class NetHttpSendBridge implements BridgeLifecyclable { @Inject private Handler mHandler; @Inject private Context mContext; private WebViewBridge mBridge; public NetHttpSendBridge(WebViewBridge bridge) { mBridge = bridge; } @Bridge("system.net.http.send") public void doHttpSend(NetHttpSendParams params, Callback<NetHttpSendResult> callback) { HttpRequestJob job = createHttpRequestJob(params); invokeUsingNetworkWorkerService(job, callback); } public HttpRequestJob createHttpRequestJob(NetHttpSendParams params) { CookieManager manager = CookieManager.getInstance(); HttpRequestJob job = new HttpRequestJob(); job.setCookie(manager.getCookie(params.getUrl())); job.setParams(params); if (params.getNotification() != null) job.setNotificationId(new Random().nextInt()); return job; } public void invokeUsingNetworkWorkerService(Job job, Callback<NetHttpSendResult> callback) { NetworkWorkerService.invoke(mContext, job, new CallbackReceiver(mBridge, callback, mHandler)); } public WebViewBridge getWebViewBridge() { return mBridge; } @Override public void onResume() { } @Override public void onPause() { } @Override public void onDestroy() { } }