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

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

Issue 2416853005: Fixing naming issues in MediaSession (Closed)
Patch Set: addressed nits Created 4 years, 2 months 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "content/browser/media/session/media_session_delegate_android.h"
6
7 #include "base/android/context_utils.h"
8 #include "base/android/jni_android.h"
9 #include "jni/MediaSessionDelegate_jni.h"
10
11 using base::android::JavaParamRef;
12
13 namespace content {
14
15 // static
16 bool MediaSessionDelegateAndroid::Register(JNIEnv* env) {
17 return RegisterNativesImpl(env);
18 }
19
20 MediaSessionDelegateAndroid::MediaSessionDelegateAndroid(
21 MediaSession* media_session)
22 : media_session_(media_session) {
23 }
24
25 MediaSessionDelegateAndroid::~MediaSessionDelegateAndroid() {
26 JNIEnv* env = base::android::AttachCurrentThread();
27 DCHECK(env);
28 Java_MediaSessionDelegate_tearDown(env, j_media_session_delegate_);
29 }
30
31 void MediaSessionDelegateAndroid::Initialize() {
32 JNIEnv* env = base::android::AttachCurrentThread();
33 DCHECK(env);
34 j_media_session_delegate_.Reset(Java_MediaSessionDelegate_create(
35 env,
36 base::android::GetApplicationContext(),
37 reinterpret_cast<intptr_t>(this)));
38 }
39
40 bool MediaSessionDelegateAndroid::RequestAudioFocus(
41 AudioFocusManager::AudioFocusType audio_focus_type) {
42 JNIEnv* env = base::android::AttachCurrentThread();
43 DCHECK(env);
44 return Java_MediaSessionDelegate_requestAudioFocus(
45 env, j_media_session_delegate_,
46 audio_focus_type ==
47 AudioFocusManager::AudioFocusType::GainTransientMayDuck);
48 }
49
50 void MediaSessionDelegateAndroid::AbandonAudioFocus() {
51 JNIEnv* env = base::android::AttachCurrentThread();
52 DCHECK(env);
53 Java_MediaSessionDelegate_abandonAudioFocus(env, j_media_session_delegate_);
54 }
55
56 void MediaSessionDelegateAndroid::OnSuspend(
57 JNIEnv*, const JavaParamRef<jobject>&, jboolean temporary) {
58 // TODO(mlamouri): this check makes it so that if a MediaSession is paused and
59 // then loses audio focus, it will still stay in the Suspended state.
60 // See https://crbug.com/539998
61 if (!media_session_->IsActive())
62 return;
63
64 if (temporary) {
65 media_session_->Suspend(MediaSession::SuspendType::SYSTEM);
66 } else {
67 media_session_->Stop(MediaSession::SuspendType::SYSTEM);
68 }
69 }
70
71 void MediaSessionDelegateAndroid::OnResume(
72 JNIEnv*, const JavaParamRef<jobject>&) {
73 if (!media_session_->IsReallySuspended())
74 return;
75
76 media_session_->Resume(MediaSession::SuspendType::SYSTEM);
77 }
78
79 void MediaSessionDelegateAndroid::OnStartDucking(JNIEnv*, jobject) {
80 media_session_->StartDucking();
81 }
82
83 void MediaSessionDelegateAndroid::OnStopDucking(JNIEnv*, jobject) {
84 media_session_->StopDucking();
85 }
86
87 void MediaSessionDelegateAndroid::RecordSessionDuck(
88 JNIEnv*, const JavaParamRef<jobject>&) {
89 media_session_->RecordSessionDuck();
90 }
91
92 // static
93 std::unique_ptr<MediaSessionDelegate> MediaSessionDelegate::Create(
94 MediaSession* media_session) {
95 MediaSessionDelegateAndroid* delegate =
96 new MediaSessionDelegateAndroid(media_session);
97 delegate->Initialize();
98 return std::unique_ptr<MediaSessionDelegate>(delegate);
99 }
100
101 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698