Add logs to identify the issue

Update HLs dlete logic

Remove unused changes
This commit is contained in:
deeppandya
2024-02-21 23:31:25 -05:00
parent d53ec4db02
commit b91089c495
8 changed files with 70 additions and 30 deletions
@@ -5,6 +5,7 @@
package org.chromium.chrome.browser.playlist;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
@@ -29,6 +30,7 @@ import com.brave.playlist.view.bottomsheet.MoveOrCopyToPlaylistBottomSheet;
import org.chromium.base.BraveFeatureList;
import org.chromium.base.BravePreferenceKeys;
import org.chromium.base.Log;
import org.chromium.base.supplier.OneshotSupplier;
import org.chromium.base.task.PostTask;
import org.chromium.base.task.TaskTraits;
@@ -37,6 +39,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.init.ActivityProfileProvider;
import org.chromium.chrome.browser.init.AsyncInitializationActivity;
import org.chromium.chrome.browser.playlist.PlaylistServiceObserverImpl.PlaylistServiceObserverImplDelegate;
import org.chromium.chrome.browser.playlist.hls_content.HlsService;
import org.chromium.chrome.browser.playlist.hls_content.HlsServiceImpl;
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.profiles.ProfileProvider;
@@ -54,7 +57,7 @@ import java.util.List;
public class PlaylistHostActivity extends AsyncInitializationActivity
implements ConnectionErrorHandler, PlaylistOptionsListener,
PlaylistServiceObserverImplDelegate {
private static final String TAG = "Playlist/PlaylistHostActivity";
private static final String TAG = "PlaylistHostActivity";
private PlaylistService mPlaylistService;
private PlaylistViewModel mPlaylistViewModel;
private PlaylistServiceObserverImpl mPlaylistServiceObserver;
@@ -344,6 +347,7 @@ public class PlaylistHostActivity extends AsyncInitializationActivity
playlistItem.cached,
false);
playlistItems.add(playlistItemModel);
Log.e(TAG, "playlistItemModel : " + playlistItemModel.toString());
}
PlaylistModel playlistModel =
new PlaylistModel(playlist.id, playlist.name, playlistItems);
@@ -453,8 +457,10 @@ public class PlaylistHostActivity extends AsyncInitializationActivity
playlistRepository.deleteHlsContentQueueModel(playlistItemId);
}
if (HlsServiceImpl.currentDownloadingPlaylistItemId.equals(playlistItemId)) {
mPlaylistService.cancelQuery(playlistItemId);
HlsServiceImpl.currentDownloadingPlaylistItemId = "";
mPlaylistService.clearObserverForStreaming();
mPlaylistService.cancelQuery(playlistItemId);
stopService(new Intent(PlaylistHostActivity.this, HlsService.class));
PlaylistUtils.checkAndStartHlsDownload(PlaylistHostActivity.this);
}
});
@@ -9,9 +9,8 @@ import com.brave.playlist.model.PlaylistItemModel;
import com.brave.playlist.playback_service.VideoPlaybackService;
import com.brave.playlist.util.ConstantUtils;
import com.brave.playlist.util.MediaUtils;
import com.brave.playlist.util.PlaylistUtils;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.browser.playlist.hls_content.HlsUtils;
import org.chromium.mojo.system.MojoException;
import org.chromium.playlist.mojom.Playlist;
import org.chromium.playlist.mojom.PlaylistItem;
@@ -19,6 +18,8 @@ import org.chromium.playlist.mojom.PlaylistServiceObserver;
import org.chromium.url.mojom.Url;
public class PlaylistServiceObserverImpl implements PlaylistServiceObserver {
private static final String TAG = "Playlist/PlaylistServiceObserverImpl";
public interface PlaylistServiceObserverImplDelegate {
default void onItemCreated(PlaylistItem item) {}
@@ -56,9 +57,9 @@ public class PlaylistServiceObserverImpl implements PlaylistServiceObserver {
public void onItemLocalDataDeleted(String playlistItemId) {
if (mDelegate == null) return;
mDelegate.onItemLocalDataDeleted(playlistItemId);
// if (isVideoPlaybackServiceRunning()) {
// VideoPlaybackService.Companion.removePlaylistItemModel(playlistItemId);
// }
if (HlsUtils.isVideoPlaybackServiceRunning()) {
VideoPlaybackService.Companion.removePlaylistItemModel(playlistItemId);
}
}
@Override
@@ -71,9 +72,9 @@ public class PlaylistServiceObserverImpl implements PlaylistServiceObserver {
public void onItemRemovedFromList(String playlistId, String playlistItemId) {
if (mDelegate == null) return;
mDelegate.onItemRemovedFromList(playlistId, playlistItemId);
// if (isVideoPlaybackServiceRunning()) {
// VideoPlaybackService.Companion.removePlaylistItemModel(playlistItemId);
// }
if (HlsUtils.isVideoPlaybackServiceRunning()) {
VideoPlaybackService.Companion.removePlaylistItemModel(playlistItemId);
}
}
@Override
@@ -81,7 +82,8 @@ public class PlaylistServiceObserverImpl implements PlaylistServiceObserver {
if (mDelegate == null) return;
mDelegate.onItemCached(playlistItem);
if (!MediaUtils.isHlsFile(playlistItem.mediaPath.url) && isVideoPlaybackServiceRunning()) {
if (!MediaUtils.isHlsFile(playlistItem.mediaPath.url)
&& HlsUtils.isVideoPlaybackServiceRunning()) {
PlaylistItemModel playlistItemModel =
new PlaylistItemModel(
playlistItem.id,
@@ -149,9 +151,4 @@ public class PlaylistServiceObserverImpl implements PlaylistServiceObserver {
public void destroy() {
mDelegate = null;
}
private boolean isVideoPlaybackServiceRunning() {
return PlaylistUtils.isServiceRunning(
ContextUtils.getApplicationContext(), VideoPlaybackService.class);
}
}
@@ -84,7 +84,11 @@ public class HlsServiceImpl extends HlsService.Impl implements ConnectionErrorHa
playlistItemId,
playlistItem -> {
if (playlistItem == null) {
removeContentAndStartNextDownload(playlistItemId);
PostTask.postTask(
TaskTraits.USER_VISIBLE_MAY_BLOCK,
() -> {
removeContentAndStartNextDownload(playlistItemId);
});
}
currentDownloadingPlaylistItemId = playlistItemId;
HlsUtils.getManifestFile(
@@ -162,6 +166,9 @@ public class HlsServiceImpl extends HlsService.Impl implements ConnectionErrorHa
private void removeContentAndStartNextDownload(String playlistItemId) {
PlaylistRepository playlistRepository = new PlaylistRepository(mContext);
if (playlistRepository == null) {
return;
}
playlistRepository.deleteHlsContentQueueModel(playlistItemId);
currentDownloadingPlaylistItemId = "";
if (playlistRepository.getFirstHlsContentQueueModel() != null) {
@@ -191,7 +198,9 @@ public class HlsServiceImpl extends HlsService.Impl implements ConnectionErrorHa
playlistItem.mediaFileBytes,
playlistItem.cached,
false);
VideoPlaybackService.Companion.addNewPlaylistItemModel(playlistItemModel);
if (HlsUtils.isVideoPlaybackServiceRunning()) {
VideoPlaybackService.Companion.addNewPlaylistItemModel(playlistItemModel);
}
});
}
@@ -212,4 +221,12 @@ public class HlsServiceImpl extends HlsService.Impl implements ConnectionErrorHa
mPlaylistService =
PlaylistServiceFactoryAndroid.getInstance().getPlaylistService(HlsServiceImpl.this);
}
@Override
public void onDestroy() {
if (mPlaylistService != null) {
mPlaylistService.close();
}
super.onDestroy();
}
}
@@ -5,13 +5,17 @@
package org.chromium.chrome.browser.playlist.hls_content;
import android.content.Context;
import android.text.TextUtils;
import androidx.media3.common.util.UriUtil;
import androidx.media3.exoplayer.hls.playlist.HlsMediaPlaylist.Segment;
import com.brave.playlist.playback_service.VideoPlaybackService;
import com.brave.playlist.util.HLSParsingUtil;
import com.brave.playlist.util.MediaUtils;
import com.brave.playlist.util.PlaylistUtils;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.PathUtils;
import org.chromium.chrome.browser.playlist.PlaylistStreamingObserverImpl;
@@ -49,8 +53,10 @@ public class HlsUtils {
String mediaPath = getHlsMediaFilePath(playlistItem);
String hlsManifestFilePath = getHlsManifestFilePath(playlistItem);
final String manifestUrl = getHlsResolutionManifestUrl(context, playlistItem);
if (TextUtils.isEmpty(manifestUrl)) {
return;
}
playlistService.requestStreamingQuery(playlistItem.id, manifestUrl, GET_METHOD);
PlaylistStreamingObserverImpl.PlaylistStreamingObserverImplDelegate
playlistStreamingObserverImplDelegate =
new PlaylistStreamingObserverImpl.PlaylistStreamingObserverImplDelegate() {
@@ -92,6 +98,7 @@ public class HlsUtils {
};
sPlaylistStreamingObserverImpl =
new PlaylistStreamingObserverImpl(playlistStreamingObserverImplDelegate);
playlistService.clearObserverForStreaming();
playlistService.addObserverForStreaming(sPlaylistStreamingObserverImpl);
}
@@ -161,6 +168,7 @@ public class HlsUtils {
};
sPlaylistStreamingObserverImpl =
new PlaylistStreamingObserverImpl(playlistStreamingObserverImplDelegate);
playlistService.clearObserverForStreaming();
playlistService.addObserverForStreaming(sPlaylistStreamingObserverImpl);
}
@@ -219,4 +227,9 @@ public class HlsUtils {
mediaFile.delete();
}
}
public static boolean isVideoPlaybackServiceRunning() {
return PlaylistUtils.isServiceRunning(
ContextUtils.getApplicationContext(), VideoPlaybackService.class);
}
}
@@ -119,6 +119,7 @@ import org.chromium.components.embedder_support.util.UrlUtilities;
import org.chromium.content_public.browser.NavigationHandle;
import org.chromium.mojo.bindings.ConnectionErrorHandler;
import org.chromium.mojo.system.MojoException;
import org.chromium.playlist.mojom.Playlist;
import org.chromium.playlist.mojom.PlaylistItem;
import org.chromium.playlist.mojom.PlaylistService;
import org.chromium.ui.UiUtils;
@@ -718,15 +719,16 @@ public abstract class BraveToolbarLayoutImpl extends ToolbarLayout
});
}
private void showAddedToPlaylistSnackBar() {
private void showAddedToPlaylistSnackBar(Playlist playlist) {
SnackBarActionModel snackBarActionModel =
new SnackBarActionModel(getContext().getResources().getString(R.string.view_action),
new SnackBarActionModel(
getContext().getResources().getString(R.string.view_action),
new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
BraveActivity.getBraveActivity().openPlaylistActivity(
getContext(), ConstantUtils.DEFAULT_PLAYLIST);
BraveActivity.getBraveActivity()
.openPlaylistActivity(getContext(), playlist.id);
} catch (BraveActivity.BraveActivityNotFoundException e) {
Log.e(TAG, "showAddedToPlaylistSnackBar onClick " + e);
}
@@ -736,9 +738,15 @@ public abstract class BraveToolbarLayoutImpl extends ToolbarLayout
ViewGroup viewGroup =
BraveActivity.getBraveActivity().getWindow().getDecorView().findViewById(
android.R.id.content);
PlaylistViewUtils.showSnackBarWithActions(viewGroup,
String.format(getContext().getResources().getString(R.string.added_to_playlist),
getContext().getResources().getString(R.string.playlist_play_later)),
String playlistName =
(playlist.id.equals(ConstantUtils.DEFAULT_PLAYLIST))
? getContext().getResources().getString(R.string.playlist_play_later)
: playlist.name;
PlaylistViewUtils.showSnackBarWithActions(
viewGroup,
String.format(
getContext().getResources().getString(R.string.added_to_playlist),
playlistName),
snackBarActionModel);
} catch (BraveActivity.BraveActivityNotFoundException e) {
Log.e(TAG, "showAddedToPlaylistSnackBar " + e);
@@ -766,7 +774,7 @@ public abstract class BraveToolbarLayoutImpl extends ToolbarLayout
getContext().getResources().getString(R.string.already_added_in_playlist),
snackBarActionModel);
} catch (BraveActivity.BraveActivityNotFoundException e) {
Log.e(TAG, "showAddedToPlaylistSnackBar " + e);
Log.e(TAG, "showAlreadyAddedToPlaylistSnackBar " + e);
}
}
@@ -1,3 +1,4 @@
/* Copyright (c) 2021 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
@@ -88,7 +89,6 @@ void PlaylistService::Shutdown() {
streaming_observers_.Clear();
media_file_download_manager_.reset();
thumbnail_downloader_.reset();
download_request_manager_.reset();
task_runner_.reset();
playlist_streaming_.reset();
#if BUILDFLAG(IS_ANDROID)
@@ -875,6 +875,7 @@ void PlaylistService::ResetAll() {
// Resets all on-going downloads
thumbnail_downloader_->CancelAllDownloadRequests();
media_file_download_manager_->CancelAllDownloadRequests();
playlist_streaming_->ClearAllQueries();
// Resets preference ---------------------------------------------------------
prefs_->ClearPref(kPlaylistCacheByDefault);
@@ -69,8 +69,6 @@ void PlaylistStreaming::RequestStreamingQuery(
}
void PlaylistStreaming::ClearAllQueries() {
// TODO(deeppandya): Keep track of in-progress requests and cancel them
// individually. This would be useful to keep some in-progress requests alive.
api_request_helper_->CancelAll();
url_loader_map_.clear();
}