aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-11-18 21:53:28 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-11-18 21:53:28 +0000
commit986d162a15ec4f9ca0e202af478112432e26f7f3 (patch)
treed9959de2be0eec844415f05bbb7229eb20ab0eb9
parent937b98c81e257b91554ec4481cc05b18284838fc (diff)
parentb5d268ad72b05f533c70391e8ae06b1d058b606d (diff)
downloadcuttlefish-android-mainline-12.0.0_r97.tar.gz
Change-Id: Ifea7f61949f46e83c00d7788d72ed865a8b494e4
-rw-r--r--AndroidProducts.mk4
-rw-r--r--guest/hals/ril/reference-libril/ril_service.cpp16
-rw-r--r--guest/hals/ril/reference-ril/reference-ril.c21
-rw-r--r--host/commands/assemble_cvd/assemble_cvd.cc3
-rw-r--r--host/commands/assemble_cvd/flags.cc7
-rw-r--r--host/commands/fetcher/build_api.cc54
-rwxr-xr-xhost/commands/modem_simulator/files/iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml4
-rw-r--r--host/commands/run_cvd/launch_modem.cpp2
-rw-r--r--host/frontend/webrtc_operator/assets/controls.css26
-rw-r--r--host/frontend/webrtc_operator/assets/style.css20
-rw-r--r--host/libs/vm_manager/crosvm_manager.cpp2
-rw-r--r--shared/device.mk6
-rw-r--r--shared/sepolicy/vendor/file_contexts1
-rw-r--r--vsoc_arm64_only/phone/aosp_cf.mk2
-rw-r--r--vsoc_arm_only/phone/aosp_cf.mk2
-rw-r--r--vsoc_x86/auto/preinstalled-packages-product-car-cuttlefish.xml2
-rw-r--r--vsoc_x86_64/tv/device.mk29
-rw-r--r--vsoc_x86_64_only/phone/aosp_cf.mk2
-rw-r--r--vsoc_x86_only/phone/aosp_cf.mk2
19 files changed, 137 insertions, 68 deletions
diff --git a/AndroidProducts.mk b/AndroidProducts.mk
index cee00d38f..8d06ed7d2 100644
--- a/AndroidProducts.mk
+++ b/AndroidProducts.mk
@@ -22,6 +22,7 @@ PRODUCT_MAKEFILES := \
aosp_cf_x86_64_auto:$(LOCAL_DIR)/vsoc_x86_64/auto/device.mk \
aosp_cf_x86_64_pc:$(LOCAL_DIR)/vsoc_x86_64/pc/aosp_cf.mk \
aosp_cf_x86_64_phone:$(LOCAL_DIR)/vsoc_x86_64/phone/aosp_cf.mk \
+ aosp_cf_x86_64_tv:$(LOCAL_DIR)/vsoc_x86_64/tv/device.mk \
aosp_cf_x86_64_foldable:$(LOCAL_DIR)/vsoc_x86_64/phone/aosp_cf_foldable.mk \
aosp_cf_x86_64_only_phone:$(LOCAL_DIR)/vsoc_x86_64_only/phone/aosp_cf.mk \
aosp_cf_x86_auto:$(LOCAL_DIR)/vsoc_x86/auto/device.mk \
@@ -42,4 +43,5 @@ COMMON_LUNCH_CHOICES := \
aosp_cf_x86_64_foldable-userdebug \
aosp_cf_x86_auto-userdebug \
aosp_cf_x86_phone-userdebug \
- aosp_cf_x86_tv-userdebug
+ aosp_cf_x86_tv-userdebug \
+ aosp_cf_x86_64_tv-userdebug
diff --git a/guest/hals/ril/reference-libril/ril_service.cpp b/guest/hals/ril/reference-libril/ril_service.cpp
index 0d18ce8ad..c7b80a6d9 100644
--- a/guest/hals/ril/reference-libril/ril_service.cpp
+++ b/guest/hals/ril/reference-libril/ril_service.cpp
@@ -12506,6 +12506,22 @@ int radio_1_6::reportPhysicalChannelConfigs(int slotId, int indicationType,
->mRadioIndicationV1_4->currentPhysicalChannelConfigs_1_4(
RadioIndicationType::UNSOLICITED, physChanConfig);
radioService[slotId]->checkReturnStatus(retStatus);
+ {
+ // just send the link estimate along with physical channel
+ // config, as it has at least the downlink bandwidth.
+ // Note: the bandwidth is just some hardcoded
+ // value, as there is not way to get that reliably on
+ // virtual devices, as of now.
+ V1_2::LinkCapacityEstimate lce = {
+ .downlinkCapacityKbps = static_cast<uint32_t>(configs[1]),
+ .uplinkCapacityKbps = static_cast<uint32_t>(configs[1])
+ };
+ RLOGD("reporting link capacity estimate download: %d upload: %d",
+ lce.downlinkCapacityKbps, lce.uplinkCapacityKbps );
+ Return<void> retStatus = radioService[slotId]->mRadioIndicationV1_4->
+ currentLinkCapacityEstimate(RadioIndicationType::UNSOLICITED, lce);
+ radioService[slotId]->checkReturnStatus(retStatus);
+ }
} else {
RLOGE(
"reportPhysicalChannelConfigs: radioService[%d]->mRadioIndicationV1_4 "
diff --git a/guest/hals/ril/reference-ril/reference-ril.c b/guest/hals/ril/reference-ril/reference-ril.c
index 04cdfce74..784069f5b 100644
--- a/guest/hals/ril/reference-ril/reference-ril.c
+++ b/guest/hals/ril/reference-ril/reference-ril.c
@@ -4923,9 +4923,15 @@ onRequest (int request, void *data, size_t datalen, RIL_Token t)
phoneCapability, sizeof(RIL_PhoneCapability));
break;
}
- case RIL_REQUEST_CONFIG_SET_MODEM_CONFIG:
- RIL_onRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
+ case RIL_REQUEST_CONFIG_SET_MODEM_CONFIG: {
+ RIL_ModemConfig *mdConfig = (RIL_ModemConfig*)(data);
+ if (mdConfig == NULL || mdConfig->numOfLiveModems != 1) {
+ RIL_onRequestComplete(t, RIL_E_INVALID_ARGUMENTS, NULL, 0);
+ } else {
+ RIL_onRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
+ }
break;
+ }
case RIL_REQUEST_CONFIG_GET_MODEM_CONFIG: {
RIL_ModemConfig mdConfig;
mdConfig.numOfLiveModems = 1;
@@ -4933,10 +4939,15 @@ onRequest (int request, void *data, size_t datalen, RIL_Token t)
RIL_onRequestComplete(t, RIL_E_SUCCESS, &mdConfig, sizeof(RIL_ModemConfig));
break;
}
- case RIL_REQUEST_CONFIG_SET_PREFER_DATA_MODEM:
- RIL_onRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
+ case RIL_REQUEST_CONFIG_SET_PREFER_DATA_MODEM: {
+ int *modemId = (int*)(data);
+ if (modemId == NULL || *modemId != 0) {
+ RIL_onRequestComplete(t, RIL_E_INVALID_ARGUMENTS, NULL, 0);
+ } else {
+ RIL_onRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
+ }
break;
-
+ }
case RIL_REQUEST_SET_SIGNAL_STRENGTH_REPORTING_CRITERIA:
RIL_onRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
break;
diff --git a/host/commands/assemble_cvd/assemble_cvd.cc b/host/commands/assemble_cvd/assemble_cvd.cc
index c249473a3..27eadb520 100644
--- a/host/commands/assemble_cvd/assemble_cvd.cc
+++ b/host/commands/assemble_cvd/assemble_cvd.cc
@@ -51,8 +51,7 @@ std::string kFetcherConfigFile = "fetcher_config.json";
FetcherConfig FindFetcherConfig(const std::vector<std::string>& files) {
FetcherConfig fetcher_config;
for (const auto& file : files) {
- auto expected_pos = file.size() - kFetcherConfigFile.size();
- if (file.rfind(kFetcherConfigFile) == expected_pos) {
+ if (android::base::EndsWith(file, kFetcherConfigFile)) {
if (fetcher_config.LoadFromFile(file)) {
return fetcher_config;
}
diff --git a/host/commands/assemble_cvd/flags.cc b/host/commands/assemble_cvd/flags.cc
index 43f7bc2f8..a1ce5eb6d 100644
--- a/host/commands/assemble_cvd/flags.cc
+++ b/host/commands/assemble_cvd/flags.cc
@@ -753,9 +753,12 @@ CuttlefishConfig InitializeCuttlefishConfiguration(
if (modem_simulator_count > 0) {
std::stringstream modem_ports;
for (auto index {0}; index < modem_simulator_count - 1; index++) {
- modem_ports << calc_vsock_port(9200) << ",";
+ auto port = 9200 + (modem_simulator_count * (num - 1)) + index;
+ modem_ports << calc_vsock_port(port) << ",";
}
- modem_ports << calc_vsock_port(9200);
+ auto port = 9200 + (modem_simulator_count * (num - 1)) +
+ modem_simulator_count - 1;
+ modem_ports << calc_vsock_port(port);
instance.set_modem_simulator_ports(modem_ports.str());
} else {
instance.set_modem_simulator_ports("");
diff --git a/host/commands/fetcher/build_api.cc b/host/commands/fetcher/build_api.cc
index 69229f055..16f95db63 100644
--- a/host/commands/fetcher/build_api.cc
+++ b/host/commands/fetcher/build_api.cc
@@ -128,16 +128,27 @@ std::string BuildApi::ProductName(const DeviceBuild& build) {
}
std::vector<Artifact> BuildApi::Artifacts(const DeviceBuild& build) {
- std::string url = BUILD_API + "/builds/" + build.id + "/" + build.target
- + "/attempts/latest/artifacts?maxResults=1000";
- auto artifacts_json = curl.DownloadToJson(url, Headers());
- CHECK(!artifacts_json.isMember("error")) << "Error fetching the artifacts of "
- << build << ". Response was " << artifacts_json;
-
+ std::string page_token = "";
std::vector<Artifact> artifacts;
- for (const auto& artifact_json : artifacts_json["artifacts"]) {
- artifacts.emplace_back(artifact_json);
- }
+ do {
+ std::string url = BUILD_API + "/builds/" + build.id + "/" + build.target +
+ "/attempts/latest/artifacts?maxResults=1000";
+ if (page_token != "") {
+ url += "&pageToken=" + page_token;
+ }
+ auto artifacts_json = curl.DownloadToJson(url, Headers());
+ CHECK(!artifacts_json.isMember("error"))
+ << "Error fetching the artifacts of " << build << ". Response was "
+ << artifacts_json;
+ if (artifacts_json.isMember("nextPageToken")) {
+ page_token = artifacts_json["nextPageToken"].asString();
+ } else {
+ page_token = "";
+ }
+ for (const auto& artifact_json : artifacts_json["artifacts"]) {
+ artifacts.emplace_back(artifact_json);
+ }
+ } while (page_token != "");
return artifacts;
}
@@ -164,22 +175,17 @@ std::vector<Artifact> BuildApi::Artifacts(const DirectoryBuild& build) {
bool BuildApi::ArtifactToFile(const DeviceBuild& build,
const std::string& artifact,
const std::string& path) {
- std::string url;
- if (credential_source) {
- url = BUILD_API + "/builds/" + build.id + "/" + build.target +
- "/attempts/latest/artifacts/" + artifact + "?alt=media";
- } else {
- std::string download_url_endpoint =
- BUILD_API + "/builds/" + build.id + "/" + build.target +
- "/attempts/latest/artifacts/" + artifact + "/url";
- auto download_url_json = curl.DownloadToJson(download_url_endpoint);
- if (!download_url_json.isMember("signedUrl")) {
- LOG(ERROR) << "URL endpoint did not have json path";
- return false;
- }
- url = download_url_json["signedUrl"].asString();
+ std::string download_url_endpoint =
+ BUILD_API + "/builds/" + build.id + "/" + build.target +
+ "/attempts/latest/artifacts/" + artifact + "/url";
+ auto download_url_json =
+ curl.DownloadToJson(download_url_endpoint, Headers());
+ if (!download_url_json.isMember("signedUrl")) {
+ LOG(ERROR) << "URL endpoint did not have json path: " << download_url_json;
+ return false;
}
- return curl.DownloadToFile(url, path, Headers());
+ std::string url = download_url_json["signedUrl"].asString();
+ return curl.DownloadToFile(url, path);
}
bool BuildApi::ArtifactToFile(const DirectoryBuild& build,
diff --git a/host/commands/modem_simulator/files/iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml b/host/commands/modem_simulator/files/iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml
index 1eeb88599..b4363da93 100755
--- a/host/commands/modem_simulator/files/iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml
+++ b/host/commands/modem_simulator/files/iccprofile_for_sim0_for_CtsCarrierApiTestCases.xml
@@ -127,11 +127,11 @@
<ADF name="PKCS15" aid="A000000063504B43532D3135">
<File id="4300">
<CGLA cmd="00a40004024300">76,62228202412183024300A503C001408A01058B066F0601010001800201DC810201EE88009000</CGLA>
- <CGLA cmd="00b00000004300">516,30088200300404024310301AA0120410A000000476416E64726F696443545340300404024311301AA0120410A000000476416E64726F696443545341300404024312301AA0120410A000000476416E64726F696443545342300404024313301AA0120410A000000476416E64726F696443545343300404024314301AA0120410A000000476416E64726F696443545344300404024315301AA0120410A000000476416E64726F696443545345300404024316301AA0120410A000000476416E64726F6964435453463004040243173010A0080406FFFFFFFFFFFF300404024318301AA0120410A000000476416E64726F696443545347300404024313301AA0129000</CGLA>
+ <CGLA cmd="00b0000000">516,30088200300404024310301AA0120410A000000476416E64726F696443545340300404024311301AA0120410A000000476416E64726F696443545341300404024312301AA0120410A000000476416E64726F696443545342300404024313301AA0120410A000000476416E64726F696443545343300404024314301AA0120410A000000476416E64726F696443545344300404024315301AA0120410A000000476416E64726F696443545345300404024316301AA0120410A000000476416E64726F6964435453463004040243173010A0080406FFFFFFFFFFFF300404024318301AA0120410A000000476416E64726F696443545347300404024313301AA0129000</CGLA>
</File>
<File id="4318">
<CGLA cmd="00a40004024318">76,62228202412183024318A503C001408A01058B066F0601010001800200188102002A88009000</CGLA>
- <CGLA cmd="00b00000004318">124,3016041461ED377E85D386A8DFEE6B864BD85B0BFAA5AF8130220420CE7B2B47AE2B7552C8F92CC29124279883041FB623A5F194A82C9BF15D492AA09000</CGLA>
+ <CGLA cmd="00b0000000">124,3016041461ED377E85D386A8DFEE6B864BD85B0BFAA5AF8130220420CE7B2B47AE2B7552C8F92CC29124279883041FB623A5F194A82C9BF15D492AA09000</CGLA>
</File>
</ADF>
diff --git a/host/commands/run_cvd/launch_modem.cpp b/host/commands/run_cvd/launch_modem.cpp
index fb9af7082..07af9f12c 100644
--- a/host/commands/run_cvd/launch_modem.cpp
+++ b/host/commands/run_cvd/launch_modem.cpp
@@ -95,7 +95,7 @@ std::vector<Command> LaunchModemSimulatorIfEnabled(
cmd.AddParameter("-server_fds=");
for (int i = 0; i < instance_number; ++i) {
auto pos = ports.find(',');
- auto temp = (pos != std::string::npos) ? ports.substr(0, pos - 1) : ports;
+ auto temp = (pos != std::string::npos) ? ports.substr(0, pos) : ports;
auto port = std::stoi(temp);
ports = ports.substr(pos + 1);
diff --git a/host/frontend/webrtc_operator/assets/controls.css b/host/frontend/webrtc_operator/assets/controls.css
index 5bb0cce1b..a2dce53f2 100644
--- a/host/frontend/webrtc_operator/assets/controls.css
+++ b/host/frontend/webrtc_operator/assets/controls.css
@@ -19,15 +19,15 @@
padding-right: 7px;
border-radius: 10px;
background-color: #5f6368; /* Google grey 700 */
- width: 117px;
- height: 64px;
+ width: 80px;
+ height: 44px;
}
.toggle-control .toggle-control-icon {
position: relative;
display: inline-block;
float: left;
- font-size: 64px;
+ font-size: 44px;
color: #e8eaed;
}
@@ -35,9 +35,9 @@
position: relative;
display: inline-block;
float:left;
- width: 52px;
- height: 30px;
- top: 17px;
+ width: 36px;
+ height: 21px;
+ top: 11px;
}
.toggle-control .toggle-control-switch input {
@@ -55,16 +55,16 @@
bottom: 0;
-webkit-transition: .4s;
transition: .4s;
- border-radius: 30px;
- border: solid 5px;
+ border-radius: 21px;
+ border: solid 4px;
border-color: #e8eaed;
}
.toggle-control .toggle-control-slider:before {
position: absolute;
content: "";
- height: 18px;
- width: 18px;
+ height: 12px;
+ width: 12px;
left: 1px;
bottom: 1px;
background-color: #e8eaed;
@@ -82,7 +82,7 @@
}
.toggle-control input:checked + .toggle-control-slider:before {
- -webkit-transform: translateX(22px);
- -ms-transform: translateX(22px);
- transform: translateX(22px);
+ -webkit-transform: translateX(15px);
+ -ms-transform: translateX(15px);
+ transform: translateX(15px);
}
diff --git a/host/frontend/webrtc_operator/assets/style.css b/host/frontend/webrtc_operator/assets/style.css
index b8e83656d..5d59b34c7 100644
--- a/host/frontend/webrtc_operator/assets/style.css
+++ b/host/frontend/webrtc_operator/assets/style.css
@@ -44,8 +44,6 @@ body {
#header {
height: 64px;
- margin-top: 10px;
- margin-bottom: 10px;
/* Items inside this use a row Flexbox.*/
display: flex;
align-items: center;
@@ -60,7 +58,7 @@ body {
margin-right: 6px;
}
#device-audio {
- margin-bottom: 5px;
+ height: 44px;
}
#status-div {
@@ -94,8 +92,8 @@ body {
display: flex;
}
#controls-and-screens div {
- margin-left: 10px;
- margin-right: 10px;
+ margin-left: 5px;
+ margin-right: 5px;
}
.modal {
@@ -103,7 +101,7 @@ body {
display: none;
position: absolute;
- border-radius: 16px;
+ border-radius: 10px;
padding: 20px;
padding-top: 1px;
@@ -134,7 +132,7 @@ body {
}
.control-panel-column {
- width: 80px;
+ width: 50px;
/* Items inside this use a column Flexbox.*/
display: flex;
flex-direction: column;
@@ -144,13 +142,13 @@ body {
/* Give the custom buttons column a blue background. */
background-color: #1c4587ff;
height: fit-content;
- border-radius: 16px;
+ border-radius: 10px;
}
.control-panel-column button {
margin: 0px 0px 5px 0px;
- height: 80px;
- font-size: 48px;
+ height: 50px;
+ font-size: 32px;
color: #e8eaed; /* Google grey 200 */
border: none;
@@ -161,7 +159,7 @@ body {
color: #9aa0a6; /* Google grey 500 */
}
.control-panel-column button.modal-button-opened {
- border-radius: 16px;
+ border-radius: 10px;
background-color: #5f6368; /* Google grey 700 */
}
diff --git a/host/libs/vm_manager/crosvm_manager.cpp b/host/libs/vm_manager/crosvm_manager.cpp
index dbc74f558..82aba2d90 100644
--- a/host/libs/vm_manager/crosvm_manager.cpp
+++ b/host/libs/vm_manager/crosvm_manager.cpp
@@ -106,7 +106,7 @@ std::vector<std::string> CrosvmManager::ConfigureGpuMode(
// HALs.
if (gpu_mode == kGpuModeGuestSwiftshader) {
return {
- "androidboot.cpuvulkan.version=" + std::to_string(VK_API_VERSION_1_1),
+ "androidboot.cpuvulkan.version=" + std::to_string(VK_API_VERSION_1_2),
"androidboot.hardware.gralloc=minigbm",
"androidboot.hardware.hwcomposer=ranchu",
"androidboot.hardware.egl=angle",
diff --git a/shared/device.mk b/shared/device.mk
index 1ae1c58ac..8647d0175 100644
--- a/shared/device.mk
+++ b/shared/device.mk
@@ -142,6 +142,9 @@ PRODUCT_PACKAGES += androidx.camera.extensions.impl sample_camera_extensions.xml
# DRM service opt-in
PRODUCT_VENDOR_PROPERTIES += drm.service.enabled=true
+# Call deleteAllKeys if vold detects a factory reset
+PRODUCT_VENDOR_PROPERTIES += ro.crypto.metadata_init_delete_all_keys.enabled=true
+
PRODUCT_SOONG_NAMESPACES += hardware/google/camera
PRODUCT_SOONG_NAMESPACES += hardware/google/camera/devices/EmulatedCamera
@@ -222,7 +225,8 @@ PRODUCT_PACKAGES += \
libEGL_emulation \
libGLESv2_enc \
libGLESv2_emulation \
- libGLESv1_enc
+ libGLESv1_enc \
+ libGoldfishProfiler \
#
# Packages for testing
diff --git a/shared/sepolicy/vendor/file_contexts b/shared/sepolicy/vendor/file_contexts
index aeffec1da..20538a50f 100644
--- a/shared/sepolicy/vendor/file_contexts
+++ b/shared/sepolicy/vendor/file_contexts
@@ -121,3 +121,4 @@
/vendor/lib(64)?/libGLESv1_CM_angle\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libGLESv2_angle\.so u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libfeature_support_angle\.so u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/libGoldfishProfiler\.so u:object_r:same_process_hal_file:s0
diff --git a/vsoc_arm64_only/phone/aosp_cf.mk b/vsoc_arm64_only/phone/aosp_cf.mk
index 6de27b658..5bcfc7b19 100644
--- a/vsoc_arm64_only/phone/aosp_cf.mk
+++ b/vsoc_arm64_only/phone/aosp_cf.mk
@@ -55,7 +55,7 @@ PRODUCT_COPY_FILES += \
PRODUCT_NAME := aosp_cf_arm64_only_phone
PRODUCT_DEVICE := vsoc_arm64_only
PRODUCT_MANUFACTURER := Google
-PRODUCT_MODEL := Cuttlefish arm64 phone (64-bit only)
+PRODUCT_MODEL := Cuttlefish arm64 phone 64-bit only
PRODUCT_VENDOR_PROPERTIES += \
ro.soc.manufacturer=$(PRODUCT_MANUFACTURER) \
diff --git a/vsoc_arm_only/phone/aosp_cf.mk b/vsoc_arm_only/phone/aosp_cf.mk
index 00455066c..2643c9047 100644
--- a/vsoc_arm_only/phone/aosp_cf.mk
+++ b/vsoc_arm_only/phone/aosp_cf.mk
@@ -64,7 +64,7 @@ PRODUCT_COPY_FILES += \
PRODUCT_NAME := aosp_cf_arm_only_phone
PRODUCT_DEVICE := vsoc_arm_only
PRODUCT_MANUFACTURER := Google
-PRODUCT_MODEL := Cuttlefish arm phone (32-bit only)
+PRODUCT_MODEL := Cuttlefish arm phone 32-bit only
PRODUCT_VENDOR_PROPERTIES += \
ro.soc.manufacturer=$(PRODUCT_MANUFACTURER) \
diff --git a/vsoc_x86/auto/preinstalled-packages-product-car-cuttlefish.xml b/vsoc_x86/auto/preinstalled-packages-product-car-cuttlefish.xml
index aef6dcc66..49aef5d1f 100644
--- a/vsoc_x86/auto/preinstalled-packages-product-car-cuttlefish.xml
+++ b/vsoc_x86/auto/preinstalled-packages-product-car-cuttlefish.xml
@@ -91,7 +91,7 @@
<install-in user-type="SYSTEM" />
</install-in-user-type>
<!-- Required when using Camera2 extensions -->
- <install-in-user-type package="com.android.camera">
+ <install-in-user-type package="com.android.cameraextensions">
<install-in user-type="SYSTEM" />
<install-in user-type="FULL" />
</install-in-user-type>
diff --git a/vsoc_x86_64/tv/device.mk b/vsoc_x86_64/tv/device.mk
new file mode 100644
index 000000000..d25210dd7
--- /dev/null
+++ b/vsoc_x86_64/tv/device.mk
@@ -0,0 +1,29 @@
+#
+# Copyright (C) 2021 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
+$(call inherit-product, device/google/cuttlefish/shared/tv/device.mk)
+$(call inherit-product, device/google/cuttlefish/vsoc_x86_64/kernel.mk)
+$(call inherit-product, device/google/cuttlefish/vsoc_x86_64/bootloader.mk)
+
+PRODUCT_NAME := aosp_cf_x86_64_tv
+PRODUCT_DEVICE := vsoc_x86_64
+PRODUCT_MANUFACTURER := Google
+PRODUCT_MODEL := Cuttlefish x86_64 tv
+
+PRODUCT_VENDOR_PROPERTIES += \
+ ro.soc.manufacturer=$(PRODUCT_MANUFACTURER) \
+ ro.soc.model=$(PRODUCT_DEVICE)
diff --git a/vsoc_x86_64_only/phone/aosp_cf.mk b/vsoc_x86_64_only/phone/aosp_cf.mk
index 9596d5af8..0e8757d5f 100644
--- a/vsoc_x86_64_only/phone/aosp_cf.mk
+++ b/vsoc_x86_64_only/phone/aosp_cf.mk
@@ -55,7 +55,7 @@ PRODUCT_COPY_FILES += \
PRODUCT_NAME := aosp_cf_x86_64_only_phone
PRODUCT_DEVICE := vsoc_x86_64_only
PRODUCT_MANUFACTURER := Google
-PRODUCT_MODEL := Cuttlefish x86_64 phone (64-bit only)
+PRODUCT_MODEL := Cuttlefish x86_64 phone 64-bit only
PRODUCT_VENDOR_PROPERTIES += \
ro.soc.manufacturer=$(PRODUCT_MANUFACTURER) \
diff --git a/vsoc_x86_only/phone/aosp_cf.mk b/vsoc_x86_only/phone/aosp_cf.mk
index 17324d493..1aacd16d3 100644
--- a/vsoc_x86_only/phone/aosp_cf.mk
+++ b/vsoc_x86_only/phone/aosp_cf.mk
@@ -53,7 +53,7 @@ PRODUCT_COPY_FILES += \
PRODUCT_NAME := aosp_cf_x86_only_phone
PRODUCT_DEVICE := vsoc_x86_only
PRODUCT_MANUFACTURER := Google
-PRODUCT_MODEL := Cuttlefish x86 phone (32-bit kernel)
+PRODUCT_MODEL := Cuttlefish x86 phone 32-bit kernel
PRODUCT_VENDOR_PROPERTIES += \
ro.soc.manufacturer=$(PRODUCT_MANUFACTURER) \