10701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistpackage com.android.hotspot2.osu;
20701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
30701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.annotation.Nullable;
40701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.app.Activity;
50701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.graphics.Bitmap;
60701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.net.ConnectivityManager;
70701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.net.Network;
80701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.net.http.SslError;
90701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.os.Bundle;
100701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.util.Log;
110701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.util.TypedValue;
120701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.webkit.SslErrorHandler;
130701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.webkit.WebSettings;
140701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.webkit.WebView;
150701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport android.webkit.WebViewClient;
160701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
170701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistimport com.android.hotspot2.R;
180701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
190701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvistpublic class OSUWebView extends Activity {
200701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist    public static final String OSU_URL = "com.android.hotspot2.osu.URL";
210701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist    public static final String OSU_NETWORK = "com.android.hotspot2.osu.NETWORK";
220701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
230701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist    private String mUrl;
240701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
250701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist    @Override
260701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist    protected void onCreate(@Nullable Bundle savedInstanceState) {
270701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        super.onCreate(savedInstanceState);
280701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        Log.d(OSUManager.TAG, "Opening OSU Web View");
290701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
300701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        ConnectivityManager connectivityManager = ConnectivityManager.from(this);
310701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
320701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        mUrl = getIntent().getStringExtra(OSU_URL);
330701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        Network network = getIntent().getParcelableExtra(OSU_NETWORK);
340701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        connectivityManager.bindProcessToNetwork(network);
350701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
360701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        getActionBar().setDisplayShowHomeEnabled(false);
370701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        setContentView(R.layout.osu_web_view);
380701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        getActionBar().setDisplayShowHomeEnabled(false);
390701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
4051efddbd3bb304de2dd47fa8cd1114ac555958bbAlan Viverette        final WebView myWebView = findViewById(R.id.webview);
410701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        myWebView.clearCache(true);
420701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        WebSettings webSettings = myWebView.getSettings();
430701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        webSettings.setJavaScriptEnabled(true);
440701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        MyWebViewClient mWebViewClient = new MyWebViewClient();
450701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        myWebView.setWebViewClient(mWebViewClient);
460701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        Log.d(OSUManager.TAG, "OSU Web View to " + mUrl);
470701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        myWebView.loadUrl(mUrl);
480701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        Log.d(OSUManager.TAG, "OSU Web View loading");
490701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        //myWebView.setWebChromeClient(new MyWebChromeClient());
500701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        // Start initial page load so WebView finishes loading proxy settings.
510701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        // Actual load of mUrl is initiated by MyWebViewClient.
520701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        //myWebView.loadData("", "text/html", null);
530701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist    }
540701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
550701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist    private class MyWebViewClient extends WebViewClient {
560701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        private static final String INTERNAL_ASSETS = "file:///android_asset/";
570701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        // How many Android device-independent-pixels per scaled-pixel
580701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        // dp/sp = (px/sp) / (px/dp) = (1/sp) / (1/dp)
590701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        private final float mDpPerSp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 1,
600701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist                getResources().getDisplayMetrics()) /
610701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist                TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1,
620701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist                        getResources().getDisplayMetrics());
630701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        private int mPagesLoaded;
640701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
650701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        // If we haven't finished cleaning up the history, don't allow going back.
660701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        public boolean allowBack() {
670701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist            return mPagesLoaded > 1;
680701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        }
690701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
700701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        // Convert Android device-independent-pixels (dp) to HTML size.
710701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        private String dp(int dp) {
720701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist            // HTML px's are scaled just like dp's, so just add "px" suffix.
730701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist            return Integer.toString(dp) + "px";
740701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        }
750701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
760701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        // Convert Android scaled-pixels (sp) to HTML size.
770701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        private String sp(int sp) {
780701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist            // Convert sp to dp's.
790701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist            float dp = sp * mDpPerSp;
800701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist            // Apply a scale factor to make things look right.
810701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist            dp *= 1.3;
820701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist            // Convert dp's to HTML size.
830701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist            return dp((int)dp);
840701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        }
850701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist
860701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        @Override
870701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
880701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist            Log.d(OSUManager.TAG, "TLS error in Web View: " + error);
890701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist        }
900701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist    }
910701952aaa17dcef461d3a538048243d9fe690f1Jan Nordqvist}
92