Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a4271f59 authored by Ajay Panicker's avatar Ajay Panicker Committed by android-build-merger
Browse files

Merge "Add checks when retrieving data for the JNI layer for AVRCP" into pi-dev

am: da0e4d34

Change-Id: Idf9a620fd14e7c808fa8aae98f81a56f91b2f5eb
parents 8e53fa40 da0e4d34
Loading
Loading
Loading
Loading
+37 −15
Original line number Diff line number Diff line
@@ -307,6 +307,8 @@ static void sendMediaKeyEvent(int key, KeyState state) {
static SongInfo getSongInfoFromJavaObj(JNIEnv* env, jobject metadata) {
  SongInfo info;

  if (metadata == nullptr) return info;

  jclass class_metadata = env->GetObjectClass(metadata);
  jfieldID field_mediaId =
      env->GetFieldID(class_metadata, "mediaId", "Ljava/lang/String;");
@@ -326,7 +328,7 @@ static SongInfo getSongInfoFromJavaObj(JNIEnv* env, jobject metadata) {
      env->GetFieldID(class_metadata, "duration", "Ljava/lang/String;");

  jstring jstr = (jstring)env->GetObjectField(metadata, field_mediaId);
  if (jstr != NULL) {
  if (jstr != nullptr) {
    const char* value = env->GetStringUTFChars(jstr, nullptr);
    info.media_id = std::string(value);
    env->ReleaseStringUTFChars(jstr, value);
@@ -334,7 +336,7 @@ static SongInfo getSongInfoFromJavaObj(JNIEnv* env, jobject metadata) {
  }

  jstr = (jstring)env->GetObjectField(metadata, field_title);
  if (jstr != NULL) {
  if (jstr != nullptr) {
    const char* value = env->GetStringUTFChars(jstr, nullptr);
    info.attributes.insert(
        AttributeEntry(Attribute::TITLE, std::string(value)));
@@ -343,7 +345,7 @@ static SongInfo getSongInfoFromJavaObj(JNIEnv* env, jobject metadata) {
  }

  jstr = (jstring)env->GetObjectField(metadata, field_artist);
  if (jstr != NULL) {
  if (jstr != nullptr) {
    const char* value = env->GetStringUTFChars(jstr, nullptr);
    info.attributes.insert(
        AttributeEntry(Attribute::ARTIST_NAME, std::string(value)));
@@ -352,7 +354,7 @@ static SongInfo getSongInfoFromJavaObj(JNIEnv* env, jobject metadata) {
  }

  jstr = (jstring)env->GetObjectField(metadata, field_album);
  if (jstr != NULL) {
  if (jstr != nullptr) {
    const char* value = env->GetStringUTFChars(jstr, nullptr);
    info.attributes.insert(
        AttributeEntry(Attribute::ALBUM_NAME, std::string(value)));
@@ -361,7 +363,7 @@ static SongInfo getSongInfoFromJavaObj(JNIEnv* env, jobject metadata) {
  }

  jstr = (jstring)env->GetObjectField(metadata, field_trackNum);
  if (jstr != NULL) {
  if (jstr != nullptr) {
    const char* value = env->GetStringUTFChars(jstr, nullptr);
    info.attributes.insert(
        AttributeEntry(Attribute::TRACK_NUMBER, std::string(value)));
@@ -370,7 +372,7 @@ static SongInfo getSongInfoFromJavaObj(JNIEnv* env, jobject metadata) {
  }

  jstr = (jstring)env->GetObjectField(metadata, field_numTracks);
  if (jstr != NULL) {
  if (jstr != nullptr) {
    const char* value = env->GetStringUTFChars(jstr, nullptr);
    info.attributes.insert(
        AttributeEntry(Attribute::TOTAL_NUMBER_OF_TRACKS, std::string(value)));
@@ -379,7 +381,7 @@ static SongInfo getSongInfoFromJavaObj(JNIEnv* env, jobject metadata) {
  }

  jstr = (jstring)env->GetObjectField(metadata, field_genre);
  if (jstr != NULL) {
  if (jstr != nullptr) {
    const char* value = env->GetStringUTFChars(jstr, nullptr);
    info.attributes.insert(
        AttributeEntry(Attribute::GENRE, std::string(value)));
@@ -388,7 +390,7 @@ static SongInfo getSongInfoFromJavaObj(JNIEnv* env, jobject metadata) {
  }

  jstr = (jstring)env->GetObjectField(metadata, field_playingTime);
  if (jstr != NULL) {
  if (jstr != nullptr) {
    const char* value = env->GetStringUTFChars(jstr, nullptr);
    info.attributes.insert(
        AttributeEntry(Attribute::PLAYING_TIME, std::string(value)));
@@ -410,7 +412,7 @@ static FolderInfo getFolderInfoFromJavaObj(JNIEnv* env, jobject folder) {
      env->GetFieldID(class_folder, "title", "Ljava/lang/String;");

  jstring jstr = (jstring)env->GetObjectField(folder, field_mediaId);
  if (jstr != NULL) {
  if (jstr != nullptr) {
    const char* value = env->GetStringUTFChars(jstr, nullptr);
    info.media_id = std::string(value);
    env->ReleaseStringUTFChars(jstr, value);
@@ -419,7 +421,7 @@ static FolderInfo getFolderInfoFromJavaObj(JNIEnv* env, jobject folder) {
  info.is_playable = env->GetBooleanField(folder, field_isPlayable) == JNI_TRUE;

  jstr = (jstring)env->GetObjectField(folder, field_name);
  if (jstr != NULL) {
  if (jstr != nullptr) {
    const char* value = env->GetStringUTFChars(jstr, nullptr);
    info.name = std::string(value);
    env->ReleaseStringUTFChars(jstr, value);
@@ -448,6 +450,12 @@ static PlayStatus getCurrentPlayStatus() {
  PlayStatus status;
  jobject playStatus =
      sCallbackEnv->CallObjectMethod(mJavaInterface, method_getPlaybackStatus);

  if (playStatus == nullptr) {
    ALOGE("%s: Got a null play status", __func__);
    return status;
  }

  jclass class_playStatus = sCallbackEnv->GetObjectClass(playStatus);
  jfieldID field_position =
      sCallbackEnv->GetFieldID(class_playStatus, "position", "J");
@@ -471,7 +479,10 @@ static std::string getCurrentMediaId() {

  jstring media_id = (jstring)sCallbackEnv->CallObjectMethod(
      mJavaInterface, method_getCurrentMediaId);
  if (media_id == NULL) return "";
  if (media_id == nullptr) {
    ALOGE("%s: Got a null media ID", __func__);
    return "";
  }

  const char* value = sCallbackEnv->GetStringUTFChars(media_id, nullptr);
  std::string ret(value);
@@ -487,7 +498,7 @@ static std::vector<SongInfo> getNowPlayingList() {

  jobject song_list =
      sCallbackEnv->CallObjectMethod(mJavaInterface, method_getNowPlayingList);
  if (song_list == NULL) {
  if (song_list == nullptr) {
    ALOGE("%s: Got a null now playing list", __func__);
    return std::vector<SongInfo>();
  }
@@ -531,6 +542,11 @@ static std::vector<MediaPlayerInfo> getMediaPlayerList() {
  jobject player_list = (jobject)sCallbackEnv->CallObjectMethod(
      mJavaInterface, method_getMediaPlayerList);

  if (player_list == nullptr) {
    ALOGE("%s: Got a null media player list", __func__);
    return std::vector<MediaPlayerInfo>();
  }

  jclass class_list = sCallbackEnv->GetObjectClass(player_list);
  jmethodID method_get =
      sCallbackEnv->GetMethodID(class_list, "get", "(I)Ljava/lang/Object;");
@@ -558,7 +574,7 @@ static std::vector<MediaPlayerInfo> getMediaPlayerList() {
    temp.id = sCallbackEnv->GetIntField(player, field_playerId);

    jstring jstr = (jstring)sCallbackEnv->GetObjectField(player, field_name);
    if (jstr != NULL) {
    if (jstr != nullptr) {
      const char* value = sCallbackEnv->GetStringUTFChars(jstr, nullptr);
      temp.name = std::string(value);
      sCallbackEnv->ReleaseStringUTFChars(jstr, value);
@@ -598,7 +614,7 @@ static void setBrowsedPlayerResponseNative(JNIEnv* env, jobject object,
  ALOGD("%s", __func__);

  std::string root;
  if (root_id != NULL) {
  if (root_id != nullptr) {
    const char* value = env->GetStringUTFChars(root_id, nullptr);
    root = std::string(value);
    env->ReleaseStringUTFChars(root_id, value);
@@ -615,7 +631,7 @@ static void getFolderItemsResponseNative(JNIEnv* env, jobject object,
  ALOGD("%s", __func__);

  std::string id;
  if (parent_id != NULL) {
  if (parent_id != nullptr) {
    const char* value = env->GetStringUTFChars(parent_id, nullptr);
    id = std::string(value);
    env->ReleaseStringUTFChars(parent_id, value);
@@ -634,6 +650,12 @@ static void getFolderItemsResponseNative(JNIEnv* env, jobject object,
  auto callback = get_folder_items_cb_map.find(id)->second;
  get_folder_items_cb_map.erase(id);

  if (list == nullptr) {
    ALOGE("%s: Got a null get folder items response list", __func__);
    callback.Run(std::vector<ListItem>());
    return;
  }

  jclass class_list = env->GetObjectClass(list);
  jmethodID method_get =
      env->GetMethodID(class_list, "get", "(I)Ljava/lang/Object;");