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

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

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

Powered by Google App Engine
This is Rietveld 408576698