Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1027)

Unified Diff: content/browser/media/android/browser_media_player_manager.cc

Issue 2742333002: Remove ScopedVector from content/browser/ [1]. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/media/android/browser_media_player_manager.h ('k') | content/browser/media/midi_host.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/media/android/browser_media_player_manager.cc
diff --git a/content/browser/media/android/browser_media_player_manager.cc b/content/browser/media/android/browser_media_player_manager.cc
index d73137b1a63e7d87d7b1ef4dfc4d97600bbd0b90..1ea8bf152dcc60c5445115e8057fd529e462b437 100644
--- a/content/browser/media/android/browser_media_player_manager.cc
+++ b/content/browser/media/android/browser_media_player_manager.cc
@@ -7,6 +7,7 @@
#include <utility>
#include "base/android/scoped_java_ref.h"
+#include "base/memory/ptr_util.h"
#include "base/memory/singleton.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/browser/media/android/media_resource_getter_impl.h"
@@ -79,20 +80,23 @@ ContentViewCore* BrowserMediaPlayerManager::GetContentViewCore() const {
}
#endif
-MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer(
+std::unique_ptr<MediaPlayerAndroid>
+BrowserMediaPlayerManager::CreateMediaPlayer(
const MediaPlayerHostMsg_Initialize_Params& media_player_params,
bool hide_url_log) {
switch (media_player_params.type) {
case MEDIA_PLAYER_TYPE_REMOTE_ONLY:
case MEDIA_PLAYER_TYPE_URL: {
const std::string user_agent = GetContentClient()->GetUserAgent();
- MediaPlayerBridge* media_player_bridge = new MediaPlayerBridge(
- media_player_params.player_id, media_player_params.url,
- media_player_params.first_party_for_cookies, user_agent, hide_url_log,
- this,
- base::Bind(&BrowserMediaPlayerManager::OnDecoderResourcesReleased,
- weak_ptr_factory_.GetWeakPtr()),
- media_player_params.frame_url, media_player_params.allow_credentials);
+ std::unique_ptr<MediaPlayerAndroid> media_player_bridge(
Avi (use Gerrit) 2017/03/13 15:23:34 Not MakeUnique? :(
leonhsl(Using Gerrit) 2017/03/14 02:17:12 I was using MakeUnique, but trybots compile failed
danakj 2017/03/14 15:09:55 Just cast it when you return class B : public A {
+ new MediaPlayerBridge(
+ media_player_params.player_id, media_player_params.url,
+ media_player_params.first_party_for_cookies, user_agent,
+ hide_url_log, this,
+ base::Bind(&BrowserMediaPlayerManager::OnDecoderResourcesReleased,
+ weak_ptr_factory_.GetWeakPtr()),
+ media_player_params.frame_url,
+ media_player_params.allow_credentials));
if (media_player_params.type == MEDIA_PLAYER_TYPE_REMOTE_ONLY)
return media_player_bridge;
@@ -118,14 +122,15 @@ MediaPlayerAndroid* BrowserMediaPlayerManager::CreateMediaPlayer(
OnMediaMetadataChanged(media_player_params.player_id, base::TimeDelta(),
0, 0, false);
} else if (!should_block) {
- media_player_bridge->Initialize();
+ static_cast<MediaPlayerBridge*>(media_player_bridge.get())
+ ->Initialize();
}
return media_player_bridge;
}
}
NOTREACHED();
- return NULL;
+ return nullptr;
}
BrowserMediaPlayerManager::BrowserMediaPlayerManager(
@@ -141,12 +146,13 @@ BrowserMediaPlayerManager::~BrowserMediaPlayerManager() {
// During the tear down process, OnDestroyPlayer() may or may not be called
// (e.g. the WebContents may be destroyed before the render process). So
// we cannot DCHECK(players_.empty()) here. Instead, all media players in
- // |players_| will be destroyed here because |player_| is a ScopedVector.
+ // |players_| will be destroyed here because |player_| is a
+ // std::vector<std::unique_ptr<>>.
- for (MediaPlayerAndroid* player : players_)
- player->DeleteOnCorrectThread();
+ for (auto& player : players_)
+ player.release()->DeleteOnCorrectThread();
Avi (use Gerrit) 2017/03/13 15:23:34 This is... odd, but no worse than before.
- players_.weak_clear();
+ players_.clear();
}
void BrowserMediaPlayerManager::DidExitFullscreen(bool release_media_player) {
@@ -280,12 +286,11 @@ MediaPlayerAndroid* BrowserMediaPlayerManager::GetFullscreenPlayer() {
}
MediaPlayerAndroid* BrowserMediaPlayerManager::GetPlayer(int player_id) {
- for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin();
- it != players_.end(); ++it) {
- if ((*it)->player_id() == player_id)
- return *it;
+ for (const auto& player : players_) {
+ if (player->player_id() == player_id)
+ return player.get();
}
- return NULL;
+ return nullptr;
}
bool BrowserMediaPlayerManager::RequestPlay(int player_id,
@@ -356,13 +361,13 @@ void BrowserMediaPlayerManager::OnInitialize(
RenderProcessHostImpl* host = static_cast<RenderProcessHostImpl*>(
web_contents()->GetRenderProcessHost());
- MediaPlayerAndroid* player = CreateMediaPlayer(
- media_player_params, host->GetBrowserContext()->IsOffTheRecord());
+ auto player = CreateMediaPlayer(media_player_params,
+ host->GetBrowserContext()->IsOffTheRecord());
if (!player)
return;
- AddPlayer(player, media_player_params.delegate_id);
+ AddPlayer(std::move(player), media_player_params.delegate_id);
}
void BrowserMediaPlayerManager::OnStart(int player_id) {
@@ -435,19 +440,18 @@ bool BrowserMediaPlayerManager::IsPlayingRemotely(int player_id) {
}
void BrowserMediaPlayerManager::AddPlayer(
- MediaPlayerAndroid* player, int delegate_id) {
+ std::unique_ptr<MediaPlayerAndroid> player,
+ int delegate_id) {
DCHECK(!GetPlayer(player->player_id()));
- players_.push_back(player);
- player_id_to_delegate_id_map_[player->player_id()] =
- delegate_id;
+ players_.push_back(std::move(player));
+ player_id_to_delegate_id_map_[players_.back()->player_id()] = delegate_id;
}
void BrowserMediaPlayerManager::DestroyPlayer(int player_id) {
- for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin();
- it != players_.end(); ++it) {
+ for (auto it = players_.begin(); it != players_.end(); ++it) {
if ((*it)->player_id() == player_id) {
- (*it)->DeleteOnCorrectThread();
- players_.weak_erase(it);
+ it->release()->DeleteOnCorrectThread();
+ players_.erase(it);
break;
}
}
@@ -463,23 +467,22 @@ void BrowserMediaPlayerManager::ReleaseResources(int player_id) {
fullscreen_player_is_released_ = true;
}
-std::unique_ptr<media::MediaPlayerAndroid>
-BrowserMediaPlayerManager::SwapPlayer(int player_id,
- media::MediaPlayerAndroid* player) {
- media::MediaPlayerAndroid* previous_player = NULL;
- for (ScopedVector<MediaPlayerAndroid>::iterator it = players_.begin();
- it != players_.end(); ++it) {
+std::unique_ptr<MediaPlayerAndroid> BrowserMediaPlayerManager::SwapPlayer(
+ int player_id,
+ MediaPlayerAndroid* player) {
+ std::unique_ptr<MediaPlayerAndroid> previous_player;
+ for (auto it = players_.begin(); it != players_.end(); ++it) {
if ((*it)->player_id() == player_id) {
- previous_player = *it;
+ previous_player = std::move(*it);
MediaWebContentsObserverAndroid::FromWebContents(web_contents_)
->DisconnectMediaSession(render_frame_host_,
player_id_to_delegate_id_map_[player_id]);
- players_.weak_erase(it);
- players_.push_back(player);
+ players_.erase(it);
+ players_.push_back(base::WrapUnique(player));
break;
}
}
- return std::unique_ptr<media::MediaPlayerAndroid>(previous_player);
+ return previous_player;
}
bool BrowserMediaPlayerManager::RequestDecoderResources(
« no previous file with comments | « content/browser/media/android/browser_media_player_manager.h ('k') | content/browser/media/midi_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698