1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
headless / lib / browser / headless_screen_info.h [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef HEADLESS_LIB_BROWSER_HEADLESS_SCREEN_INFO_H_
#define HEADLESS_LIB_BROWSER_HEADLESS_SCREEN_INFO_H_
#include <string>
#include <string_view>
#include <vector>
#include "base/types/expected.h"
#include "headless/public/headless_export.h"
#include "ui/gfx/geometry/insets.h"
#include "ui/gfx/geometry/rect.h"
namespace headless {
struct HEADLESS_EXPORT HeadlessScreenInfo {
gfx::Rect bounds = gfx::Rect(800, 600);
gfx::Insets work_area_insets;
int color_depth = 24;
float device_pixel_ratio = 1.0f;
bool is_internal = false;
std::string label;
bool operator==(const HeadlessScreenInfo& other) const;
// Parse one or more screen specifications returning a list of headless
// screen infos or an error string.
//
// Example of the screen specifications: { 0,0 800x600 colorDepth=24 }
//
// Screen origin and size are the only positional parameters. Both can be
// omitted.
//
// Available named parameters:
// colorDepth=24
// devicePixelRatio=1
// isInternal=true
// label='primary monitor'
// workAreaLeft=0
// workAreaRight=0
// workAreaTop=0
// workAreaBottom=0
//
// The first screen specified is assumed to be the primary screen. If origin
// is omitted for a secondary screen it will be automatically calculated to
// position the screen at the right of the previous screen, for example:
//
// {800x600}{800x600} is equivalent to specifying:
//
// {0,0 800x600} {800,0 800x600}
static base::expected<std::vector<HeadlessScreenInfo>, std::string>
FromString(std::string_view screen_info);
std::string ToString() const;
};
} // namespace headless
#endif // HEADLESS_LIB_BROWSER_HEADLESS_SCREEN_INFO_H_