package com.hkm.ezwebview.webviewclients; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; import android.util.Log; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import com.hkm.ezwebview.webviewleakfix.PreventLeakClient; import java.util.ArrayList; import java.util.List; /** * Created by hesk on 3/5/15. * So this Client will actually load the content directly from the URL */ public abstract class HBCart extends WebViewClient { private String loginCookie; private final Context mContext; private boolean redirect = false; private boolean loadingFinished = true; private final WebView mWebView; public static String TAG = "hbcartclient"; private final ArrayList<String> allowing = new ArrayList<>(); private final ArrayList<String> startfrom = new ArrayList<>(); public HBCart(final Activity context, final WebView fmWebView) { super(); mContext = context; mWebView = fmWebView; WebSettings settings = fmWebView.getSettings(); settings.setJavaScriptEnabled(true); fmWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); settings.setSaveFormData(true); } public void defineBoundaries( final List<String> allow_browsing, final List<String> start_from_intent) { this.allowing.clear(); this.allowing.addAll(allow_browsing); this.startfrom.clear(); this.startfrom.addAll(start_from_intent); } protected abstract void triggerNative(final Uri trigger_url); protected abstract boolean interceptUrl(WebView view, String url); @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { // Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show(); // Tool.trace(); Log.d(TAG, "errorCode: " + errorCode); } @Override public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) { if (!loadingFinished) { redirect = true; } boolean h = interceptUrl(view, urlNewString); if (!h) { loadingFinished = false; //view.loadUrl(urlNewString); } return h; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { loadingFinished = false; //SHOW LOADING IF IT ISNT ALREADY VISIBLE super.onPageStarted(view, url, favicon); // CustomLogger.showLog("Beta", "onPage Started url is" + url); } @Override public void onPageFinished(WebView view, String url) { if (!redirect) { loadingFinished = true; } if (loadingFinished && !redirect) { //HIDE LOADING IT HAS FINISHED } else { redirect = false; } super.onPageFinished(view, url); } }