/* * Copyright (C) 2016 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.dialer.enrichedcall; import android.support.annotation.IntDef; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import com.android.dialer.multimedia.MultimediaData; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** Holds state information and data about enriched calling sessions. */ public interface Session { /** Possible states for call composer sessions. */ @Retention(RetentionPolicy.SOURCE) @IntDef({ STATE_NONE, STATE_STARTING, STATE_STARTED, STATE_START_FAILED, STATE_MESSAGE_SENT, STATE_MESSAGE_FAILED, STATE_CLOSED, }) @interface State {} int STATE_NONE = 0; int STATE_STARTING = STATE_NONE + 1; int STATE_STARTED = STATE_STARTING + 1; int STATE_START_FAILED = STATE_STARTED + 1; int STATE_MESSAGE_SENT = STATE_START_FAILED + 1; int STATE_MESSAGE_FAILED = STATE_MESSAGE_SENT + 1; int STATE_CLOSED = STATE_MESSAGE_FAILED + 1; /** Id used for sessions that fail to start. */ long NO_SESSION_ID = -1; /** * An id for the specific case when sending a message fails so early that a message id isn't * created. */ String MESSAGE_ID_COULD_NOT_CREATE_ID = "messageIdCouldNotCreateId"; /** * Returns the id associated with this session, or {@link #NO_SESSION_ID} if this represents a * session that failed to start. */ long getSessionId(); /** Returns the id of the dialer call associated with this session, or null if there isn't one. */ @Nullable String getUniqueDialerCallId(); void setUniqueDialerCallId(@NonNull String id); /** Returns the number associated with the remote end of this session. */ @NonNull String getRemoteNumber(); /** Returns the {@link State} for this session. */ @State int getState(); /** Returns the {@link MultimediaData} associated with this session. */ @NonNull MultimediaData getMultimediaData(); /** Returns type of this session, based on some arbitrarily defined type. */ int getType(); /** * Sets the {@link MultimediaData} for this session. * * * @throws IllegalArgumentException if the type is invalid */ void setSessionData(@NonNull MultimediaData multimediaData, int type); }