jonross | a2ff4f8 | 2018-02-16 17:27:46 | [diff] [blame] | 1 | // Copyright 2018 The Chromium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
Miyoung Shin | 18611ca0 | 2019-08-01 14:47:24 | [diff] [blame] | 5 | #ifndef CONTENT_COMMON_RENDER_FRAME_METADATA_MOJOM_TRAITS_H_ |
| 6 | #define CONTENT_COMMON_RENDER_FRAME_METADATA_MOJOM_TRAITS_H_ |
jonross | a2ff4f8 | 2018-02-16 17:27:46 | [diff] [blame] | 7 | |
jonross | 13c8861 | 2018-03-02 17:12:02 | [diff] [blame] | 8 | #include "base/optional.h" |
jonross | 180dc48 | 2018-10-23 21:22:09 | [diff] [blame] | 9 | #include "base/time/time.h" |
Fady Samuel | 4675b1d | 2018-06-14 20:50:00 | [diff] [blame] | 10 | #include "build/build_config.h" |
jonross | a2ff4f8 | 2018-02-16 17:27:46 | [diff] [blame] | 11 | #include "cc/trees/render_frame_metadata.h" |
| 12 | #include "content/common/render_frame_metadata.mojom-shared.h" |
Miyoung Shin | 99505dd | 2019-07-27 12:45:35 | [diff] [blame] | 13 | #include "services/viz/public/cpp/compositing/local_surface_id_allocation_mojom_traits.h" |
jonross | a2ff4f8 | 2018-02-16 17:27:46 | [diff] [blame] | 14 | |
| 15 | namespace mojo { |
| 16 | |
| 17 | template <> |
| 18 | struct StructTraits<content::mojom::RenderFrameMetadataDataView, |
| 19 | cc::RenderFrameMetadata> { |
yiyix | 4fb015d | 2018-03-20 21:19:01 | [diff] [blame] | 20 | static SkColor root_background_color( |
| 21 | const cc::RenderFrameMetadata& metadata) { |
| 22 | return metadata.root_background_color; |
| 23 | } |
| 24 | |
jonross | 13c8861 | 2018-03-02 17:12:02 | [diff] [blame] | 25 | static base::Optional<gfx::Vector2dF> root_scroll_offset( |
jonross | a2ff4f8 | 2018-02-16 17:27:46 | [diff] [blame] | 26 | const cc::RenderFrameMetadata& metadata) { |
| 27 | return metadata.root_scroll_offset; |
| 28 | } |
| 29 | |
yiyix | 0d291cb | 2018-03-28 19:30:59 | [diff] [blame] | 30 | static bool is_scroll_offset_at_top(const cc::RenderFrameMetadata& metadata) { |
| 31 | return metadata.is_scroll_offset_at_top; |
| 32 | } |
| 33 | |
Mohsen Izadi | 6bfc8dc9 | 2018-04-03 21:21:35 | [diff] [blame] | 34 | static const viz::Selection<gfx::SelectionBound>& selection( |
| 35 | const cc::RenderFrameMetadata& metadata) { |
| 36 | return metadata.selection; |
| 37 | } |
| 38 | |
Saman Sami | 6965b10c | 2018-04-30 18:50:27 | [diff] [blame] | 39 | static bool is_mobile_optimized(const cc::RenderFrameMetadata& metadata) { |
| 40 | return metadata.is_mobile_optimized; |
| 41 | } |
| 42 | |
Fady Samuel | ca9ecb7 | 2018-05-05 05:59:27 | [diff] [blame] | 43 | static float device_scale_factor(const cc::RenderFrameMetadata& metadata) { |
| 44 | return metadata.device_scale_factor; |
| 45 | } |
| 46 | |
| 47 | static const gfx::Size& viewport_size_in_pixels( |
| 48 | const cc::RenderFrameMetadata& metadata) { |
| 49 | return metadata.viewport_size_in_pixels; |
| 50 | } |
| 51 | |
Fady Samuel | b655f45 | 2018-11-06 00:48:34 | [diff] [blame] | 52 | static const base::Optional<viz::LocalSurfaceIdAllocation>& |
| 53 | local_surface_id_allocation(const cc::RenderFrameMetadata& metadata) { |
| 54 | return metadata.local_surface_id_allocation; |
jonross | 180dc48 | 2018-10-23 21:22:09 | [diff] [blame] | 55 | } |
| 56 | |
Fady Samuel | 4675b1d | 2018-06-14 20:50:00 | [diff] [blame] | 57 | static float page_scale_factor(const cc::RenderFrameMetadata& metadata) { |
| 58 | return metadata.page_scale_factor; |
| 59 | } |
| 60 | |
W. James MacLean | 2a90bff | 2018-11-05 20:52:47 | [diff] [blame] | 61 | static float external_page_scale_factor( |
| 62 | const cc::RenderFrameMetadata& metadata) { |
| 63 | return metadata.external_page_scale_factor; |
| 64 | } |
| 65 | |
Fady Samuel | 8195eec | 2018-05-15 18:25:31 | [diff] [blame] | 66 | static float top_controls_height(const cc::RenderFrameMetadata& metadata) { |
| 67 | return metadata.top_controls_height; |
| 68 | } |
| 69 | |
| 70 | static float top_controls_shown_ratio( |
| 71 | const cc::RenderFrameMetadata& metadata) { |
| 72 | return metadata.top_controls_shown_ratio; |
| 73 | } |
| 74 | |
David Black | 9cca359 | 2019-11-06 23:02:22 | [diff] [blame] | 75 | static viz::VerticalScrollDirection new_vertical_scroll_direction( |
| 76 | const cc::RenderFrameMetadata& metadata) { |
| 77 | return metadata.new_vertical_scroll_direction; |
| 78 | } |
| 79 | |
Ahmed Fakhry | 58e6ef54 | 2018-09-04 18:05:38 | [diff] [blame] | 80 | #if defined(OS_ANDROID) |
Fady Samuel | 8195eec | 2018-05-15 18:25:31 | [diff] [blame] | 81 | static float bottom_controls_height(const cc::RenderFrameMetadata& metadata) { |
| 82 | return metadata.bottom_controls_height; |
| 83 | } |
| 84 | |
| 85 | static float bottom_controls_shown_ratio( |
| 86 | const cc::RenderFrameMetadata& metadata) { |
| 87 | return metadata.bottom_controls_shown_ratio; |
| 88 | } |
| 89 | |
Fady Samuel | 4675b1d | 2018-06-14 20:50:00 | [diff] [blame] | 90 | static float min_page_scale_factor(const cc::RenderFrameMetadata& metadata) { |
| 91 | return metadata.min_page_scale_factor; |
| 92 | } |
| 93 | |
| 94 | static float max_page_scale_factor(const cc::RenderFrameMetadata& metadata) { |
| 95 | return metadata.max_page_scale_factor; |
| 96 | } |
| 97 | |
| 98 | static bool root_overflow_y_hidden(const cc::RenderFrameMetadata& metadata) { |
| 99 | return metadata.root_overflow_y_hidden; |
| 100 | } |
| 101 | |
| 102 | static const gfx::SizeF& scrollable_viewport_size( |
| 103 | const cc::RenderFrameMetadata& metadata) { |
| 104 | return metadata.scrollable_viewport_size; |
| 105 | } |
| 106 | |
| 107 | static const gfx::SizeF& root_layer_size( |
| 108 | const cc::RenderFrameMetadata& metadata) { |
| 109 | return metadata.root_layer_size; |
| 110 | } |
| 111 | |
| 112 | static bool has_transparent_background( |
| 113 | const cc::RenderFrameMetadata& metadata) { |
| 114 | return metadata.has_transparent_background; |
| 115 | } |
| 116 | #endif |
| 117 | |
jonross | a2ff4f8 | 2018-02-16 17:27:46 | [diff] [blame] | 118 | static bool Read(content::mojom::RenderFrameMetadataDataView data, |
| 119 | cc::RenderFrameMetadata* out); |
| 120 | }; |
| 121 | |
| 122 | } // namespace mojo |
| 123 | |
Miyoung Shin | 18611ca0 | 2019-08-01 14:47:24 | [diff] [blame] | 124 | #endif // CONTENT_COMMON_RENDER_FRAME_METADATA_MOJOM_TRAITS_H_ |