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

Side by Side Diff: content/browser/media/session/media_session_android.cc

Issue 2526533002: Allow MediaSession in iframes to be routed (Closed)
Patch Set: Created 4 years 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/session/media_session_android.h" 5 #include "content/browser/media/session/media_session_android.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8
9 #include "base/android/jni_array.h"
8 #include "content/browser/media/session/media_session_impl.h" 10 #include "content/browser/media/session/media_session_impl.h"
9 #include "content/browser/web_contents/web_contents_android.h" 11 #include "content/browser/web_contents/web_contents_android.h"
10 #include "content/browser/web_contents/web_contents_impl.h" 12 #include "content/browser/web_contents/web_contents_impl.h"
11 #include "content/common/android/media_metadata_android.h" 13 #include "content/common/android/media_metadata_android.h"
12 #include "content/public/browser/media_session.h" 14 #include "content/public/browser/media_session.h"
13 #include "jni/MediaSessionImpl_jni.h" 15 #include "jni/MediaSessionImpl_jni.h"
14 16
15 namespace content { 17 namespace content {
16 18
17 using base::android::JavaParamRef; 19 using base::android::JavaParamRef;
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 if (!Java_MediaSessionImpl_hasObservers(env, j_local_session)) 98 if (!Java_MediaSessionImpl_hasObservers(env, j_local_session))
97 return; 99 return;
98 100
99 ScopedJavaLocalRef<jobject> j_metadata; 101 ScopedJavaLocalRef<jobject> j_metadata;
100 if (metadata.has_value()) 102 if (metadata.has_value())
101 j_metadata = MediaMetadataAndroid::CreateJavaObject(env, metadata.value()); 103 j_metadata = MediaMetadataAndroid::CreateJavaObject(env, metadata.value());
102 Java_MediaSessionImpl_mediaSessionMetadataChanged(env, j_local_session, 104 Java_MediaSessionImpl_mediaSessionMetadataChanged(env, j_local_session,
103 j_metadata); 105 j_metadata);
104 } 106 }
105 107
106 void MediaSessionAndroid::MediaSessionEnabledAction( 108 void MediaSessionAndroid::MediaSessionActionsChanged(
107 blink::mojom::MediaSessionAction action) { 109 const std::set<blink::mojom::MediaSessionAction>& actions) {
108 ScopedJavaLocalRef<jobject> j_local_session = GetJavaObject(); 110 ScopedJavaLocalRef<jobject> j_local_session = GetJavaObject();
109 if (j_local_session.is_null()) 111 if (j_local_session.is_null())
110 return; 112 return;
111 113
114 std::vector<int> actions_vec;
115 std::transform(actions.begin(), actions.end(), actions_vec.begin(),
116 [](blink::mojom::MediaSessionAction action) {
117 return static_cast<int>(action);
118 });
112 JNIEnv* env = base::android::AttachCurrentThread(); 119 JNIEnv* env = base::android::AttachCurrentThread();
113 Java_MediaSessionImpl_mediaSessionEnabledAction(env, j_local_session, 120 Java_MediaSessionImpl_mediaSessionActionsChanged(
114 static_cast<int>(action)); 121 env, j_local_session, base::android::ToJavaIntArray(env, actions_vec));
115 }
116
117 void MediaSessionAndroid::MediaSessionDisabledAction(
118 blink::mojom::MediaSessionAction action) {
119 ScopedJavaLocalRef<jobject> j_local_session = GetJavaObject();
120 if (j_local_session.is_null())
121 return;
122
123 JNIEnv* env = base::android::AttachCurrentThread();
124 Java_MediaSessionImpl_mediaSessionDisabledAction(env, j_local_session,
125 static_cast<int>(action));
126 } 122 }
127 123
128 void MediaSessionAndroid::Resume( 124 void MediaSessionAndroid::Resume(
129 JNIEnv* env, 125 JNIEnv* env,
130 const base::android::JavaParamRef<jobject>& j_obj) { 126 const base::android::JavaParamRef<jobject>& j_obj) {
131 DCHECK(media_session()); 127 DCHECK(media_session());
132 media_session()->Resume(MediaSession::SuspendType::UI); 128 media_session()->Resume(MediaSession::SuspendType::UI);
133 } 129 }
134 130
135 void MediaSessionAndroid::Suspend( 131 void MediaSessionAndroid::Suspend(
(...skipping 27 matching lines...) Expand all
163 return nullptr; 159 return nullptr;
164 return contents->GetWebContentsAndroid(); 160 return contents->GetWebContentsAndroid();
165 } 161 }
166 162
167 ScopedJavaLocalRef<jobject> MediaSessionAndroid::GetJavaObject() { 163 ScopedJavaLocalRef<jobject> MediaSessionAndroid::GetJavaObject() {
168 JNIEnv* env = base::android::AttachCurrentThread(); 164 JNIEnv* env = base::android::AttachCurrentThread();
169 return j_media_session_.get(env); 165 return j_media_session_.get(env);
170 } 166 }
171 167
172 } // namespace content 168 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698