package uk.co.martinpearman.b4a.webviewextras;
import android.net.http.SslError;
import android.webkit.HttpAuthHandler;
import android.webkit.SslErrorHandler;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import anywheresoftware.b4a.BA;
import anywheresoftware.b4a.BA.ActivityObject;
import anywheresoftware.b4a.BA.Author;
import anywheresoftware.b4a.BA.Events;
import anywheresoftware.b4a.BA.Hide;
import anywheresoftware.b4a.BA.ShortName;
import anywheresoftware.b4a.BA.Version;
@ActivityObject
@Author("Martin Pearman")
@Events(values = { "OverrideUrl (Url As String) As Boolean", "PageFinished (Url As String)", "UserAndPasswordRequired (Host As String, Realm As String) As String()" })
@ShortName("MyWebViewClient")
@Version(1.00F)
public class MyWebViewClient extends WebViewClient {
private BA mBA;
private String mEventName;
public void Initialize(BA pBA, WebView WebView1, String EventName) {
mBA = pBA;
mEventName = EventName.toLowerCase(BA.cul);
WebView1.setWebViewClient(this);
}
@Hide
public void onPageFinished(WebView view, String url) {
mBA.raiseEvent(MyWebViewClient.this, mEventName + "_pagefinished", new Object[] { url });
}
@Hide
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Boolean b = (Boolean) mBA.raiseEvent(MyWebViewClient.this, mEventName + "_overrideurl", new Object[] { url });
if (b != null)
return b.booleanValue();
return false;
}
@Hide
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
Object o = mBA.raiseEvent(MyWebViewClient.this, mEventName + "_userandpasswordrequired", new Object[] { host, realm });
if (o == null) {
handler.cancel();
} else {
String[] s = (String[]) o;
handler.proceed(s[0], s[1]);
}
}
@Hide
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
}