Merge "bliss: Fall back to vendor/gapps if vendor/gms is not found" into voyager
diff --git a/build/core/mkdir.mk b/build/core/mkdir.mk
new file mode 100644
index 0000000..01ab1f3
--- /dev/null
+++ b/build/core/mkdir.mk
@@ -0,0 +1,30 @@
+# Copyright (C) 2025 The LineageOS 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.
+
+ifneq ($(LOCAL_MODULE_MAKEFILE),$(SOONG_ANDROID_MK))
+$(call pretty-error,mkdir.mk may only be used from Soong)
+endif
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+$(LOCAL_SOONG_INSTALL_DIR):
+	@mkdir -p $@
+
+$(LOCAL_BUILT_MODULE): $(LOCAL_SOONG_INSTALL_DIR) $(LOCAL_ADDITIONAL_DEPENDENCIES)
+	@mkdir -p $(dir $@)
+	@touch $@
+
+ifneq ($(filter $(LOCAL_MODULE),$(PRODUCT_PACKAGES)),)
+ALL_DEFAULT_INSTALLED_MODULES += $(LOCAL_SOONG_INSTALL_DIR)
+endif
diff --git a/build/soong/Android.bp b/build/soong/Android.bp
index 5ac776c..b69ab4b 100644
--- a/build/soong/Android.bp
+++ b/build/soong/Android.bp
@@ -42,6 +42,22 @@
     ],
 }
 
+bootstrap_go_package {
+    name: "soong-bliss-mkdir",
+    pkgPath: "bliss/soong/mkdir",
+    deps: [
+        "blueprint",
+        "blueprint-pathtools",
+        "soong",
+        "soong-android",
+    ],
+    srcs: [
+        "mkdir/init.go",
+        "mkdir/mkdir.go",
+    ],
+    pluginFor: ["soong_build"],
+}
+
 cc_defaults {
     name: "generated_kernel_header_defaults",
     generated_headers: ["generated_kernel_includes"],
diff --git a/build/soong/mkdir/init.go b/build/soong/mkdir/init.go
new file mode 100644
index 0000000..5c17507
--- /dev/null
+++ b/build/soong/mkdir/init.go
@@ -0,0 +1,29 @@
+// Copyright 2025 The LineageOS 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.
+
+package mkdir
+
+import (
+	"android/soong/android"
+)
+
+var pctx = android.NewPackageContext("bliss/soong/mkdir")
+
+func init() {
+	RegisterBuildComponents(android.InitRegistrationContext)
+}
+
+func RegisterBuildComponents(ctx android.RegistrationContext) {
+	ctx.RegisterModuleType("mkdir", MkdirFactory)
+}
diff --git a/build/soong/mkdir/mkdir.go b/build/soong/mkdir/mkdir.go
new file mode 100644
index 0000000..f4bea63
--- /dev/null
+++ b/build/soong/mkdir/mkdir.go
@@ -0,0 +1,68 @@
+// Copyright 2025 The LineageOS 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.
+
+package mkdir
+
+import (
+	"android/soong/android"
+
+	"path/filepath"
+)
+
+func MkdirFactory() android.Module {
+	module := &Mkdir{}
+	module.AddProperties(&module.properties)
+	android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibCommon)
+	return module
+}
+
+type MkdirProperties struct {
+	Dir string `android:"arch_variant"`
+}
+
+type Mkdir struct {
+	android.ModuleBase
+
+	properties MkdirProperties
+
+	installDir android.InstallPath
+	output android.ModuleOutPath
+}
+
+func (this *Mkdir) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+	if filepath.Clean(this.properties.Dir) != this.properties.Dir {
+		ctx.PropertyErrorf("dir", "Should be a clean filepath")
+		return
+	}
+
+	out := android.PathForModuleOut(ctx, "out.txt")
+	android.WriteFileRuleVerbatim(ctx, out, "")
+	this.output = out
+
+	this.installDir = android.PathForModuleInstall(ctx, "", this.properties.Dir)
+}
+
+func (this *Mkdir) AndroidMkEntries() []android.AndroidMkEntries {
+	return []android.AndroidMkEntries{{
+		Class: "FAKE",
+		// Need at least one output file in order for this to take effect.
+		OutputFile: android.OptionalPathForPath(this.output),
+		Include: "vendor/bliss/build/core/mkdir.mk",
+		ExtraEntries: []android.AndroidMkExtraEntriesFunc{
+			func(ctx android.AndroidMkExtraEntriesContext, entries *android.AndroidMkEntries) {
+				entries.SetString("LOCAL_SOONG_INSTALL_DIR", this.installDir.String())
+			},
+		},
+	}}
+}
diff --git a/config/BoardConfigSoong.mk b/config/BoardConfigSoong.mk
index ca4f6c2..9cd6624 100644
--- a/config/BoardConfigSoong.mk
+++ b/config/BoardConfigSoong.mk
@@ -46,7 +46,6 @@
     sdmcore_has_is_display_hw_available_func \
     target_camera_package_name \
     gralloc_handle_has_ubwcp_format \
