@SuppressLint("SetJavaScriptEnabled")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(R.layout.coordinator_layout);
+ setContentView(R.layout.main_coordinatorlayout);
// We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21.
Toolbar supportAppBar = (Toolbar) findViewById(R.id.appBar);
setSupportActionBar(supportAppBar);
+ final ActionBar appBar = getSupportActionBar();
- final FrameLayout fullScreenVideoFrameLayout = (FrameLayout) findViewById(R.id.fullScreenVideoFrameLayout);
+ // This is needed to get rid of the Android Studio warning that appBar might be null.
+ assert appBar != null;
+
+ // 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) 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.
+ if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
+ // Load the URL into the mainWebView and consume the event.
+ try {
+ loadUrlFromTextBox();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ }
+ // If the enter key was pressed, consume the event.
+ return true;
+ } else {
+ // If any other key was pressed, do not consume the event.
+ return false;
+ }
+ }
+ });
- // We need to use the SupportActionBar from android.support.v7.app.ActionBar until the minimum API is >= 21.
- final ActionBar appBar = getSupportActionBar();
+ final FrameLayout fullScreenVideoFrameLayout = (FrameLayout) findViewById(R.id.fullScreenVideoFrameLayout);
// Implement swipe to refresh
swipeToRefresh = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
mainWebView = (WebView) findViewById(R.id.mainWebView);
- if (appBar != null) {
- // 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) 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.
- if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
- // Load the URL into the mainWebView and consume the event.
- try {
- loadUrlFromTextBox();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- // If the enter key was pressed, consume the event.
- return true;
- } else {
- // If any other key was pressed, do not consume the event.
- return false;
- }
- }
- });
- }
-
// Create the navigation drawer.
drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
// The DrawerTitle identifies the drawer in accessibility mode.
// Update the progress bar when a page is loading.
@Override
public void onProgressChanged(WebView view, int progress) {
- // 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);
- } else {
- progressBar.setVisibility(View.GONE);
+ ProgressBar progressBar = (ProgressBar) appBar.getCustomView().findViewById(R.id.progressBar);
+ progressBar.setProgress(progress);
+ if (progress < 100) {
+ progressBar.setVisibility(View.VISIBLE);
+ } else {
+ progressBar.setVisibility(View.GONE);
- //Stop the SwipeToRefresh indicator if it is running
- swipeToRefresh.setRefreshing(false);
- }
+ //Stop the SwipeToRefresh indicator if it is running
+ swipeToRefresh.setRefreshing(false);
}
}
// 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 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));
- }
+ // Place the favorite icon in the appBar.
+ ImageView imageViewFavoriteIcon = (ImageView) appBar.getCustomView().findViewById(R.id.favoriteIcon);
+ imageViewFavoriteIcon.setImageBitmap(Bitmap.createScaledBitmap(icon, 64, 64, true));
}
// Enter full screen video
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
- if (appBar != null) {
- appBar.hide();
- }
+ appBar.hide();
// Show the fullScreenVideoFrameLayout.
assert fullScreenVideoFrameLayout != null; //This assert removes the incorrect warning on the following line that fullScreenVideoFrameLayout might be null.
* SYSTEM_UI_FLAG_FULLSCREEN hides the status bar across the top of the screen.
* SYSTEM_UI_FLAG_IMMERSIVE_STICKY makes the navigation and status bars ghosted overlays and automatically rehides them.
*/
-
- // Set the one flag supported by API >= 14.
- view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
-
- // Set the two flags that are supported by API >= 16.
- if (Build.VERSION.SDK_INT >= 16) {
- view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN);
- }
-
- // Set all three flags that are supported by API >= 19.
- if (Build.VERSION.SDK_INT >= 19) {
- view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
- }
+ view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
// Exit full screen video
public void onHideCustomView() {
- if (appBar != null) {
- appBar.show();
- }
+ appBar.show();
// Show the mainWebView.
mainWebView.setVisibility(View.VISIBLE);
MenuItem clearCookies = menu.findItem(R.id.clearCookies);
clearCookies.setEnabled(cookieManager.hasCookies());
+ // Enable DOM Storage if JavaScript is enabled.
+ MenuItem toggleDomStorage = menu.findItem(R.id.toggleDomStorage);
+ toggleDomStorage.setEnabled(javaScriptEnabled);
+
// Run all the other default commands.
super.onPrepareOptionsMenu(menu);
if (javaScriptEnabled) {
Snackbar.make(findViewById(R.id.mainWebView), R.string.javascript_enabled, Snackbar.LENGTH_SHORT).show();
} else {
- if (domStorageEnabled || firstPartyCookiesEnabled) {
+ if (firstPartyCookiesEnabled) {
Snackbar.make(findViewById(R.id.mainWebView), R.string.javascript_disabled, Snackbar.LENGTH_SHORT).show();
} else {
Snackbar.make(findViewById(R.id.mainWebView), R.string.privacy_mode, Snackbar.LENGTH_SHORT).show();
// Apply the new DOM Storage status.
mainWebView.getSettings().setDomStorageEnabled(domStorageEnabled);
- // Update the privacy icon.
- updatePrivacyIcon();
-
// Reload the WebView.
mainWebView.reload();
return true;
startActivity(downloadManagerIntent);
break;
+ case R.id.guide:
+ // Launch GuideActivity.
+ Intent guideIntent = new Intent(this, GuideActivity.class);
+ startActivity(guideIntent);
+ break;
+
case R.id.settings:
// Launch SettingsActivity.
Intent settingsIntent = new Intent(this, SettingsActivity.class);
break;
case R.id.clearAndExit:
- // Clear DOM storage.
- WebStorage domStorage = WebStorage.getInstance();
- domStorage.deleteAllData();
-
// Clear cookies. The commands changed slightly in API 21.
if (Build.VERSION.SDK_INT >= 21) {
cookieManager.removeAllCookies(null);
cookieManager.removeAllCookie();
}
+ // Clear DOM storage.
+ WebStorage domStorage = WebStorage.getInstance();
+ domStorage.deleteAllData();
+
// Clear cache. The argument of "true" includes disk files.
mainWebView.clearCache(true);
drawerLayout.closeDrawer(GravityCompat.START);
} else {
// Load the previous URL if available.
- assert mainWebView != null; //This assert removes the incorrect warning on the following line that mainWebView might be null.
+ assert mainWebView != null; //This assert removes the incorrect warning in Android Studio on the following line that mainWebView might be null.
if (mainWebView.canGoBack()) {
mainWebView.goBack();
} else {
if (javaScriptEnabled) {
privacyIcon.setIcon(R.drawable.javascript_enabled);
} else {
- if (domStorageEnabled || firstPartyCookiesEnabled) {
+ if (firstPartyCookiesEnabled) {
privacyIcon.setIcon(R.drawable.warning);
} else {
privacyIcon.setIcon(R.drawable.privacy_mode);