package com.kickstarter.ui.views;
import android.annotation.TargetApi;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import com.kickstarter.KSApplication;
import com.kickstarter.libs.ApiCapabilities;
import com.kickstarter.libs.WebViewJavascriptInterface;
import com.kickstarter.services.KSWebViewClient;
import javax.inject.Inject;
public class KSWebView extends WebView {
@Inject KSWebViewClient client;
public KSWebView(final @NonNull Context context) {
this(context, null);
}
public KSWebView(final @NonNull Context context, final @Nullable AttributeSet attrs) {
this(context, attrs, android.R.attr.webViewStyle);
}
@SuppressWarnings("SetJavaScriptEnabled")
public KSWebView(final @NonNull Context context, final @Nullable AttributeSet attrs, final int defStyle) {
super(context, attrs, defStyle);
if (isInEditMode()) {
return;
}
((KSApplication) context.getApplicationContext()).component().inject(this);
setWebViewClient(client);
setWebChromeClient(new WebChromeClient());
getSettings().setJavaScriptEnabled(true);
getSettings().setAllowFileAccess(false);
enableDebugging();
addJavascriptInterface(new WebViewJavascriptInterface(this.client), "WebViewJavascriptInterface");
}
public KSWebViewClient client() {
return client;
}
@TargetApi(19)
private void enableDebugging() {
if (ApiCapabilities.canDebugWebViews()) {
setWebContentsDebuggingEnabled(true);
}
}
}