Skip to content

Commit

Permalink
fix(android): add missing android webview lifecycle events
Browse files Browse the repository at this point in the history
Co-authored-by: Christian Davatz <[email protected]>
Co-authored-by: Carl Poole <[email protected]>
  • Loading branch information
3 people authored Jul 19, 2021
1 parent 8950c60 commit 6a7c4e3
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 4 deletions.
6 changes: 3 additions & 3 deletions android/capacitor/src/main/java/com/getcapacitor/Bridge.java
Original file line number Diff line number Diff line change
Expand Up @@ -1185,7 +1185,7 @@ public void removeWebViewListener(WebViewListener webViewListener) {
webViewListeners.remove(webViewListener);
}

static class Builder {
public static class Builder {

private Bundle instanceState = null;
private CapConfig config = null;
Expand All @@ -1194,11 +1194,11 @@ static class Builder {
private Fragment fragment;
private final List<WebViewListener> webViewListeners = new ArrayList<>();

Builder(AppCompatActivity activity) {
public Builder(AppCompatActivity activity) {
this.activity = activity;
}

Builder(Fragment fragment) {
public Builder(Fragment fragment) {
this.activity = (AppCompatActivity) fragment.getActivity();
this.fragment = fragment;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import android.graphics.Bitmap;
import android.net.Uri;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
Expand Down Expand Up @@ -35,7 +36,6 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);

List<WebViewListener> webViewListeners = bridge.getWebViewListeners();

if (webViewListeners != null && view.getProgress() == 100) {
Expand All @@ -45,9 +45,40 @@ public void onPageFinished(WebView view, String url) {
}
}

@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);

List<WebViewListener> webViewListeners = bridge.getWebViewListeners();
if (webViewListeners != null) {
for (WebViewListener listener : bridge.getWebViewListeners()) {
listener.onReceivedError(view);
}
}
}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
bridge.reset();
List<WebViewListener> webViewListeners = bridge.getWebViewListeners();

if (webViewListeners != null) {
for (WebViewListener listener : bridge.getWebViewListeners()) {
listener.onPageStarted(view);
}
}
}

@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
super.onReceivedHttpError(view, request, errorResponse);

List<WebViewListener> webViewListeners = bridge.getWebViewListeners();
if (webViewListeners != null) {
for (WebViewListener listener : bridge.getWebViewListeners()) {
listener.onReceivedHttpError(view);
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,31 @@ public abstract class WebViewListener {
public void onPageLoaded(WebView webView) {
// Override me to add behavior to the page loaded event
}

/**
* Callback for onReceivedError event.
*
* @param webView The WebView that loaded
*/
public void onReceivedError(WebView webView) {
// Override me to add behavior to handle the onReceivedError event
}

/**
* Callback for onReceivedHttpError event.
*
* @param webView The WebView that loaded
*/
public void onReceivedHttpError(WebView webView) {
// Override me to add behavior to handle the onReceivedHttpError event
}

/**
* Callback for page start event.
*
* @param webView The WebView that loaded
*/
public void onPageStarted(WebView webView) {
// Override me to add behavior to the page started event
}
}

0 comments on commit 6a7c4e3

Please sign in to comment.