Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3745)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/spellchecker/SpellCheckerSessionBridge.java

Issue 2244083002: Componentize spellcheck [4]: spellcheck/browser and android java-side. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/spellchecker/SpellCheckerSessionBridge.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/spellchecker/SpellCheckerSessionBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/spellchecker/SpellCheckerSessionBridge.java
deleted file mode 100644
index dcab14122e9947f1846ad2112c25285c715e4ed0..0000000000000000000000000000000000000000
--- a/chrome/android/java/src/org/chromium/chrome/browser/spellchecker/SpellCheckerSessionBridge.java
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package org.chromium.chrome.browser.spellchecker;
-
-import android.content.Context;
-import android.view.textservice.SentenceSuggestionsInfo;
-import android.view.textservice.SpellCheckerSession;
-import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener;
-import android.view.textservice.SuggestionsInfo;
-import android.view.textservice.TextInfo;
-import android.view.textservice.TextServicesManager;
-
-import org.chromium.base.ContextUtils;
-import org.chromium.base.annotations.CalledByNative;
-
-import java.util.ArrayList;
-
-/**
- * JNI interface for native SpellCheckerSessionBridge to use Android's spellchecker.
- */
-public class SpellCheckerSessionBridge implements SpellCheckerSessionListener {
- private final long mNativeSpellCheckerSessionBridge;
- private final SpellCheckerSession mSpellCheckerSession;
-
- /**
- * Constructs a SpellCheckerSessionBridge object as well as its SpellCheckerSession object.
- * @param nativeSpellCheckerSessionBridge Pointer to the native SpellCheckerSessionBridge.
- */
- private SpellCheckerSessionBridge(long nativeSpellCheckerSessionBridge) {
- mNativeSpellCheckerSessionBridge = nativeSpellCheckerSessionBridge;
-
- Context context = ContextUtils.getApplicationContext();
- final TextServicesManager textServicesManager =
- (TextServicesManager) context.getSystemService(
- Context.TEXT_SERVICES_MANAGER_SERVICE);
-
- // This combination of parameters will cause the spellchecker to be based off of
- // the language specified at "Settings > Language & input > Spell checker > Language".
- // If that setting is set to "Use system language" and the system language is not on the
- // list of supported spellcheck languages, this call will return null. This call will also
- // return null if the user has turned spellchecking off at "Settings > Language & input >
- // Spell checker".
- mSpellCheckerSession = textServicesManager.newSpellCheckerSession(null, null, this, true);
- }
-
- /**
- * Returns a new SpellCheckerSessionBridge object if the internal SpellCheckerSession object
- * was able to be created.
- * @param nativeSpellCheckerSessionBridge Pointer to the native SpellCheckerSessionBridge.
- */
- @CalledByNative
- private static SpellCheckerSessionBridge create(long nativeSpellCheckerSessionBridge) {
- SpellCheckerSessionBridge bridge =
- new SpellCheckerSessionBridge(nativeSpellCheckerSessionBridge);
- if (bridge.mSpellCheckerSession == null) {
- return null;
- }
- return bridge;
- }
-
- /**
- * Queries the input text against the SpellCheckerSession.
- * @param text Text to be queried.
- */
- @CalledByNative
- private void requestTextCheck(String text) {
- // SpellCheckerSession thinks that any word ending with a period is a typo.
- // We trim the period off before sending the text for spellchecking in order to avoid
- // unnecessary red underlines when the user ends a sentence with a period.
- // Filed as an Android bug here: https://code.google.com/p/android/issues/detail?id=183294
- if (text.endsWith(".")) {
- text = text.substring(0, text.length() - 1);
- }
- mSpellCheckerSession.getSentenceSuggestions(new TextInfo[] {new TextInfo(text)}, 0);
- }
-
- /**
- * Checks for typos and sends results back to native through a JNI call.
- * @param results Results returned by the Android spellchecker.
- */
- @Override
- public void onGetSentenceSuggestions(SentenceSuggestionsInfo[] results) {
- ArrayList<Integer> offsets = new ArrayList<Integer>();
- ArrayList<Integer> lengths = new ArrayList<Integer>();
-
- for (SentenceSuggestionsInfo result : results) {
- for (int i = 0; i < result.getSuggestionsCount(); i++) {
- // If a word looks like a typo, record its offset and length.
- if ((result.getSuggestionsInfoAt(i).getSuggestionsAttributes()
- & SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO)
- == SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO) {
- offsets.add(result.getOffsetAt(i));
- lengths.add(result.getLengthAt(i));
- }
- }
- }
-
- nativeProcessSpellCheckResults(mNativeSpellCheckerSessionBridge,
- convertListToArray(offsets), convertListToArray(lengths));
- }
-
- /**
- * Helper method to convert an ArrayList of Integer objects into an array of primitive ints
- * for easier JNI handling of these objects on the native side.
- * @param list List to be converted to an array.
- */
- private int[] convertListToArray(ArrayList<Integer> list) {
- int[] array = new int[list.size()];
- for (int index = 0; index < array.length; index++) {
- array[index] = list.get(index).intValue();
- }
- return array;
- }
-
- @Override
- public void onGetSuggestions(SuggestionsInfo[] results) {}
-
- private native void nativeProcessSpellCheckResults(
- long nativeSpellCheckerSessionBridge, int[] offsets, int[] lengths);
-}
« no previous file with comments | « chrome/android/DEPS ('k') | chrome/android/java_sources.gni » ('j') | chrome/chrome_browser.gypi » ('J')

Powered by Google App Engine
This is Rietveld 408576698