-    target_health_charging_control_charging_path \
     target_health_charging_control_charging_enabled \
     target_health_charging_control_charging_disabled \
     target_health_charging_control_deadline_path \
@@ -67,6 +66,11 @@
     target_powershare_enabled \
     target_powershare_disabled
 
+ifneq ($(TARGET_HEALTH_CHARGING_CONTROL_CHARGING_PATH),)
+SOONG_CONFIG_blissGlobalVars += \
+    target_health_charging_control_charging_path
+endif
+
 SOONG_CONFIG_NAMESPACES += blissNvidiaVars
 SOONG_CONFIG_blissNvidiaVars += \
     uses_nvidia_enhancements
@@ -142,7 +146,9 @@
 SOONG_CONFIG_blissGlobalVars_bootloader_message_offset := $(BOOTLOADER_MESSAGE_OFFSET)
 SOONG_CONFIG_blissGlobalVars_additional_gralloc_10_usage_bits := $(TARGET_ADDITIONAL_GRALLOC_10_USAGE_BITS)
 SOONG_CONFIG_blissGlobalVars_target_camera_package_name := $(TARGET_CAMERA_PACKAGE_NAME)
+ifneq ($(TARGET_HEALTH_CHARGING_CONTROL_CHARGING_PATH),)
 SOONG_CONFIG_blissGlobalVars_target_health_charging_control_charging_path := $(TARGET_HEALTH_CHARGING_CONTROL_CHARGING_PATH)
+endif
 SOONG_CONFIG_blissGlobalVars_target_health_charging_control_charging_enabled := $(TARGET_HEALTH_CHARGING_CONTROL_CHARGING_ENABLED)
 SOONG_CONFIG_blissGlobalVars_target_health_charging_control_charging_disabled := $(TARGET_HEALTH_CHARGING_CONTROL_CHARGING_DISABLED)
 SOONG_CONFIG_blissGlobalVars_target_health_charging_control_deadline_path := $(TARGET_HEALTH_CHARGING_CONTROL_DEADLINE_PATH)
diff --git a/config/common.mk b/config/common.mk
index 95a59c7..b8267a9 100644
--- a/config/common.mk
+++ b/config/common.mk
@@ -11,13 +11,18 @@
     ro.com.google.clientidbase=$(PRODUCT_GMS_CLIENTID_BASE)
 endif
 
-ifneq ($(TARGET_BUILD_VARIANT),user)
+ifeq ($(TARGET_BUILD_VARIANT),eng)
 # Disable ADB authentication
 PRODUCT_SYSTEM_DEFAULT_PROPERTIES += ro.adb.secure=0
 else
+ifdef WITH_ADB_INSECURE
+# Forcebly disable ADB authentication
+PRODUCT_SYSTEM_DEFAULT_PROPERTIES += ro.adb.secure=0
+else
 # Enable ADB authentication
 PRODUCT_SYSTEM_DEFAULT_PROPERTIES += ro.adb.secure=1
 endif
