package com.mopub.mobileads;
import android.content.Context;
import android.graphics.Color;
import android.view.MotionEvent;
import android.view.View;
import com.mopub.common.AdReport;
import com.mopub.common.Constants;
import com.mopub.common.logging.MoPubLog;
import static com.mopub.common.util.VersionCode.ICE_CREAM_SANDWICH;
import static com.mopub.common.util.VersionCode.currentApiLevel;
import static com.mopub.mobileads.ViewGestureDetector.UserClickListener;
public class BaseHtmlWebView extends BaseWebView implements UserClickListener {
private final ViewGestureDetector mViewGestureDetector;
private boolean mClicked;
public BaseHtmlWebView(Context context, AdReport adReport) {
super(context);
disableScrollingAndZoom();
getSettings().setJavaScriptEnabled(true);
mViewGestureDetector = new ViewGestureDetector(context, this, adReport);
mViewGestureDetector.setUserClickListener(this);
if (currentApiLevel().isAtLeast(ICE_CREAM_SANDWICH)) {
enablePlugins(true);
}
setBackgroundColor(Color.TRANSPARENT);
}
public void init(boolean isScrollable) {
initializeOnTouchListener(isScrollable);
}
@Override
public void loadUrl(String url) {
if (url == null) return;
MoPubLog.d("Loading url: " + url);
if (url.startsWith("javascript:")) {
super.loadUrl(url);
}
}
private void disableScrollingAndZoom() {
setHorizontalScrollBarEnabled(false);
setHorizontalScrollbarOverlay(false);
setVerticalScrollBarEnabled(false);
setVerticalScrollbarOverlay(false);
getSettings().setSupportZoom(false);
}
void loadHtmlResponse(String htmlResponse) {
loadDataWithBaseURL("http://" + Constants.HOST + "/", htmlResponse, "text/html", "utf-8",
null);
}
void initializeOnTouchListener(final boolean isScrollable) {
setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
mViewGestureDetector.sendTouchEvent(event);
// We're not handling events if the current action is ACTION_MOVE
return (event.getAction() == MotionEvent.ACTION_MOVE) && !isScrollable;
}
});
}
@Override
public void onUserClick() {
mClicked = true;
}
@Override
public void onResetUserClick() {
mClicked = false;
}
@Override
public boolean wasClicked() {
return mClicked;
}
}