]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/activities/MainWebView.java
Add a variable to track whether we are in full screen browsing mode. Fixes https...
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / activities / MainWebView.java
index 952f5aae93d0066eb226134ecaa4978fa171bf3a..345a7060a99a1addc522b33f4c8e8c1782b21794 100644 (file)
@@ -22,6 +22,8 @@ package com.stoutner.privacybrowser.activities;
 import android.annotation.SuppressLint;
 import android.app.DialogFragment;
 import android.app.DownloadManager;
+import android.content.ClipData;
+import android.content.ClipboardManager;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -103,7 +105,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         SslCertificateError.SslCertificateErrorListener, DownloadFile.DownloadFileListener, DownloadImage.DownloadImageListener, UrlHistory.UrlHistoryListener {
 
     // `appBar` is public static so it can be accessed from `OrbotProxyHelper`.
-    // It is also used in `onCreate()`, `onOptionsItemSelected()`, and `closeFindOnPage()`.
+    // It is also used in `onCreate()`, `onOptionsItemSelected()`, `closeFindOnPage()`, and `applySettings()`.
     public static ActionBar appBar;
 
     // `favoriteIcon` is public static so it can be accessed from `CreateHomeScreenShortcut`, `Bookmarks`, `CreateBookmark`, `CreateBookmarkFolder`, and `EditBookmark`.
@@ -128,9 +130,6 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
     // 'mainWebView' is used in `onCreate()`, `onOptionsItemSelected()`, `onNavigationItemSelected()`, `onRestart()`, `onCreateContextMenu()`, `findPreviousOnPage()`, `findNextOnPage()`, `closeFindOnPage()`, and `loadUrlFromTextBox()`.
     private WebView mainWebView;
 
-    // `findOnPageEditText` is used in `onCreate()`, `onOptionsItemSelected()`, and `closeFindOnPage()`.
-    private EditText findOnPageEditText;
-
     // `fullScreenVideoFrameLayout` is used in `onCreate()` and `onConfigurationChanged()`.
     private FrameLayout fullScreenVideoFrameLayout;
 
@@ -171,18 +170,33 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
     // `javaScriptEnabledSearchURL` is used in `loadURLFromTextBox()` and `applySettings()`.
     private String javaScriptEnabledSearchURL;
 
+    // `fullScreenBrowsingModeEnabled` is used in `onCreate()` and `applySettings()`.
+    private boolean fullScreenBrowsingModeEnabled;
+
+    // `inFullScreenBrowsingMode` is used in `onCreate()` and `applySettings()`.
+    private boolean inFullScreenBrowsingMode;
+
     // `hideSystemBarsOnFullscreen` is used in `onCreate()` and `applySettings()`.
     private boolean hideSystemBarsOnFullscreen;
 
     // `translucentNavigationBarOnFullscreen` is used in `onCreate()` and `applySettings()`.
     private boolean translucentNavigationBarOnFullscreen;
 
+    // `findOnPageLinearLayout` is used in `onCreate()`, `onOptionsItemSelected()`, and `closeFindOnPage()`.
+    private LinearLayout findOnPageLinearLayout;
+
+    // `findOnPageEditText` is used in `onCreate()`, `onOptionsItemSelected()`, and `closeFindOnPage()`.
+    private EditText findOnPageEditText;
+
     // `mainMenu` is used in `onCreateOptionsMenu()` and `updatePrivacyIcons()`.
     private Menu mainMenu;
 
     // `drawerToggle` is used in `onCreate()`, `onPostCreate()`, `onConfigurationChanged()`, `onNewIntent()`, and `onNavigationItemSelected()`.
     private ActionBarDrawerToggle drawerToggle;
 
+    // `supportAppBar` is used in `onCreate()`, `onOptionsItemSelected()`, and `closeFindOnPage()`.
+    private Toolbar supportAppBar;
+
     // `urlTextBox` is used in `onCreate()`, `onOptionsItemSelected()`, and `loadUrlFromTextBox()`.
     private EditText urlTextBox;
 
@@ -206,7 +220,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
 
         // We need to use the `SupportActionBar` from `android.support.v7.app.ActionBar` until the minimum API is >= 21.
-        Toolbar supportAppBar = (Toolbar) findViewById(R.id.app_bar);
+        supportAppBar = (Toolbar) findViewById(R.id.app_bar);
         setSupportActionBar(supportAppBar);
         appBar = getSupportActionBar();
 
@@ -243,6 +257,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         drawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
         rootCoordinatorLayout = (CoordinatorLayout) findViewById(R.id.root_coordinatorlayout);
         mainWebView = (WebView) findViewById(R.id.mainWebView);
+        findOnPageLinearLayout = (LinearLayout) findViewById(R.id.find_on_page_linearlayout);
         findOnPageEditText = (EditText) findViewById(R.id.find_on_page_edittext);
         fullScreenVideoFrameLayout = (FrameLayout) findViewById(R.id.full_screen_video_framelayout);
 
@@ -251,68 +266,75 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
             // Override `onDoubleTap()`.  All other events are handled using the default settings.
             @Override
             public boolean onDoubleTap(MotionEvent event) {
-                if (appBar.isShowing()) {  // If `appBar` is visible, switch to full screen mode.
-                    // Hide the `appBar`.
-                    appBar.hide();
+                if (fullScreenBrowsingModeEnabled) {  // Only process the double-tap if full screen browsing mode is enabled.
+                    // Toggle `inFullScreenBrowsingMode`.
+                    inFullScreenBrowsingMode = !inFullScreenBrowsingMode;
 
-                    // Hide the `BannerAd` in the free flavor.
-                    if (BuildConfig.FLAVOR.contentEquals("free")) {
-                        BannerAd.hideAd(adView);
-                    }
+                    if (inFullScreenBrowsingMode) {  // Switch to full screen mode.
+                        // Hide the `appBar`.
+                        appBar.hide();
 
-                    // Modify the system bars.
-                    if (hideSystemBarsOnFullscreen) {  // Hide everything.
-                        // Remove the translucent overlays.
-                        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+                        // Hide the `BannerAd` in the free flavor.
+                        if (BuildConfig.FLAVOR.contentEquals("free")) {
+                            BannerAd.hideAd(adView);
+                        }
+
+                        // Modify the system bars.
+                        if (hideSystemBarsOnFullscreen) {  // Hide everything.
+                            // Remove the translucent overlays.
+                            getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
 
-                        // Remove the translucent status bar overlay on the `Drawer Layout`, which is special and needs its own command.
-                        drawerLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
+                            // Remove the translucent status bar overlay on the `Drawer Layout`, which is special and needs its own command.
+                            drawerLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
 
                         /* SYSTEM_UI_FLAG_FULLSCREEN hides the status bar at the top of the screen.
                          * SYSTEM_UI_FLAG_HIDE_NAVIGATION hides the navigation bar on the bottom or right of the screen.
                          * SYSTEM_UI_FLAG_IMMERSIVE_STICKY makes the status and navigation bars translucent and automatically rehides them after they are shown.
                          */
-                        rootCoordinatorLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
+                            rootCoordinatorLayout.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
+
+                            // Set `rootCoordinatorLayout` to fill the whole screen.
+                            rootCoordinatorLayout.setFitsSystemWindows(false);
+                        } else {  // Hide everything except the status and navigation bars.
+                            // Set `rootCoordinatorLayout` to fit under the status and navigation bars.
+                            rootCoordinatorLayout.setFitsSystemWindows(false);
+
+                            if (translucentNavigationBarOnFullscreen) {  // There is an Android Support Library bug that causes a scrim to print on the right side of the `Drawer Layout` when the navigation bar is displayed on the right of the screen.
+                                // Set the navigation bar to be translucent.
+                                getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
+                            }
+                        }
+                    } else {  // Switch to normal viewing mode.
+                        // Show the `appBar`.
+                        appBar.show();
 
-                        // Set `rootCoordinatorLayout` to fill the whole screen.
-                        rootCoordinatorLayout.setFitsSystemWindows(false);
-                    } else {  // Hide everything except the status and navigation bars.
-                        // Set `rootCoordinatorLayout` to fit under the status and navigation bars.
-                        rootCoordinatorLayout.setFitsSystemWindows(false);
+                        // Show the `BannerAd` in the free flavor.
+                        if (BuildConfig.FLAVOR.contentEquals("free")) {
+                            // Reload the ad.  Because the screen may have rotated, we need to use `reloadAfterRotate`.
+                            BannerAd.reloadAfterRotate(adView, getApplicationContext(), getString(R.string.ad_id));
 
-                        if (translucentNavigationBarOnFullscreen) {  // There is an Android Support Library bug that causes a scrim to print on the right side of the `Drawer Layout` when the navigation bar is displayed on the right of the screen.
-                            // Set the navigation bar to be translucent.
-                            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
+                            // Reinitialize the `adView` variable, as the `View` will have been removed and re-added by `BannerAd.reloadAfterRotate()`.
+                            adView = findViewById(R.id.adView);
                         }
-                    }
-                } else {  // Switch to normal viewing mode.
-                    // Show the `appBar`.
-                    appBar.show();
-
-                    // Show the `BannerAd` in the free flavor.
-                    if (BuildConfig.FLAVOR.contentEquals("free")) {
-                        // Reload the ad.  Because the screen may have rotated, we need to use `reloadAfterRotate`.
-                        BannerAd.reloadAfterRotate(adView, getApplicationContext(), getString(R.string.ad_id));
 
-                        // Reinitialize the `adView` variable, as the `View` will have been removed and re-added by `BannerAd.reloadAfterRotate()`.
-                        adView = findViewById(R.id.adView);
-                    }
+                        // Remove the translucent navigation bar flag if it is set.
+                        getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
 
-                    // Remove the translucent navigation bar flag if it is set.
-                    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
+                        // Add the translucent status flag if it is unset.  This also resets `drawerLayout's` `View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN`.
+                        getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
 
-                    // Add the translucent status flag if it is unset.  This also resets `drawerLayout's` `View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN`.
-                    getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+                        // Remove any `SYSTEM_UI` flags from `rootCoordinatorLayout`.
+                        rootCoordinatorLayout.setSystemUiVisibility(0);
 
-                    // Remove any `SYSTEM_UI` flags from `rootCoordinatorLayout`.
-                    rootCoordinatorLayout.setSystemUiVisibility(0);
+                        // Constrain `rootCoordinatorLayout` inside the status and navigation bars.
+                        rootCoordinatorLayout.setFitsSystemWindows(true);
+                    }
 
-                    // Constrain `rootCoordinatorLayout` inside the status and navigation bars.
-                    rootCoordinatorLayout.setFitsSystemWindows(true);
+                    // Consume the double-tap.
+                    return true;
+                } else { // Do not consume the double-tap because full screen browsing mode is disabled.
+                    return false;
                 }
-
-                // Consume the double-tap.
-                return true;
             }
         });
 
@@ -598,7 +620,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         // Replace the header that `WebView` creates for `X-Requested-With` with a null value.  The default value is the application ID (com.stoutner.privacybrowser.standard).
         customHeaders.put("X-Requested-With", "");
 
-        // Initialize the default preference values the first time the program is run.
+        // Initialize the default preference values the first time the program is run.  `this` is the context.  `false` keeps this command from resetting any current preferences back to default.
         PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
 
         // Apply the settings from the shared preferences.
@@ -629,6 +651,9 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
             favoriteIcon = favoriteIconBitmapDrawable.getBitmap();
         }
 