+endif
 
 # Enable one-handed mode
 PRODUCT_PRODUCT_PROPERTIES += \
@@ -142,6 +147,14 @@
 endif
 endif
 
+PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
+    dalvik.vm.systemuicompilerfilter=speed
+
+ifeq ($(TARGET_BUILD_VARIANT),userdebug)
+PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \
+    debug.sf.enable_transaction_tracing=false
+endif
+
 # StitchImage
 PRODUCT_PACKAGES += \
     StitchImage
diff --git a/prebuilt/common/etc/apns-conf.xml b/prebuilt/common/etc/apns-conf.xml
index dd7990a..eee3fc9 100644
--- a/prebuilt/common/etc/apns-conf.xml
+++ b/prebuilt/common/etc/apns-conf.xml
@@ -1563,12 +1563,8 @@
   <apn carrier="EHRPD Tethering" mcc="311" mnc="230" apn="tethering.cs4glte.com" type="dun" user="" password="" mmsc="http://pix.cspire.com/servlets/mms" mmsproxy="66.175.144.91" mmsport="80" protocol="IP" roaming_protocol="IP" bearer="13" />
   <apn carrier="AirFire" mcc="311" mnc="330" apn="internet.air.net" user="" password="" />
   <apn carrier="AirFire MMS" mcc="311" mnc="330" mmsc="http://mms.airfiremobile.com/+1" apn="internet.air.net" user="" password="" type="mms" />
-  <apn carrier="GCI Web" mcc="311" mnc="370" apn="web.gci" type="default,supl" authtype="0" />
-  <apn carrier="GCI MMS" mcc="311" mnc="370" apn="mms.gci" mmsc="http://mmsc.gci.csky.us:6672/" mmsproxy="209.4.229.92" mmsport="9201" type="mms" authtype="0" />
-  <apn carrier="GCI Data" mcc="311" mnc="370" apn="web.gci" type="default,supl" />
-  <apn carrier="GCI MMS" mcc="311" mnc="370" apn="mms.gci" mmsproxy="209.4.229.92" mmsport="9201" mmsc="http://mmsc.gci.csky.us:6672" type="mms" />
-  <apn carrier="GCI Data" mcc="311" mnc="370" apn="web.gci" proxy="" port="" user="" password="" mmsc="" type="default,supl" />
-  <apn carrier="GCI MMS" mcc="311" mnc="370" apn="mms.gci" proxy="" port="" user="" password="" mmsc="http://mmsc.gci.csky.us:6672" mmsproxy="209.4.229.92" mmsport="9201" type="mms" />
+  <apn carrier="GCI Web" mcc="311" mnc="370" apn="web.gci" type="default,supl" />
+  <apn carrier="GCI MMS" mcc="311" mnc="370" apn="mms.gci" mmsc="http://mmsc.gci.net" mmsproxy="24.237.158.34" mmsport="9201" type="mms" />
   <apn carrier="ATT WAP" mcc="311" mnc="380" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" />
   <apn carrier="ATT Broadband" mcc="311" mnc="380" apn="Broadband" type="default,supl" />
   <apn carrier="Verizon" mcc="311" mnc="480" apn="internet" authtype="3" type="default,mms,supl,fota,cbs,dun" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" bearer_bitmask="4|5|6|7|8|12" user_visible="false" />
diff --git a/release/aconfig/ap4a/com.android.settings.flags/enable_bluetooth_device_details_polish_flag_values.textproto b/release/aconfig/ap4a/com.android.settings.flags/enable_bluetooth_device_details_polish_flag_values.textproto
new file mode 100644
index 0000000..718963f
--- /dev/null
+++ b/release/aconfig/ap4a/com.android.settings.flags/enable_bluetooth_device_details_polish_flag_values.textproto
@@ -0,0 +1,6 @@
+flag_value {
+  package: "com.android.settings.flags"
+  name: "enable_bluetooth_device_details_polish"
+  state: ENABLED
+  permission: READ_WRITE
+}