Merge "A few methods are missing in TextClassificationSession"
diff --git a/core/java/android/view/textclassifier/TextClassificationSession.java b/core/java/android/view/textclassifier/TextClassificationSession.java
index cd2806a..6a706f5 100644
--- a/core/java/android/view/textclassifier/TextClassificationSession.java
+++ b/core/java/android/view/textclassifier/TextClassificationSession.java
@@ -70,6 +70,24 @@
     }
 
     @Override
+    public ConversationActions suggestConversationActions(ConversationActions.Request request) {
+        checkDestroyed();
+        return mDelegate.suggestConversationActions(request);
+    }
+
+    @Override
+    public TextLanguage detectLanguage(TextLanguage.Request request) {
+        checkDestroyed();
+        return mDelegate.detectLanguage(request);
+    }
+
+    @Override
+    public int getMaxGenerateLinksTextLength() {
+        checkDestroyed();
+        return mDelegate.getMaxGenerateLinksTextLength();
+    }
+
+    @Override
     public void onSelectionEvent(SelectionEvent event) {
         try {
             if (mEventHelper.sanitizeEvent(event)) {
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java
index c2fa8b2b..17fe61d 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java
@@ -32,7 +32,6 @@
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.SmallTest;
-import androidx.test.runner.AndroidJUnit4;
 
 import com.google.common.truth.Truth;
 
@@ -43,6 +42,7 @@
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
 
 import java.util.Arrays;
 import java.util.Collections;
@@ -54,10 +54,19 @@
  * Tests are skipped if such a textclassifier does not exist.
  */
 @SmallTest
-@RunWith(AndroidJUnit4.class)
+@RunWith(Parameterized.class)
 public class TextClassifierTest {
+    private static final String LOCAL = "local";
+    private static final String SESSION = "session";
 
-    // TODO: Implement TextClassifierService testing.
+    // TODO: Add SYSTEM, which tests TextClassifier.SYSTEM.
+    @Parameterized.Parameters(name = "{0}")
+    public static Iterable<Object> textClassifierTypes() {
+        return Arrays.asList(LOCAL, SESSION);
+    }
+
+    @Parameterized.Parameter
+    public String mTextClassifierType;
 
     private static final TextClassificationConstants TC_CONSTANTS =
             new TextClassificationConstants(() -> "");
@@ -72,7 +81,17 @@
     public void setup() {
         mContext = InstrumentationRegistry.getTargetContext();
         mTcm = mContext.getSystemService(TextClassificationManager.class);
-        mClassifier = mTcm.getTextClassifier(TextClassifier.LOCAL);
+
+        if (mTextClassifierType.equals(LOCAL)) {
+            mClassifier = mTcm.getTextClassifier(TextClassifier.LOCAL);
+        } else {
+            mClassifier = mTcm.createTextClassificationSession(
+                    new TextClassificationContext.Builder(
+                            "android",
+                            TextClassifier.WIDGET_TYPE_NOTIFICATION)
+                            .build(),
+                    mTcm.getTextClassifier(TextClassifier.LOCAL));
+        }
     }
 
     @Test