+        // Initialize `inFullScreenBrowsingMode`, which is always false at this point because Privacy Browser never starts in full screen browsing mode.
+        inFullScreenBrowsingMode = false;
+
         // Initialize AdView for the free flavor and request an ad.  If this is not the free flavor BannerAd.requestAd() does nothing.
         adView = findViewById(R.id.adView);
         BannerAd.requestAd(adView);
@@ -936,7 +961,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
             case R.id.clearFormData:
                 WebViewDatabase mainWebViewDatabase = WebViewDatabase.getInstance(this);
                 mainWebViewDatabase.clearFormData();
-                mainWebView.reload();
+                Snackbar.make(findViewById(R.id.mainWebView), R.string.form_data_deleted, Snackbar.LENGTH_SHORT).show();
                 return true;
 
             case R.id.fontSizeFiftyPercent:
@@ -969,11 +994,9 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
 
             case R.id.find_on_page:
                 // Hide the URL app bar.
-                Toolbar appBarToolbar = (Toolbar) findViewById(R.id.app_bar);
-                appBarToolbar.setVisibility(View.GONE);
+                supportAppBar.setVisibility(View.GONE);
 
                 // Show the Find on Page `RelativeLayout`.
-                LinearLayout findOnPageLinearLayout = (LinearLayout) findViewById(R.id.find_on_page_linearlayout);
                 findOnPageLinearLayout.setVisibility(View.VISIBLE);
 
                 // Display the keyboard.  We have to wait 200 ms before running the command to work around a bug in Android.
