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