Add logs to identify the issue
Update HLs dlete logic Remove unused changes
This commit is contained in:
@@ -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);
|
||||
}
|
||||
});
|
||||
|
||||
+11
-14
@@ -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();
|
||||
}
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user