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

Side by Side Diff: content/renderer/media/android/webmediaplayer_android.cc

Issue 935243002: Decryptors can report kNoKey to WebMediaPlayer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Android changes Created 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/android/webmediaplayer_android.h" 5 #include "content/renderer/media/android/webmediaplayer_android.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/android/build_info.h" 9 #include "base/android/build_info.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 media_source_delegate_->InitializeMediaSource( 306 media_source_delegate_->InitializeMediaSource(
307 base::Bind(&WebMediaPlayerAndroid::OnMediaSourceOpened, 307 base::Bind(&WebMediaPlayerAndroid::OnMediaSourceOpened,
308 weak_factory_.GetWeakPtr()), 308 weak_factory_.GetWeakPtr()),
309 base::Bind(&WebMediaPlayerAndroid::OnEncryptedMediaInitData, 309 base::Bind(&WebMediaPlayerAndroid::OnEncryptedMediaInitData,
310 weak_factory_.GetWeakPtr()), 310 weak_factory_.GetWeakPtr()),
311 base::Bind(&WebMediaPlayerAndroid::SetDecryptorReadyCB, 311 base::Bind(&WebMediaPlayerAndroid::SetDecryptorReadyCB,
312 weak_factory_.GetWeakPtr()), 312 weak_factory_.GetWeakPtr()),
313 base::Bind(&WebMediaPlayerAndroid::UpdateNetworkState, 313 base::Bind(&WebMediaPlayerAndroid::UpdateNetworkState,
314 weak_factory_.GetWeakPtr()), 314 weak_factory_.GetWeakPtr()),
315 base::Bind(&WebMediaPlayerAndroid::OnDurationChanged, 315 base::Bind(&WebMediaPlayerAndroid::OnDurationChanged,
316 weak_factory_.GetWeakPtr()),
317 base::Bind(&WebMediaPlayerAndroid::OnWaitingForDecryptionKey,
316 weak_factory_.GetWeakPtr())); 318 weak_factory_.GetWeakPtr()));
317 InitializePlayer(url_, frame_->document().firstPartyForCookies(), 319 InitializePlayer(url_, frame_->document().firstPartyForCookies(),
318 true, demuxer_client_id); 320 true, demuxer_client_id);
319 } 321 }
320 } else { 322 } else {
321 info_loader_.reset( 323 info_loader_.reset(
322 new MediaInfoLoader( 324 new MediaInfoLoader(
323 url, 325 url,
324 cors_mode, 326 cors_mode,
325 base::Bind(&WebMediaPlayerAndroid::DidLoadMediaInfo, 327 base::Bind(&WebMediaPlayerAndroid::DidLoadMediaInfo,
(...skipping 1426 matching lines...) Expand 10 before | Expand all | Expand 10 after
1752 DLOG_IF(WARNING, 1754 DLOG_IF(WARNING,
1753 !init_data_type_.empty() && init_data_type != init_data_type_) 1755 !init_data_type_.empty() && init_data_type != init_data_type_)
1754 << "Mixed init data type not supported. The new type is ignored."; 1756 << "Mixed init data type not supported. The new type is ignored.";
1755 if (init_data_type_.empty()) 1757 if (init_data_type_.empty())
1756 init_data_type_ = init_data_type; 1758 init_data_type_ = init_data_type;
1757 1759
1758 client_->encrypted(ConvertInitDataType(init_data_type), 1760 client_->encrypted(ConvertInitDataType(init_data_type),
1759 vector_as_array(&init_data), init_data.size()); 1761 vector_as_array(&init_data), init_data.size());
1760 } 1762 }
1761 1763
1764 void WebMediaPlayerAndroid::OnWaitingForDecryptionKey() {
1765 client_->didBlockPlaybackWaitingForKey();
1766
1767 // TODO(jrummell): didResumePlaybackBlockedForKey() should only be called
1768 // when a key has been successfully added (e.g. OnSessionKeysChange() with
1769 // |has_additional_usable_key| = true). http://crbug.com/461903
1770 client_->didResumePlaybackBlockedForKey();
1771 }
1772
1762 void WebMediaPlayerAndroid::SetCdmInternal( 1773 void WebMediaPlayerAndroid::SetCdmInternal(
1763 const media::CdmAttachedCB& cdm_attached_cb) { 1774 const media::CdmAttachedCB& cdm_attached_cb) {
1764 DCHECK(cdm_context_ && is_player_initialized_); 1775 DCHECK(cdm_context_ && is_player_initialized_);
1765 DCHECK(cdm_context_->GetDecryptor() || 1776 DCHECK(cdm_context_->GetDecryptor() ||
1766 cdm_context_->GetCdmId() != media::CdmContext::kInvalidCdmId) 1777 cdm_context_->GetCdmId() != media::CdmContext::kInvalidCdmId)
1767 << "CDM should support either a Decryptor or a CDM ID."; 1778 << "CDM should support either a Decryptor or a CDM ID.";
1768 1779
1769 media::Decryptor* decryptor = cdm_context_->GetDecryptor(); 1780 media::Decryptor* decryptor = cdm_context_->GetDecryptor();
1770 1781
1771 // Note: 1782 // Note:
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
1835 1846
1836 bool WebMediaPlayerAndroid::IsHLSStream() const { 1847 bool WebMediaPlayerAndroid::IsHLSStream() const {
1837 std::string mime; 1848 std::string mime;
1838 GURL url = redirected_url_.is_empty() ? url_ : redirected_url_; 1849 GURL url = redirected_url_.is_empty() ? url_ : redirected_url_;
1839 if (!net::GetMimeTypeFromFile(base::FilePath(url.path()), &mime)) 1850 if (!net::GetMimeTypeFromFile(base::FilePath(url.path()), &mime))
1840 return false; 1851 return false;
1841 return !mime.compare("application/x-mpegurl"); 1852 return !mime.compare("application/x-mpegurl");
1842 } 1853 }
1843 1854
1844 } // namespace content 1855 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698