// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ARC_SETUP_ARC_READ_AHEAD_FILES_H_
#define ARC_SETUP_ARC_READ_AHEAD_FILES_H_

#include <array>

namespace arc {

// A list of files that should be fully read. The list is manually created based
// on an output of
//    localhost ~ # ureadahead --dump /opt/google/containers/android/rootfs/root
// on veyron_minnie 9957.0.0. The files in the list meet all of the following:
//  * Larger than 500KB.
//  * More than ~80% of the file is read.
//  * The mini instance does not load the file.
constexpr std::array<const char* const, 44> kImportantFilesN{{
    "ArcDocumentsUI.apk",
    "Bluetooth.apk",
    "Bluetooth.odex",
    "DownloadProvider.apk",
    "ManagedProvisioning.apk",
    "PrebuiltGmsCoreRelease.apk",
    "PrintSpooler.apk",
    "Settings.apk",
    "Settings.odex",
    "SettingsProvider.odex",
    "StorageManager.apk",
    "SystemUI.apk",
    "SystemUI.odex",
    "TelephonyProvider.apk",
    "TelephonyProvider.odex",
    "framework-res.apk",
    "icudt56l.dat",
    "libLLVM.so",
    "libandroid_runtime.so",
    "libarcbridge.so",
    "libart-compiler.so",
    "libart.so",
    "libaudioflinger.so",
    "libcameraservice.so",
    "libchrome.so",
    "libcrypto.so",
    "libdng_sdk.so",
    "libft2.so",
    "libgui.so",
    "libhwui.so",
    "libicui18n.so",
    "libicuuc.so",
    "libmedia.so",
    "libmediaplayerservice.so",
    "libmojo.so",
    "libskia.so",
    "libsqlite.so",
    "libstagefright.so",
    "libstagefright_soft_aacenc.so",
    "libstagefright_soft_hevcdec.so",
    "libwayland_service.so",
    "services.odex",
    "tzdata",
    "wifi-service.odex",
}};

constexpr std::array<const char* const, 70> kImportantFilesP{{
    "ArcDocumentsUI.apk",
    "ArcIntentHelper.apk",
    "ArcSystemUI.apk",
    "Bluetooth.apk",
    "Bluetooth.vdex",
    "GoogleCameraArc.apk",
    "GoogleContactsSyncAdapterRelease.apk",
    "PrintSpooler.apk",
    "SettingsProvider.odex",
    "android.hardware.audio.effect@2.0.so",
    "android.hardware.audio.effect@4.0.so",
    "android.hardware.audio@2.0.so",
    "android.hardware.audio@4.0.so",
    "android.hardware.gnss@1.0.so",
    "android.hardware.media.omx@1.0.so",
    "arc-services.odex",
    "arc-services.vdex",
    "camera.cheets.so",
    "framework-res.apk",
    "hardware.google.media.c2@1.0.so",
    "icudt60l.dat",
    "ip6tables-restore",
    "iptables-restore",
    "libandroid_runtime.so",
    "libandroid_servers.so",
    "libarcbridge.so",
    "libart-compiler.so",
    "libart.so",
    "libaudioclient.so",
    "libaudioflinger.so",
    "libaudiopolicymanagerdefault.so",
    "libbinder.so",
    "libcameraservice.so",
    "libchrome.so",
    "libcrypto.so",
    "libdng_sdk.so",
    "libft2.so",
    "libgui.so",
    "libhidl-gen-utils.so",
    "libhidltransport.so",
    "libhwui.so",
    "libicui18n.so",
    "libicuuc.so",
    "libinputflinger.so",
    "libmedia.so",
    "libmedia_jni.so",
    "libmojo.so",
    "libpdx_default_transport.so",
    "libsqlite.so",
    "libstagefright.so",
    "libstagefright_codec2_vndk.so",
    "libstagefright_omx.so",
    "libstagefright_soft_aacenc.so",
    "libstagefright_soft_hevcdec.so",
    "libvintf.so",
    "libwayland_service.so",
    "libxml2.so",
    "netd",
    "org.apache.http.legacy.boot.odex",
    "org.apache.http.legacy.boot.vdex",
    "org.chromium.arc.mojom.odex",
    "org.chromium.arc.mojom.vdex",
    "services.art",
    "services.odex",
    "services.vdex",
    "statsd",
    "tzdata",
    "wifi-service.odex",
    "wifi-service.vdex",
    "wificond",
}};

// A list of files that should be read up to |kDefaultReadAheadSize| bytes.
constexpr std::array<const char* const, 2> kImportantExtensions{
    {".so", ".ttf"}};

}  // namespace arc

#endif  // ARC_SETUP_ARC_READ_AHEAD_FILES_H_
