Skip to content

Commit c8dbb0f

Browse files
committed
temp build for ToU
1 parent 9942a96 commit c8dbb0f

3 files changed

Lines changed: 32 additions & 4 deletions

File tree

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,11 @@ void sendResult(@NonNull final RawAuthorizationResult result) {
229229
// Track the final result code we got for this authorization flow
230230
mFinalResultCode = result.getResultCode();
231231

232+
// Log the URL load tracker for debugging WebView navigation issues
233+
if (!mUrlStatusTracker.isEmpty()) {
234+
Logger.info(methodTag, "URL Load Tracker (" + mUrlStatusTracker.size() + " entries): " + mUrlStatusTracker);
235+
}
236+
232237
final PropertyBag propertyBag = RawAuthorizationResult.toPropertyBag(result);
233238
propertyBag.put(REQUEST_CODE, BROWSER_FLOW);
234239

@@ -335,10 +340,6 @@ private static String sanitizeUrl(final String url) {
335340
host.endsWith(AuthenticationConstants.Broker.AAD_CHINA_URL_HOST_SUFFIX) ||
336341
host.endsWith(AuthenticationConstants.Broker.MSA_URL_HOST_SUFFIX);
337342

338-
if (!isAllowedHost) {
339-
return "[REDACTED]";
340-
}
341-
342343
// Build sanitized URL: scheme + host + path only (no query params or fragments)
343344
final StringBuilder sanitizedUrl = new StringBuilder();
344345
final String scheme = uri.getScheme();

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import android.view.MotionEvent;
4545
import android.view.View;
4646
import android.view.ViewGroup;
47+
import android.webkit.ConsoleMessage;
4748
import android.webkit.PermissionRequest;
4849
import android.webkit.WebChromeClient;
4950
import android.webkit.WebSettings;
@@ -354,6 +355,10 @@ public boolean onTouch(final View view, final MotionEvent event) {
354355
mWebView.getSettings().setSupportZoom(webViewZoomEnabled);
355356
mWebView.setVisibility(View.INVISIBLE);
356357
mWebView.setWebViewClient(webViewClient);
358+
// Allow mixed content (HTTPS pages loading HTTP sub-resources) for compatibility
359+
// with ToU/MFA pages that may load resources over HTTP.
360+
mWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE);
361+
357362
mWebView.setWebChromeClient(new WebChromeClient() {
358363
@Override
359364
public void onPermissionRequest(final PermissionRequest request) {
@@ -367,6 +372,23 @@ public void onPermissionRequest(final PermissionRequest request) {
367372
});
368373
}
369374

375+
@Override
376+
public boolean onConsoleMessage(final ConsoleMessage consoleMessage) {
377+
// Log JS console messages to help debug WebView rendering issues (e.g., ToU blank screen)
378+
final String level = consoleMessage.messageLevel().name();
379+
final String msg = "JS Console [" + level + "]: " + consoleMessage.message()
380+
+ " (source: " + consoleMessage.sourceId()
381+
+ ", line: " + consoleMessage.lineNumber() + ")";
382+
if (consoleMessage.messageLevel() == ConsoleMessage.MessageLevel.ERROR) {
383+
Logger.error(methodTag, msg, null);
384+
} else if (consoleMessage.messageLevel() == ConsoleMessage.MessageLevel.WARNING) {
385+
Logger.warn(methodTag, msg);
386+
} else {
387+
Logger.info(methodTag, msg);
388+
}
389+
return true;
390+
}
391+
370392
@Override
371393
public Bitmap getDefaultVideoPoster() {
372394
// When not playing, video elements are represented by a 'poster' image.

common/src/main/java/com/microsoft/identity/common/internal/ui/webview/AzureActiveDirectoryWebViewClient.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,11 @@ public void onPageFinished(final WebView view,
202202
final String url) {
203203
super.onPageFinished(view, url);
204204

205+
// Track page load completion
206+
if (mUrlLoadTracker != null) {
207+
mUrlLoadTracker.updateLatestUrlStatus("PAGE_FINISHED", null);
208+
}
209+
205210
if (mAuthUxJavaScriptInterfaceAdded) {
206211
// Add a function to the api. Must do this to first stringify the dict object, as Android @JavaScriptInterface does not support
207212
// passing dict objects through Javascript APIs, only Strings and primitive types. Server side will be sending message in a dict

0 commit comments

Comments
 (0)