Chromium Code Reviews| Index: content/browser/media/android/media_resource_getter_impl.cc |
| diff --git a/content/browser/media/android/media_resource_getter_impl.cc b/content/browser/media/android/media_resource_getter_impl.cc |
| index 2f5d9689bd4fcfbe77cc4b22fef86e8d87eb2e36..b0e55735b56928ef93407af789102349ebc2b31e 100644 |
| --- a/content/browser/media/android/media_resource_getter_impl.cc |
| +++ b/content/browser/media/android/media_resource_getter_impl.cc |
| @@ -18,6 +18,7 @@ |
| #include "content/public/common/content_client.h" |
| #include "content/public/common/url_constants.h" |
| #include "jni/MediaResourceGetter_jni.h" |
| +#include "media/base/android/media_url_interceptor.h" |
| #include "net/base/auth.h" |
| #include "net/cookies/cookie_monster.h" |
| #include "net/cookies/cookie_store.h" |
| @@ -78,6 +79,20 @@ static void RequestPlaformPathFromFileSystemURL( |
| ReturnResultOnUIThread(callback, std::string()); |
| } |
| +// Posts a task to the UI thread to run the callback function. |
| +static void PostMediaMetadataCallbackTask( |
| + const media::MediaResourceGetter::ExtractMediaMetadataCB& callback, |
| + ScopedJavaLocalRef<jobject>& j_metadata, JNIEnv* env) { |
|
mnaganov (inactive)
2014/07/25 08:17:49
nit: JNIEnv usually goes before any other Java arg
Ignacio Solla
2014/07/25 10:35:06
Done.
|
| + BrowserThread::PostTask( |
| + BrowserThread::UI, FROM_HERE, |
| + base::Bind(callback, base::TimeDelta::FromMilliseconds( |
| + Java_MediaMetadata_getDurationInMilliseconds( |
| + env, j_metadata.obj())), |
| + Java_MediaMetadata_getWidth(env, j_metadata.obj()), |
| + Java_MediaMetadata_getHeight(env, j_metadata.obj()), |
| + Java_MediaMetadata_isSuccess(env, j_metadata.obj()))); |
| +} |
| + |
| // Get the metadata from a media URL. When finished, a task is posted to the UI |
| // thread to run the callback function. |
| static void GetMediaMetadata( |
| @@ -97,14 +112,22 @@ static void GetMediaMetadata( |
| j_url_string.obj(), |
| j_cookies.obj(), |
| j_user_agent.obj()); |
| - BrowserThread::PostTask( |
| - BrowserThread::UI, FROM_HERE, |
| - base::Bind(callback, base::TimeDelta::FromMilliseconds( |
| - Java_MediaMetadata_getDurationInMilliseconds( |
| - env, j_metadata.obj())), |
| - Java_MediaMetadata_getWidth(env, j_metadata.obj()), |
| - Java_MediaMetadata_getHeight(env, j_metadata.obj()), |
| - Java_MediaMetadata_isSuccess(env, j_metadata.obj()))); |
| + |
| + PostMediaMetadataCallbackTask(callback, j_metadata, env); |
| +} |
| + |
| +// Get the metadata from a file descriptor. When finished, a task is posted to |
|
qinmin
2014/07/24 21:05:27
s/Get/Gets/
Ignacio Solla
2014/07/25 10:35:06
Done.
|
| +// the UI thread to run the callback function. |
| +static void GetMediaMetadataFromFd( |
| + const int& fd, const int64& offset, const int64& size, |
|
qinmin
2014/07/24 21:05:27
same for const &
Ignacio Solla
2014/07/25 10:35:07
Changed to const int and const int64.
|
| + const media::MediaResourceGetter::ExtractMediaMetadataCB& callback) { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + |
| + ScopedJavaLocalRef<jobject> j_metadata = |
| + Java_MediaResourceGetter_extractMediaMetadataFromFd( |
| + env, fd, offset, size); |
| + |
| + PostMediaMetadataCallbackTask(callback, j_metadata, env); |
| } |
| // The task object that retrieves media resources on the IO thread. |
| @@ -328,6 +351,16 @@ void MediaResourceGetterImpl::ExtractMediaMetadata( |
| base::Bind(&GetMediaMetadata, url, cookies, user_agent, callback)); |
| } |
| +void MediaResourceGetterImpl::ExtractMediaMetadata( |
| + const int& fd, const int64& offset, const int64& size, |
|
qinmin
2014/07/24 21:05:27
same for const &
Ignacio Solla
2014/07/25 10:35:06
Done.
|
| + const ExtractMediaMetadataCB& callback) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + base::SequencedWorkerPool* pool = content::BrowserThread::GetBlockingPool(); |
| + pool->PostWorkerTask( |
| + FROM_HERE, |
| + base::Bind(&GetMediaMetadataFromFd, fd, offset, size, callback)); |
| +} |
| + |
| // static |
| bool MediaResourceGetterImpl::RegisterMediaResourceGetter(JNIEnv* env) { |
| return RegisterNativesImpl(env); |