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

Commit f3d5b5fc authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Add checks when retrieving data for the JNI layer for AVRCP"

parents 3b052e63 85a107f6
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;");