@@ -1108,8 +1131,8 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                 domStorage.deleteAllData();
 
                 // Clear form data.
-                WebViewDatabase formData = WebViewDatabase.getInstance(this);
-                formData.clearFormData();
+                WebViewDatabase webViewDatabase = WebViewDatabase.getInstance(this);
+                webViewDatabase.clearFormData();
 
                 // Clear cache.  The argument of "true" includes disk files.
                 mainWebView.clearCache(true);
@@ -1187,6 +1210,9 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         final String imageUrl;
         final String linkUrl;
 
+        // Get a handle for the `ClipboardManager`.
+        final ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
+
         switch (hitTestResult.getType()) {
             // `SRC_ANCHOR_TYPE` is a link.
             case WebView.HitTestResult.SRC_ANCHOR_TYPE:
@@ -1196,7 +1222,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                 // Set the target URL as the title of the `ContextMenu`.
                 menu.setHeaderTitle(linkUrl);
 
-                // Add a `Load URL` button.
+                // Add a `Load URL` entry.
                 menu.add(R.string.load_url).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -1205,7 +1231,20 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                     }
                 });
 
-                // Add a `Cancel` button, which by default closes the `ContextMenu`.
+                // Add a `Copy URL` entry.
+                menu.add(R.string.copy_url).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+                    @Override
+                    public boolean onMenuItemClick(MenuItem item) {
+                        // Save the link URL in a `ClipData`.
+                        ClipData srcAnchorTypeClipData = ClipData.newPlainText(getResources().getString(R.string.url), linkUrl);
+
+                        // Set the `ClipData` as the clipboard's primary clip.
+                        clipboardManager.setPrimaryClip(srcAnchorTypeClipData);
+                        return false;
+                    }
+                });
+
+                // Add a `Cancel` entry, which by default closes the `ContextMenu`.
                 menu.add(R.string.cancel);
                 break;
 
