Loading Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -370,6 +370,7 @@ LOCAL_SRC_FILES += \ core/java/com/android/internal/statusbar/IStatusBar.aidl \ core/java/com/android/internal/statusbar/IStatusBarService.aidl \ core/java/com/android/internal/textservice/ISpellCheckerService.aidl \ core/java/com/android/internal/textservice/ISpellCheckerServiceCallback.aidl \ core/java/com/android/internal/textservice/ISpellCheckerSession.aidl \ core/java/com/android/internal/textservice/ISpellCheckerSessionListener.aidl \ core/java/com/android/internal/textservice/ITextServicesManager.aidl \ Loading core/java/android/service/textservice/SpellCheckerService.java +32 −8 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.service.textservice; import com.android.internal.textservice.ISpellCheckerService; import com.android.internal.textservice.ISpellCheckerServiceCallback; import com.android.internal.textservice.ISpellCheckerSession; import com.android.internal.textservice.ISpellCheckerSessionListener; Loading Loading @@ -311,16 +312,39 @@ public abstract class SpellCheckerService extends Service { mInternalServiceRef = new WeakReference<SpellCheckerService>(service); } /** * Called from the system when an application is requesting a new spell checker session. * * <p>Note: This is an internal protocol used by the system to establish spell checker * sessions, which is not guaranteed to be stable and is subject to change.</p> * * @param locale locale to be returned from {@link Session#getLocale()} * @param listener IPC channel object to be used to implement * {@link Session#onGetSuggestionsMultiple(TextInfo[], int, boolean)} and * {@link Session#onGetSuggestions(TextInfo, int)} * @param bundle bundle to be returned from {@link Session#getBundle()} * @param callback IPC channel to return the result to the caller in an asynchronous manner */ @Override public ISpellCheckerSession getISpellCheckerSession( String locale, ISpellCheckerSessionListener listener, Bundle bundle) { public void getISpellCheckerSession( String locale, ISpellCheckerSessionListener listener, Bundle bundle, ISpellCheckerServiceCallback callback) { final SpellCheckerService service = mInternalServiceRef.get(); if (service == null) return null; final InternalISpellCheckerSession internalSession; if (service == null) { // If the owner SpellCheckerService object was already destroyed and got GC-ed, // the weak-reference returns null and we should just ignore this request. internalSession = null; } else { final Session session = service.createSession(); final InternalISpellCheckerSession internalSession = internalSession = new InternalISpellCheckerSession(locale, listener, bundle, session); session.onCreate(); return internalSession; } try { callback.onSessionCreated(internalSession); } catch (RemoteException e) { } } } Loading core/java/com/android/internal/textservice/ISpellCheckerService.aidl +20 −4 Original line number Diff line number Diff line Loading @@ -16,16 +16,32 @@ package com.android.internal.textservice; import com.android.internal.textservice.ISpellCheckerServiceCallback; import com.android.internal.textservice.ISpellCheckerSession; import com.android.internal.textservice.ISpellCheckerSessionListener; import android.os.Bundle; /** * Public interface to the global spell checker. * IPC channels from TextServicesManagerService to SpellCheckerService. * @hide */ interface ISpellCheckerService { ISpellCheckerSession getISpellCheckerSession( String locale, ISpellCheckerSessionListener listener, in Bundle bundle); oneway interface ISpellCheckerService { /** * Called from the system when an application is requesting a new spell checker session. * * <p>Note: This is an internal protocol used by the system to establish spell checker sessions, * which is not guaranteed to be stable and is subject to change.</p> * * @param locale locale to be returned from * {@link android.service.textservice.SpellCheckerService.Session#getLocale()} * @param listener IPC channel object to be used to implement * {@link android.service.textservice.SpellCheckerService.Session#onGetSuggestionsMultiple(TextInfo[], int, boolean)} and * {@link android.service.textservice.SpellCheckerService.Session#onGetSuggestions(TextInfo, int)} * @param bundle bundle to be returned from {@link android.service.textservice.SpellCheckerService.Session#getBundle()} * @param callback IPC channel to return the result to the caller in an asynchronous manner */ void getISpellCheckerSession( String locale, ISpellCheckerSessionListener listener, in Bundle bundle, ISpellCheckerServiceCallback callback); } core/java/com/android/internal/textservice/ISpellCheckerServiceCallback.aidl 0 → 100644 +35 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.internal.textservice; import com.android.internal.textservice.ISpellCheckerSession; import com.android.internal.textservice.ISpellCheckerSessionListener; import android.os.Bundle; /** * IPC channels from SpellCheckerService to TextServicesManagerService. * @hide */ oneway interface ISpellCheckerServiceCallback { // TODO: Currently SpellCheckerSession just ignores null newSession and continues waiting for // the next onSessionCreated with non-null newSession, which is supposed to never happen if // the system is working normally. We should at least free up resources in SpellCheckerSession. // Note: This method is called from non-system processes, in theory we cannot assume that // this method is always be called only once with non-null value. void onSessionCreated(ISpellCheckerSession newSession); } core/java/com/android/internal/textservice/ITextServicesSessionListener.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ import com.android.internal.textservice.ISpellCheckerSession; import android.view.textservice.SpellCheckerInfo; /** * Interface to the text service session. * (Per-session) IPC channels from TextServicesManagerService to spell checker client applications. * @hide */ interface ITextServicesSessionListener { Loading Loading
Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -370,6 +370,7 @@ LOCAL_SRC_FILES += \ core/java/com/android/internal/statusbar/IStatusBar.aidl \ core/java/com/android/internal/statusbar/IStatusBarService.aidl \ core/java/com/android/internal/textservice/ISpellCheckerService.aidl \ core/java/com/android/internal/textservice/ISpellCheckerServiceCallback.aidl \ core/java/com/android/internal/textservice/ISpellCheckerSession.aidl \ core/java/com/android/internal/textservice/ISpellCheckerSessionListener.aidl \ core/java/com/android/internal/textservice/ITextServicesManager.aidl \ Loading
core/java/android/service/textservice/SpellCheckerService.java +32 −8 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.service.textservice; import com.android.internal.textservice.ISpellCheckerService; import com.android.internal.textservice.ISpellCheckerServiceCallback; import com.android.internal.textservice.ISpellCheckerSession; import com.android.internal.textservice.ISpellCheckerSessionListener; Loading Loading @@ -311,16 +312,39 @@ public abstract class SpellCheckerService extends Service { mInternalServiceRef = new WeakReference<SpellCheckerService>(service); } /** * Called from the system when an application is requesting a new spell checker session. * * <p>Note: This is an internal protocol used by the system to establish spell checker * sessions, which is not guaranteed to be stable and is subject to change.</p> * * @param locale locale to be returned from {@link Session#getLocale()} * @param listener IPC channel object to be used to implement * {@link Session#onGetSuggestionsMultiple(TextInfo[], int, boolean)} and * {@link Session#onGetSuggestions(TextInfo, int)} * @param bundle bundle to be returned from {@link Session#getBundle()} * @param callback IPC channel to return the result to the caller in an asynchronous manner */ @Override public ISpellCheckerSession getISpellCheckerSession( String locale, ISpellCheckerSessionListener listener, Bundle bundle) { public void getISpellCheckerSession( String locale, ISpellCheckerSessionListener listener, Bundle bundle, ISpellCheckerServiceCallback callback) { final SpellCheckerService service = mInternalServiceRef.get(); if (service == null) return null; final InternalISpellCheckerSession internalSession; if (service == null) { // If the owner SpellCheckerService object was already destroyed and got GC-ed, // the weak-reference returns null and we should just ignore this request. internalSession = null; } else { final Session session = service.createSession(); final InternalISpellCheckerSession internalSession = internalSession = new InternalISpellCheckerSession(locale, listener, bundle, session); session.onCreate(); return internalSession; } try { callback.onSessionCreated(internalSession); } catch (RemoteException e) { } } } Loading
core/java/com/android/internal/textservice/ISpellCheckerService.aidl +20 −4 Original line number Diff line number Diff line Loading @@ -16,16 +16,32 @@ package com.android.internal.textservice; import com.android.internal.textservice.ISpellCheckerServiceCallback; import com.android.internal.textservice.ISpellCheckerSession; import com.android.internal.textservice.ISpellCheckerSessionListener; import android.os.Bundle; /** * Public interface to the global spell checker. * IPC channels from TextServicesManagerService to SpellCheckerService. * @hide */ interface ISpellCheckerService { ISpellCheckerSession getISpellCheckerSession( String locale, ISpellCheckerSessionListener listener, in Bundle bundle); oneway interface ISpellCheckerService { /** * Called from the system when an application is requesting a new spell checker session. * * <p>Note: This is an internal protocol used by the system to establish spell checker sessions, * which is not guaranteed to be stable and is subject to change.</p> * * @param locale locale to be returned from * {@link android.service.textservice.SpellCheckerService.Session#getLocale()} * @param listener IPC channel object to be used to implement * {@link android.service.textservice.SpellCheckerService.Session#onGetSuggestionsMultiple(TextInfo[], int, boolean)} and * {@link android.service.textservice.SpellCheckerService.Session#onGetSuggestions(TextInfo, int)} * @param bundle bundle to be returned from {@link android.service.textservice.SpellCheckerService.Session#getBundle()} * @param callback IPC channel to return the result to the caller in an asynchronous manner */ void getISpellCheckerSession( String locale, ISpellCheckerSessionListener listener, in Bundle bundle, ISpellCheckerServiceCallback callback); }
core/java/com/android/internal/textservice/ISpellCheckerServiceCallback.aidl 0 → 100644 +35 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.internal.textservice; import com.android.internal.textservice.ISpellCheckerSession; import com.android.internal.textservice.ISpellCheckerSessionListener; import android.os.Bundle; /** * IPC channels from SpellCheckerService to TextServicesManagerService. * @hide */ oneway interface ISpellCheckerServiceCallback { // TODO: Currently SpellCheckerSession just ignores null newSession and continues waiting for // the next onSessionCreated with non-null newSession, which is supposed to never happen if // the system is working normally. We should at least free up resources in SpellCheckerSession. // Note: This method is called from non-system processes, in theory we cannot assume that // this method is always be called only once with non-null value. void onSessionCreated(ISpellCheckerSession newSession); }
core/java/com/android/internal/textservice/ITextServicesSessionListener.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ import com.android.internal.textservice.ISpellCheckerSession; import android.view.textservice.SpellCheckerInfo; /** * Interface to the text service session. * (Per-session) IPC channels from TextServicesManagerService to spell checker client applications. * @hide */ interface ITextServicesSessionListener { Loading