1 // Copyright 2021 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_CONTEXT_MENU_MOJOM_TRAITS_H_
6 #define THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_CONTEXT_MENU_MOJOM_TRAITS_H_
8 #include "build/build_config.h"
9 #include "mojo/public/cpp/bindings/struct_traits.h"
10 #include "third_party/abseil-cpp/absl/types/optional.h"
11 #include "third_party/blink/public/common/common_export.h"
12 #include "third_party/blink/public/common/context_menu_data/untrustworthy_context_menu_params.h"
13 #include "third_party/blink/public/mojom/context_menu/context_menu.mojom.h"
14 #include "url/mojom/url_gurl_mojom_traits.h"
19 struct BLINK_COMMON_EXPORT
20 StructTraits<blink::mojom::FormRendererIdDataView, uint64_t> {
21 static uint64_t id(uint64_t r) { return r; }
23 static bool Read(blink::mojom::FormRendererIdDataView data, uint64_t* out);
27 struct BLINK_COMMON_EXPORT
28 StructTraits<blink::mojom::FieldRendererIdDataView, uint64_t> {
29 static uint64_t id(uint64_t r) { return r; }
31 static bool Read(blink::mojom::FieldRendererIdDataView data, uint64_t* out);
35 struct BLINK_COMMON_EXPORT
36 StructTraits<blink::mojom::UntrustworthyContextMenuParamsDataView,
37 blink::UntrustworthyContextMenuParams> {
38 static blink::mojom::ContextMenuDataMediaType media_type(
39 const blink::UntrustworthyContextMenuParams& r) {
43 static int x(const blink::UntrustworthyContextMenuParams& r) { return r.x; }
45 static int y(const blink::UntrustworthyContextMenuParams& r) { return r.y; }
47 static const GURL& link_url(const blink::UntrustworthyContextMenuParams& r) {
51 static const std::u16string& link_text(
52 const blink::UntrustworthyContextMenuParams& r) {
56 static const absl::optional<blink::Impression>& impression(
57 const blink::UntrustworthyContextMenuParams& r) {
61 static const GURL& unfiltered_link_url(
62 const blink::UntrustworthyContextMenuParams& r) {
63 return r.unfiltered_link_url;
66 static const GURL& src_url(const blink::UntrustworthyContextMenuParams& r) {
70 static bool has_image_contents(
71 const blink::UntrustworthyContextMenuParams& r) {
72 return r.has_image_contents;
75 static int media_flags(const blink::UntrustworthyContextMenuParams& r) {
79 static const std::u16string& selection_text(
80 const blink::UntrustworthyContextMenuParams& r) {
81 return r.selection_text;
84 static const std::u16string& title_text(
85 const blink::UntrustworthyContextMenuParams& r) {
89 static const std::u16string& alt_text(
90 const blink::UntrustworthyContextMenuParams& r) {
94 static const std::u16string& suggested_filename(
95 const blink::UntrustworthyContextMenuParams& r) {
96 return r.suggested_filename;
99 static const std::u16string& misspelled_word(
100 const blink::UntrustworthyContextMenuParams& r) {
101 return r.misspelled_word;
104 static const std::vector<std::u16string>& dictionary_suggestions(
105 const blink::UntrustworthyContextMenuParams& r) {
106 return r.dictionary_suggestions;
109 static bool spellcheck_enabled(
110 const blink::UntrustworthyContextMenuParams& r) {
111 return r.spellcheck_enabled;
114 static bool is_editable(const blink::UntrustworthyContextMenuParams& r) {
115 return r.is_editable;
118 #if BUILDFLAG(IS_EFL)
119 static bool is_text_node(const blink::UntrustworthyContextMenuParams& r) {
120 return r.is_text_node;
124 static int writing_direction_default(
125 const blink::UntrustworthyContextMenuParams& r) {
126 return r.writing_direction_default;
129 static int writing_direction_left_to_right(
130 const blink::UntrustworthyContextMenuParams& r) {
131 return r.writing_direction_left_to_right;
134 static int writing_direction_right_to_left(
135 const blink::UntrustworthyContextMenuParams& r) {
136 return r.writing_direction_right_to_left;
139 static int edit_flags(const blink::UntrustworthyContextMenuParams& r) {
143 static const std::string& frame_charset(
144 const blink::UntrustworthyContextMenuParams& r) {
145 return r.frame_charset;
148 static network::mojom::ReferrerPolicy referrer_policy(
149 const blink::UntrustworthyContextMenuParams& r) {
150 return r.referrer_policy;
153 static const GURL& link_followed(
154 const blink::UntrustworthyContextMenuParams& r) {
155 return r.link_followed;
158 static const std::vector<blink::mojom::CustomContextMenuItemPtr>&
159 custom_items(const blink::UntrustworthyContextMenuParams& r) {
160 return r.custom_items;
163 static ui::MenuSourceType source_type(
164 const blink::UntrustworthyContextMenuParams& r) {
165 return r.source_type;
168 static blink::mojom::ContextMenuDataInputFieldType input_field_type(
169 const blink::UntrustworthyContextMenuParams& r) {
170 return r.input_field_type;
173 static const gfx::Rect& selection_rect(
174 const blink::UntrustworthyContextMenuParams& r) {
175 return r.selection_rect;
178 static int selection_start_offset(
179 const blink::UntrustworthyContextMenuParams& r) {
180 return r.selection_start_offset;
183 static bool opened_from_highlight(
184 const blink::UntrustworthyContextMenuParams& r) {
185 return r.opened_from_highlight;
188 static const absl::optional<uint64_t>& form_renderer_id(
189 const blink::UntrustworthyContextMenuParams& r) {
190 return r.form_renderer_id;
193 static const absl::optional<uint64_t>& field_renderer_id(
194 const blink::UntrustworthyContextMenuParams& r) {
195 return r.field_renderer_id;
198 static bool Read(blink::mojom::UntrustworthyContextMenuParamsDataView r,
199 blink::UntrustworthyContextMenuParams* out);
204 #endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_CONTEXT_MENU_DATA_CONTEXT_MENU_MOJOM_TRAITS_H_