Wikinaut has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/248075

Change subject: Incognito mode: (search and article) history on/off
......................................................................

Incognito mode: (search and article) history on/off

Added a single preference option to enable/disable both the
search and article history.

Added a new Prefs section "Privacy settings" for this and
similar privacy settings.

When disabling, both the search and article history are
automatically deleted.

Info messages are shown on search and article history
if the histories are disabled in the settings.

Bug: T96546
Bug: T115776
Follow up to I6697eca28e6683101100361cf3dd95d4860d3154

Change-Id: I92ec34150a37e37de18770c52abf8fd266512ab8
---
A app/src/main/java/org/wikipedia/history/DeleteAllHistoryTask.java
M app/src/main/java/org/wikipedia/history/HistoryFragment.java
M app/src/main/java/org/wikipedia/history/SaveHistoryTask.java
M app/src/main/java/org/wikipedia/search/RecentSearchesFragment.java
M app/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
M app/src/main/java/org/wikipedia/settings/Prefs.java
M app/src/main/java/org/wikipedia/settings/SettingsFragment.java
M app/src/main/res/layout/fragment_search_recent.xml
M app/src/main/res/values/preference_keys.xml
M app/src/main/res/values/strings.xml
M app/src/main/res/xml/preferences.xml
11 files changed, 119 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/75/248075/1

diff --git a/app/src/main/java/org/wikipedia/history/DeleteAllHistoryTask.java 
b/app/src/main/java/org/wikipedia/history/DeleteAllHistoryTask.java
new file mode 100644
index 0000000..8625b56
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/history/DeleteAllHistoryTask.java
@@ -0,0 +1,22 @@
+package org.wikipedia.history;
+
+import android.content.Context;
+
+import org.wikipedia.WikipediaApp;
+import org.wikipedia.concurrency.SaneAsyncTask;
+
+/** AsyncTask to clear out article history entries. */
+public class DeleteAllHistoryTask extends SaneAsyncTask<Void> {
+    private final WikipediaApp app;
+
+    public DeleteAllHistoryTask(Context context) {
+        super(SINGLE_THREAD);
+        app = (WikipediaApp) context.getApplicationContext();
+    }
+
+    @Override
+    public Void performTask() throws Throwable {
+        app.getPersister(HistoryEntry.class).deleteAll();
+        return null;
+    }
+}
diff --git a/app/src/main/java/org/wikipedia/history/HistoryFragment.java 
b/app/src/main/java/org/wikipedia/history/HistoryFragment.java
index 5eecf48..18db815 100644
--- a/app/src/main/java/org/wikipedia/history/HistoryFragment.java
+++ b/app/src/main/java/org/wikipedia/history/HistoryFragment.java
@@ -32,6 +32,7 @@
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.page.PageActivity;
 import org.wikipedia.pageimages.PageImage;
+import org.wikipedia.settings.Prefs;
 
 import java.text.DateFormat;
 import java.util.Date;
@@ -73,6 +74,16 @@
 
         app.adjustDrawableToTheme(((ImageView) 
rootView.findViewById(R.id.history_empty_image)).getDrawable());
         return rootView;
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (Prefs.isRememberHistoryEnabled()) {
+            historyEmptyMessage.setText(R.string.history_empty_message);
+        } else {
+            
historyEmptyMessage.setText(R.string.remember_history_is_disabled_message);
+        }
     }
 
     @Override
@@ -325,7 +336,7 @@
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         // Clear history!
-                        app.getPersister(HistoryEntry.class).deleteAll();
+                        new DeleteAllHistoryTask(app).execute();
                         entryFilter.setVisibility(View.GONE);
                     }
                 });
diff --git a/app/src/main/java/org/wikipedia/history/SaveHistoryTask.java 
b/app/src/main/java/org/wikipedia/history/SaveHistoryTask.java
index 492e94d..f5c277c 100644
--- a/app/src/main/java/org/wikipedia/history/SaveHistoryTask.java
+++ b/app/src/main/java/org/wikipedia/history/SaveHistoryTask.java
@@ -3,6 +3,7 @@
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.concurrency.SaneAsyncTask;
 import org.wikipedia.data.ContentPersister;
+import org.wikipedia.settings.Prefs;
 
 import android.util.Log;
 
