aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Norman <danielnorman@google.com>2021-07-20 15:49:50 -0700
committerJason Macnak <natsu@google.com>2021-10-08 11:32:36 -0700
commite72ea2cee9d4c0f1cd13cec51407aa87147f0082 (patch)
tree9ea9b0d7c80046fcc8043570d219b0b3a9b4b3d6
parentc4f38ecfd0221aa027d945d3cc88fb56a289910a (diff)
downloadcuttlefish-e72ea2cee9d4c0f1cd13cec51407aa87147f0082.tar.gz
Update WebRTC to hide/show displays on power mode changes.
Test: Use with foldable multi-display cuttlefish Bug: 201451003 Change-Id: I6d9da925a750f6e7b90063d51ea8e0c5c77ff437 Merged-In: I6d9da925a750f6e7b90063d51ea8e0c5c77ff437
-rw-r--r--host/commands/kernel_log_monitor/kernel_log_server.cc5
-rw-r--r--host/commands/kernel_log_monitor/kernel_log_server.h1
-rw-r--r--host/frontend/webrtc/kernel_log_events_handler.cpp6
-rw-r--r--host/frontend/webrtc_operator/assets/js/app.js21
-rw-r--r--host/libs/config/cuttlefish_config.h2
-rw-r--r--shared/sepolicy/vendor/hal_graphics_composer_default.te2
6 files changed, 36 insertions, 1 deletions
diff --git a/host/commands/kernel_log_monitor/kernel_log_server.cc b/host/commands/kernel_log_monitor/kernel_log_server.cc
index 66fafab27..03fc90dad 100644
--- a/host/commands/kernel_log_monitor/kernel_log_server.cc
+++ b/host/commands/kernel_log_monitor/kernel_log_server.cc
@@ -41,10 +41,13 @@ static const std::map<std::string, monitor::Event> kStageToEventMap = {
{cuttlefish::kMobileNetworkConnectedMessage,
monitor::Event::MobileNetworkConnected},
{cuttlefish::kWifiConnectedMessage, monitor::Event::WifiNetworkConnected},
- {cuttlefish::kEthernetConnectedMessage, monitor::Event::EthernetNetworkConnected},
+ {cuttlefish::kEthernetConnectedMessage,
+ monitor::Event::EthernetNetworkConnected},
// TODO(b/131864854): Replace this with a string less likely to change
{"init: starting service 'adbd'...", monitor::Event::AdbdStarted},
{cuttlefish::kScreenChangedMessage, monitor::Event::ScreenChanged},
+ {cuttlefish::kDisplayPowerModeChangedMessage,
+ monitor::Event::DisplayPowerModeChanged},
};
void ProcessSubscriptions(
diff --git a/host/commands/kernel_log_monitor/kernel_log_server.h b/host/commands/kernel_log_monitor/kernel_log_server.h
index 659a3724a..dab675d20 100644
--- a/host/commands/kernel_log_monitor/kernel_log_server.h
+++ b/host/commands/kernel_log_monitor/kernel_log_server.h
@@ -37,6 +37,7 @@ enum Event : int32_t {
AdbdStarted = 5,
ScreenChanged = 6,
EthernetNetworkConnected = 7,
+ DisplayPowerModeChanged = 9,
};
enum class SubscriptionAction {
diff --git a/host/frontend/webrtc/kernel_log_events_handler.cpp b/host/frontend/webrtc/kernel_log_events_handler.cpp
index ca14e6f05..e31e4daa1 100644
--- a/host/frontend/webrtc/kernel_log_events_handler.cpp
+++ b/host/frontend/webrtc/kernel_log_events_handler.cpp
@@ -86,6 +86,12 @@ void KernelLogEventsHandler::ReadLoop() {
message["metadata"] = read_result->metadata;
DeliverEvent(message);
}
+ if (read_result->event == monitor::Event::DisplayPowerModeChanged) {
+ Json::Value message;
+ message["event"] = kDisplayPowerModeChangedMessage;
+ message["metadata"] = read_result->metadata;
+ DeliverEvent(message);
+ }
}
}
}
diff --git a/host/frontend/webrtc_operator/assets/js/app.js b/host/frontend/webrtc_operator/assets/js/app.js
index df111562a..cbc37c620 100644
--- a/host/frontend/webrtc_operator/assets/js/app.js
+++ b/host/frontend/webrtc_operator/assets/js/app.js
@@ -133,6 +133,27 @@ function ConnectToDevice(device_id) {
takePhoto();
}
}
+ if (message_data.event == 'VIRTUAL_DEVICE_DISPLAY_POWER_MODE_CHANGED') {
+ updateDisplayVisibility(metadata.display, metadata.mode);
+ }
+ }
+
+ function updateDisplayVisibility(displayId, powerMode) {
+ const display = document.getElementById('display_' + displayId);
+ if (display == null) {
+ console.error('Unknown display id: ' + displayId);
+ return;
+ }
+ switch (powerMode) {
+ case 'On':
+ display.style.visibility = 'visible';
+ break;
+ case 'Off':
+ display.style.visibility = 'hidden';
+ break;
+ default:
+ console.error('Display ' + displayId + ' has unknown display power mode: ' + powerMode);
+ }
}
function getTransformRotation(element) {
diff --git a/host/libs/config/cuttlefish_config.h b/host/libs/config/cuttlefish_config.h
index 199ba33e3..2028874ef 100644
--- a/host/libs/config/cuttlefish_config.h
+++ b/host/libs/config/cuttlefish_config.h
@@ -52,6 +52,8 @@ constexpr char kWifiConnectedMessage[] =
constexpr char kEthernetConnectedMessage[] =
"VIRTUAL_DEVICE_NETWORK_ETHERNET_CONNECTED";
constexpr char kScreenChangedMessage[] = "VIRTUAL_DEVICE_SCREEN_CHANGED";
+constexpr char kDisplayPowerModeChangedMessage[] =
+ "VIRTUAL_DEVICE_DISPLAY_POWER_MODE_CHANGED";
constexpr char kInternalDirName[] = "internal";
constexpr char kSharedDirName[] = "shared";
constexpr char kCrosvmVarEmptyDir[] = "/var/empty";
diff --git a/shared/sepolicy/vendor/hal_graphics_composer_default.te b/shared/sepolicy/vendor/hal_graphics_composer_default.te
index 807ec7366..2dcee246b 100644
--- a/shared/sepolicy/vendor/hal_graphics_composer_default.te
+++ b/shared/sepolicy/vendor/hal_graphics_composer_default.te
@@ -3,6 +3,8 @@ vndbinder_use(hal_graphics_composer_default)
allow hal_graphics_composer_default self:netlink_kobject_uevent_socket { bind create read };
+allow hal_graphics_composer_default kmsg_device:chr_file w_file_perms;
+
# Supress warnings for drm_hwcomposer trying to read some vendor.hwc.*
# properties as Cuttlefish never configures these properties.
dontaudit hal_graphics_composer_default default_prop:file read; \ No newline at end of file