All Downloads are FREE. Search and download functionalities are using the official Maven repository.

src.com.android.server.infra.ServiceNameResolver Maven / Gradle / Ivy

/*
 * Copyright (C) 2018 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.server.infra;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;

import com.android.internal.infra.AbstractRemoteService;

import java.io.PrintWriter;

/**
 * A helper class used to resolve the name of the app-provided service a
 * {@link AbstractRemoteService} binds to.
 *
 * @hide
 */
public interface ServiceNameResolver {

    /**
     * Listener for name changes.
     */
    public interface NameResolverListener {

        /**
         * The name change callback.
         */
        void onNameResolved(@UserIdInt int userId, @Nullable String serviceName,
                boolean isTemporary);
    }

    /**
     * Sets a callback that is called after the service is
     * {@link #setTemporaryService(int, String, int) set} or
     * {@link #resetTemporaryService(int) reset}.
     *
     * 

Typically called after the object is constructed. */ default void setOnTemporaryServiceNameChangedCallback( @SuppressWarnings("unused") @NonNull NameResolverListener callback) { // ignored by default } /** * Gets the default name of the service for the given user. * *

Typically implemented by reading a Settings property or framework resource. */ @Nullable String getDefaultServiceName(@UserIdInt int userId); /** * Gets the current name of the service for the given user * * @return either the temporary name (set by * {@link #setTemporaryService(int, String, int)}, or the * {@link #getDefaultServiceName(int) default name}. */ @Nullable default String getServiceName(@UserIdInt int userId) { return getDefaultServiceName(userId); } /** * Checks whether the current service is temporary for the given user. */ default boolean isTemporary(@SuppressWarnings("unused") @UserIdInt int userId) { return false; } /** * Temporarily sets the service implementation for the given user. * * @param userId user handle * @param componentName name of the new component * @param durationMs how long the change will be valid (the service will be automatically reset * to the default component after this timeout expires). * * @throws UnsupportedOperationException if not implemented. */ default void setTemporaryService(@UserIdInt int userId, @NonNull String componentName, int durationMs) { throw new UnsupportedOperationException("temporary user not supported"); } /** * Resets the temporary service implementation to the default component for the given user. * * @param userId user handle * * @throws UnsupportedOperationException if not implemented. */ default void resetTemporaryService(@UserIdInt int userId) { throw new UnsupportedOperationException("temporary user not supported"); } /** * Sets whether the default service should be used when the temporary service is not set. * *

Typically used during CTS tests to make sure only the default service doesn't interfere * with the test results. * * @param userId user handle * @param enabled whether the default service should be used when the temporary service is not * set. If the service enabled state is already that value, the command is ignored and this * method return {@code false}. * * @return whether the enabled state changed. * @throws UnsupportedOperationException if not implemented. */ default boolean setDefaultServiceEnabled(@UserIdInt int userId, boolean enabled) { throw new UnsupportedOperationException("changing default service not supported"); } /** * Checks whether the default service should be used when the temporary service is not set. * *

Typically used during CTS tests to make sure only the default service doesn't interfere * with the test results. * * @param userId user handle * * @throws UnsupportedOperationException if not implemented. */ default boolean isDefaultServiceEnabled(@UserIdInt int userId) { throw new UnsupportedOperationException("checking default service not supported"); } /** * Dumps the generic info in just one line (without calling {@code println}. */ // TODO(b/117779333): support proto void dumpShort(@NonNull PrintWriter pw); /** * Dumps the user-specific info in just one line (without calling {@code println}. */ // TODO(b/117779333): support proto void dumpShort(@NonNull PrintWriter pw, @UserIdInt int userId); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy