blob: fd2ed158c3d0b63bcf42a65888f377d327a2270b [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.media.remote;
import android.app.PendingIntent;
import android.net.Uri;
import android.os.SystemClock;
import android.support.v7.media.MediaItemStatus;
import org.chromium.base.Log;
/**
* PlaylistItem helps keep track of the current status of an media item.
*/
final class MediaItem {
// immutables
private final String mSessionId;
private final String mItemId;
private final Uri mUri;
private final PendingIntent mUpdateReceiver;
// changeable states
private int mPlaybackState = MediaItemStatus.PLAYBACK_STATE_PENDING;
private long mContentPosition;
private long mContentDuration;
private long mTimestamp;
private String mRemoteItemId;
private static final String TAG = "CastEmulator";
public MediaItem(String qid, String iid, Uri uri, String mime, PendingIntent pi) {
mSessionId = qid;
mItemId = iid;
mUri = uri;
mUpdateReceiver = pi;
setTimestamp(SystemClock.elapsedRealtime());
}
public void setRemoteItemId(String riid) {
mRemoteItemId = riid;
}
public void setState(int state) {
mPlaybackState = state;
Log.v(TAG, "State set to %d", state);
}
public void setPosition(long pos) {
mContentPosition = pos;
}
public void setTimestamp(long ts) {
mTimestamp = ts;
}
public void setDuration(long duration) {
mContentDuration = duration;
}
public String getSessionId() {
return mSessionId;
}
public String getItemId() {
return mItemId;
}
public String getRemoteItemId() {
return mRemoteItemId;
}
public Uri getUri() {
return mUri;
}
public PendingIntent getUpdateReceiver() {
return mUpdateReceiver;
}
public int getState() {
return mPlaybackState;
}
public long getPosition() {
return mContentPosition;
}
public long getDuration() {
return mContentDuration;
}
public long getTimestamp() {
return mTimestamp;
}
public MediaItemStatus getStatus() {
return new MediaItemStatus.Builder(mPlaybackState).setContentPosition(mContentPosition)
.setContentDuration(mContentDuration).setTimestamp(mTimestamp).build();
}
@Override
public String toString() {
String state[] = {"PENDING", "PLAYING", "PAUSED", "BUFFERING", "FINISHED", "CANCELED",
"INVALIDATED", "ERROR"};
return "[" + mSessionId + "|" + mItemId + "|"
+ (mRemoteItemId != null ? mRemoteItemId : "-") + "|" + state[mPlaybackState] + "] "
+ mUri.toString();
}
}