Skip to content

Commit 35994af

Browse files
committed
nit corrections
1 parent 5d2d9a6 commit 35994af

1 file changed

Lines changed: 24 additions & 12 deletions

File tree

common/src/main/java/com/microsoft/identity/common/internal/providers/oauth2/WebViewAuthorizationFragment.java

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import android.net.Uri;
4141
import android.os.Build;
4242
import android.os.Bundle;
43+
import android.os.Message;
4344
import android.view.LayoutInflater;
4445
import android.view.MotionEvent;
4546
import android.view.View;
@@ -393,7 +394,7 @@ public Bitmap getDefaultVideoPoster() {
393394

394395
@Override
395396
public boolean onCreateWindow(final WebView view, boolean isDialog,
396-
boolean isUserGesture, final android.os.Message resultMsg) {
397+
boolean isUserGesture, final Message resultMsg) {
397398
if (!multipleWindowsEnabled) {
398399
// Flight is off; should not reach here, but guard anyway.
399400
return false;
@@ -404,31 +405,42 @@ public boolean onCreateWindow(final WebView view, boolean isDialog,
404405
? ((AuthorizationActivity) requireActivity()).getSpanContext() : null;
405406
final Span span = OTelUtility.createSpanFromParent(
406407
SpanName.WebViewTargetBlankNavigation.name(), parentSpanContext);
408+
boolean windowHandled = false;
407409
try (final Scope scope = span.makeCurrent()) {
408410
Logger.info(methodTag, "onCreateWindow: intercepting target=_blank navigation.");
409-
final WebView tempWebView = new WebView(view.getContext());
410-
tempWebView.setWebViewClient(new WebViewClient() {
411+
final WebView interceptorWebView = new WebView(view.getContext());
412+
interceptorWebView.setWebViewClient(new WebViewClient() {
411413
@Override
412414
public boolean shouldOverrideUrlLoading(WebView v, WebResourceRequest request) {
413-
final String url = request.getUrl().toString();
414-
Logger.info(methodTag, "onCreateWindow: opening target=_blank URL in external browser.");
415-
span.setAttribute("target_blank_url", url);
416-
final Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
417-
view.getContext().startActivity(browserIntent);
415+
try {
416+
final String url = request.getUrl().toString();
417+
Logger.info(methodTag, "onCreateWindow: opening target=_blank URL in external browser.");
418+
span.setAttribute("target_blank_url", url);
419+
final Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
420+
view.getContext().startActivity(browserIntent);
421+
} catch (final Exception e) {
422+
Logger.error(methodTag, "Error opening target=_blank URL in external browser.", e);
423+
}
418424
return true;
419425
}
420426
});
427+
if (resultMsg.obj == null) {
428+
Logger.error(methodTag, "onCreateWindow: resultMsg.obj is null, cannot set up transport.", null);
429+
span.setStatus(StatusCode.ERROR, "resultMsg.obj is null");
430+
return false;
431+
}
421432
final WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
422-
transport.setWebView(tempWebView);
433+
transport.setWebView(interceptorWebView);
423434
resultMsg.sendToTarget();
424435
span.setStatus(StatusCode.OK);
425-
} catch (final Exception e) {
436+
windowHandled = true;
437+
} catch (@NonNull final Exception e) {
426438
Logger.error(methodTag, "Error handling target=_blank navigation.", e);
427-
span.setStatus(StatusCode.ERROR, e.getMessage());
439+
span.setStatus(StatusCode.ERROR, e.getMessage() != null ? e.getMessage() : "Unknown error");
428440
} finally {
429441
span.end();
430442
}
431-
return true;
443+
return windowHandled;
432444
}
433445
});
434446
setupPasskeyWebListener(mWebView, webViewClient);

0 commit comments

Comments
 (0)