Index: media/base/android/media_player_bridge.cc |
diff --git a/media/base/android/media_player_bridge.cc b/media/base/android/media_player_bridge.cc |
index f07f11e3851c62c2670cfd325f5ba0741bde8771..76c9552edd65e36f75687c716b2b41e49572d9c4 100644 |
--- a/media/base/android/media_player_bridge.cc |
+++ b/media/base/android/media_player_bridge.cc |
@@ -2,6 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include <media/base/android/media_url_interceptor.h> |
qinmin
2014/07/24 21:05:27
remote this, the file is included below
Ignacio Solla
2014/07/25 10:35:07
Done.
|
#include "media/base/android/media_player_bridge.h" |
#include "base/android/jni_android.h" |
@@ -13,6 +14,7 @@ |
#include "jni/MediaPlayerBridge_jni.h" |
#include "media/base/android/media_player_manager.h" |
#include "media/base/android/media_resource_getter.h" |
+#include "media/base/android/media_url_interceptor.h" |
using base::android::ConvertUTF8ToJavaString; |
using base::android::ScopedJavaLocalRef; |
@@ -164,30 +166,44 @@ void MediaPlayerBridge::SetDataSource(const std::string& url) { |
JNIEnv* env = base::android::AttachCurrentThread(); |
CHECK(env); |
- // Create a Java String for the URL. |
- ScopedJavaLocalRef<jstring> j_url_string = ConvertUTF8ToJavaString(env, url); |
- ScopedJavaLocalRef<jstring> j_cookies = ConvertUTF8ToJavaString( |
- env, cookies_); |
- ScopedJavaLocalRef<jstring> j_user_agent = ConvertUTF8ToJavaString( |
- env, user_agent_); |
- |
- jobject j_context = base::android::GetApplicationContext(); |
- DCHECK(j_context); |
- |
- const std::string data_uri_prefix("data:"); |
- if (StartsWithASCII(url, data_uri_prefix, true)) { |
- if (!Java_MediaPlayerBridge_setDataUriDataSource( |
- env, j_media_player_bridge_.obj(), j_context, j_url_string.obj())) { |
+ media::MediaUrlInterceptor* url_interceptor = |
+ manager()->GetMediaUrlInterceptor(); |
+ int fd; |
+ int64 offset; |
+ int64 size; |
+ if (url_interceptor && url_interceptor->Intercept(url, &fd, &offset, &size)) { |
+ if (!Java_MediaPlayerBridge_setDataSourceFromFd( |
mnaganov (inactive)
2014/07/25 08:17:49
I recommend initializing fd, offset and size to "i
Ignacio Solla
2014/07/25 10:35:07
Done (and moved to private method to avoid duplica
|
+ env, j_media_player_bridge_.obj(), fd, offset, size)) { |
OnMediaError(MEDIA_ERROR_FORMAT); |
+ return; |
+ } |
+ } else { |
+ // Create a Java String for the URL. |
+ ScopedJavaLocalRef<jstring> j_url_string = |
+ ConvertUTF8ToJavaString(env, url); |
+ ScopedJavaLocalRef<jstring> j_cookies = ConvertUTF8ToJavaString( |
qinmin
2014/07/24 21:05:27
j_cookies and j_user_agent declaration can be move
Ignacio Solla
2014/07/25 10:35:07
Done.
|
+ env, cookies_); |
+ ScopedJavaLocalRef<jstring> j_user_agent = ConvertUTF8ToJavaString( |
+ env, user_agent_); |
+ |
+ jobject j_context = base::android::GetApplicationContext(); |
+ DCHECK(j_context); |
+ |
+ const std::string data_uri_prefix("data:"); |
+ if (StartsWithASCII(url, data_uri_prefix, true)) { |
+ if (!Java_MediaPlayerBridge_setDataUriDataSource( |
+ env, j_media_player_bridge_.obj(), j_context, j_url_string.obj())) { |
+ OnMediaError(MEDIA_ERROR_FORMAT); |
+ } |
+ return; |
} |
- return; |
- } |
- if (!Java_MediaPlayerBridge_setDataSource( |
- env, j_media_player_bridge_.obj(), j_context, j_url_string.obj(), |
- j_cookies.obj(), j_user_agent.obj(), hide_url_log_)) { |
- OnMediaError(MEDIA_ERROR_FORMAT); |
- return; |
+ if (!Java_MediaPlayerBridge_setDataSource( |
+ env, j_media_player_bridge_.obj(), j_context, j_url_string.obj(), |
+ j_cookies.obj(), j_user_agent.obj(), hide_url_log_)) { |
+ OnMediaError(MEDIA_ERROR_FORMAT); |
+ return; |
+ } |
} |
request_media_resources_cb_.Run(player_id()); |
@@ -228,12 +244,22 @@ void MediaPlayerBridge::OnAuthCredentialsRetrieved( |
} |
void MediaPlayerBridge::ExtractMediaMetadata(const std::string& url) { |
- manager()->GetMediaResourceGetter()->ExtractMediaMetadata( |
- url, |
- cookies_, |
- user_agent_, |
- base::Bind(&MediaPlayerBridge::OnMediaMetadataExtracted, |
- weak_factory_.GetWeakPtr())); |
+ media::MediaUrlInterceptor* url_interceptor = |
+ manager()->GetMediaUrlInterceptor(); |
+ int fd; |
+ int64 offset; |
+ int64 size; |
+ if (url_interceptor && url_interceptor->Intercept(url, &fd, &offset, &size)) { |
+ manager()->GetMediaResourceGetter()->ExtractMediaMetadata( |
+ fd, offset, size, |
mnaganov (inactive)
2014/07/25 08:17:49
nit: 'ExtractMediaMetadata' arguments alignment is
Ignacio Solla
2014/07/25 10:35:07
Done.
|
+ base::Bind(&MediaPlayerBridge::OnMediaMetadataExtracted, |
+ weak_factory_.GetWeakPtr())); |
+ } else { |
+ manager()->GetMediaResourceGetter()->ExtractMediaMetadata( |
+ url, cookies_, user_agent_, |
+ base::Bind(&MediaPlayerBridge::OnMediaMetadataExtracted, |
+ weak_factory_.GetWeakPtr())); |
+ } |
} |
void MediaPlayerBridge::OnMediaMetadataExtracted( |