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

Commit e7caed45 authored by Zemiao Zhu's avatar Zemiao Zhu
Browse files

Add checks for nullable mVariables in SearchViewManager.

Bug: 155211009
Test: atest DocumentsUIGoogleTests
Change-Id: I08591169d485a3aaffb6c90cfac8769e7d558986
parent b8d4a77b
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -598,12 +598,6 @@ public abstract class BaseActivity
     */
    @Override
    public final void refreshCurrentRootAndDirectory(int anim) {
        // The following call will crash if it's called before onCreateOptionMenu() is called in
        // which we install menu item to search view manager, and there is a search query we need to
        // restore. This happens when we're still initializing our UI so we shouldn't cancel the
        // search which will be restored later in onCreateOptionMenu(). Try finding a way to guard
        // refreshCurrentRootAndDirectory() from being called while we're restoring the state of UI
        // from the saved state passed in onCreate().
        mSearchManager.cancelSearch();

        // only set the query content in the first launch
+23 −11
Original line number Diff line number Diff line
@@ -86,9 +86,9 @@ public class SearchViewManager implements
    private boolean mIsHistorySearch;
    private boolean mShowSearchBar;

    private Menu mMenu;
    private MenuItem mMenuItem;
    private SearchView mSearchView;
    private @Nullable Menu mMenu;
    private @Nullable MenuItem mMenuItem;
    private @Nullable SearchView mSearchView;

    public SearchViewManager(
            SearchManagerListener listener,
@@ -241,7 +241,7 @@ public class SearchViewManager implements
     * is done before onPrepareOptionsMenu(Menu menu) that is overriding the icons visibility.
     */
    public void updateMenu() {
        if (isExpanded() && mFullBar) {
        if (mMenu != null && isExpanded() && mFullBar) {
            mMenu.setGroupVisible(R.id.group_hide_when_searching, false);
        }
    }
@@ -250,7 +250,7 @@ public class SearchViewManager implements
     * @param stack New stack.
     */
    public void update(DocumentStack stack) {
        if (mMenuItem == null) {
        if (mMenuItem == null || mSearchView == null) {
            if (DEBUG) {
                Log.d(TAG, "update called before Search MenuItem installed.");
            }
@@ -351,6 +351,10 @@ public class SearchViewManager implements
     * change.
     */
    public void restoreSearch(boolean keepFocus) {
        if (mSearchView == null) {
            return;
        }

        if (isTextSearching()) {
            onSearchBarClicked();
            mSearchView.setQuery(mCurrentSearch, false);
@@ -364,13 +368,17 @@ public class SearchViewManager implements
    }

    public void onSearchBarClicked() {
        if (mMenuItem == null) {
            return;
        }

        mMenuItem.expandActionView();
        onSearchExpanded();
    }

    private void onSearchExpanded() {
        mSearchExpanded = true;
        if (mFullBar) {
        if (mFullBar && mMenu != null) {
            mMenu.setGroupVisible(R.id.group_hide_when_searching, false);
        }

@@ -399,7 +407,7 @@ public class SearchViewManager implements
            mListener.onSearchChanged(mCurrentSearch);
        }

        if (mFullBar) {
        if (mFullBar && mMenuItem != null) {
            mMenuItem.collapseActionView();
        }
        mListener.onSearchFinished();
@@ -415,7 +423,7 @@ public class SearchViewManager implements
     * @param state Bundle to save state too
     */
    public void onSaveInstanceState(Bundle state) {
        if (mSearchView.hasFocus() && mCurrentSearch == null) {
        if (mSearchView != null && mSearchView.hasFocus() && mCurrentSearch == null) {
            // Restore focus even if no text was input before screen rotation.
            mCurrentSearch = "";
        }
@@ -457,9 +465,9 @@ public class SearchViewManager implements
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus && !mChipViewManager.hasCheckedItems()) {
            if (mCurrentSearch == null) {
            if (mSearchView != null && mCurrentSearch == null) {
                mSearchView.setIconified(true);
            } else if (TextUtils.isEmpty(mSearchView.getQuery())) {
            } else if (TextUtils.isEmpty(getSearchViewText())) {
                cancelSearch();
            }
        }
@@ -529,9 +537,13 @@ public class SearchViewManager implements
    /**
     * Get current text on search view.
     *
     * @return  Cuttent string on search view
     * @return  Current string on search view
     */
    public String getSearchViewText() {
        if (mSearchView == null) {
            return null;
        }

        return mSearchView.getQuery().toString();
    }