From 7a68d9ccacd6a88c3cd485627deef28517f43c68 Mon Sep 17 00:00:00 2001 From: h00520221 Date: Sat, 28 Dec 2024 21:07:36 +0800 Subject: [PATCH] =?UTF-8?q?Description:=E4=BF=AE=E5=A4=8Dmedia=5Fsource?= =?UTF-8?q?=E8=A3=B8=E6=8C=87=E9=92=88=E4=BC=A0=E9=80=92=E7=9A=84UAF?= =?UTF-8?q?=E9=A3=8E=E9=99=A9=20IssueNo:=20https://gitee.com/openharmony-t?= =?UTF-8?q?pc/chromium=5Fsrc/issues/IBEE35=3Ffrom=3Dproject-issue=20Featur?= =?UTF-8?q?e=20or=20Bugfix:=20Bugfix=20Binary=20Source:=20No=20Signed-off-?= =?UTF-8?q?by:=20D0ub1eH?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ohos/ohos_custom_media_player_renderer.cc | 33 ++++++++++++++----- .../ohos/ohos_custom_media_player_renderer.h | 2 +- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/content/browser/media/ohos/ohos_custom_media_player_renderer.cc b/content/browser/media/ohos/ohos_custom_media_player_renderer.cc index 4081281c21..bb61ea154c 100644 --- a/content/browser/media/ohos/ohos_custom_media_player_renderer.cc +++ b/content/browser/media/ohos/ohos_custom_media_player_renderer.cc @@ -255,28 +255,37 @@ void OHOSCustomMediaPlayerRenderer::Initialize(media::MediaResource* media_resou renderer_client_ = client; - if (media_resource->GetType() != media::MediaResource::Type::URL) { + if (!media_resource || media_resource->GetType() != media::MediaResource::Type::URL) { DLOG(ERROR) << "MediaResource is not of Type URL"; std::move(init_cb).Run(media::PIPELINE_ERROR_INITIALIZATION_FAILED); return; } + media_url_params_ = std::make_unique(media_resource->GetMediaUrlParams()); + if (!media_url_params_) { + LOG(ERROR) << "GetMediaUrlParams failed"; + std::move(init_cb).Run(media::PIPELINE_ERROR_INITIALIZATION_FAILED); + return; + } init_cb_ = std::move(init_cb); - media_resource_ = media_resource; - GetCookies(); } void OHOSCustomMediaPlayerRenderer::GetCookies() { DCHECK_CURRENTLY_ON(BrowserThread::UI); - const GURL& url = media_resource_->GetMediaUrlParams().media_url; + if (!media_url_params_) { + LOG(ERROR) << "GetCookies failed, no media_url_params"; + return; + } + + const GURL& url = media_url_params_->media_url; const net::SiteForCookies& site_for_cookies = - media_resource_->GetMediaUrlParams().site_for_cookies; + media_url_params_->site_for_cookies; const url::Origin& top_frame_origin = - media_resource_->GetMediaUrlParams().top_frame_origin; + media_url_params_->top_frame_origin; bool has_storage_access = - media_resource_->GetMediaUrlParams().has_storage_access; + media_url_params_->has_storage_access; base::OnceCallback callback = base::BindOnce(&OHOSCustomMediaPlayerRenderer::OnCookiesRetrieved, @@ -340,6 +349,12 @@ void OHOSCustomMediaPlayerRenderer::CreateMediaPlayer() { DCHECK_CURRENTLY_ON(BrowserThread::UI); + if (!media_url_params_) { + LOG(ERROR) << "CreateMediaPlayer failed, no media_url_params_"; + std::move(init_cb_).Run(media::PIPELINE_ERROR_INITIALIZATION_FAILED); + return; + } + WebContentsImpl* web_contents_impl = static_cast(web_contents()); @@ -366,7 +381,7 @@ void OHOSCustomMediaPlayerRenderer::CreateMediaPlayer() { for (const auto& info : source_infos_) { media_info.media_src_list.push_back({ static_cast( - media_resource_->GetMediaUrlParams().custom_media_url_params.media_source_type), + media_url_params_->custom_media_url_params.media_source_type), info.media_source, info.media_format}); } media_info.surface_info.id = surface_id_string; @@ -379,7 +394,7 @@ void OHOSCustomMediaPlayerRenderer::CreateMediaPlayer() { media_info.muted = muted_; media_info.poster_url = poster_url_; media_info.preload = ConvertTo( - media_resource_->GetMediaUrlParams().custom_media_url_params.preload_type); + media_url_params_->custom_media_url_params.preload_type); if (!cookies_->empty()) { media_info.https_headers.insert(std::make_pair( net::HttpRequestHeaders::kCookie, diff --git a/content/browser/media/ohos/ohos_custom_media_player_renderer.h b/content/browser/media/ohos/ohos_custom_media_player_renderer.h index 3e912419b1..9cdabff93c 100644 --- a/content/browser/media/ohos/ohos_custom_media_player_renderer.h +++ b/content/browser/media/ohos/ohos_custom_media_player_renderer.h @@ -145,7 +145,7 @@ class CONTENT_EXPORT OHOSCustomMediaPlayerRenderer gfx::Rect video_rect_; - media::MediaResource* media_resource_; + std::unique_ptr media_url_params_; base::TimeDelta media_time_; -- Gitee