@@ -21,14 +22,16 @@
 
     @Override
     public Void performTask() throws Throwable {
-        // Instead of "upserting" the history entry, we'll delete and 
re-persist it.
-        // This is because upserting will update all previous instances of the 
history entry,
-        // and won't collapse them into a single entry at the top. Deleting it 
will ensure
-        // that all previous instances will be deleted, and then only the most 
recent instance
-        // will be placed at the top.
-        final ContentPersister persister = 
app.getPersister(HistoryEntry.class);
-        persister.delete(entry, 
HistoryEntry.PERSISTENCE_HELPER.SELECTION_KEYS);
-        persister.persist(entry);
+        if (Prefs.isRememberHistoryEnabled()) {
+            // Instead of "upserting" the history entry, we'll delete and 
re-persist it.
+            // This is because upserting will update all previous instances of 
the history entry,
+            // and won't collapse them into a single entry at the top. 
Deleting it will ensure
+            // that all previous instances will be deleted, and then only the 
most recent instance
+            // will be placed at the top.
+            final ContentPersister persister = 
app.getPersister(HistoryEntry.class);
+            persister.delete(entry, 
HistoryEntry.PERSISTENCE_HELPER.SELECTION_KEYS);
+            persister.persist(entry);
+        }
         return null;
     }
 
diff --git a/app/src/main/java/org/wikipedia/search/RecentSearchesFragment.java 
b/app/src/main/java/org/wikipedia/search/RecentSearchesFragment.java
index 5b07374..5651dbd 100644
--- a/app/src/main/java/org/wikipedia/search/RecentSearchesFragment.java
+++ b/app/src/main/java/org/wikipedia/search/RecentSearchesFragment.java
@@ -1,8 +1,11 @@
 package org.wikipedia.search;
 
 import org.wikipedia.R;
+import org.wikipedia.settings.Prefs;
+
 import android.content.Context;
 import android.database.Cursor;
+import android.graphics.Typeface;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.LoaderManager;
@@ -24,6 +27,7 @@
     private SearchArticlesFragment searchFragment;
     private View container;
     private ListView recentSearchesList;
+    private TextView recentSearchesHeader;
     private RecentSearchesAdapter adapter;
 
     public RecentSearchesFragment() {
@@ -35,9 +39,22 @@
         searchFragment = 
(SearchArticlesFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.search_fragment);
         this.container = rootView.findViewById(R.id.recent_searches_container);
         recentSearchesList = (ListView) 
rootView.findViewById(R.id.recent_searches_list);
+        recentSearchesHeader = (TextView) 
rootView.findViewById(R.id.recent_searches_header);
         return rootView;
     }
 
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (Prefs.isRememberHistoryEnabled()) {
+            recentSearchesHeader.setText(R.string.search_recent_header);
+            recentSearchesHeader.setTypeface(null, Typeface.BOLD);
+        } else {
+            
recentSearchesHeader.setText(R.string.remember_search_history_is_disabled_message);
+            recentSearchesHeader.setTypeface(null, Typeface.NORMAL);
+        }
+    }
+
     public void show() {
         container.setVisibility(View.VISIBLE);
     }
diff --git a/app/src/main/java/org/wikipedia/search/SearchArticlesFragment.java 
b/app/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
index d08097a..7bf1d54 100644
--- a/app/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
+++ b/app/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
@@ -11,6 +11,7 @@
 import org.wikipedia.history.HistoryEntry;
 import org.wikipedia.page.PageActivity;
 import org.wikipedia.settings.LanguagePreferenceDialog;
+import org.wikipedia.settings.Prefs;
 
 import com.squareup.otto.Subscribe;
 
@@ -412,7 +413,7 @@
     }
 
     private void addRecentSearch(String title) {
-        if (isValidQuery(title)) {
+        if (isValidQuery(title) && Prefs.isRememberHistoryEnabled()) {
             new SaveRecentSearchTask(new RecentSearch(title)).execute();
         }
     }
diff --git a/app/src/main/java/org/wikipedia/settings/Prefs.java 
b/app/src/main/java/org/wikipedia/settings/Prefs.java
index 0b5dd29..9a4314e 100644
--- a/app/src/main/java/org/wikipedia/settings/Prefs.java
+++ b/app/src/main/java/org/wikipedia/settings/Prefs.java
@@ -99,6 +99,10 @@
         return getBoolean(R.string.preference_key_auto_upload_crash_reports, 
true);
     }
 
