Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,15 @@
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.webkit.WebViewClientCompat;

import com.google.android.gms.R;

import org.json.JSONArray;
import org.microg.gms.accountaction.AccountNotificationKt;
import org.microg.gms.accountsettings.ui.MainActivity;
import org.microg.gms.auth.AuthConstants;
import org.microg.gms.auth.AuthManager;
import org.microg.gms.auth.AuthRequest;
Expand All @@ -74,6 +76,7 @@
import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE;
import static android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT;
import static org.microg.gms.accountsettings.ui.ExtensionsKt.EXTRA_URL;
import static org.microg.gms.auth.AuthPrefs.isAuthVisible;
import static org.microg.gms.common.Constants.GMS_PACKAGE_NAME;
import static org.microg.gms.common.Constants.GMS_VERSION_CODE;
Expand All @@ -94,10 +97,12 @@ public class LoginActivity extends AssistantActivity {
private static final String EMBEDDED_RE_AUTH_URL = "https://accounts.google.com/embedded/reauth/v2/android";
private static final String PROGRAMMATIC_AUTH_URL = "https://accounts.google.com/o/oauth2/programmatic_auth";
private static final String GOOGLE_SUITE_URL = "https://accounts.google.com/signin/continue";
private static final String GOOGLE_SIGNUP_URL = "https://accounts.google.com/signup";
private static final String MAGIC_USER_AGENT = " MinuteMaid";
private static final String COOKIE_OAUTH_TOKEN = "oauth_token";
private static final String ACTION_UPDATE_ACCOUNT = "com.google.android.gms.auth.GOOGLE_ACCOUNT_CHANGE";
private static final String PERMISSION_UPDATE_ACCOUNT = "com.google.android.gms.auth.permission.GOOGLE_ACCOUNT_CHANGE";
private static final int REQUEST_CODE_SIGNUP = 1001;

private final FidoHandler fidoHandler = new FidoHandler(this);
private final DroidGuardHandler dgHandler = new DroidGuardHandler(this);
Expand All @@ -124,6 +129,22 @@ protected void onCreate(Bundle savedInstanceState) {
authContent = (ViewGroup) findViewById(R.id.auth_content);
((ViewGroup) findViewById(R.id.auth_root)).addView(webView);
webView.setWebViewClient(new WebViewClientCompat() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d(TAG, "shouldOverrideUrlLoading: url: " + url);
Uri uri = Uri.parse(url);
String uriPath = uri.getPath();
if (uriPath != null && uriPath.contains("/signup")) {
String biz = uri.getQueryParameter("biz");
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.setPackage(GMS_PACKAGE_NAME);
intent.putExtra(EXTRA_URL, biz != null ? GOOGLE_SIGNUP_URL + "?biz=" + biz : GOOGLE_SIGNUP_URL);
startActivityForResult(intent, REQUEST_CODE_SIGNUP);
return true;
}
return super.shouldOverrideUrlLoading(view, url);
}

@Override
public void onPageFinished(WebView view, String url) {
Log.d(TAG, "pageFinished: " + view.getUrl());
Expand Down Expand Up @@ -178,6 +199,14 @@ public void onPageFinished(WebView view, String url) {
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_SIGNUP) {
webView.reload();
}
}

@Override
protected void onNextButtonClicked() {
super.onNextButtonClicked();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ private val ALLOWED_WEB_PREFIXES = setOf(
"https://myadcenter.google.com/controls",
"https://families.google.com/kidonboarding",
"https://profilewidgets.google.com/alternate-profile/edit",
"https://workspace.google.com/",
)

private val ACTION_TO_SCREEN_ID = hashMapOf(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,17 @@ class WebViewHelper(private val activity: MainActivity, private val webView: Web
}
return false
}
if (url.startsWith("sms:")) {
try {
val fixedUrl = url.replaceFirst("sms://", "sms:")
val intent = Intent(Intent.ACTION_VIEW, fixedUrl.toUri())
activity.startActivity(intent)
return true
} catch (e: Exception) {
Log.w(TAG, "Failed to open SMS", e)
}
return false
}
val overrideUri = url.toUri()
if (overrideUri.path?.endsWith("/signin/identifier") == true) {
val intent = Intent(activity, LoginActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) }
Expand Down