From 1afbb6ce9f772ac6bcbbc743dff6c82c7f33ad78 Mon Sep 17 00:00:00 2001 From: Ecco Park Date: Thu, 25 Oct 2018 15:36:14 -0700 Subject: [PATCH] OsuLogin: Take the UI style from CaptivePortalLogin App 1) Currently OsuLogin application has different color and style with CaptivePortalLogin. It is better to have same style with CaptivePortalLogin from user perspective. 2) remove NET_CAPABILITY_TRUSTED cap to catch the disconnect event for ehpemeral network which was set in ag/5054830 Bug: 118454343 Test: live test with Passpoint R2 service provider AP Change-Id: I4121d56b843d0ff2ebebb4bd4a063f2a5c5a0dd8 Signed-off-by: Ecco Park --- packages/OsuLogin/Android.mk | 1 + packages/OsuLogin/AndroidManifest.xml | 13 +++-- packages/OsuLogin/res/layout/osu_web_view.xml | 41 ++++++++++++--- packages/OsuLogin/res/values/strings.xml | 2 + .../hotspot2/osu/OsuLoginActivity.java | 52 ++++++++++++++++++- 5 files changed, 94 insertions(+), 15 deletions(-) diff --git a/packages/OsuLogin/Android.mk b/packages/OsuLogin/Android.mk index f04227bda2633..2c076159ec12f 100644 --- a/packages/OsuLogin/Android.mk +++ b/packages/OsuLogin/Android.mk @@ -3,6 +3,7 @@ include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_USE_AAPT2 := true +LOCAL_STATIC_ANDROID_LIBRARIES := androidx.legacy_legacy-support-v4 LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res LOCAL_SRC_FILES := $(call all-java-files-under, src) diff --git a/packages/OsuLogin/AndroidManifest.xml b/packages/OsuLogin/AndroidManifest.xml index bc32d103bdd44..123559adf6fd6 100644 --- a/packages/OsuLogin/AndroidManifest.xml +++ b/packages/OsuLogin/AndroidManifest.xml @@ -17,10 +17,10 @@ */ --> - - - + package="com.android.hotspot2"> + + + - + diff --git a/packages/OsuLogin/res/layout/osu_web_view.xml b/packages/OsuLogin/res/layout/osu_web_view.xml index 4eafb39d17135..fb3c06513430c 100644 --- a/packages/OsuLogin/res/layout/osu_web_view.xml +++ b/packages/OsuLogin/res/layout/osu_web_view.xml @@ -1,13 +1,38 @@ - + + android:orientation="vertical"> + + + + + + + + diff --git a/packages/OsuLogin/res/values/strings.xml b/packages/OsuLogin/res/values/strings.xml index 9fafeeff4348c..06fa8c7b1e8f5 100644 --- a/packages/OsuLogin/res/values/strings.xml +++ b/packages/OsuLogin/res/values/strings.xml @@ -1,4 +1,6 @@ OsuLogin + + Online Sign Up diff --git a/packages/OsuLogin/src/com/android/hotspot2/osu/OsuLoginActivity.java b/packages/OsuLogin/src/com/android/hotspot2/osu/OsuLoginActivity.java index 6a48904676864..0312b81493be6 100644 --- a/packages/OsuLogin/src/com/android/hotspot2/osu/OsuLoginActivity.java +++ b/packages/OsuLogin/src/com/android/hotspot2/osu/OsuLoginActivity.java @@ -16,9 +16,12 @@ package com.android.hotspot2.osu; +import static android.net.NetworkCapabilities.NET_CAPABILITY_TRUSTED; + import android.annotation.Nullable; import android.app.Activity; import android.content.Context; +import android.graphics.Bitmap; import android.net.ConnectivityManager; import android.net.Network; import android.net.NetworkCapabilities; @@ -27,17 +30,22 @@ import android.net.wifi.WifiManager; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; +import android.view.View; +import android.webkit.WebChromeClient; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; +import android.widget.ProgressBar; import com.android.hotspot2.R; import java.net.MalformedURLException; import java.net.URL; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + /** * Online Sign Up Login Web View launched during Provision Process of Hotspot 2.0 rel2. */ @@ -52,6 +60,8 @@ public class OsuLoginActivity extends Activity { private ConnectivityManager.NetworkCallback mNetworkCallback; private WifiManager mWifiManager; private WebView mWebView; + private SwipeRefreshLayout mSwipeRefreshLayout; + private ProgressBar mProgressBar; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -117,6 +127,9 @@ public class OsuLoginActivity extends Activity { } getActionBar().setDisplayShowHomeEnabled(false); + getActionBar().setElevation(0); // remove shadow + getActionBar().setTitle(getString(R.string.action_bar_label)); + getActionBar().setSubtitle(""); setContentView(R.layout.osu_web_view); // Exit this app if network disappeared. @@ -134,7 +147,8 @@ public class OsuLoginActivity extends Activity { mCm.registerNetworkCallback( new NetworkRequest.Builder().addTransportType( - NetworkCapabilities.TRANSPORT_WIFI).build(), + NetworkCapabilities.TRANSPORT_WIFI).removeCapability( + NET_CAPABILITY_TRUSTED).build(), mNetworkCallback); mWebView = findViewById(R.id.webview); @@ -147,12 +161,25 @@ public class OsuLoginActivity extends Activity { webSettings.setSupportZoom(true); webSettings.setBuiltInZoomControls(true); webSettings.setDisplayZoomControls(false); - + mProgressBar = findViewById(R.id.progress_bar); mWebView.setWebViewClient(new OsuWebViewClient()); + mWebView.setWebChromeClient(new WebChromeClient() { + @Override + public void onProgressChanged(WebView view, int newProgress) { + mProgressBar.setProgress(newProgress); + } + }); + if (DBG) { Log.d(TAG, "OSU Web View to " + mUrl); } + mWebView.loadUrl(mUrl); + mSwipeRefreshLayout = findViewById(R.id.swipe_refresh); + mSwipeRefreshLayout.setOnRefreshListener(() -> { + mWebView.reload(); + mSwipeRefreshLayout.setRefreshing(true); + }); } @Override @@ -191,11 +218,31 @@ public class OsuLoginActivity extends Activity { return null; } + private String getHeaderSubtitle(String urlString) { + try { + URL url = new URL(urlString); + return url.getProtocol() + "://" + url.getHost(); + } catch (MalformedURLException e) { + Log.e(TAG, "Invalid URL " + urlString); + } + return ""; + } + private class OsuWebViewClient extends WebViewClient { boolean mPageError = false; + @Override + public void onPageStarted(WebView view, String urlString, Bitmap favicon) { + String subtitle = getHeaderSubtitle(urlString); + getActionBar().setSubtitle(subtitle); + mProgressBar.setVisibility(View.VISIBLE); + } + @Override public void onPageFinished(WebView view, String url) { + mProgressBar.setVisibility(View.INVISIBLE); + mSwipeRefreshLayout.setRefreshing(false); + // Do not show the page error on UI. if (mPageError) { finishAndRemoveTask(); @@ -213,4 +260,5 @@ public class OsuLoginActivity extends Activity { } } } + }