| 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..099f616ae53c2eb28539188e2c1b5fdc9991b547 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);
|
| }
|
| @@ -23,18 +23,39 @@ WebMediaSessionAndroid::~WebMediaSessionAndroid() {
|
|
|
| void WebMediaSessionAndroid::activate(
|
| blink::WebMediaSessionActivateCallback* raw_callback) {
|
| - NOTIMPLEMENTED();
|
| + int request_id = next_request_id_++;
|
| + actions_[request_id].activate = raw_callback;
|
|
|
| - scoped_ptr<blink::WebMediaSessionActivateCallback> callback(raw_callback);
|
| - callback->onError(blink::WebMediaSessionError::Activate);
|
| + session_manager_->Activate(session_id_, request_id);
|
| }
|
|
|
| void WebMediaSessionAndroid::deactivate(
|
| blink::WebMediaSessionDeactivateCallback* raw_callback) {
|
| - NOTIMPLEMENTED();
|
| + int request_id = next_request_id_++;
|
| + actions_[request_id].deactivate = raw_callback;
|
| + session_manager_->Deactivate(session_id_, request_id);
|
| +}
|
| +
|
| +void WebMediaSessionAndroid::OnDidActivate(int request_id, bool success) {
|
| + auto iter = actions_.find(request_id);
|
| + if (iter != actions_.end()) {
|
| + if (success)
|
| + iter->second.activate->onSuccess();
|
| + else
|
| + iter->second.activate->onError(
|
| + blink::WebMediaSessionError(blink::WebMediaSessionError::Activate));
|
| + delete iter->second.activate;
|
| + actions_.erase(iter);
|
| + }
|
| +}
|
|
|
| - scoped_ptr<blink::WebMediaSessionDeactivateCallback> callback(raw_callback);
|
| - callback->onSuccess();
|
| +void WebMediaSessionAndroid::OnDidDeactivate(int request_id) {
|
| + auto iter = actions_.find(request_id);
|
| + if (iter != actions_.end()) {
|
| + iter->second.deactivate->onSuccess();
|
| + delete iter->second.deactivate;
|
| + actions_.erase(iter);
|
| + }
|
| }
|
|
|
| } // namespace content
|
|
|