fugu: stop dex preopt'ing
am: 5db03cd21d  -s ours

Change-Id: I3f51cffe0fe33bb2e7a4bdb49ac7f58ad4f13c30
diff --git a/BoardConfig.mk b/BoardConfig.mk
index a7552e3..ee21603 100644
--- a/BoardConfig.mk
+++ b/BoardConfig.mk
@@ -90,19 +90,6 @@
 
 BOARD_EGL_CFG := device/asus/fugu/egl.cfg
 
-ADDITIONAL_DEFAULT_PROPERTIES += \
-    ro.opengles.version = 196609 \
-    ro.hwui.drop_shadow_cache_size = 4.0 \
-    ro.hwui.gradient_cache_size = 0.8 \
-    ro.hwui.layer_cache_size = 32.0 \
-    ro.hwui.path_cache_size = 24.0 \
-    ro.hwui.text_large_cache_width = 2048 \
-    ro.hwui.text_large_cache_height = 1024 \
-    ro.hwui.text_small_cache_width = 1024 \
-    ro.hwui.text_small_cache_height = 512 \
-    ro.hwui.texture_cache_flushrate = 0.4 \
-    ro.hwui.texture_cache_size = 48.0 \
-
 MAX_EGL_CACHE_ENTRY_SIZE := 65536
 MAX_EGL_CACHE_SIZE := 1048576
 
@@ -125,9 +112,6 @@
 
 # Video Post Processing
 TARGET_HAS_ISV := true
-ADDITIONAL_DEFAULT_PROPERTIES += \
-    persist.intel.isv.vpp = 1 \
-    persist.intel.isv.frc = 1
 
 OVERRIDE_RS_DRIVER := libPVRRS.so
 
diff --git a/device.mk b/device.mk
index 8eba61a..13bbc60 100644
--- a/device.mk
+++ b/device.mk
@@ -218,6 +218,8 @@
     libwpa_client \
     lib_driver_cmd_bcmdhd \
     hostapd \
+    wificond \
+    wifilogd \
     wpa_supplicant \
     bcmdhd.cal \
     bcmdhd_sr2.cal
@@ -297,17 +299,24 @@
 # time cost of dexing on first boot.
 WITH_DEXPREOPT_BOOT_IMG_ONLY := true
 
-# l10n builds are larger so trim further
-ifneq (,$(filter fugu_l10n, $(TARGET_PRODUCT)))
-FUGU_DONT_DEXPREOPT_MODULES += \
-    Shell \
-    Overscan \
-    RemoteControlService
-endif
-
-$(call add-product-dex-preopt-module-config,$(FUGU_DONT_DEXPREOPT_MODULES),disable)
-
 # Some CTS tests will be skipped based on what the initial API level that
 # shipped on device was.
 PRODUCT_PROPERTY_OVERRIDES += \
     ro.product.first_api_level=21
+
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
+    ro.opengles.version=196609 \
+    ro.hwui.drop_shadow_cache_size=4.0 \
+    ro.hwui.gradient_cache_size=0.8 \
+    ro.hwui.layer_cache_size=32.0 \
+    ro.hwui.path_cache_size=24.0 \
+    ro.hwui.text_large_cache_width=2048 \
+    ro.hwui.text_large_cache_height=1024 \
+    ro.hwui.text_small_cache_width=1024 \
+    ro.hwui.text_small_cache_height=512 \
+    ro.hwui.texture_cache_flushrate=0.4 \
+    ro.hwui.texture_cache_size=48.0 \
+
+PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
+    persist.intel.isv.vpp=1 \
+    persist.intel.isv.frc=1
diff --git a/init.fugu.rc b/init.fugu.rc
index 7429b13..7106538 100644
--- a/init.fugu.rc
+++ b/init.fugu.rc
@@ -127,8 +127,8 @@
     # Bluetooth
     setprop ro.bt.bdaddr_path "/factory/bt/bd_addr.conf"
     chmod 0660 /sys/class/rfkill/rfkill2/state
-    chown bluetooth net_bt_stack /sys/class/rfkill/rfkill2/state
-    chown bluetooth net_bt_stack /sys/class/rfkill/rfkill2/type
+    chown bluetooth bluetooth /sys/class/rfkill/rfkill2/state
+    chown bluetooth bluetooth /sys/class/rfkill/rfkill2/type
 
     # Create directory used by audio subsystem
     mkdir /data/misc/audio 0770 audio audio
@@ -184,14 +184,7 @@
     # Clear panic partition
     write /proc/emmc_ipanic_header 1
 
-service wpa_supplicant /system/bin/wpa_supplicant -Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -g@android:wpa_wlan0
-    class main
-    socket wpa_wlan0 dgram 660 wifi wifi
-    group system wifi inet bluetooth
-    disabled
-    oneshot
-
-service p2p_supplicant /system/bin/wpa_supplicant \
+service wpa_supplicant /system/bin/wpa_supplicant \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -m/data/misc/wifi/p2p_supplicant.conf \
    -puse_p2p_group_interface=1p2p_device=1use_multi_chan_concurrent=1 \
