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

Unified Diff: content/common/presentation/presentation_struct_traits.h

Issue 2706463002: [Presentation API] Mojo typemap for content::PresentationConnectionMessage (Closed)
Patch Set: Fix compile error in presentation_connection_message Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: content/common/presentation/presentation_struct_traits.h
diff --git a/content/common/presentation/presentation_struct_traits.h b/content/common/presentation/presentation_struct_traits.h
index 7bf19a97e336ca05aa382fc3eaa2e647df9fcc8f..e51f907ba6bf2f0e8dc7a339bebd93118dbd23e6 100644
--- a/content/common/presentation/presentation_struct_traits.h
+++ b/content/common/presentation/presentation_struct_traits.h
@@ -6,9 +6,12 @@
#define CONTENT_COMMON_PRESENTATION_PRESENTATION_STRUCT_TRAITS_H_
#include <string>
+#include <vector>
#include "base/macros.h"
+#include "base/optional.h"
#include "base/strings/string_util.h"
+#include "content/public/common/presentation_connection_message.h"
#include "content/public/common/presentation_session.h"
#include "mojo/common/common_custom_types_struct_traits.h"
#include "third_party/WebKit/public/platform/modules/presentation/presentation.mojom.h"
@@ -197,6 +200,52 @@ struct StructTraits<blink::mojom::PresentationErrorDataView,
}
};
+template <>
+struct UnionTraits<blink::mojom::PresentationConnectionMessageDataView,
+ content::PresentationConnectionMessage> {
+ static blink::mojom::PresentationConnectionMessageDataView::Tag GetTag(
+ const content::PresentationConnectionMessage& message) {
+ return message.is_binary()
+ ? blink::mojom::PresentationConnectionMessageDataView::Tag::DATA
+ : blink::mojom::PresentationConnectionMessageDataView::Tag::
+ MESSAGE;
+ }
+
+ static const std::string& message(
+ const content::PresentationConnectionMessage& message) {
+ DCHECK(!message.is_binary());
+ return message.message.value();
+ }
+
+ static const std::vector<uint8_t>& data(
+ const content::PresentationConnectionMessage& message) {
+ DCHECK(message.is_binary());
+ return message.data.value();
+ }
+
+ static bool Read(blink::mojom::PresentationConnectionMessageDataView data,
+ content::PresentationConnectionMessage* out) {
dcheng 2017/02/25 07:17:27 Please out-of-line this method.
+ if (data.is_message()) {
+ out->message = std::string();
dcheng 2017/02/25 07:17:27 This is unnecessary.
+ if (!data.ReadMessage(&(out->message)))
+ return false;
+
+ if (out->message->length() >
+ content::kMaxPresentationConnectionMessageSize)
+ return false;
+ } else {
+ out->data = std::vector<uint8_t>();
dcheng 2017/02/25 07:17:27 Nit: please omit this.
+ if (!data.ReadData(&(out->data)))
+ return false;
+
+ if (out->data->size() > content::kMaxPresentationConnectionMessageSize)
+ return false;
+ }
+
+ return true;
+ }
+};
+
} // namespace mojo
#endif // CONTENT_COMMON_PRESENTATION_PRESENTATION_STRUCT_TRAITS_H_

Powered by Google App Engine
This is Rietveld 408576698