778 lines
38 KiB
Java
778 lines
38 KiB
Java
/*
|
|
* This program and the accompanying materials
|
|
* are made available under the terms of the Eclipse Public License v1.0
|
|
* which accompanies this distribution, and is available at
|
|
* http://www.eclipse.org/legal/epl-v10.html.
|
|
*
|
|
* This file is a derivative of code released under the terms listed below.
|
|
*
|
|
*/
|
|
/*
|
|
* Copyright (c) 2013,
|
|
* Tobias Blaschke <code@tobiasblaschke.de>
|
|
* All rights reserved.
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the following disclaimer.
|
|
*
|
|
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
* and/or other materials provided with the distribution.
|
|
*
|
|
* 3. The names of the contributors may not be used to endorse or promote
|
|
* products derived from this software without specific prior written
|
|
* permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
package com.ibm.wala.dalvik.util.androidEntryPoints;
|
|
|
|
import java.util.List;
|
|
|
|
import com.ibm.wala.dalvik.ipa.callgraph.impl.AndroidEntryPoint;
|
|
import com.ibm.wala.dalvik.ipa.callgraph.impl.AndroidEntryPoint.ExecutionOrder;
|
|
import com.ibm.wala.dalvik.util.AndroidComponent;
|
|
import com.ibm.wala.dalvik.util.AndroidEntryPointLocator.AndroidPossibleEntryPoint;
|
|
|
|
/**
|
|
* Hardcoded EntryPoint-specifications for an Android-Service.
|
|
*
|
|
* The specifications are read and handled by AndroidEntryPointLocator.
|
|
*
|
|
* @see com.ibm.wala.dalvik.util.AndroidEntryPointLocator
|
|
* @author Tobias Blaschke <code@tobiasblaschke.de>
|
|
*/
|
|
public final class ServiceEP {
|
|
/**
|
|
* Called by the system when the service is first created.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onCreate = new AndroidPossibleEntryPoint(AndroidComponent.SERVICE,
|
|
"onCreate",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
ExecutionOrder.AT_FIRST,
|
|
ProviderEP.onCreate,
|
|
//ApplicationEP.onCreate, // Uncommenting would create a ring-dependency
|
|
}
|
|
));
|
|
|
|
/**
|
|
* Called by the system every time a client explicitly starts the service by calling startService(Intent).
|
|
* For backwards compatibility, the default implementation calls onStart.
|
|
*
|
|
* startService-Services are not informed when they are stopped.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onStartCommand = new AndroidPossibleEntryPoint(AndroidComponent.SERVICE,
|
|
"onStartCommand",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
ExecutionOrder.AT_FIRST,
|
|
onCreate
|
|
}
|
|
));
|
|
|
|
|
|
/**
|
|
* Only for backwards compatibility.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onStart = new AndroidPossibleEntryPoint(AndroidComponent.SERVICE,
|
|
"onStart",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
ExecutionOrder.AT_FIRST,
|
|
onCreate,
|
|
onStartCommand // onStartCommand usually calls onStart
|
|
}
|
|
));
|
|
|
|
|
|
/**
|
|
* Return the communication channel to the service. May return null if clients can not bind to the service.
|
|
*
|
|
* Services started this way can be notified before they get stopped via onUnbind
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onBind = new AndroidPossibleEntryPoint(AndroidComponent.SERVICE,
|
|
"onBind",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onCreate,
|
|
ExecutionOrder.BEFORE_LOOP
|
|
}
|
|
));
|
|
|
|
/**
|
|
* Called when all clients have disconnected from a particular interface published by the service.
|
|
* Return true if you would like to have the service's onRebind(Intent) method later called when new clients bind to it.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onUnbind = new AndroidPossibleEntryPoint(AndroidComponent.SERVICE,
|
|
"onUnbind",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onBind,
|
|
ExecutionOrder.END_OF_LOOP
|
|
}
|
|
));
|
|
|
|
/**
|
|
* Called when new clients have connected to the service, after it had previously been notified that all had disconnected in its
|
|
* onUnbind(Intent). This will only be called if the implementation of onUnbind(Intent) was overridden to return true.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onRebind = new AndroidPossibleEntryPoint(AndroidComponent.SERVICE,
|
|
"onRebind",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onBind,
|
|
onUnbind
|
|
}
|
|
));
|
|
|
|
|
|
/**
|
|
* Called by the system to notify a Service that it is no longer used and is being removed.
|
|
* Upon return, there will be no more calls in to this Service object and it is effectively dead.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onDestroy = new AndroidPossibleEntryPoint(AndroidComponent.SERVICE,
|
|
"onDestroy",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onUnbind,
|
|
onStart,
|
|
onBind,
|
|
onStartCommand,
|
|
ExecutionOrder.AT_LAST
|
|
}
|
|
));
|
|
|
|
/**
|
|
* This is called if the service is currently running and the user has removed a task that comes from the service's application.
|
|
* If you have set ServiceInfo.FLAG_STOP_WITH_TASK then you will not receive this callback; instead, the service will simply be stopped.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onTaskRemoved = new AndroidPossibleEntryPoint(AndroidComponent.SERVICE,
|
|
"onTaskRemoved",
|
|
ExecutionOrder.between(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onUnbind,
|
|
onStart,
|
|
onBind,
|
|
onStartCommand,
|
|
ExecutionOrder.AT_LAST
|
|
},
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onDestroy
|
|
}
|
|
));
|
|
|
|
/**
|
|
* Called by the system when the device configuration changes while your component is running.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onConfigurationChanged = new AndroidPossibleEntryPoint(AndroidComponent.SERVICE,
|
|
"onConfigurationChanged",
|
|
ExecutionOrder.between(
|
|
new AndroidEntryPoint.IExecutionOrder[] { // TODO: Position
|
|
onCreate
|
|
},
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
ExecutionOrder.AFTER_LOOP
|
|
}
|
|
));
|
|
|
|
/**
|
|
* This is called when the overall system is running low on memory, and actively running processes should trim their memory usage.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onLowMemory = new AndroidPossibleEntryPoint(AndroidComponent.SERVICE,
|
|
"onLowMemory",
|
|
ExecutionOrder.between( // TODO: find a nice position
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
ExecutionOrder.END_OF_LOOP,
|
|
},
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
ExecutionOrder.AFTER_LOOP,
|
|
//onConfigurationChanged // XXX ??!!
|
|
}
|
|
));
|
|
|
|
/**
|
|
* Called when the operating system has determined that it is a good time for a process to trim unneeded memory from its process.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onTrimMemory = new AndroidPossibleEntryPoint(AndroidComponent.SERVICE,
|
|
"onTrimMemory",
|
|
ExecutionOrder.between( // TODO: find a nice position
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
ExecutionOrder.END_OF_LOOP
|
|
},
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
ExecutionOrder.AFTER_LOOP,
|
|
//onConfigurationChanged // XXX ??!!
|
|
}
|
|
));
|
|
|
|
public static final AndroidPossibleEntryPoint onHandleIntent = new AndroidPossibleEntryPoint(AndroidComponent.INTENT_SERVICE,
|
|
"onHandleIntent",
|
|
ExecutionOrder.between(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onCreate
|
|
},
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onStart
|
|
}
|
|
));
|
|
|
|
public static final AndroidPossibleEntryPoint onCreateInputMethodInterface = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.ABSTRACT_INPUT_METHOD_SERVICE, "onCreateInputMethodInterface",
|
|
ExecutionOrder.directlyAfter(onCreate));
|
|
|
|
public static final AndroidPossibleEntryPoint onCreateInputMethodSessionInterface = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.ABSTRACT_INPUT_METHOD_SERVICE, "onCreateInputMethodSessionInterface",
|
|
ExecutionOrder.after(onCreateInputMethodInterface)); // TODO: Place
|
|
|
|
public static final AndroidPossibleEntryPoint onGenericMotionEvent = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.ABSTRACT_INPUT_METHOD_SERVICE, "onGenericMotionEvent",
|
|
ExecutionOrder.directlyAfter(ActivityEP.onGenericMotionEvent));
|
|
|
|
public static final AndroidPossibleEntryPoint onTrackballEvent = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.ABSTRACT_INPUT_METHOD_SERVICE, "onTrackballEvent",
|
|
ActivityEP.onTrackballEvent);
|
|
|
|
public static final AndroidPossibleEntryPoint onAccessibilityEvent = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.ACCESSIBILITY_SERVICE, "onAccessibilityEvent",
|
|
ExecutionOrder.after(onTrackballEvent)); // TODO: Place
|
|
|
|
public static final AndroidPossibleEntryPoint onInterrupt = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.ACCESSIBILITY_SERVICE, "onInterrupt",
|
|
ExecutionOrder.after(onAccessibilityEvent));
|
|
|
|
public static final AndroidPossibleEntryPoint onActionModeFinished = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onActionModeFinished",
|
|
ActivityEP.onActionModeFinished);
|
|
|
|
public static final AndroidPossibleEntryPoint onActionModeStarted = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onActionModeStarted",
|
|
ActivityEP.onActionModeStarted);
|
|
|
|
public static final AndroidPossibleEntryPoint onAttachedToWindow = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onAttachedToWindow",
|
|
ActivityEP.onAttachedToWindow);
|
|
|
|
public static final AndroidPossibleEntryPoint onContentChanged = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onContentChanged",
|
|
ActivityEP.onContentChanged);
|
|
|
|
public static final AndroidPossibleEntryPoint onCreatePanelMenu = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onCreatePanelMenu",
|
|
ActivityEP.onCreatePanelMenu);
|
|
|
|
public static final AndroidPossibleEntryPoint onCreatePanelView = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onCreatePanelView",
|
|
ActivityEP.onCreatePanelView);
|
|
|
|
public static final AndroidPossibleEntryPoint onDetachedFromWindow = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onDetachedFromWindow",
|
|
ActivityEP.onDetachedFromWindow);
|
|
|
|
public static final AndroidPossibleEntryPoint onDreamingStarted = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onDreamingStarted",
|
|
ExecutionOrder.after(onStart)); // TODO: Place
|
|
|
|
public static final AndroidPossibleEntryPoint onDreamingStopped = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onDreamingStopped",
|
|
ExecutionOrder.between(
|
|
new AndroidEntryPoint.IExecutionOrder[] { // TODO: Place
|
|
onDreamingStarted,
|
|
onBind,
|
|
onStartCommand,
|
|
},
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onDestroy,
|
|
onUnbind
|
|
}));
|
|
|
|
public static final AndroidPossibleEntryPoint onMenuItemSelected = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onMenuItemSelected",
|
|
ActivityEP.onMenuItemSelected);
|
|
|
|
public static final AndroidPossibleEntryPoint onMenuOpened = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onMenuOpened",
|
|
ActivityEP.onMenuOpened);
|
|
|
|
public static final AndroidPossibleEntryPoint onPanelClosed = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onPanelClosed",
|
|
ActivityEP.onPanelClosed);
|
|
|
|
public static final AndroidPossibleEntryPoint onPreparePanel = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onPreparePanel",
|
|
ActivityEP.onPreparePanel);
|
|
|
|
public static final AndroidPossibleEntryPoint onSearchRequested = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onSearchRequested",
|
|
ActivityEP.onSearchRequested);
|
|
|
|
public static final AndroidPossibleEntryPoint onWindowAttributesChanged = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onWindowAttributesChanged",
|
|
ActivityEP.onWindowAttributesChanged);
|
|
|
|
public static final AndroidPossibleEntryPoint onWindowFocusChanged = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onWindowFocusChanged",
|
|
ActivityEP.onWindowFocusChanged);
|
|
|
|
public static final AndroidPossibleEntryPoint onWindowStartingActionMode = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.DREAM_SERVICE, "onWindowStartingActionMode",
|
|
ActivityEP.onWindowStartingActionMode);
|
|
|
|
public static final AndroidPossibleEntryPoint onDeactivated = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.HOST_APDU_SERVICE, "onDeactivated",
|
|
ExecutionOrder.directlyBefore(ActivityEP.onPause));
|
|
|
|
public static final AndroidPossibleEntryPoint onCreateMediaRouteProvider = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.MEDIA_ROUTE_PROVIDER_SERVICE, "onCreateMediaRouteProvider",
|
|
onCreate);
|
|
|
|
public static final AndroidPossibleEntryPoint onNotificationPosted = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.NOTIFICATION_LISTENER_SERVICE, "onNotificationPosted",
|
|
ExecutionOrder.MULTIPLE_TIMES_IN_LOOP);
|
|
|
|
public static final AndroidPossibleEntryPoint onNotificationRemoved = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.NOTIFICATION_LISTENER_SERVICE, "onNotificationRemoved",
|
|
ExecutionOrder.after(onNotificationPosted));
|
|
|
|
public static final AndroidPossibleEntryPoint onConnected = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.PRINT_SERVICE, "onConnected",
|
|
ExecutionOrder.after(onStart));
|
|
|
|
public static final AndroidPossibleEntryPoint onCreatePrinterDiscoverySession = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.PRINT_SERVICE, "onCreatePrinterDiscoverySession",
|
|
ExecutionOrder.between(onStart, onConnected));
|
|
|
|
public static final AndroidPossibleEntryPoint onDisconnected = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.PRINT_SERVICE, "onDisconnected",
|
|
ExecutionOrder.between(onConnected, onDestroy)); // XXX: Section hop
|
|
|
|
public static final AndroidPossibleEntryPoint onPrintJobQueued = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.PRINT_SERVICE, "onPrintJobQueued",
|
|
ExecutionOrder.between(onConnected, onDisconnected)); // XXX: Section hop
|
|
|
|
public static final AndroidPossibleEntryPoint onRequestCancelPrintJob = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.PRINT_SERVICE, "onRequestCancelPrintJob",
|
|
ExecutionOrder.between(onPrintJobQueued, onDisconnected)); // XXX: Section hop
|
|
|
|
public static final AndroidPossibleEntryPoint onCancel = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.RECOGNITION_SERVICE, "onCancel",
|
|
ExecutionOrder.between(ExecutionOrder.MULTIPLE_TIMES_IN_LOOP, ExecutionOrder.END_OF_LOOP));
|
|
|
|
public static final AndroidPossibleEntryPoint onStartListening = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.RECOGNITION_SERVICE, "onStartListening",
|
|
ExecutionOrder.between(ExecutionOrder.MULTIPLE_TIMES_IN_LOOP, onCancel));
|
|
|
|
public static final AndroidPossibleEntryPoint onStopListening = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.RECOGNITION_SERVICE, "onStopListening",
|
|
ExecutionOrder.between(onCancel, ExecutionOrder.END_OF_LOOP));
|
|
|
|
public static final AndroidPossibleEntryPoint onGetViewFactory = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.REMOTE_VIEWS_SERVICE, "onGetViewFactory",
|
|
ExecutionOrder.after(onStart)); // TODO: Position
|
|
|
|
public static final AndroidPossibleEntryPoint onGetEnabled = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.SETTING_INJECTOR_SERVICE, "onGetEnabled",
|
|
ExecutionOrder.after(onStart)); // TODO: Position
|
|
|
|
public static final AndroidPossibleEntryPoint onGetSummary = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.SETTING_INJECTOR_SERVICE, "onGetSummary",
|
|
ExecutionOrder.after(onStart)); // TODO: Position
|
|
|
|
public static final AndroidPossibleEntryPoint onGetFeaturesForLanguage = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.TEXT_TO_SPEECH_SERVICE, "onGetFeaturesForLanguage",
|
|
ExecutionOrder.after(onStart)); // TODO: Position
|
|
|
|
public static final AndroidPossibleEntryPoint onGetLanguage = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.TEXT_TO_SPEECH_SERVICE, "onGetLanguage",
|
|
ExecutionOrder.directlyBefore(onGetFeaturesForLanguage));
|
|
|
|
public static final AndroidPossibleEntryPoint onLoadLanguage = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.TEXT_TO_SPEECH_SERVICE, "onLoadLanguage",
|
|
ExecutionOrder.directlyBefore(onGetLanguage));
|
|
|
|
public static final AndroidPossibleEntryPoint onIsLanguageAvailable = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.TEXT_TO_SPEECH_SERVICE, "onIsLanguageAvailable",
|
|
ExecutionOrder.directlyBefore(onLoadLanguage));
|
|
|
|
public static final AndroidPossibleEntryPoint onSynthesizeText = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.TEXT_TO_SPEECH_SERVICE, "onSynthesizeText",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onGetLanguage,
|
|
onLoadLanguage,
|
|
ExecutionOrder.MULTIPLE_TIMES_IN_LOOP
|
|
}));
|
|
|
|
public static final AndroidPossibleEntryPoint onStop = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.TEXT_TO_SPEECH_SERVICE, "onStop",
|
|
ExecutionOrder.directlyBefore(ActivityEP.onStop));
|
|
|
|
|
|
public static final AndroidPossibleEntryPoint onRevoke = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.VPN_SERVICE, "onRevoke",
|
|
ExecutionOrder.between(ExecutionOrder.END_OF_LOOP, onDestroy));
|
|
|
|
public static final AndroidPossibleEntryPoint onCreateEngine = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.WALLPAPER_SERVICE, "onCreateEngine",
|
|
ExecutionOrder.between(onCreate, onStart)); // TODO: Position
|
|
|
|
public static final AndroidPossibleEntryPoint onAppPrivateCommand = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onAppPrivateCommand",
|
|
ExecutionOrder.MULTIPLE_TIMES_IN_LOOP); // TODO: Position
|
|
|
|
/**
|
|
* to find out about switching to a new client.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onBindInput = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onBindInput",
|
|
ExecutionOrder.after(ActivityEP.onResume));
|
|
|
|
/**
|
|
* Compute the interesting insets into your UI.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onComputeInsets = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onComputeInsets",
|
|
ExecutionOrder.after(onStart));
|
|
|
|
public static final AndroidPossibleEntryPoint onConfigureWindow = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onConfigureWindow",
|
|
ExecutionOrder.after(onComputeInsets));
|
|
|
|
public static final AndroidPossibleEntryPoint onCreateCandidatesView = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onCreateCandidatesView",
|
|
ExecutionOrder.between(onStart, onComputeInsets));
|
|
|
|
/**
|
|
* non-demand generation of the UI.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onCreateExtractTextView = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onCreateExtractTextView",
|
|
ExecutionOrder.after(onCreateCandidatesView));
|
|
|
|
/**
|
|
* non-demand generation of the UI.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onCreateInputView = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onCreateInputView",
|
|
onCreateExtractTextView);
|
|
|
|
/**
|
|
* non-demand generation of the UI.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onStartCandidatesView = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onStartCandidatesView",
|
|
onCreateExtractTextView);
|
|
|
|
//public static final AndroidPossibleEntryPoint onCreateInputMethodInterface = new AndroidPossibleEntryPoint(
|
|
// AndroidComponent.INPUT_METHOD_SERVICE, "onCreateInputMethodInterface",
|
|
// ExecutionOrder.after(onCreate));
|
|
|
|
//public static final AndroidPossibleEntryPoint onCreateInputMethodSessionInterface = new AndroidPossibleEntryPoint(
|
|
// AndroidComponent.INPUT_METHOD_SERVICE, "onCreateInputMethodSessionInterface",
|
|
// ExecutionOrder.directlyAfter(onCreateInputMethodInterface));
|
|
|
|
public static final AndroidPossibleEntryPoint onDisplayCompletions = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onDisplayCompletions",
|
|
ExecutionOrder.MULTIPLE_TIMES_IN_LOOP);
|
|
|
|
public static final AndroidPossibleEntryPoint onEvaluateFullscreenMode = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onEvaluateFullscreenMode",
|
|
ExecutionOrder.MULTIPLE_TIMES_IN_LOOP);
|
|
|
|
public static final AndroidPossibleEntryPoint onEvaluateInputViewShown = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onEvaluateInputViewShown",
|
|
ExecutionOrder.MULTIPLE_TIMES_IN_LOOP);
|
|
|
|
public static final AndroidPossibleEntryPoint onExtractTextContextMenuItem = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onExtractTextContextMenuItem",
|
|
ExecutionOrder.MULTIPLE_TIMES_IN_LOOP);
|
|
|
|
public static final AndroidPossibleEntryPoint onExtractedCursorMovement = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onExtractedCursorMovement",
|
|
ExecutionOrder.MULTIPLE_TIMES_IN_LOOP);
|
|
|
|
public static final AndroidPossibleEntryPoint onExtractedSelectionChanged = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onExtractedSelectionChanged",
|
|
ExecutionOrder.directlyAfter(onExtractedCursorMovement));
|
|
|
|
public static final AndroidPossibleEntryPoint onExtractedTextClicked = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onExtractedTextClicked",
|
|
ExecutionOrder.directlyAfter(onExtractedCursorMovement));
|
|
|
|
public static final AndroidPossibleEntryPoint onExtractingInputChanged = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onExtractingInputChanged",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onExtractedTextClicked,
|
|
onExtractedSelectionChanged,
|
|
ExecutionOrder.MULTIPLE_TIMES_IN_LOOP
|
|
}));
|
|
|
|
public static final AndroidPossibleEntryPoint onFinishInput = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onFinishInput",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onExtractingInputChanged,
|
|
}));
|
|
|
|
public static final AndroidPossibleEntryPoint onFinishInputView = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onFinishInputView",
|
|
ExecutionOrder.after(onFinishInput));
|
|
|
|
public static final AndroidPossibleEntryPoint onFinishCandidatesView = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onFinishCandidatesView",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onExtractingInputChanged,
|
|
onFinishInput,
|
|
onStartCandidatesView
|
|
}));
|
|
|
|
//public static final AndroidPossibleEntryPoint onGenericMotionEvent = new AndroidPossibleEntryPoint(
|
|
// AndroidComponent.INPUT_METHOD_SERVICE, "onGenericMotionEvent",
|
|
// ExecutionOrder.directlyBefore(ActivityEP.onGenericMotionEvent));
|
|
|
|
/**
|
|
* for user-interface initialization, in particular to deal with configuration changes while the service is running.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onInitializeInterface = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onInitializeInterface",
|
|
ExecutionOrder.MULTIPLE_TIMES_IN_LOOP); // TODO: Position
|
|
|
|
public static final AndroidPossibleEntryPoint onKeyDown = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onKeyDown",
|
|
ExecutionOrder.directlyBefore(ActivityEP.onKeyDown));
|
|
|
|
public static final AndroidPossibleEntryPoint onKeyLongPress = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onKeyLongPress",
|
|
ExecutionOrder.directlyBefore(ActivityEP.onKeyLongPress));
|
|
|
|
public static final AndroidPossibleEntryPoint onKeyMultiple = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onKeyMultiple",
|
|
ExecutionOrder.directlyBefore(ActivityEP.onKeyMultiple));
|
|
|
|
public static final AndroidPossibleEntryPoint onKeyUp = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onKeyUp",
|
|
ExecutionOrder.directlyBefore(ActivityEP.onKeyUp));
|
|
|
|
public static final AndroidPossibleEntryPoint onShowInputRequested = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onShowInputRequested",
|
|
ExecutionOrder.MULTIPLE_TIMES_IN_LOOP);
|
|
|
|
/**
|
|
* deal with an input session starting with the client.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onStartInput = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onStartInput",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onCreateInputMethodSessionInterface,
|
|
ActivityEP.onResume
|
|
}));
|
|
|
|
/**
|
|
* deal with input starting within the input area of the IME.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onStartInputView = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onStartInputView",
|
|
onStartInput);
|
|
|
|
// InputMethodService.onTrackballEvent
|
|
public static final AndroidPossibleEntryPoint onUnbindInput = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onUnbindInput",
|
|
onUnbind); // TODO: Position
|
|
|
|
public static final AndroidPossibleEntryPoint onUpdateCursor = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onUpdateCursor",
|
|
ExecutionOrder.directlyBefore(onGenericMotionEvent));
|
|
|
|
/**
|
|
* Called when the application has reported new extracted text to be shown due to changes in its current text state.
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onUpdateExtractedText = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onUpdateExtractedText",
|
|
ExecutionOrder.directlyAfter(onExtractedTextClicked));
|
|
|
|
public static final AndroidPossibleEntryPoint onUpdateExtractingViews = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onUpdateExtractingViews",
|
|
ExecutionOrder.after(onExtractingInputChanged));
|
|
|
|
public static final AndroidPossibleEntryPoint onUpdateExtractingVisibility = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onUpdateExtractingVisibility",
|
|
ExecutionOrder.after(onUpdateExtractingViews));
|
|
|
|
public static final AndroidPossibleEntryPoint onUpdateSelection = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onUpdateSelection",
|
|
ExecutionOrder.after(onExtractedSelectionChanged));
|
|
|
|
public static final AndroidPossibleEntryPoint onViewClicked = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onViewClicked",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onGenericMotionEvent,
|
|
onTrackballEvent,
|
|
onKeyUp
|
|
}));
|
|
|
|
public static final AndroidPossibleEntryPoint onWindowShown = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onWindowShown",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onConfigureWindow,
|
|
onCreateCandidatesView
|
|
}));
|
|
|
|
public static final AndroidPossibleEntryPoint onWindowHidden = new AndroidPossibleEntryPoint(
|
|
AndroidComponent.INPUT_METHOD_SERVICE, "onWindowHidden",
|
|
ExecutionOrder.between(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onWindowShown,
|
|
},
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
onDestroy,
|
|
ActivityEP.onPause
|
|
}));
|
|
|
|
/**
|
|
* After return of this method the BroadcastReceiver is assumed to have stopped.
|
|
*
|
|
* As a BroadcastReceiver is oftain used in conjunction with a service it's defined here...
|
|
*/
|
|
public static final AndroidPossibleEntryPoint onReceive = new AndroidPossibleEntryPoint(AndroidComponent.BROADCAST_RECEIVER,
|
|
"onReceive",
|
|
ExecutionOrder.after(
|
|
new AndroidEntryPoint.IExecutionOrder[] {
|
|
ExecutionOrder.AT_FIRST,
|
|
ProviderEP.onCreate,
|
|
//ApplicationEP.onCreate
|
|
}));
|
|
//,
|
|
// new AndroidEntryPoint.IExecutionOrder[] {
|
|
// // BroadcastReceivers oftain use a Service - so place it before them.
|
|
// ServiceEP.onCreate
|
|
// }
|
|
//));
|
|
|
|
/**
|
|
* Add the EntryPoint specifications defined in this file to the given list.
|
|
*
|
|
* @param possibleEntryPoints the list to extend.
|
|
*/
|
|
public static void populate(List<? super AndroidPossibleEntryPoint> possibleEntryPoints) {
|
|
possibleEntryPoints.add(onCreate);
|
|
possibleEntryPoints.add(onStart);
|
|
possibleEntryPoints.add(onStartCommand);
|
|
possibleEntryPoints.add(onBind);
|
|
possibleEntryPoints.add(onUnbind);
|
|
possibleEntryPoints.add(onRebind);
|
|
possibleEntryPoints.add(onTaskRemoved);
|
|
possibleEntryPoints.add(onConfigurationChanged);
|
|
possibleEntryPoints.add(onLowMemory);
|
|
possibleEntryPoints.add(onTrimMemory);
|
|
possibleEntryPoints.add(onDestroy);
|
|
|
|
possibleEntryPoints.add(onHandleIntent);
|
|
possibleEntryPoints.add(onCreateInputMethodInterface);
|
|
possibleEntryPoints.add(onCreateInputMethodSessionInterface);
|
|
possibleEntryPoints.add(onGenericMotionEvent);
|
|
possibleEntryPoints.add(onTrackballEvent);
|
|
possibleEntryPoints.add(onAccessibilityEvent);
|
|
possibleEntryPoints.add(onInterrupt);
|
|
possibleEntryPoints.add(onActionModeFinished);
|
|
possibleEntryPoints.add(onActionModeStarted);
|
|
possibleEntryPoints.add(onAttachedToWindow);
|
|
possibleEntryPoints.add(onContentChanged);
|
|
possibleEntryPoints.add(onCreatePanelMenu);
|
|
possibleEntryPoints.add(onCreatePanelView);
|
|
possibleEntryPoints.add(onDetachedFromWindow);
|
|
possibleEntryPoints.add(onDreamingStarted);
|
|
possibleEntryPoints.add(onDreamingStopped);
|
|
possibleEntryPoints.add(onMenuItemSelected);
|
|
possibleEntryPoints.add(onMenuOpened);
|
|
possibleEntryPoints.add(onPanelClosed);
|
|
possibleEntryPoints.add(onPreparePanel);
|
|
possibleEntryPoints.add(onSearchRequested);
|
|
possibleEntryPoints.add(onWindowAttributesChanged);
|
|
possibleEntryPoints.add(onWindowFocusChanged);
|
|
possibleEntryPoints.add(onWindowStartingActionMode);
|
|
possibleEntryPoints.add(onDeactivated);
|
|
possibleEntryPoints.add(onCreateMediaRouteProvider);
|
|
possibleEntryPoints.add(onNotificationPosted);
|
|
possibleEntryPoints.add(onNotificationRemoved);
|
|
possibleEntryPoints.add(onConnected);
|
|
possibleEntryPoints.add(onCreatePrinterDiscoverySession);
|
|
possibleEntryPoints.add(onDisconnected);
|
|
possibleEntryPoints.add(onPrintJobQueued);
|
|
possibleEntryPoints.add(onRequestCancelPrintJob);
|
|
possibleEntryPoints.add(onCancel);
|
|
possibleEntryPoints.add(onStartListening);
|
|
possibleEntryPoints.add(onStopListening);
|
|
possibleEntryPoints.add(onGetViewFactory);
|
|
possibleEntryPoints.add(onGetEnabled);
|
|
possibleEntryPoints.add(onGetSummary);
|
|
possibleEntryPoints.add(onGetFeaturesForLanguage);
|
|
possibleEntryPoints.add(onGetLanguage);
|
|
possibleEntryPoints.add(onIsLanguageAvailable);
|
|
possibleEntryPoints.add(onLoadLanguage);
|
|
possibleEntryPoints.add(onStop);
|
|
possibleEntryPoints.add(onSynthesizeText);
|
|
possibleEntryPoints.add(onRevoke);
|
|
possibleEntryPoints.add(onCreateEngine);
|
|
possibleEntryPoints.add(onAppPrivateCommand);
|
|
possibleEntryPoints.add(onBindInput);
|
|
possibleEntryPoints.add(onComputeInsets);
|
|
possibleEntryPoints.add(onConfigureWindow);
|
|
possibleEntryPoints.add(onCreateCandidatesView);
|
|
possibleEntryPoints.add(onCreateExtractTextView);
|
|
possibleEntryPoints.add(onCreateInputMethodInterface);
|
|
possibleEntryPoints.add(onCreateInputMethodSessionInterface);
|
|
possibleEntryPoints.add(onCreateInputView);
|
|
possibleEntryPoints.add(onDisplayCompletions);
|
|
possibleEntryPoints.add(onEvaluateFullscreenMode);
|
|
possibleEntryPoints.add(onEvaluateInputViewShown);
|
|
possibleEntryPoints.add(onExtractTextContextMenuItem);
|
|
possibleEntryPoints.add(onExtractedCursorMovement);
|
|
possibleEntryPoints.add(onExtractedSelectionChanged);
|
|
possibleEntryPoints.add(onExtractedTextClicked);
|
|
possibleEntryPoints.add(onExtractingInputChanged);
|
|
possibleEntryPoints.add(onFinishCandidatesView);
|
|
possibleEntryPoints.add(onFinishInput);
|
|
possibleEntryPoints.add(onFinishInputView);
|
|
possibleEntryPoints.add(onGenericMotionEvent);
|
|
possibleEntryPoints.add(onInitializeInterface);
|
|
possibleEntryPoints.add(onKeyDown);
|
|
possibleEntryPoints.add(onKeyLongPress);
|
|
possibleEntryPoints.add(onKeyMultiple);
|
|
possibleEntryPoints.add(onKeyUp);
|
|
possibleEntryPoints.add(onShowInputRequested);
|
|
possibleEntryPoints.add(onStartCandidatesView);
|
|
possibleEntryPoints.add(onStartInput);
|
|
possibleEntryPoints.add(onStartInputView);
|
|
possibleEntryPoints.add(onTrackballEvent);
|
|
possibleEntryPoints.add(onUnbindInput);
|
|
possibleEntryPoints.add(onUpdateCursor);
|
|
possibleEntryPoints.add(onUpdateExtractedText);
|
|
possibleEntryPoints.add(onUpdateExtractingViews);
|
|
possibleEntryPoints.add(onUpdateExtractingVisibility);
|
|
possibleEntryPoints.add(onUpdateSelection);
|
|
possibleEntryPoints.add(onViewClicked);
|
|
possibleEntryPoints.add(onWindowHidden);
|
|
possibleEntryPoints.add(onWindowShown);
|
|
|
|
possibleEntryPoints.add(onReceive);
|
|
}
|
|
}
|