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

Commit 13d66d84 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android (Google) Code Review
Browse files

Merge "Fix: Context menu can contain obsolete suggestions." into nyc-dev

parents 0f3647f4 182f5fec
Loading
Loading
Loading
Loading
+15 −34
Original line number Diff line number Diff line
@@ -290,7 +290,6 @@ public class Editor {
    boolean mIsInsertionActionModeStartPending = false;

    private final SuggestionHelper mSuggestionHelper = new SuggestionHelper();
    private SuggestionInfo[] mSuggestionInfosInContextMenu;

    Editor(TextView textView) {
        mTextView = textView;
@@ -2454,21 +2453,24 @@ public class Editor {
        }

        if (shouldOfferToShowSuggestions()) {
            if (mSuggestionInfosInContextMenu == null) {
                mSuggestionInfosInContextMenu =
            final SuggestionInfo[] suggestionInfoArray =
                    new SuggestionInfo[SuggestionSpan.SUGGESTIONS_MAX_SIZE];
                for (int i = 0; i < mSuggestionInfosInContextMenu.length; i++) {
                    mSuggestionInfosInContextMenu[i] = new SuggestionInfo();
                }
            for (int i = 0; i < suggestionInfoArray.length; i++) {
                suggestionInfoArray[i] = new SuggestionInfo();
            }
            final SubMenu subMenu = menu.addSubMenu(Menu.NONE, Menu.NONE, MENU_ITEM_ORDER_REPLACE,
                    com.android.internal.R.string.replace);
            mSuggestionHelper.getSuggestionInfo(mSuggestionInfosInContextMenu);
            int i = 0;
            for (final SuggestionInfo info : mSuggestionInfosInContextMenu) {
                info.mSuggestionEnd = info.mText.length();
                subMenu.add(Menu.NONE, Menu.NONE, i++, info.mText)
                        .setOnMenuItemClickListener(mOnContextMenuReplaceItemClickListener);
            final int numItems = mSuggestionHelper.getSuggestionInfo(suggestionInfoArray);
            for (int i = 0; i < numItems; i++) {
                final SuggestionInfo info = suggestionInfoArray[i];
                subMenu.add(Menu.NONE, Menu.NONE, i, info.mText)
                        .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
                            @Override
                            public boolean onMenuItemClick(MenuItem item) {
                                replaceWithSuggestion(info);
                                return true;
                            }
                        });
            }
        }

@@ -2609,27 +2611,6 @@ public class Editor {
        }
    };

    private final MenuItem.OnMenuItemClickListener mOnContextMenuReplaceItemClickListener =
            new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            int index = item.getOrder();
            if (index < 0 || index >= mSuggestionInfosInContextMenu.length) {
                clear();
                return false;
            }
            replaceWithSuggestion(mSuggestionInfosInContextMenu[index]);
            clear();
            return true;
        }

        private void clear() {
            for (final SuggestionInfo info : mSuggestionInfosInContextMenu) {
                info.clear();
            }
        }
    };

    /**
     * Controls the {@link EasyEditSpan} monitoring when it is added, and when the related
     * pop-up should be displayed.
+2 −0
Original line number Diff line number Diff line
@@ -143,6 +143,8 @@ public class TextViewActivityMouseTest extends ActivityInstrumentationTestCase2<

        onView(withId(R.id.textview)).check(hasSelection(""));
        onView(withId(R.id.textview)).check(hasInsertionPointerAtIndex(text.indexOf("i")));

        // TODO: Add tests for suggestions
    }

    @SmallTest