@@ -206,7 +199,7 @@
 # Bluetooth related services
 service BtFwLoader /system/bin/BtFwLoader
     class main
-    group bluetooth net_bt_stack
+    group bluetooth
     user bluetooth
     oneshot
 
diff --git a/recovery/recovery_ui.cpp b/recovery/recovery_ui.cpp
index abd89cd..8df24c3 100644
--- a/recovery/recovery_ui.cpp
+++ b/recovery/recovery_ui.cpp
@@ -28,6 +28,8 @@
 #include <time.h>
 #include <unistd.h>
 
+#include <string>
+
 #include "common.h"
 #include "device.h"
 #include "ui.h"
@@ -40,9 +42,9 @@
 
 class FuguUI : public ScreenRecoveryUI {
   public:
-    void Init() override {
+    bool Init(const std::string& locale) override {
         SetupDisplayMode();
-        ScreenRecoveryUI::Init();
+        return ScreenRecoveryUI::Init(locale);
     }
 
     void SetupDisplayMode() {
diff --git a/recovery/recovery_updater.cpp b/recovery/recovery_updater.cpp
index ee05901..fa23078 100644
--- a/recovery/recovery_updater.cpp
+++ b/recovery/recovery_updater.cpp
@@ -25,6 +25,10 @@
 #include <fcntl.h>
 #include <cutils/properties.h>
 #include <sys/mman.h>
+
+#include <string>
+#include <vector>
+
 #include "fw_version_check.h"
 #include "edify/expr.h"
 
@@ -284,7 +288,6 @@
 
 Value* FlashIfwiFuguFn(const char *name, State * state, int argc, Expr * argv[]) {
 	Value *ret = NULL;
-	char *filename = NULL;
 	unsigned char *buffer = NULL;
 	int ifwi_size;
 	FILE *f = NULL;
@@ -293,32 +296,33 @@
 		ErrorAbort(state, "%s() expected 1 arg, got %d", name, argc);
 		return NULL;
 	}
-	if (ReadArgs(state, argv, 1, &filename) < 0) {
+	std::vector<std::string> args;
+	if (!ReadArgs(state, 1, argv, &args)) {
 		ErrorAbort(state, "%s() invalid args ", name);
 		return NULL;
 	}
-
-	if (filename == NULL || strlen(filename) == 0) {
+	const std::string& filename = args[0];
+	if (filename.empty()) {
 		ErrorAbort(state, "filename argument to %s can't be empty", name);
-		goto done;
+		return nullptr;
 	}
 
-	if ((f = fopen(filename,"rb")) == NULL) {
-		ErrorAbort(state, "Unable to open file %s: %s ", filename, strerror(errno));
-		goto done;
+	if ((f = fopen(filename.c_str(),"rb")) == NULL) {
+		ErrorAbort(state, "Unable to open file %s: %s ", filename.c_str(), strerror(errno));
+		return nullptr;
 	}
 
 	fseek(f, 0, SEEK_END);
 	ifwi_size = ftell(f);
 	if (ifwi_size < 0) {
 		ErrorAbort(state, "Unable to get ifwi_size ");
-		goto done;
+		return nullptr;
 	};
 	fseek(f, 0, SEEK_SET);
 
 	if ((buffer = reinterpret_cast<unsigned char *>(malloc(ifwi_size))) == NULL) {
 		ErrorAbort(state, "Unable to alloc ifwi flash buffer of size %d", ifwi_size);
-		goto done;
+		return nullptr;
 	}
 	fread(buffer, ifwi_size, 1, f);
 	fclose(f);
@@ -326,15 +330,11 @@
 	if(flash_ifwi_scu_emmc(buffer, ifwi_size) !=0) {
 		ErrorAbort(state, "Unable to flash ifwi in emmc");
 		free(buffer);
-		goto done;
+		return nullptr;
 	};
 
 	free(buffer);
-	ret = StringValue(strdup(""));
-
-done:
-	if (filename)
-		free(filename);
+	ret = StringValue("");
 
 	return ret;
 }
diff --git a/sepolicy/attributes b/sepolicy/attributes
new file mode 100644
index 0000000..d140949
--- /dev/null
+++ b/sepolicy/attributes
@@ -0,0 +1,4 @@
+# domain_deprecated attribute is being removed from core policy. Leave it
+# in device-specific policy for device-specific domains. Unlike core policy,
+# device-specific policy will eventually be deprecated.
+attribute device_domain_deprecated;
diff --git a/sepolicy/btfwloader.te b/sepolicy/btfwloader.te
index fe643c4..11da9df 100644
--- a/sepolicy/btfwloader.te
+++ b/sepolicy/btfwloader.te
@@ -1,4 +1,4 @@
-type btfwloader, domain, domain_deprecated;
+type btfwloader, domain, device_domain_deprecated;
 type btfwloader_exec, exec_type, file_type;
 
 init_daemon_domain(btfwloader)
diff --git a/sepolicy/device_domain_deprecated.te b/sepolicy/device_domain_deprecated.te
new file mode 100644
index 0000000..bbe0b71
--- /dev/null
+++ b/sepolicy/device_domain_deprecated.te
@@ -0,0 +1,36 @@
+allow device_domain_deprecated adbd:unix_stream_socket connectto;
+allow device_domain_deprecated adbd:fd use;
+allow device_domain_deprecated adbd:unix_stream_socket { getattr getopt ioctl read write shutdown };
+allow device_domain_deprecated rootfs:dir r_dir_perms;
+allow device_domain_deprecated rootfs:file r_file_perms;
+allow device_domain_deprecated rootfs:lnk_file r_file_perms;
+allow device_domain_deprecated device:file read;
+allow device_domain_deprecated system_file:dir r_dir_perms;
+allow device_domain_deprecated system_file:file r_file_perms;
+allow device_domain_deprecated system_file:lnk_file r_file_perms;
+allow device_domain_deprecated system_data_file:file { getattr read };
+allow device_domain_deprecated system_data_file:lnk_file r_file_perms;
+allow device_domain_deprecated apk_data_file:dir { getattr search };
+allow device_domain_deprecated apk_data_file:file r_file_perms;
+allow device_domain_deprecated apk_data_file:lnk_file r_file_perms;
+allow device_domain_deprecated dalvikcache_data_file:dir { search getattr };
+allow device_domain_deprecated dalvikcache_data_file:file r_file_perms;
+allow device_domain_deprecated cache_file:dir r_dir_perms;
+allow device_domain_deprecated cache_file:file { getattr read };
+allow device_domain_deprecated cache_file:lnk_file r_file_perms;
+allow device_domain_deprecated ion_device:chr_file rw_file_perms;
+allow device_domain_deprecated proc:dir r_dir_perms;
+allow device_domain_deprecated proc:{ file lnk_file } r_file_perms;
+allow device_domain_deprecated sysfs:dir r_dir_perms;
+allow device_domain_deprecated sysfs:{ file lnk_file } r_file_perms;
+allow device_domain_deprecated inotify:dir r_dir_perms;
+allow device_domain_deprecated inotify:{ file lnk_file } r_file_perms;
+allow device_domain_deprecated cgroup:dir r_dir_perms;
+allow device_domain_deprecated cgroup:{ file lnk_file } r_file_perms;
+allow device_domain_deprecated proc_meminfo:file r_file_perms;
+allow device_domain_deprecated proc_net:dir r_dir_perms;
+allow device_domain_deprecated proc_net:{ file lnk_file } r_file_perms;
+allow device_domain_deprecated selinuxfs:dir r_dir_perms;
+allow device_domain_deprecated selinuxfs:file r_file_perms;
+allow device_domain_deprecated asec_public_file:file r_file_perms;
+allow device_domain_deprecated { asec_public_file asec_apk_file }:dir r_dir_perms;
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index 51dcf70..8f9ef45 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -30,6 +30,9 @@
 /dev/block/pci/pci0000:00/0000:00:01\.0/by-name/misc           u:object_r:misc_block_device:s0
 /dev/block/zram0                                               u:object_r:swap_block_device:s0
 
+# sysfs files used by wificond
+/sys/module/bcmdhd/parameters/firmware_path     u:object_r:sysfs_wlan_fwpath:s0
+
 /sys/kernel/debug/pvr/pid(/.*)?                                u:object_r:gpu_pid_stats_file:s0
 /sys/kernel/debug/ion/heaps                                    u:object_r:gpu_pid_stats_file:s0
 
diff --git a/sepolicy/mediacodec.te b/sepolicy/mediacodec.te
index 85f4107..bc0d16a 100644
--- a/sepolicy/mediacodec.te
+++ b/sepolicy/mediacodec.te
@@ -1,3 +1,12 @@
 dontaudit mediacodec graphics_device:dir search;
 allow mediacodec surfaceflinger:fifo_file { read write };
 
+# TODO: STOPSHIP -- b/33344694
+# This is a temporary WAR to allow secure codecs hosted
+# in media.codec to access tee. Eventually OMX will be
+# converted to HIDL, and the secure codecs need to be
+# moved to a process that has this permission.
+
+userdebug_or_eng(`
+  allow mediacodec tee_device:chr_file r_file_perms;
+')
diff --git a/ueventd.fugu.rc b/ueventd.fugu.rc
index 9331048..be1139e 100644
--- a/ueventd.fugu.rc
+++ b/ueventd.fugu.rc
@@ -1,4 +1,4 @@
-/dev/ttyMFD0                            0660   bluetooth  net_bt_stack
+/dev/ttyMFD0                            0660   bluetooth  bluetooth
 
 # Android sync framework sw driver
 /dev/dri/card0                          0666   system     system