Index: media/base/media_keys_session_promise.cc |
diff --git a/media/base/media_keys_session_promise.cc b/media/base/media_keys_session_promise.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e0762910b1b29aa6800315fe7f8980fe13fc0e16 |
--- /dev/null |
+++ b/media/base/media_keys_session_promise.cc |
@@ -0,0 +1,45 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "media/base/media_keys_session_promise.h" |
+ |
+namespace media { |
+ |
+MediaKeysSessionPromise::MediaKeysSessionPromise() {} |
+ |
+MediaKeysSessionPromise::MediaKeysSessionPromise( |
+ PromiseResolvedCB resolve_cb, |
+ PromiseResolvedWithSessionCB resolve_with_session_cb, |
+ PromiseRejectedCB rejected_cb) |
+ : resolve_cb_(resolve_cb), |
+ resolve_with_session_cb_(resolve_with_session_cb), |
+ rejected_cb_(rejected_cb) { |
+ DCHECK(!resolve_cb.is_null() || !resolve_with_session_cb.is_null()); |
+ DCHECK(!rejected_cb_.is_null()); |
+} |
+ |
+MediaKeysSessionPromise::~MediaKeysSessionPromise() { |
xhwang
2014/05/05 20:46:42
We should be able to DCHECK that the promise is al
jrummell
2014/05/08 23:37:45
Good idea. Done.
|
+} |
+ |
+void MediaKeysSessionPromise::resolve() { |
+ if (!resolve_cb_.is_null()) |
+ resolve_cb_.Run(); |
+ else |
+ reject("InvalidStateError", 0, std::string()); |
xhwang
2014/05/05 20:46:42
When could this happen? Shall we just DCHECK(!reso
jrummell
2014/05/08 23:37:45
Not needed anymore now that the classes are done b
|
+} |
+ |
+void MediaKeysSessionPromise::resolve(const std::string& web_session_id) { |
+ if (!resolve_with_session_cb_.is_null()) |
+ resolve_with_session_cb_.Run(web_session_id); |
+ else |
+ reject("InvalidStateError", 0, std::string()); |
+} |
+ |
+void MediaKeysSessionPromise::reject(const std::string& error_name, |
+ uint32 system_code, |
+ const std::string& error_message) { |
+ rejected_cb_.Run(error_name, system_code, error_message); |
+} |
+ |
+} // namespace media |