| OLD | NEW |
| 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/browser/media/android/media_resource_getter_impl.h" | 5 #include "content/browser/media/android/media_resource_getter_impl.h" |
| 6 | 6 |
| 7 #include "base/android/context_utils.h" | 7 #include "base/android/context_utils.h" |
| 8 #include "base/android/jni_android.h" | 8 #include "base/android/jni_android.h" |
| 9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
| 10 #include "base/android/scoped_java_ref.h" | 10 #include "base/android/scoped_java_ref.h" |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 97 ReturnResultOnUIThread(callback, platform_path.value()); | 97 ReturnResultOnUIThread(callback, platform_path.value()); |
| 98 else | 98 else |
| 99 ReturnResultOnUIThread(callback, std::string()); | 99 ReturnResultOnUIThread(callback, std::string()); |
| 100 } | 100 } |
| 101 | 101 |
| 102 // Posts a task to the UI thread to run the callback function. | 102 // Posts a task to the UI thread to run the callback function. |
| 103 static void PostMediaMetadataCallbackTask( | 103 static void PostMediaMetadataCallbackTask( |
| 104 const media::MediaResourceGetter::ExtractMediaMetadataCB& callback, | 104 const media::MediaResourceGetter::ExtractMediaMetadataCB& callback, |
| 105 JNIEnv* env, ScopedJavaLocalRef<jobject>& j_metadata) { | 105 JNIEnv* env, ScopedJavaLocalRef<jobject>& j_metadata) { |
| 106 BrowserThread::PostTask( | 106 BrowserThread::PostTask( |
| 107 BrowserThread::UI, FROM_HERE, | 107 BrowserThread::UI, FROM_HERE, |
| 108 base::Bind(callback, base::TimeDelta::FromMilliseconds( | 108 base::Bind(callback, base::TimeDelta::FromMilliseconds( |
| 109 Java_MediaMetadata_getDurationInMilliseconds( | 109 Java_MediaMetadata_getDurationInMilliseconds( |
| 110 env, j_metadata.obj())), | 110 env, j_metadata)), |
| 111 Java_MediaMetadata_getWidth(env, j_metadata.obj()), | 111 Java_MediaMetadata_getWidth(env, j_metadata), |
| 112 Java_MediaMetadata_getHeight(env, j_metadata.obj()), | 112 Java_MediaMetadata_getHeight(env, j_metadata), |
| 113 Java_MediaMetadata_isSuccess(env, j_metadata.obj()))); | 113 Java_MediaMetadata_isSuccess(env, j_metadata))); |
| 114 } | 114 } |
| 115 | 115 |
| 116 // Gets the metadata from a media URL. When finished, a task is posted to the UI | 116 // Gets the metadata from a media URL. When finished, a task is posted to the UI |
| 117 // thread to run the callback function. | 117 // thread to run the callback function. |
| 118 static void GetMediaMetadata( | 118 static void GetMediaMetadata( |
| 119 const std::string& url, const std::string& cookies, | 119 const std::string& url, const std::string& cookies, |
| 120 const std::string& user_agent, | 120 const std::string& user_agent, |
| 121 const media::MediaResourceGetter::ExtractMediaMetadataCB& callback) { | 121 const media::MediaResourceGetter::ExtractMediaMetadataCB& callback) { |
| 122 JNIEnv* env = base::android::AttachCurrentThread(); | 122 JNIEnv* env = base::android::AttachCurrentThread(); |
| 123 | 123 |
| 124 ScopedJavaLocalRef<jstring> j_url_string = ConvertUTF8ToJavaString(env, url); | 124 ScopedJavaLocalRef<jstring> j_url_string = ConvertUTF8ToJavaString(env, url); |
| 125 ScopedJavaLocalRef<jstring> j_cookies = ConvertUTF8ToJavaString(env, cookies); | 125 ScopedJavaLocalRef<jstring> j_cookies = ConvertUTF8ToJavaString(env, cookies); |
| 126 const JavaRef<jobject>& j_context = base::android::GetApplicationContext(); | 126 const JavaRef<jobject>& j_context = base::android::GetApplicationContext(); |
| 127 ScopedJavaLocalRef<jstring> j_user_agent = ConvertUTF8ToJavaString( | 127 ScopedJavaLocalRef<jstring> j_user_agent = ConvertUTF8ToJavaString( |
| 128 env, user_agent); | 128 env, user_agent); |
| 129 ScopedJavaLocalRef<jobject> j_metadata = | 129 ScopedJavaLocalRef<jobject> j_metadata = |
| 130 Java_MediaResourceGetter_extractMediaMetadata(env, | 130 Java_MediaResourceGetter_extractMediaMetadata( |
| 131 j_context, | 131 env, j_context, j_url_string, j_cookies, j_user_agent); |
| 132 j_url_string.obj(), | |
| 133 j_cookies.obj(), | |
| 134 j_user_agent.obj()); | |
| 135 | 132 |
| 136 PostMediaMetadataCallbackTask(callback, env, j_metadata); | 133 PostMediaMetadataCallbackTask(callback, env, j_metadata); |
| 137 } | 134 } |
| 138 | 135 |
| 139 // Gets the metadata from a file descriptor. When finished, a task is posted to | 136 // Gets the metadata from a file descriptor. When finished, a task is posted to |
| 140 // the UI thread to run the callback function. | 137 // the UI thread to run the callback function. |
| 141 static void GetMediaMetadataFromFd( | 138 static void GetMediaMetadataFromFd( |
| 142 const int fd, | 139 const int fd, |
| 143 const int64_t offset, | 140 const int64_t offset, |
| 144 const int64_t size, | 141 const int64_t size, |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 const int64_t size, | 374 const int64_t size, |
| 378 const ExtractMediaMetadataCB& callback) { | 375 const ExtractMediaMetadataCB& callback) { |
| 379 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 376 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 380 base::SequencedWorkerPool* pool = content::BrowserThread::GetBlockingPool(); | 377 base::SequencedWorkerPool* pool = content::BrowserThread::GetBlockingPool(); |
| 381 pool->PostWorkerTask( | 378 pool->PostWorkerTask( |
| 382 FROM_HERE, | 379 FROM_HERE, |
| 383 base::Bind(&GetMediaMetadataFromFd, fd, offset, size, callback)); | 380 base::Bind(&GetMediaMetadataFromFd, fd, offset, size, callback)); |
| 384 } | 381 } |
| 385 | 382 |
| 386 } // namespace content | 383 } // namespace content |
| OLD | NEW |