+    public static boolean isRememberHistoryEnabled() {
+        return getBoolean(R.string.preference_key_remember_history, true);
+    }
+
     public static boolean isShowDeveloperSettingsEnabled() {
         return getBoolean(R.string.preference_key_show_developer_settings,
                 WikipediaApp.getInstance().isDevRelease());
diff --git a/app/src/main/java/org/wikipedia/settings/SettingsFragment.java 
b/app/src/main/java/org/wikipedia/settings/SettingsFragment.java
index 449b881..ada5944 100644
--- a/app/src/main/java/org/wikipedia/settings/SettingsFragment.java
+++ b/app/src/main/java/org/wikipedia/settings/SettingsFragment.java
@@ -1,13 +1,21 @@
 package org.wikipedia.settings;
 
 import android.os.Bundle;
+import android.preference.Preference;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
 
 import org.wikipedia.R;
+import org.wikipedia.WikipediaApp;
+import org.wikipedia.history.DeleteAllHistoryTask;
+import org.wikipedia.search.DeleteAllRecentSearchesTask;
+
 
 public class SettingsFragment extends PreferenceLoaderFragment {
+
+    private WikipediaApp app;
+
     public static SettingsFragment newInstance() {
         return new SettingsFragment();
     }
@@ -22,6 +30,7 @@
     public void loadPreferences() {
         SettingsPreferenceLoader preferenceLoader = new 
SettingsPreferenceLoader(this);
         preferenceLoader.loadPreferences();
+        
setupRememberHistoryButton(findPreference(getString(R.string.preference_key_remember_history)));
     }
 
     @Override
@@ -64,4 +73,23 @@
     private void invalidateOptionsMenu() {
         getFragmentManager().invalidateOptionsMenu();
     }
+
+    private void setupRememberHistoryButton(Preference button) {
+        button.setOnPreferenceChangeListener(rememberHistoryChangeListener());
+    }
+
+    private Preference.OnPreferenceChangeListener 
rememberHistoryChangeListener() {
+        return new Preference.OnPreferenceChangeListener() {
+            @Override
+            public boolean onPreferenceChange(Preference preference, Object 
newValue) {
+                if  (!(Boolean) newValue)  {
+                    app = (WikipediaApp) getActivity().getApplicationContext();
+                    new DeleteAllHistoryTask(app).execute();
+                    new DeleteAllRecentSearchesTask(app).execute();
+                }
+                return true;
+            }
+        };
+    }
+
 }
diff --git a/app/src/main/res/layout/fragment_search_recent.xml 
b/app/src/main/res/layout/fragment_search_recent.xml
index d697eec..13dfad3 100644
--- a/app/src/main/res/layout/fragment_search_recent.xml
+++ b/app/src/main/res/layout/fragment_search_recent.xml
@@ -10,6 +10,7 @@
                  android:layout_height="wrap_content">
 
         <TextView
+            android:id="@+id/recent_searches_header"
             android:layout_width="wrap_content"
             android:layout_height="48dp"
             android:layout_gravity="start"
diff --git a/app/src/main/res/values/preference_keys.xml 
b/app/src/main/res/values/preference_keys.xml
index 0c74af6..5c95fe4 100644
--- a/app/src/main/res/values/preference_keys.xml
+++ b/app/src/main/res/values/preference_keys.xml
@@ -38,4 +38,5 @@
     <string name="preference_key_remote_log">remoteLog</string>
     <!-- Note: this value _must_ match 
net.hockeyapp.android.CrashManager.ALWAYS_SEND_KEY. -->
     <string 
name="preference_key_auto_upload_crash_reports">always_send_crash_reports</string>
+    <string 
name="preference_key_remember_history">remember_article_history</string>
 </resources>
diff --git a/app/src/main/res/values/strings.xml 
b/app/src/main/res/values/strings.xml
index 42191ca..4b339c0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -110,6 +110,7 @@
     <string name="saved_pages_empty_message">Saved pages are pretty awesome. 
Think of them as bookmarks that you can read even when you are offline.</string>
     <string name="history_empty_title">No recent pages here!</string>
     <string name="history_empty_message">You probably deleted all of them. 
Next time you go to a page you can get back to it from here.</string>
+    <string name="remember_history_is_disabled_message">The history is 
disabled in the settings, where it could be enabled.</string>
     <string name="delete_selected_history">Delete</string>
     <string 
name="wp_stylized"><![CDATA[<big>W</big>IKIPEDI<big>A</big>]]></string>
     <string name="create_account_username_hint">Username</string>
@@ -135,6 +136,9 @@
     <string name="create_account_button">Create account</string>
     <string name="preferences_general_heading">General</string>
     <string name="wikipedia_app_faq">Wikipedia App FAQ</string>
+    <string name="preferences_privacy_settings_heading">Privacy 
settings</string>
+    <string name="preference_title_remember_history">Remember history</string>
+    <string name="preference_summary_remember_history">Activate or deactivate 
and delete your article and search history.</string>
     <string name="zero_charged_verbiage">Wikipedia Zero is off</string>
     <string name="zero_charged_verbiage_extended">Loading other articles may 
incur data charges.</string>
     <string name="zero_search_hint">Search Wikipedia Zero</string>
@@ -213,6 +217,7 @@
     <string name="page_similar_titles">Similar pages</string>
     <string name="search_did_you_mean">Did you mean \"%s\"?</string>
     <string name="search_recent_header">Recent searches:</string>
+    <string name="remember_search_history_is_disabled_message">The search 
history is disabled in the settings, where it could be enabled.</string>
     <string name="button_clear_all_recent_searches">Clear recent 
searches</string>
     <string name="clear_recent_searches_confirm">Are you sure you want to 
clear your search history?</string>
     <string name="error_browser_not_found">Could not open web page (no browser 
app found).</string>
diff --git a/app/src/main/res/xml/preferences.xml 
b/app/src/main/res/xml/preferences.xml
index 1ca51bb..bafdbfa 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -18,6 +18,8 @@
             android:title="@string/preference_title_show_link_previews"
             android:summary="@string/preference_summary_show_link_previews"
             />
+    </PreferenceCategory>
+    <PreferenceCategory 
android:title="@string/preferences_privacy_settings_heading">
         <org.wikipedia.settings.CheckBoxPreferenceMultiLine
             android:key="@string/preference_key_eventlogging_opt_in"
             android:defaultValue="true"
@@ -30,22 +32,27 @@
             android:title="@string/preference_title_auto_upload_crash_reports"
             
android:summary="@string/preference_summary_auto_upload_crash_reports"
             />
+        <org.wikipedia.settings.CheckBoxPreferenceMultiLine
+            android:key="@string/preference_key_remember_history"
+            android:defaultValue="true"
+            android:title="@string/preference_title_remember_history"
+            android:summary="@string/preference_summary_remember_history"
+            />
     </PreferenceCategory>
     <PreferenceCategory android:title="@string/zero_wikipedia_zero_heading">
         <org.wikipedia.settings.CheckBoxPreferenceMultiLine
-                android:key="zero_warn_when_leaving"
-                android:title="@string/zero_warn_when_leaving"
-                android:defaultValue="true"
-                android:summary="@string/zero_warn_when_leaving_summary"
-                />
+            android:key="zero_warn_when_leaving"
+            android:title="@string/zero_warn_when_leaving"
+            android:defaultValue="true"
+            android:summary="@string/zero_warn_when_leaving_summary"
+            />
         <org.wikipedia.settings.PreferenceMultiLine
-                android:title="@string/zero_webpage_title"
-                android:summary="@string/zero_webpage_url">
+            android:title="@string/zero_webpage_title"
+            android:summary="@string/zero_webpage_url">
             <intent android:action="android.intent.action.VIEW"
                     android:data="@string/zero_webpage_url"
-                    />
+                />
         </org.wikipedia.settings.PreferenceMultiLine>
-
     </PreferenceCategory>
     <PreferenceCategory android:title="@string/about_activity_title">
         <org.wikipedia.settings.PreferenceMultiLine

-- 
To view, visit https://gerrit.wikimedia.org/r/248075
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I92ec34150a37e37de18770c52abf8fd266512ab8
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Wikinaut <m...@wikinaut.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to