@@ -1216,7 +1255,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                 // Set the target URL as the title of the `ContextMenu`.
                 menu.setHeaderTitle(linkUrl);
 
-                // Add a `Write Email` button.
+                // Add a `Write Email` entry.
                 menu.add(R.string.write_email).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -1235,7 +1274,20 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                     }
                 });
 
-                // Add a `Cancel` button, which by default closes the `ContextMenu`.
+                // Add a `Copy Email Address` entry.
+                menu.add(R.string.copy_email_address).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+                    @Override
+                    public boolean onMenuItemClick(MenuItem item) {
+                        // Save the email address in a `ClipData`.
+                        ClipData srcEmailTypeClipData = ClipData.newPlainText(getResources().getString(R.string.email_address), linkUrl);
+
+                        // Set the `ClipData` as the clipboard's primary clip.
+                        clipboardManager.setPrimaryClip(srcEmailTypeClipData);
+                        return false;
+                    }
+                });
+
+                // Add a `Cancel` entry, which by default closes the `ContextMenu`.
                 menu.add(R.string.cancel);
                 break;
 
@@ -1247,7 +1299,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                 // Set the image URL as the title of the `ContextMenu`.
                 menu.setHeaderTitle(imageUrl);
 
-                // Add a `View Image` button.
+                // Add a `View Image` entry.
                 menu.add(R.string.view_image).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -1256,7 +1308,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                     }
                 });
 
-                // Add a `Download Image` button.
+                // Add a `Download Image` entry.
                 menu.add(R.string.download_image).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -1267,7 +1319,20 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                     }
                 });
 
-                // Add a `Cancel` button, which by default closes the `ContextMenu`.
+                // Add a `Copy URL` entry.
+                menu.add(R.string.copy_url).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+                    @Override
+                    public boolean onMenuItemClick(MenuItem item) {
+                        // Save the image URL in a `ClipData`.
+                        ClipData srcImageTypeClipData = ClipData.newPlainText(getResources().getString(R.string.url), imageUrl);
+
+                        // Set the `ClipData` as the clipboard's primary clip.
+                        clipboardManager.setPrimaryClip(srcImageTypeClipData);
+                        return false;
+                    }
+                });
+
+                // Add a `Cancel` entry, which by default closes the `ContextMenu`.
                 menu.add(R.string.cancel);
                 break;
 
