Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c9bebf5 authored by Tony Huang's avatar Tony Huang
Browse files

Implement pause search history

Use preferences to enable or disable search history recording.

Bug: 138173111
Test: manual
Test: atest DocumentsUIGoogleTests
Change-Id: I105184198a0d527c430a4eb3fa4e6efdf996e947
parent 7b1ba41e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -247,7 +247,7 @@ public abstract class BaseActivity

        ViewGroup chipGroup = findViewById(R.id.search_chip_group);
        mSearchManager = new SearchViewManager(searchListener, queryInterceptor,
                chipGroup, icicle);
                chipGroup, icicle, mInjector.prefs::isRecordSearch);
        // initialize the chip sets by accept mime types
        mSearchManager.initChipSets(mState.acceptMimes);
        // update the chip items by the mime types of the root
+22 −2
Original line number Diff line number Diff line
@@ -30,12 +30,22 @@ import com.android.documentsui.R;
 */
public interface ScopedPreferences {

    static final String INCLUDE_DEVICE_ROOT = "includeDeviceRoot";
    static final String ENABLE_ARCHIVE_CREATION = "enableArchiveCreation-";
    String INCLUDE_DEVICE_ROOT = "includeDeviceRoot";
    String RECORD_SEARCH = "recordSearch";

    boolean getShowDeviceRoot();
    void setShowDeviceRoot(boolean display);

    /**
     * Get boolean preferences values of recordSearch.
     */
    boolean isRecordSearch();

    /**
     * Set boolean preferences values of recordSearch.
     */
    void setRecordSearch(boolean show);

    /**
     * @param scope An arbitrary string representitive of the scope
     *        for prefs that are set using this object.
@@ -70,6 +80,16 @@ public interface ScopedPreferences {
        public void setShowDeviceRoot(boolean display) {
            mSharedPrefs.edit().putBoolean(INCLUDE_DEVICE_ROOT, display).apply();
        }

        @Override
        public boolean isRecordSearch() {
            return mSharedPrefs.getBoolean(RECORD_SEARCH, true);
        }

        @Override
        public void setRecordSearch(boolean show) {
            mSharedPrefs.edit().putBoolean(RECORD_SEARCH, show).apply();
        }
    }

    static boolean shouldBackup(String s) {
+16 −2
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;

import androidx.annotation.GuardedBy;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.widget.SearchView;
@@ -54,6 +55,7 @@ import com.android.documentsui.base.State;

import java.util.Timer;
import java.util.TimerTask;
import java.util.function.BooleanSupplier;

/**
 * Manages searching UI behavior.
@@ -72,6 +74,7 @@ public class SearchViewManager implements
    private final SearchChipViewManager mChipViewManager;
    private final Timer mTimer;
    private final Handler mUiHandler;
    private final BooleanSupplier mRecordSearchSupplier;

    private final Object mSearchLock;
    @GuardedBy("mSearchLock")
@@ -94,9 +97,10 @@ public class SearchViewManager implements
            SearchManagerListener listener,
            EventHandler<String> commandProcessor,
            ViewGroup chipGroup,
            @Nullable Bundle savedState) {
            @Nullable Bundle savedState,
            @NonNull BooleanSupplier recordSearchSupplier) {
        this(listener, commandProcessor, new SearchChipViewManager(chipGroup), savedState,
                new Timer(), new Handler(Looper.getMainLooper()));
                recordSearchSupplier, new Timer(), new Handler(Looper.getMainLooper()));
    }

    @VisibleForTesting
@@ -105,6 +109,7 @@ public class SearchViewManager implements
            EventHandler<String> commandProcessor,
            SearchChipViewManager chipViewManager,
            @Nullable Bundle savedState,
            @NonNull BooleanSupplier recordSearchSupplier,
            Timer timer,
            Handler handler) {
        assert (listener != null);
@@ -117,6 +122,7 @@ public class SearchViewManager implements
        mUiHandler = handler;
        mChipViewManager = chipViewManager;
        mChipViewManager.setSearchChipViewManagerListener(this::onChipCheckedStateChanged);
        mRecordSearchSupplier = recordSearchSupplier;

        if (savedState != null) {
            mCurrentSearch = savedState.getString(Shared.EXTRA_QUERY);
@@ -538,6 +544,14 @@ public class SearchViewManager implements
     * Record current search for history.
     */
    public void recordHistory() {
        if (!mRecordSearchSupplier.getAsBoolean()) {
            return;
        }

        recordHistoryInternal();
    }

    protected void recordHistoryInternal() {
        SearchHistoryManager.getInstance(
                mSearchView.getContext().getApplicationContext()).addHistory(mCurrentSearch);
    }
+12 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import com.android.documentsui.prefs.ScopedPreferences;
public class TestScopedPreferences implements ScopedPreferences {

    private boolean mShowDeviceRoot;
    private boolean mIsRecordSearch;

    @Override
    public boolean getShowDeviceRoot() {
@@ -34,4 +35,14 @@ public class TestScopedPreferences implements ScopedPreferences {
    public void setShowDeviceRoot(boolean display) {
        mShowDeviceRoot = display;
    }

    @Override
    public boolean isRecordSearch() {
        return mIsRecordSearch;
    }

    @Override
    public void setRecordSearch(boolean show) {
        mIsRecordSearch = show;
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ public class TestSearchViewManager extends SearchViewManager {
                    }
                },
                new CommandInterceptor(new TestFeatures()), mock(ViewGroup.class),
                null /* savedState */);
                null /* savedState */, () -> true /* recordSearchSupplier */);
    }

    @Override
Loading