X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2FMainWebView.java;h=4ca7320a77892bc6c4b686142d24cec4f21ee739;hb=4ba6de8b83fee7e5259ff516e63c3ce785bee843;hp=0b9c117a1ca962cacfa02073e9e08c5cbd23c368;hpb=312de47d773824c7ae7c16303e999f2e969ef4cd;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/MainWebView.java b/app/src/main/java/com/stoutner/privacybrowser/MainWebView.java index 0b9c117a..4ca7320a 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/MainWebView.java +++ b/app/src/main/java/com/stoutner/privacybrowser/MainWebView.java @@ -27,14 +27,17 @@ import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.graphics.Bitmap; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.preference.PreferenceManager; import android.support.v4.app.DialogFragment; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatDialogFragment; +import android.support.v7.widget.Toolbar; import android.util.Patterns; import android.view.KeyEvent; import android.view.Menu; @@ -57,6 +60,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; +// We need to use AppCompatActivity from android.support.v7.app.AppCompatActivity to have access to the SupportActionBar until the minimum API is >= 21. public class MainWebView extends AppCompatActivity implements CreateHomeScreenShortcut.CreateHomeScreenSchortcutListener { // favoriteIcon is public static so it can be accessed from CreateHomeScreenShortcut. public static Bitmap favoriteIcon; @@ -68,7 +72,7 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh // formattedUrlString is used in onCreate(), onOptionsItemSelected(), onCreateHomeScreenShortcutCreate(), and loadUrlFromTextBox(). private String formattedUrlString; // homepage is used in onCreate() and onOptionsItemSelected(). - private String homepage = "https://www.duckduckgo.com/"; + private String homepage; // javaScriptEnabled is used in onCreate(), onCreateOptionsMenu(), onOptionsItemSelected(), and loadUrlFromTextBox(). private boolean javaScriptEnabled; // domStorageEnabled is used in onCreate(), onCreateOptionsMenu(), and onOptionsItemSelected(). @@ -93,23 +97,26 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_webview); + Toolbar toolbar = (Toolbar) findViewById(R.id.appBar); + setSupportActionBar(toolbar); final FrameLayout fullScreenVideoFrameLayout = (FrameLayout) findViewById(R.id.fullScreenVideoFrameLayout); final Activity mainWebViewActivity = this; - final ActionBar actionBar = getSupportActionBar(); + // We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21. + final ActionBar appBar = getSupportActionBar(); mainWebView = (WebView) findViewById(R.id.mainWebView); - if (actionBar != null) { - // Remove the title from the action bar. - actionBar.setDisplayShowTitleEnabled(false); + if (appBar != null) { + // Remove the title from the app bar. + appBar.setDisplayShowTitleEnabled(false); - // Add the custom app_bar layout, which shows the favoriteIcon, urlTextBar, and progressBar. - actionBar.setCustomView(R.layout.app_bar); - actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); + // Add the custom url_bar layout, which shows the favoriteIcon, urlTextBar, and progressBar. + appBar.setCustomView(R.layout.url_bar); + appBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); // Set the "go" button on the keyboard to load the URL in urlTextBox. - urlTextBox = (EditText) actionBar.getCustomView().findViewById(R.id.urlTextBox); + urlTextBox = (EditText) appBar.getCustomView().findViewById(R.id.urlTextBox); urlTextBox.setOnKeyListener(new View.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { // If the event is a key-down event on the "enter" button, load the URL. @@ -162,9 +169,9 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh // Update the progress bar when a page is loading. @Override public void onProgressChanged(WebView view, int progress) { - // Make sure that actionBar is not null. - if (actionBar != null) { - ProgressBar progressBar = (ProgressBar) actionBar.getCustomView().findViewById(R.id.progressBar); + // Make sure that appBar is not null. + if (appBar != null) { + ProgressBar progressBar = (ProgressBar) appBar.getCustomView().findViewById(R.id.progressBar); progressBar.setProgress(progress); if (progress < 100) { progressBar.setVisibility(View.VISIBLE); @@ -180,9 +187,9 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh // Save a copy of the favorite icon for use if a shortcut is added to the home screen. favoriteIcon = icon; - // Place the favorite icon in the actionBar if it is not null. - if (actionBar != null) { - ImageView imageViewFavoriteIcon = (ImageView) actionBar.getCustomView().findViewById(R.id.favoriteIcon); + // Place the favorite icon in the appBar if it is not null. + if (appBar != null) { + ImageView imageViewFavoriteIcon = (ImageView) appBar.getCustomView().findViewById(R.id.favoriteIcon); imageViewFavoriteIcon.setImageBitmap(Bitmap.createScaledBitmap(icon, 64, 64, true)); } } @@ -190,8 +197,8 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh // Enter full screen video @Override public void onShowCustomView(View view, CustomViewCallback callback) { - if (actionBar != null) { - actionBar.hide(); + if (appBar != null) { + appBar.hide(); } fullScreenVideoFrameLayout.addView(view); @@ -222,8 +229,8 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh // Exit full screen video public void onHideCustomView() { - if (actionBar != null) { - actionBar.show(); + if (appBar != null) { + appBar.show(); } mainWebView.setVisibility(View.VISIBLE); @@ -262,12 +269,18 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh mainWebView.getSettings().setDisplayZoomControls(false); } + // Initialize the default preference values the first time the program is run. + PreferenceManager.setDefaultValues(this, R.xml.preferences, false); + + // Get the shared preference values. + SharedPreferences savedPreferences = PreferenceManager.getDefaultSharedPreferences(this); + // Set JavaScript initial status. - javaScriptEnabled = false; + javaScriptEnabled = savedPreferences.getBoolean("javascript_enabled", false); mainWebView.getSettings().setJavaScriptEnabled(javaScriptEnabled); - // Set DOM Storage initial status. - domStorageEnabled = false; + // Set DOM storage initial status. + domStorageEnabled = savedPreferences.getBoolean("dom_storage_enabled", false); mainWebView.getSettings().setDomStorageEnabled(domStorageEnabled); /* Save Form Data does nothing until database storage is implemented. @@ -276,11 +289,14 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh mainWebView.getSettings().setSaveFormData(saveFormDataEnabled); */ - // Set Cookies initial status. - cookiesEnabled = false; + // Set cookies initial status. + cookiesEnabled = savedPreferences.getBoolean("cookies_enabled", false); cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(cookiesEnabled); + // Set hompage initial status. + homepage = savedPreferences.getString("homepage", "https://www.duckduckgo.com"); + // Get the intent information that started the app. final Intent intent = getIntent(); @@ -332,10 +348,10 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh // Set the initial icon for toggleJavaScript if (javaScriptEnabled) { - toggleJavaScript.setIcon(R.drawable.javascript_on); + toggleJavaScript.setIcon(R.drawable.javascript_enabled); } else { if (domStorageEnabled || cookiesEnabled) { - toggleJavaScript.setIcon(R.drawable.warning_on); + toggleJavaScript.setIcon(R.drawable.warning); } else { toggleJavaScript.setIcon(R.drawable.privacy_mode); } @@ -398,7 +414,7 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh // Update the toggleJavaScript icon and display a toast message. if (domStorageEnabled || cookiesEnabled) { - menuItem.setIcon(R.drawable.warning_on); + menuItem.setIcon(R.drawable.warning); if (domStorageEnabled && cookiesEnabled) { Toast.makeText(getApplicationContext(), "JavaScript disabled, DOM Storage and Cookies still enabled", Toast.LENGTH_SHORT).show(); } else { @@ -414,7 +430,7 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh } } else { javaScriptEnabled = true; - menuItem.setIcon(R.drawable.javascript_on); + menuItem.setIcon(R.drawable.javascript_enabled); mainWebView.getSettings().setJavaScriptEnabled(true); mainWebView.reload(); Toast.makeText(getApplicationContext(), "JavaScript enabled", Toast.LENGTH_SHORT).show(); @@ -434,7 +450,7 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh Toast.makeText(getApplicationContext(), "Privacy Mode", Toast.LENGTH_SHORT).show(); } else { if (cookiesEnabled) { - toggleJavaScript.setIcon(R.drawable.warning_on); + toggleJavaScript.setIcon(R.drawable.warning); Toast.makeText(getApplicationContext(), "Cookies still enabled", Toast.LENGTH_SHORT).show(); } // Else Do nothing because JavaScript is enabled. } @@ -446,7 +462,7 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh // Update the toggleJavaScript icon if appropriate. if (!javaScriptEnabled) { - toggleJavaScript.setIcon(R.drawable.warning_on); + toggleJavaScript.setIcon(R.drawable.warning); } // Else Do nothing because JavaScript is enabled. Toast.makeText(getApplicationContext(), "DOM Storage enabled", Toast.LENGTH_SHORT).show(); @@ -482,7 +498,7 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh Toast.makeText(getApplicationContext(), "Privacy Mode", Toast.LENGTH_SHORT).show(); } else { if (domStorageEnabled) { - toggleJavaScript.setIcon(R.drawable.warning_on); + toggleJavaScript.setIcon(R.drawable.warning); Toast.makeText(getApplicationContext(), "DOM Storage still enabled", Toast.LENGTH_SHORT).show(); } // Else Do nothing because JavaScript is enabled. } @@ -494,7 +510,7 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh // Update the toggleJavaScript icon if appropriate. if (!javaScriptEnabled) { - toggleJavaScript.setIcon(R.drawable.warning_on); + toggleJavaScript.setIcon(R.drawable.warning); } // Else Do nothing because JavaScript is enabled. Toast.makeText(getApplicationContext(), "Cookies enabled", Toast.LENGTH_SHORT).show(); @@ -572,6 +588,12 @@ public class MainWebView extends AppCompatActivity implements CreateHomeScreenSh startActivity(downloadManangerIntent); return true; + case R.id.settings: + // Start the Settings activity. + Intent intent = new Intent(this, Settings.class); + startActivity(intent); + return true; + case R.id.about: // Show the AboutDialog AlertDialog and name this instance aboutDialog. AppCompatDialogFragment aboutDialog = new AboutDialog();