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 { width: 412, height: 915 },
15    device_scale_factor: 2.625,
16    is_mobile: true,
17    has_touch: true,
18    default_browser_type: BrowserType::Chromium,
19};
20
21/// Pixel 7 device descriptor.
22pub const PIXEL_7: DeviceDescriptor = DeviceDescriptor {
23    name: "Pixel 7",
24    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",
25    viewport: ViewportSize { width: 412, height: 915 },
26    device_scale_factor: 2.625,
27    is_mobile: true,
28    has_touch: true,
29    default_browser_type: BrowserType::Chromium,
30};
31
32/// Pixel 6 Pro device descriptor.
33pub const PIXEL_6_PRO: DeviceDescriptor = DeviceDescriptor {
34    name: "Pixel 6 Pro",
35    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",
36    viewport: ViewportSize { width: 412, height: 892 },
37    device_scale_factor: 3.5,
38    is_mobile: true,
39    has_touch: true,
40    default_browser_type: BrowserType::Chromium,
41};
42
43/// Pixel 6 device descriptor.
44pub const PIXEL_6: DeviceDescriptor = DeviceDescriptor {
45    name: "Pixel 6",
46    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",
47    viewport: ViewportSize { width: 412, height: 915 },
48    device_scale_factor: 2.625,
49    is_mobile: true,
50    has_touch: true,
51    default_browser_type: BrowserType::Chromium,
52};
53
54/// Pixel 5 device descriptor.
55pub const PIXEL_5: DeviceDescriptor = DeviceDescriptor {
56    name: "Pixel 5",
57    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",
58    viewport: ViewportSize { width: 393, height: 851 },
59    device_scale_factor: 2.75,
60    is_mobile: true,
61    has_touch: true,
62    default_browser_type: BrowserType::Chromium,
63};
64
65/// Pixel 4 device descriptor.
66pub const PIXEL_4: DeviceDescriptor = DeviceDescriptor {
67    name: "Pixel 4",
68    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",
69    viewport: ViewportSize { width: 353, height: 745 },
70    device_scale_factor: 2.75,
71    is_mobile: true,
72    has_touch: true,
73    default_browser_type: BrowserType::Chromium,
74};
75
76/// Pixel 7 in landscape orientation.
77pub const PIXEL_7_LANDSCAPE: DeviceDescriptor = DeviceDescriptor {
78    name: "Pixel 7 Landscape",
79    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",
80    viewport: ViewportSize { width: 915, height: 412 },
81    device_scale_factor: 2.625,
82    is_mobile: true,
83    has_touch: true,
84    default_browser_type: BrowserType::Chromium,
85};
86
87// =============================================================================
88// Samsung Galaxy Devices
89// =============================================================================
90
91/// Samsung Galaxy S23 Ultra device descriptor.
92pub const GALAXY_S23_ULTRA: DeviceDescriptor = DeviceDescriptor {
93    name: "Galaxy S23 Ultra",
94    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",
95    viewport: ViewportSize { width: 384, height: 854 },
96    device_scale_factor: 3.0,
97    is_mobile: true,
98    has_touch: true,
99    default_browser_type: BrowserType::Chromium,
100};
101
102/// Samsung Galaxy S23 device descriptor.
103pub const GALAXY_S23: DeviceDescriptor = DeviceDescriptor {
104    name: "Galaxy S23",
105    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",
106    viewport: ViewportSize { width: 360, height: 780 },
107    device_scale_factor: 3.0,
108    is_mobile: true,
109    has_touch: true,
110    default_browser_type: BrowserType::Chromium,
111};
112
113/// Samsung Galaxy S21 device descriptor.
114pub const GALAXY_S21: DeviceDescriptor = DeviceDescriptor {
115    name: "Galaxy S21",
116    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",
117    viewport: ViewportSize { width: 360, height: 800 },
118    device_scale_factor: 3.0,
119    is_mobile: true,
120    has_touch: true,
121    default_browser_type: BrowserType::Chromium,
122};
123
124/// Samsung Galaxy Tab S8 device descriptor.
125pub const GALAXY_TAB_S8: DeviceDescriptor = DeviceDescriptor {
126    name: "Galaxy Tab S8",
127    user_agent: "Mozilla/5.0 (Linux; Android 13; SM-X700) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
128    viewport: ViewportSize { width: 753, height: 1205 },
129    device_scale_factor: 2.0,
130    is_mobile: true,
131    has_touch: true,
132    default_browser_type: BrowserType::Chromium,
133};