Gello: LookLock

Prevent apps from reading gello webview content by using FLAG_SECURE

Change-Id: I7e3413104c4f71b11da4c55b45eeab05d133ea1f
Signed-off-by: jrizzoli <joey@cyanogenmoditalia.it>
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";