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 |