commit 977e468c7f83b78cf920a7aa4943147eda195c45 Author: Igor Oliveira igt0@torproject.org Date: Mon Nov 19 14:58:15 2018 -0200
Bug 28507: Implement fallback to delete private data in the browser startup
When the TBA is forcefully closed, its private data is not deleted, even if the history.clear_on_exit is set.
As fallback, this patch calls the Sanitize:ClearData event in the browser startup to clean the private data if needed. --- .../android/base/java/org/mozilla/gecko/GeckoApp.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-)
diff --git a/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java b/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java index ef7da17e19a1..3741c26fe0e8 100644 --- a/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java @@ -564,10 +564,7 @@ public abstract class GeckoApp extends GeckoActivity return super.onOptionsItemSelected(item); }
- private void quitAndClear() { - // Make sure the Guest Browsing notification goes away when we quit. - GuestSession.hideNotification(this); - + private GeckoBundle createSanitizeData() { final SharedPreferences prefs = getSharedPreferencesForProfile(); final Set<String> clearSet = PrefUtils.getStringSet( prefs, ClearOnShutdownPref.PREF, new HashSet<String>()); @@ -576,7 +573,14 @@ public abstract class GeckoApp extends GeckoActivity for (final String clear : clearSet) { clearObj.putBoolean(clear, true); } + return clearObj; + }
+ private void quitAndClear() { + // Make sure the Guest Browsing notification goes away when we quit. + GuestSession.hideNotification(this); + + final GeckoBundle clearObj = createSanitizeData(); final GeckoBundle res = new GeckoBundle(2); res.putBundle("sanitize", clearObj);
@@ -1135,6 +1139,13 @@ public abstract class GeckoApp extends GeckoActivity mTextSelection.create();
final Bundle finalSavedInstanceState = savedInstanceState; + + // When the browser is forcefully closed, its private data is not + // deleted, even if the history.clear_on_exit is set. Here we are calling + // the Sanitize:ClearData in the startup to make sure the private + // data was cleared. + EventDispatcher.getInstance().dispatch("Sanitize:ClearData", createSanitizeData()); + ThreadUtils.postToBackgroundThread(new Runnable() { @Override public void run() {