viewpoint_core/devices/android/
mod.rs

1//! Android device descriptors (Pixel and Samsung Galaxy).
2
3use super::{BrowserType, DeviceDescriptor};
4use crate::context::ViewportSize;
5
6// =============================================================================
7// Pixel Devices
8// =============================================================================
9
10/// Pixel 7 Pro device descriptor.
11pub const PIXEL_7_PRO: DeviceDescriptor = DeviceDescriptor {
12    name: "Pixel 7 Pro",
13    user_agent: "Mozilla/5.0 (Linux; Android 14; Pixel 7 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",
14    viewport: ViewportSize {
15        width: 412,
16        height: 915,
17    },
18    device_scale_factor: 2.625,
19    is_mobile: true,
20    has_touch: true,
21    default_browser_type: BrowserType::Chromium,
22};
23
24/// Pixel 7 device descriptor.
25pub const PIXEL_7: DeviceDescriptor = DeviceDescriptor {
26    name: "Pixel 7",
27    user_agent: "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",
28    viewport: ViewportSize {
29        width: 412,
30        height: 915,
31    },
32    device_scale_factor: 2.625,
33    is_mobile: true,
34    has_touch: true,
35    default_browser_type: BrowserType::Chromium,
36};
37
38/// Pixel 6 Pro device descriptor.
39pub const PIXEL_6_PRO: DeviceDescriptor = DeviceDescriptor {
40    name: "Pixel 6 Pro",
41    user_agent: "Mozilla/5.0 (Linux; Android 13; Pixel 6 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",
42    viewport: ViewportSize {
43        width: 412,
44        height: 892,
45    },
46    device_scale_factor: 3.5,
47    is_mobile: true,
48    has_touch: true,
49    default_browser_type: BrowserType::Chromium,
50};
51
52/// Pixel 6 device descriptor.
53pub const PIXEL_6: DeviceDescriptor = DeviceDescriptor {
54    name: "Pixel 6",
55    user_agent: "Mozilla/5.0 (Linux; Android 13; Pixel 6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",
56    viewport: ViewportSize {
57        width: 412,
58        height: 915,
59    },
60    device_scale_factor: 2.625,
61    is_mobile: true,
62    has_touch: true,
63    default_browser_type: BrowserType::Chromium,
64};
65
66/// Pixel 5 device descriptor.
67pub const PIXEL_5: DeviceDescriptor = DeviceDescriptor {
68    name: "Pixel 5",
69    user_agent: "Mozilla/5.0 (Linux; Android 12; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",
70    viewport: ViewportSize {
71        width: 393,
72        height: 851,
73    },
74    device_scale_factor: 2.75,
75    is_mobile: true,
76    has_touch: true,
77    default_browser_type: BrowserType::Chromium,
78};
79
80/// Pixel 4 device descriptor.
81pub const PIXEL_4: DeviceDescriptor = DeviceDescriptor {
82    name: "Pixel 4",
83    user_agent: "Mozilla/5.0 (Linux; Android 11; Pixel 4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",
84    viewport: ViewportSize {
85        width: 353,
86        height: 745,
87    },
88    device_scale_factor: 2.75,
89    is_mobile: true,
90    has_touch: true,
91    default_browser_type: BrowserType::Chromium,
92};
93
94/// Pixel 7 in landscape orientation.
95pub const PIXEL_7_LANDSCAPE: DeviceDescriptor = DeviceDescriptor {
96    name: "Pixel 7 Landscape",
97    user_agent: "Mozilla/5.0 (Linux; Android 14; Pixel 7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",
98    viewport: ViewportSize {
99        width: 915,
100        height: 412,
101    },
102    device_scale_factor: 2.625,
103    is_mobile: true,
104    has_touch: true,
105    default_browser_type: BrowserType::Chromium,
106};
107
108// =============================================================================
109// Samsung Galaxy Devices
110// =============================================================================
111
112/// Samsung Galaxy S23 Ultra device descriptor.
113pub const GALAXY_S23_ULTRA: DeviceDescriptor = DeviceDescriptor {
114    name: "Galaxy S23 Ultra",
115    user_agent: "Mozilla/5.0 (Linux; Android 14; SM-S918B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",
116    viewport: ViewportSize {
117        width: 384,
118        height: 854,
119    },
120    device_scale_factor: 3.0,
121    is_mobile: true,
122    has_touch: true,
123    default_browser_type: BrowserType::Chromium,
124};
125
126/// Samsung Galaxy S23 device descriptor.
127pub const GALAXY_S23: DeviceDescriptor = DeviceDescriptor {
128    name: "Galaxy S23",
129    user_agent: "Mozilla/5.0 (Linux; Android 14; SM-S911B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",
130    viewport: ViewportSize {
131        width: 360,
132        height: 780,
133    },
134    device_scale_factor: 3.0,
135    is_mobile: true,
136    has_touch: true,
137    default_browser_type: BrowserType::Chromium,
138};
139
140/// Samsung Galaxy S21 device descriptor.
141pub const GALAXY_S21: DeviceDescriptor = DeviceDescriptor {
142    name: "Galaxy S21",
143    user_agent: "Mozilla/5.0 (Linux; Android 12; SM-G991B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36",
144    viewport: ViewportSize {
145        width: 360,
146        height: 800,
147    },
148    device_scale_factor: 3.0,
149    is_mobile: true,
150    has_touch: true,
151    default_browser_type: BrowserType::Chromium,
152};
153
154/// Samsung Galaxy Tab S8 device descriptor.
155pub const GALAXY_TAB_S8: DeviceDescriptor = DeviceDescriptor {
156    name: "Galaxy Tab S8",
157    user_agent: "Mozilla/5.0 (Linux; Android 13; SM-X700) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
158    viewport: ViewportSize {
159        width: 753,
160        height: 1205,
161    },
162    device_scale_factor: 2.0,
163    is_mobile: true,
164    has_touch: true,
165    default_browser_type: BrowserType::Chromium,
166};