/**
* Copyright 2015-2016 Soren Stoutner <soren@stoutner.com>.
*
- * This file is part of Privacy Browser.
+ * This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>.
*
* Privacy Browser is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.support.design.widget.Snackbar;
import android.support.v4.app.DialogFragment;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.ActionBar;
import android.widget.ProgressBar;
import android.widget.Toast;
-import com.google.android.gms.ads.AdRequest;
-import com.google.android.gms.ads.AdView;
-
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
setSupportActionBar(supportAppBar);
final FrameLayout fullScreenVideoFrameLayout = (FrameLayout) findViewById(R.id.fullScreenVideoFrameLayout);
- final Activity mainWebViewActivity = this;
+
// We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21.
final ActionBar appBar = getSupportActionBar();
- // Setup the AdView for the free flavor.
- final AdView adView = (AdView) findViewById(R.id.adView);
+ // Setup AdView for the free flavor.
+ final View adView = findViewById(R.id.adView);
// Implement swipe to refresh
final SwipeRefreshLayout swipeToRefresh = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
return true;
}
- /* These errors do not provide any useful information and clutter the screen.
- public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
- Toast.makeText(mainWebViewActivity, "Error loading " + request + " Error: " + error, Toast.LENGTH_SHORT).show();
- }
- */
-
// Update the URL in urlTextBox when the page starts to load.
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
@Override
public void onPageFinished(WebView view, String url) {
formattedUrlString = url;
- urlTextBox.setText(formattedUrlString);
+
+ // Only update urlTextBox if the user is not typing in it.
+ if (!urlTextBox.hasFocus()) {
+ urlTextBox.setText(formattedUrlString);
+ }
}
});
// Hide the mainWebView.
mainWebView.setVisibility(View.GONE);
- // Hide the add if this is the free flavor.
- if (getString(R.string.free_flavor).equals("true")) {
- adView.setVisibility(View.GONE);
- }
+ // Hide the ad if this is the free flavor.
+ BannerAd.hideAd(adView);
/* SYSTEM_UI_FLAG_HIDE_NAVIGATION hides the navigation bars on the bottom or right of the screen.
** SYSTEM_UI_FLAG_FULLSCREEN hides the status bar across the top of the screen.
*/
// Set the one flag supported by API >= 14.
- if (Build.VERSION.SDK_INT >= 14) {
- view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
- }
+ view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
// Set the two flags that are supported by API >= 16.
if (Build.VERSION.SDK_INT >= 16) {
// Show the mainWebView.
mainWebView.setVisibility(View.VISIBLE);
- // Show the adView if this is the free flavor.
- if (getString(R.string.free_flavor).equals("true")) {
- adView.setVisibility(View.VISIBLE);
- }
+ // Show the ad if this is the free flavor.
+ BannerAd.showAd(adView);
// Hide the fullScreenVideoFrameLayout.
fullScreenVideoFrameLayout.removeAllViews();
// Add the URL as the description for the download.
requestUri.setDescription(url);
- // Show the download notification after the download is completed if the API is 11 or greater.
- if (Build.VERSION.SDK_INT >= 11) {
- requestUri.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
- }
+ // Show the download notification after the download is completed.
+ requestUri.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
+ // Initiate the download and display a Snackbar.
downloadManager.enqueue(requestUri);
- Toast.makeText(mainWebViewActivity, "Download started", Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.download_started, Snackbar.LENGTH_SHORT).show();
}
});
// Allow pinch to zoom.
mainWebView.getSettings().setBuiltInZoomControls(true);
- // Hide zoom controls if the API is 11 or greater.
- if (Build.VERSION.SDK_INT >= 11) {
- mainWebView.getSettings().setDisplayZoomControls(false);
- }
+ // Hide zoom controls.
+ mainWebView.getSettings().setDisplayZoomControls(false);
// Initialize the default preference values the first time the program is run.
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(cookiesEnabled);
- // Set hompage initial status.
+ // Set homepage initial status.
homepage = savedPreferences.getString("homepage", "https://www.duckduckgo.com");
// Get the intent information that started the app.
mainWebView.loadUrl(formattedUrlString);
// Load the ad if this is the free flavor.
- if (getString(R.string.free_flavor).equals("true")) {
- AdRequest adRequest = new AdRequest.Builder().build();
- adView.loadAd(adRequest);
- }
+ BannerAd.requestAd(adView);
}
@Override
}
@Override
- // @TargetApi(11) turns off the errors regarding copy and paste, which are removed from view in menu_webview.xml for lower version of Android.
- @TargetApi(11)
// Remove Android Studio's warning about the dangers of using SetJavaScriptEnabled.
@SuppressLint("SetJavaScriptEnabled")
// removeAllCookies is deprecated, but it is required for API < 21.
mainWebView.getSettings().setJavaScriptEnabled(false);
mainWebView.reload();
- // Update the toggleJavaScript icon and display a toast message.
+ // Update the toggleJavaScript icon and display a snackbar.
if (domStorageEnabled || cookiesEnabled) {
menuItem.setIcon(R.drawable.warning);
if (domStorageEnabled && cookiesEnabled) {
- Toast.makeText(getApplicationContext(), "JavaScript disabled, DOM Storage and Cookies still enabled", Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.both_still_enabled, Snackbar.LENGTH_SHORT).show();
} else {
if (domStorageEnabled) {
- Toast.makeText(getApplicationContext(), "JavaScript disabled, DOM Storage still enabled", Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.dom_storage_still_enabled, Snackbar.LENGTH_SHORT).show();
} else {
- Toast.makeText(getApplicationContext(), "JavaScript disabled, Cookies still enabled", Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.cookies_still_enabled, Snackbar.LENGTH_SHORT).show();
}
}
} else {
menuItem.setIcon(R.drawable.privacy_mode);
- Toast.makeText(getApplicationContext(), R.string.privacy_mode, Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.privacy_mode, Snackbar.LENGTH_SHORT).show();
}
} else {
javaScriptEnabled = true;
menuItem.setIcon(R.drawable.javascript_enabled);
mainWebView.getSettings().setJavaScriptEnabled(true);
mainWebView.reload();
- Toast.makeText(getApplicationContext(), "JavaScript enabled", Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.javascript_enabled, Snackbar.LENGTH_SHORT).show();
}
return true;
mainWebView.getSettings().setDomStorageEnabled(false);
mainWebView.reload();
- // Update the toggleJavaScript icon and display a toast message if appropriate.
+ // Update the toggleJavaScript icon and display a snackbar if appropriate.
if (!javaScriptEnabled && !cookiesEnabled) {
toggleJavaScript.setIcon(R.drawable.privacy_mode);
- Toast.makeText(getApplicationContext(), R.string.privacy_mode, Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.privacy_mode, Snackbar.LENGTH_SHORT).show();
} else {
if (cookiesEnabled) {
toggleJavaScript.setIcon(R.drawable.warning);
- Toast.makeText(getApplicationContext(), "Cookies still enabled", Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.cookies_still_enabled, Snackbar.LENGTH_SHORT).show();
} // Else Do nothing because JavaScript is enabled.
}
} else {
toggleJavaScript.setIcon(R.drawable.warning);
} // Else Do nothing because JavaScript is enabled.
- Toast.makeText(getApplicationContext(), "DOM Storage enabled", Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.dom_storage_enabled, Snackbar.LENGTH_SHORT).show();
}
return true;
cookieManager.setAcceptCookie(false);
mainWebView.reload();
- // Update the toggleJavaScript icon and display a toast message if appropriate.
+ // Update the toggleJavaScript icon and display a snackbar if appropriate.
if (!javaScriptEnabled && !domStorageEnabled) {
toggleJavaScript.setIcon(R.drawable.privacy_mode);
- Toast.makeText(getApplicationContext(), R.string.privacy_mode, Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.privacy_mode, Snackbar.LENGTH_SHORT).show();
} else {
if (domStorageEnabled) {
toggleJavaScript.setIcon(R.drawable.warning);
- Toast.makeText(getApplicationContext(), "DOM Storage still enabled", Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.dom_storage_enabled, Snackbar.LENGTH_SHORT).show();
} // Else Do nothing because JavaScript is enabled.
}
} else {
toggleJavaScript.setIcon(R.drawable.warning);
} // Else Do nothing because JavaScript is enabled.
- Toast.makeText(getApplicationContext(), "Cookies enabled", Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.cookies_enabled, Snackbar.LENGTH_SHORT).show();
}
return true;
case R.id.clearDomStorage:
WebStorage webStorage = WebStorage.getInstance();
webStorage.deleteAllData();
- Toast.makeText(getApplicationContext(), "DOM storage deleted", Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.dom_storage_deleted, Snackbar.LENGTH_SHORT).show();
return true;
case R.id.clearCookies:
} else {
cookieManager.removeAllCookies(null);
}
- Toast.makeText(getApplicationContext(), "Cookies deleted", Toast.LENGTH_SHORT).show();
+ Snackbar.make(findViewById(R.id.mainWebView), R.string.cookies_deleted, Snackbar.LENGTH_SHORT).show();
return true;
case R.id.addToHomescreen:
case R.id.downloads:
// Launch the system Download Manager.
- Intent downloadManangerIntent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS);
+ Intent downloadManagerIntent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS);
// Launch as a new task so that Download Manager and Privacy Browser show as separate windows in the recent tasks list.
- downloadManangerIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ downloadManagerIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- startActivity(downloadManangerIntent);
+ startActivity(downloadManagerIntent);
return true;
case R.id.home:
}
}
- public void loadUrlFromTextBox() throws UnsupportedEncodingException {
+ private void loadUrlFromTextBox() throws UnsupportedEncodingException {
// Get the text from urlTextBox and convert it to a string.
String unformattedUrlString = urlTextBox.getText().toString();
URL unformattedUrl = null;