Chromium Code Reviews| Index: content/renderer/media/android/webmediasession_android.cc |
| diff --git a/content/renderer/media/android/webmediasession_android.cc b/content/renderer/media/android/webmediasession_android.cc |
| index b68e2bbfbc2df26b70f01bfcd4ebe066be36e910..503699d410b2b7d743da543ea5250e11fd1050a5 100644 |
| --- a/content/renderer/media/android/webmediasession_android.cc |
| +++ b/content/renderer/media/android/webmediasession_android.cc |
| @@ -12,7 +12,7 @@ namespace content { |
| WebMediaSessionAndroid::WebMediaSessionAndroid( |
| RendererMediaSessionManager* session_manager) |
| - : session_manager_(session_manager) { |
| + : session_manager_(session_manager), next_request_id_(0) { |
| DCHECK(session_manager_); |
| session_id_ = session_manager_->RegisterMediaSession(this); |
| } |
| @@ -22,19 +22,43 @@ WebMediaSessionAndroid::~WebMediaSessionAndroid() { |
| } |
| void WebMediaSessionAndroid::activate( |
| - blink::WebMediaSessionActivateCallback* raw_callback) { |
| - NOTIMPLEMENTED(); |
| - |
| - scoped_ptr<blink::WebMediaSessionActivateCallback> callback(raw_callback); |
| - callback->onError(blink::WebMediaSessionError::Activate); |
| + blink::WebMediaSessionActivateCallback* callback) { |
| + int request_id = activation_requests_.Add(callback); |
| + session_manager_->Activate(session_id_, request_id); |
| } |
| void WebMediaSessionAndroid::deactivate( |
| - blink::WebMediaSessionDeactivateCallback* raw_callback) { |
| - NOTIMPLEMENTED(); |
| + blink::WebMediaSessionDeactivateCallback* callback) { |
| + int request_id = deactivation_requests_.Add(callback); |
| + session_manager_->Deactivate(session_id_, request_id); |
| +} |
| + |
| +bool WebMediaSessionAndroid::hasPendingCallbacks() { |
| + return !activation_requests_.IsEmpty() || !deactivation_requests_.IsEmpty(); |
| +} |
| + |
| +void WebMediaSessionAndroid::OnDidActivate(int request_id, bool success) { |
| + blink::WebMediaSessionActivateCallback* callback = |
| + activation_requests_.Lookup(request_id); |
| + if (!callback) |
| + return; |
|
mlamouri (slow - plz ping)
2015/12/07 18:14:52
Should you DCHECK()? It seems that this should nev
davve
2015/12/08 10:21:23
Depends on what we want to test, I guess.
In http
|
| + |
| + if (success) |
| + callback->onSuccess(); |
| + else |
| + callback->onError( |
| + blink::WebMediaSessionError(blink::WebMediaSessionError::Activate)); |
| + activation_requests_.Remove(request_id); |
| +} |
| + |
| +void WebMediaSessionAndroid::OnDidDeactivate(int request_id) { |
| + blink::WebMediaSessionDeactivateCallback* callback = |
| + deactivation_requests_.Lookup(request_id); |
| + if (!callback) |
| + return; |
|
mlamouri (slow - plz ping)
2015/12/07 18:14:52
ditto
davve
2015/12/08 10:21:23
See other reply.
|
| - scoped_ptr<blink::WebMediaSessionDeactivateCallback> callback(raw_callback); |
| callback->onSuccess(); |
| + deactivation_requests_.Remove(request_id); |
| } |
| } // namespace content |