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..331a9afed8c93e0806c591f5282e805b8725fec5 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_action_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 action_id = next_action_id_++; |
mlamouri (slow - plz ping)
2015/11/30 12:38:20
What the |action_id| is? Should that be a request_
davve
2015/11/30 14:19:48
Yes. Passed through to map OnDidActivate to the co
|
+ actions_[action_id].activate = raw_callback; |
- scoped_ptr<blink::WebMediaSessionActivateCallback> callback(raw_callback); |
- callback->onError(blink::WebMediaSessionError::Activate); |
+ session_manager_->Activate(session_id_, action_id); |
} |
void WebMediaSessionAndroid::deactivate( |
blink::WebMediaSessionDeactivateCallback* raw_callback) { |
- NOTIMPLEMENTED(); |
+ int action_id = next_action_id_++; |
+ actions_[action_id].deactivate = raw_callback; |
+ session_manager_->Deactivate(session_id_, action_id); |
+} |
+ |
+void WebMediaSessionAndroid::OnDidActivate(int action_id, bool success) { |
+ auto iter = actions_.find(action_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 action_id) { |
+ auto iter = actions_.find(action_id); |
+ if (iter != actions_.end()) { |
+ iter->second.deactivate->onSuccess(); |
+ delete iter->second.deactivate; |
+ actions_.erase(iter); |
+ } |
} |
} // namespace content |