@@ -1280,7 +1345,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                 // Set the image URL as the title of the `ContextMenu`.
                 menu.setHeaderTitle(imageUrl);
 
-                // Add a `View Image` button.
+                // Add a `View Image` entry.
                 menu.add(R.string.view_image).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -1289,7 +1354,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                     }
                 });
 
-                // Add a `Download Image` button.
+                // Add a `Download Image` entry.
                 menu.add(R.string.download_image).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                     @Override
                     public boolean onMenuItemClick(MenuItem item) {
@@ -1300,7 +1365,20 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
                     }
                 });
 
-                // Add a `Cancel` button, which by default closes the `ContextMenu`.
+                // Add a `Copy URL` entry.
+                menu.add(R.string.copy_url).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
+                    @Override
+                    public boolean onMenuItemClick(MenuItem item) {
+                        // Save the image URL in a `ClipData`.
+                        ClipData srcImageAnchorTypeClipData = ClipData.newPlainText(getResources().getString(R.string.url), imageUrl);
+
+                        // Set the `ClipData` as the clipboard's primary clip.
+                        clipboardManager.setPrimaryClip(srcImageAnchorTypeClipData);
+                        return false;
+                    }
+                });
+
+                // Add a `Cancel` entry, which by default closes the `ContextMenu`.
                 menu.add(R.string.cancel);
                 break;
         }
@@ -1544,12 +1622,10 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         mainWebView.clearMatches();
 
         // Hide the Find on Page `RelativeLayout`.
-        LinearLayout findOnPageLinearLayout = (LinearLayout) findViewById(R.id.find_on_page_linearlayout);
         findOnPageLinearLayout.setVisibility(View.GONE);
 
         // Show the URL app bar.
-        Toolbar appBarToolbar = (Toolbar) findViewById(R.id.app_bar);
-        appBarToolbar.setVisibility(View.VISIBLE);
+        supportAppBar.setVisibility(View.VISIBLE);
 
         // Hide the keyboard so we can see the webpage.  `0` indicates no additional flags.
         inputMethodManager.hideSoftInputFromWindow(mainWebView.getWindowToken(), 0);
@@ -1560,7 +1636,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
 
         // Store the values from `sharedPreferences` in variables.
-        String userAgentString = sharedPreferences.getString("user_agent", "Default user agent");
+        String userAgentString = sharedPreferences.getString("user_agent", "PrivacyBrowser/1.0");
         String customUserAgentString = sharedPreferences.getString("custom_user_agent", "PrivacyBrowser/1.0");
         String javaScriptDisabledSearchString = sharedPreferences.getString("javascript_disabled_search", "https://duckduckgo.com/html/?q=");
         String javaScriptDisabledCustomSearchString = sharedPreferences.getString("javascript_disabled_search_custom_url", "");
@@ -1571,6 +1647,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         swipeToRefreshEnabled = sharedPreferences.getBoolean("swipe_to_refresh_enabled", false);
         boolean doNotTrackEnabled = sharedPreferences.getBoolean("do_not_track", true);
         boolean proxyThroughOrbot = sharedPreferences.getBoolean("proxy_through_orbot", false);
+        fullScreenBrowsingModeEnabled = sharedPreferences.getBoolean("enable_full_screen_browsing_mode", false);
         hideSystemBarsOnFullscreen = sharedPreferences.getBoolean("hide_system_bars", false);
         translucentNavigationBarOnFullscreen = sharedPreferences.getBoolean("translucent_navigation_bar", true);
 
@@ -1648,7 +1725,7 @@ public class MainWebView extends AppCompatActivity implements NavigationView.OnN
         }
 
         // If we are in full screen mode update the `SYSTEM_UI` flags.
-        if (!appBar.isShowing()) {
+        if (inFullScreenBrowsingMode) {
             if (hideSystemBarsOnFullscreen) {  // Hide everything.
                 // Remove the translucent navigation setting if it is currently flagged.
                 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);