/**
- * Copyright 2015 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2015-2016 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Browser.
*
import android.view.inputmethod.InputMethodManager;
import android.webkit.DownloadListener;
import android.webkit.WebChromeClient;
-import android.webkit.WebResourceError;
-import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
// favoriteIcon is public static so it can be accessed from CreateHomeScreenShortcut.
public static Bitmap favoriteIcon;
+ // mainWebView is used in onCreate and onOptionsItemSelected.
+ private WebView mainWebView;
+ // 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/";
+ // enableJavaScript is used onCreate and onOptionsItemSelected.
+ private boolean enableJavaScript;
+ // actionBar is used in onCreate and onOptionsItemSelected.
+ private ActionBar actionBar;
// Remove Android Studio's warning about the dangers of using SetJavaScriptEnabled.
@SuppressLint("SetJavaScriptEnabled")
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
- final WebView mainWebView = (WebView) findViewById(R.id.mainWebView);
final FrameLayout fullScreenVideoFrameLayout = (FrameLayout) findViewById(R.id.fullScreenVideoFrameLayout);
final Activity mainWebViewActivity = this;
- final ActionBar actionBar = getSupportActionBar();
+ mainWebView = (WebView) findViewById(R.id.mainWebView);
+ actionBar = getSupportActionBar();
+
if (actionBar != null) {
// Remove the title from the action bar.
actionBar.setDisplayShowTitleEnabled(false);
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_LONG).show();
+ Toast.makeText(mainWebViewActivity, "Error loading " + request + " Error: " + error, Toast.LENGTH_SHORT).show();
}
+ */
// Update the URL in urlTextBox when the page starts to load.
@Override
// Enter full screen video
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
- getSupportActionBar().hide();
+ if (getSupportActionBar() != null) {
+ getSupportActionBar().hide();
+ }
fullScreenVideoFrameLayout.addView(view);
fullScreenVideoFrameLayout.setVisibility(View.VISIBLE);
// Exit full screen video
public void onHideCustomView() {
- getSupportActionBar().show();
+ if (getSupportActionBar() != null) {
+ getSupportActionBar().show();
+ }
mainWebView.setVisibility(View.VISIBLE);
}
});
+ // Allow the downloading of files.
mainWebView.setDownloadListener(new DownloadListener() {
// Launch the Android download manager when a link leads to a download.
@Override
mainWebView.getSettings().setDisplayZoomControls(false);
}
- // Enable JavaScript.
- mainWebView.getSettings().setJavaScriptEnabled(true);
+ // Set JavaScript initial status.
+ enableJavaScript = true;
+ if (enableJavaScript) {
+ mainWebView.getSettings().setJavaScriptEnabled(true);
+ } else {
+ mainWebView.getSettings().setJavaScriptEnabled(false);
+ }
// Enable DOM Storage.
mainWebView.getSettings().setDomStorageEnabled(true);
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_webview, menu);
+ MenuItem toggleJavaScriptMenuItem = menu.findItem(R.id.toggleJavaScript);
+
+ // Set the JavaScript menu item checkbox initial status.
+ if (enableJavaScript) {
+ toggleJavaScriptMenuItem.setChecked(true);
+ } else {
+ toggleJavaScriptMenuItem.setChecked(false);
+ }
+
return true;
}
- // @TargetApi(11) turns off the errors regarding copy and paste, which are removed from view in menu_webview.xml for lower version of Android.
@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")
public boolean onOptionsItemSelected(MenuItem menuItem) {
int menuItemId = menuItem.getItemId();
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
- ActionBar actionBar = getSupportActionBar();
- final WebView mainWebView = (WebView) findViewById(R.id.mainWebView);
// Sets the commands that relate to the menu entries.
switch (menuItemId) {
+ case R.id.toggleJavaScript:
+ if (enableJavaScript) {
+ enableJavaScript = false;
+ menuItem.setChecked(false);
+ mainWebView.getSettings().setJavaScriptEnabled(false);
+ mainWebView.loadUrl(formattedUrlString);
+ } else {
+ enableJavaScript = true;
+ menuItem.setChecked(true);
+ mainWebView.getSettings().setJavaScriptEnabled(true);
+ mainWebView.loadUrl(formattedUrlString);
+ }
+ return true;
+
case R.id.home:
mainWebView.loadUrl(homepage);
- break;
+ return true;
case R.id.refresh:
mainWebView.loadUrl(formattedUrlString);
- break;
+ return true;
case R.id.back:
mainWebView.goBack();
- break;
+ return true;
case R.id.forward:
mainWebView.goForward();
- break;
+ return true;
case R.id.copyURL:
// Make sure that actionBar is not null.
EditText urlTextBox = (EditText) actionBar.getCustomView().findViewById(R.id.urlTextBox);
clipboard.setPrimaryClip(ClipData.newPlainText("URL", urlTextBox.getText()));
}
- break;
+ return true;
case R.id.pasteURL:
// Make sure that actionBar is not null.
e.printStackTrace();
}
}
- break;
+ return true;
case R.id.shareURL:
// Make sure that actionBar is not null.
shareIntent.setType("text/plain");
startActivity(Intent.createChooser(shareIntent, "Share URL"));
}
- break;
+ return true;
case R.id.addToHomescreen:
// Show the CreateHomeScreenShortcut AlertDialog and name this instance createShortcut.
shortcutDialog.show(getSupportFragmentManager(), "createShortcut");
//Everything else will be handled by CreateHomeScreenShortcut and the associated listeners below.
- break;
+ return true;
case R.id.downloads:
// Launch the system Download Manager.
downloadManangerIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(downloadManangerIntent);
- break;
+ return true;
case R.id.about:
// Show the AboutDialog AlertDialog and name this instance aboutDialog.
AppCompatDialogFragment aboutDialog = new AboutDialog();
aboutDialog.show(getSupportFragmentManager(), "aboutDialog");
+ return true;
- break;
+ default:
+ return super.onOptionsItemSelected(menuItem);
}
-
- return super.onOptionsItemSelected(menuItem);
}
@Override