1// Copyright 2014 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
5// Multiply-included message file, hence no include guard here, but see below
6// for a much smaller-than-usual include guard section.
7
8#include <vector>
9
10#include "ipc/ipc_message_macros.h"
11#include "third_party/skia/include/core/SkBitmap.h"
12#include "ui/gfx/geometry/point.h"
13#include "ui/gfx/geometry/rect.h"
14#include "ui/gfx/ipc/gfx_param_traits.h"
15#include "ui/gfx/native_widget_types.h"
16#include "ui/ozone/common/gpu/ozone_gpu_message_params.h"
17#include "ui/ozone/ozone_export.h"
18
19#undef IPC_MESSAGE_EXPORT
20#define IPC_MESSAGE_EXPORT OZONE_EXPORT
21
22#define IPC_MESSAGE_START OzoneGpuMsgStart
23
24IPC_ENUM_TRAITS_MAX_VALUE(ui::DisplayConnectionType,
25                          ui::DISPLAY_CONNECTION_TYPE_LAST)
26
27IPC_STRUCT_TRAITS_BEGIN(ui::DisplayMode_Params)
28  IPC_STRUCT_TRAITS_MEMBER(size)
29  IPC_STRUCT_TRAITS_MEMBER(is_interlaced)
30  IPC_STRUCT_TRAITS_MEMBER(refresh_rate)
31IPC_STRUCT_TRAITS_END()
32
33IPC_STRUCT_TRAITS_BEGIN(ui::DisplaySnapshot_Params)
34  IPC_STRUCT_TRAITS_MEMBER(display_id)
35  IPC_STRUCT_TRAITS_MEMBER(has_proper_display_id)
36  IPC_STRUCT_TRAITS_MEMBER(origin)
37  IPC_STRUCT_TRAITS_MEMBER(physical_size)
38  IPC_STRUCT_TRAITS_MEMBER(type)
39  IPC_STRUCT_TRAITS_MEMBER(is_aspect_preserving_scaling)
40  IPC_STRUCT_TRAITS_MEMBER(has_overscan)
41  IPC_STRUCT_TRAITS_MEMBER(display_name)
42  IPC_STRUCT_TRAITS_MEMBER(modes)
43  IPC_STRUCT_TRAITS_MEMBER(has_current_mode)
44  IPC_STRUCT_TRAITS_MEMBER(current_mode)
45  IPC_STRUCT_TRAITS_MEMBER(has_native_mode)
46  IPC_STRUCT_TRAITS_MEMBER(native_mode)
47  IPC_STRUCT_TRAITS_MEMBER(string_representation)
48IPC_STRUCT_TRAITS_END()
49
50//------------------------------------------------------------------------------
51// GPU Messages
52// These are messages from the browser to the GPU process.
53
54// Update the HW cursor bitmap & move to specified location.
55IPC_MESSAGE_CONTROL4(OzoneGpuMsg_CursorSet,
56                     gfx::AcceleratedWidget,
57                     std::vector<SkBitmap>,
58                     gfx::Point /* location */,
59                     int /* frame_delay_ms */)
60
61// Move the HW cursor to the specified location.
62IPC_MESSAGE_CONTROL2(OzoneGpuMsg_CursorMove,
63                     gfx::AcceleratedWidget, gfx::Point)
64
65// Explicit creation of a WindowDelegate. We explicitly create the window
66// delegate such that any state change in the window is not lost while the
67// surface is created on the GPU side.
68IPC_MESSAGE_CONTROL1(OzoneGpuMsg_CreateWindowDelegate,
69                     gfx::AcceleratedWidget /* widget */)
70
71IPC_MESSAGE_CONTROL1(OzoneGpuMsg_DestroyWindowDelegate,
72                     gfx::AcceleratedWidget /* widget */)
73
74// Updates the location and size of the widget on the screen.
75IPC_MESSAGE_CONTROL2(OzoneGpuMsg_WindowBoundsChanged,
76                     gfx::AcceleratedWidget /* widget */,
77                     gfx::Rect /* bounds */)
78
79#if defined(OS_CHROMEOS)
80// Force the DPMS state of the display to on.
81IPC_MESSAGE_CONTROL0(OzoneGpuMsg_ForceDPMSOn)
82
83// Trigger a display reconfiguration. OzoneHostMsg_UpdateNativeDisplays will be
84// sent as a response.
85// The |displays| parameter will hold a list of last known displays.
86IPC_MESSAGE_CONTROL1(OzoneGpuMsg_RefreshNativeDisplays,
87                     std::vector<ui::DisplaySnapshot_Params> /* displays */)
88
89// Configure a display with the specified mode at the specified location.
90IPC_MESSAGE_CONTROL3(OzoneGpuMsg_ConfigureNativeDisplay,
91                     int64_t,  // display ID
92                     ui::DisplayMode_Params,  // display mode
93                     gfx::Point)  // origin for the display
94
95IPC_MESSAGE_CONTROL1(OzoneGpuMsg_DisableNativeDisplay,
96                     int64_t)  // display ID
97
98//------------------------------------------------------------------------------
99// Browser Messages
100// These messages are from the GPU to the browser process.
101
102// Updates the list of active displays.
103IPC_MESSAGE_CONTROL1(OzoneHostMsg_UpdateNativeDisplays,
104                     std::vector<ui::DisplaySnapshot_Params>)
105#endif
106