diff --git a/mobile/app/src/main/java/org/exarhteam/iitc_mobile/IITC_WebViewPopup.java b/mobile/app/src/main/java/org/exarhteam/iitc_mobile/IITC_WebViewPopup.java index e790ff4d3..12f67e5bb 100644 --- a/mobile/app/src/main/java/org/exarhteam/iitc_mobile/IITC_WebViewPopup.java +++ b/mobile/app/src/main/java/org/exarhteam/iitc_mobile/IITC_WebViewPopup.java @@ -61,31 +61,6 @@ private boolean reloadWithUserAgent(final WebView view, final String url) { return true; } - private String categorizeUriHostAndPath(String uriHost, String uriPath) { - if (uriHost.endsWith("facebook.com") - && (uriPath.contains("oauth") || uriPath.startsWith("/login") || uriPath.equals("/checkpoint/") - || uriPath.equals("/cookie/consent_prompt/"))) { - return "Facebook"; - } - if (uriHost.startsWith("accounts.google.") || - uriHost.startsWith("appengine.google.") || - uriHost.startsWith("accounts.youtube.") || - uriHost.startsWith("myaccount.google.") || - uriHost.startsWith("gds.google.")) { - return "Google"; - } - if (uriHost.equals("appleid.apple.com")) { - return "AppleID"; - } - if (uriHost.startsWith("signin.nianticlabs.")) { - return "Niantic"; - } - if (mIitc.isInternalHostname(uriHost)) { - return "InternalHost"; - } - return "Unknown"; - } - @Override public boolean shouldOverrideUrlLoading(final WebView view, final String url) { final Uri uri = Uri.parse(url); @@ -115,9 +90,8 @@ public boolean shouldOverrideUrlLoading(final WebView view, final String url) { return shouldOverrideUrlLoading(view, uriQuery); } - String authCategory = categorizeUriHostAndPath(uriHost, uriPath); - if (!authCategory.equals("Unknown")) { - Log.d("popup: " + authCategory + " login"); + if (mIitc.isInternalHostname(uriHost) || LoginUrlChecker.isLoginUrl(uri)) { + Log.d("Opening popup: " + uri); openDialogPopup(); return false; } @@ -155,38 +129,38 @@ private void openDialogPopup() { if (mDialog.isShowing()) return; // Set the dialog content view to match parent's height and width - ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT - ); - mDialog.getWindow().setContentView(this, params); - - // Set horizontal and vertical margins +// ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( +// ViewGroup.LayoutParams.MATCH_PARENT, +// ViewGroup.LayoutParams.MATCH_PARENT +// ); +// mDialog.getWindow().setContentView(this, params); +// +// // Set horizontal and vertical margins WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); layoutParams.copyFrom(mDialog.getWindow().getAttributes()); - - // Set width and height to match_parent +// +// // Set width and height to match_parent layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT; - - // Calculate the margin size - DisplayMetrics displayMetrics = new DisplayMetrics(); - ((WindowManager) mIitc.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(displayMetrics); - float widthMargin = displayMetrics.widthPixels * 0.05f; - float heightMargin = displayMetrics.heightPixels * 0.05f; - - // Convert pixels to dp to use as margin - float density = displayMetrics.density; - int marginWidthDp = (int) (widthMargin / density); - int marginHeightDp = (int) (heightMargin / density); - - layoutParams.horizontalMargin = marginWidthDp; - layoutParams.verticalMargin = marginHeightDp; +// +// // Calculate the margin size +// DisplayMetrics displayMetrics = new DisplayMetrics(); +// ((WindowManager) mIitc.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(displayMetrics); +// float widthMargin = displayMetrics.widthPixels * 5f; +// float heightMargin = displayMetrics.heightPixels * 0.01f; +// +// // Convert pixels to dp to use as margin +// float density = displayMetrics.density; +// int marginWidthDp = (int) (widthMargin / density); +// int marginHeightDp = (int) (heightMargin / density); +// +// layoutParams.horizontalMargin = -0.3f; +// layoutParams.verticalMargin = 0.3f; +// + mDialog.getWindow().setAttributes(layoutParams); +// mDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); mDialog.show(); - - mDialog.getWindow().setAttributes(layoutParams); - mDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); } // constructors ------------------------------------------------- diff --git a/mobile/app/src/main/java/org/exarhteam/iitc_mobile/LoginUrlChecker.java b/mobile/app/src/main/java/org/exarhteam/iitc_mobile/LoginUrlChecker.java new file mode 100644 index 000000000..56110eaca --- /dev/null +++ b/mobile/app/src/main/java/org/exarhteam/iitc_mobile/LoginUrlChecker.java @@ -0,0 +1,42 @@ +package org.exarhteam.iitc_mobile; + +import android.net.Uri; + +public class LoginUrlChecker { + + private LoginUrlChecker() { + //hiding default constructor - only static methods + } + + public static boolean isLoginUrl(Uri uri) { + String uriHost = uri.getHost(); + String uriPath = uri.getPath(); + + return isFacebookAuth(uriHost, uriPath) + || isGoogleAuth(uriHost) + || isAppleAuth(uriHost) + || isNianticAuth(uriHost); + } + + private static boolean isFacebookAuth(String uriHost, String uriPath) { + return uriHost.endsWith("facebook.com") + && (uriPath.contains("oauth") || uriPath.startsWith("/login") || uriPath.equals("/checkpoint/") + || uriPath.equals("/cookie/consent_prompt/")); + } + + private static boolean isGoogleAuth(String uriHost) { + return uriHost.startsWith("accounts.google.") || + uriHost.startsWith("appengine.google.") || + uriHost.startsWith("accounts.youtube.") || + uriHost.startsWith("myaccount.google.") || + uriHost.startsWith("gds.google."); + } + + private static boolean isAppleAuth(String uriHost) { + return uriHost.equals("appleid.apple.com"); + } + + private static boolean isNianticAuth(String uriHost) { + return uriHost.startsWith("signin.nianticlabs."); + } +}