diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index c2e6050..508d2c9 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -49,6 +49,7 @@
 import android.widget.ImageView;
 import android.widget.Toast;
 import android.content.res.TypedArray;
+import android.util.Log;
 
 import org.codeaurora.swe.BrowserCommandLine;
 import org.codeaurora.swe.WebView;
@@ -137,6 +138,15 @@
                 .getDecorView().findViewById(android.R.id.content);
         LayoutInflater.from(mActivity)
                 .inflate(R.layout.custom_screen, frameLayout);
+
+        // If looklock is enabled, set FLAG_SECURE
+        if (BrowserSettings.getInstance().isLookLockEnabled()) {
+            mActivity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
+                    WindowManager.LayoutParams.FLAG_SECURE);
+        } else {
+            mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
+        }
+
         mContentView = (FrameLayout) frameLayout.findViewById(
                 R.id.main_content);
         mCustomViewContainer = (FrameLayout) frameLayout.findViewById(
@@ -180,6 +190,12 @@
     // lifecycle
 
     public void onPause() {
+        if (BrowserSettings.getInstance().isLookLockEnabled()) {
+            mActivity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
+                    WindowManager.LayoutParams.FLAG_SECURE);
+        } else {
+            mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
+        }
         if (isCustomViewShowing()) {
             onHideCustomView();
         }
@@ -192,6 +208,12 @@
 
     public void onResume() {
         mActivityPaused = false;
+        if (BrowserSettings.getInstance().isLookLockEnabled()) {
+            mActivity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
+                    WindowManager.LayoutParams.FLAG_SECURE);
+        } else {
+            mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
+        }
         // check if we exited without setting active tab
         // b: 5188145
         setFullscreen(BrowserSettings.getInstance().useFullscreen());
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 2bdfa0f..1da2046 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -909,6 +909,14 @@
         mPrefs.edit().putBoolean(PREF_COLOREDSB_ENABLED, value).apply();
     }
 
+    public boolean isLookLockEnabled() {
+        return mPrefs.getBoolean(PREF_LOOKLOCK_ENABLED, false);
+    }
+
+    public void setLookLockEnabled(boolean value) {
+        mPrefs.edit().putBoolean(PREF_LOOKLOCK_ENABLED, value).apply();
+    }
+
     public boolean isPowerSaveModeEnabled() {
         return mPrefs.getBoolean(PREF_POWERSAVE_ENABLED, false);
     }
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index b4b2976..9bd12dc 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -63,6 +63,7 @@
     static final String PREF_HOMEPAGE = "homepage";
     static final String PREF_POWERSAVE_ENABLED = "powersave_enabled";
     static final String PREF_COLOREDSB_ENABLED = "coloredsb_enabled";
+    static final String PREF_LOOKLOCK_ENABLED = "looklock_key";
     static final String PREF_NIGHTMODE_ENABLED = "nightmode_enabled";
     static final String PREF_SYNC_WITH_CHROME = "sync_with_chrome";
 
