diff options
Diffstat (limited to '_to_remove/recipes-wam/wam')
-rw-r--r-- | _to_remove/recipes-wam/wam/files/WebAppMgr.env | 202 | ||||
-rw-r--r-- | _to_remove/recipes-wam/wam/files/WebAppMgr@.service | 37 | ||||
-rw-r--r-- | _to_remove/recipes-wam/wam/files/trunc-webapp-roles.patch | 56 | ||||
-rwxr-xr-x | _to_remove/recipes-wam/wam/files/wam-user-setup.sh | 25 | ||||
-rw-r--r-- | _to_remove/recipes-wam/wam/files/wam-user-setup@.service | 10 | ||||
-rw-r--r-- | _to_remove/recipes-wam/wam/wam_git.bb | 64 |
6 files changed, 394 insertions, 0 deletions
diff --git a/_to_remove/recipes-wam/wam/files/WebAppMgr.env b/_to_remove/recipes-wam/wam/files/WebAppMgr.env new file mode 100644 index 000000000..c8ddc5173 --- /dev/null +++ b/_to_remove/recipes-wam/wam/files/WebAppMgr.env @@ -0,0 +1,202 @@ +##### AGL: not set in WebAppMgr@.service +#XDG_SESSION_ID="c2" + +##### AGL: set by WebAppMgr@.service (depends on user) +#XDG_RUNTIME_DIR="/run/user/%i" + +# Set wam executable file path +HOOK_SEGV=NO +WAM_EXE_PATH="/usr/bin/WebAppMgr" + +# Set wam name for user-agent +WAM_NAME="WebAppManager" + +# Only allow UTF8 encoding for luna-service messages. +LS_ENABLE_UTF8=1 + +# Set effective userid and groupid +#WAM_UID="wam" +#WAM_GID="compositor" + +# Set location of error page (will follow localization rules based on this path) +#WAM_ERROR_PAGE="file:///usr/share/localization/wam/loaderror.html" + +# suspending javascript execution delay for page visibility +WAM_SUSPEND_DELAY_IN_MS=250 + +#if [ -e "etc/wam/make_shm.sh" ] ; then +# /etc/wam/make_shm.sh +#fi + +# Set user data directory for WebAppMgr +##### AGL: set by WebAppMgr@.service (depends on user) +#WAM_DATA_PATH="/home/%i/wamdata" + +# ensure that wam data directories exist +#mkdir -p ${WAM_DATA_PATH} + +# set directories permission +#chown ${WAM_UID}:${WAM_GID} ${WAM_DATA_PATH} + +# setup 50 Mb maximum for ApplicationCache +WAM_APPCACHE_MAXSIZE=52428800 + +# setup 10 Mb maximum for ApplicationCache per domain +WAM_APPCACHE_DOMAINLIMIT=10485760 + +# setup 50 Mb maximum for DiskCache +WAM_DISKCACHE_MAXSIZE=52428800 + +# setup 256 Kb maximum for resource buffer allocation +WAM_RESOURCE_BUFFER_MAX_ALLOC_SIZE=262144 + +# setup 1 Mb for resource buffer +WAM_RESOURCE_BUFFER_SIZE=1048576 + +# setup 200 seconds for watchdog timeout of render process +WATCHDOG_RENDER_TIMEOUT=200 + +# setup nubmer of raster threads to 1 +BLINK_NUM_RASTER_THREADS=2 + +# use default tile width if not sed by recipe +#if [ "$BLINK_NUM_RASTER_THREADS" = "WEBOS${BLINK_NUM_RASTER_THREADS#WEBOS}" ]; then +BLINK_NUM_RASTER_THREADS=1 +#fi + +# setup 6 Mb maximum for the program GPU cache +GPU_PROGRAM_CACHE_SIZE=6144 + +# disable using enyo system app specfic optimization +# currently used optimizations : inline caching off +#USE_SYSTEM_APP_OPTIMIZATION="0" + +# Set location of NaCl modules +#CHROMIUM_PATH="/usr/palm/applications/com.lge.app.chromium" +#NACL_PLUGIN=${CHROMIUM_PATH}"/libppGoogleNaClPluginChrome.so" +#NACL_IRT_LIBRARY=${CHROMIUM_PATH}"/nacl_irt_arm.nexe" +#NACL_HELPER=${CHROMIUM_PATH}"/nacl_helper" +#NACL_HELPER_BOOTSTRAP=${CHROMIUM_PATH}"/nacl_helper_bootstrap" + +# Set location of NPAPI plugins for all Apps including default Apps +# This is for the flash plugin of Signage, webOS TV doesn't use it. +#PRIVILEGED_PLUGIN_PATH="" + +# Set location of NPAPI plugins for NetCast Apps +# NetCast Apps should access only the plugins in this path +#NETCAST_PLUGIN_PATH="/usr/lib/BrowserPlugins" + +# Set location of NPAPI plugins for HbbTV app. +#HBBTV_PLUGIN_PATH="/usr/lib/HbbtvPlugins" + +# Set InetTV player stored path +#INETTV_HTML_PLAYER_PATH="/usr/share/inettv/inettv_player/index.html" + +# Set location of extra libraries +#CDM_LIB_PATH="/usr/lib" + +# Set location of all NPAPI plugins +NPAPI_PLUGIN_PATH=${HBBTV_PLUGIN_PATH}":"${NETCAST_PLUGIN_PATH}":"${PRIVILEGED_PLUGIN_PATH} + +#if [ -e "etc/wam/make_shm.sh" ] ; then +# /etc/wam/make_shm.sh +#fi + +# setup 8 Mb minimum codecache capacity +JSC_minGlobalCodeCacheCapacity=8388608 + +# Enable more explicit logging of timing with regards to rendering +# export WAM2_ENABLE_DEBUG_RENDER_TIMING=1 + +# enable Web Inspector and Tellurium if in developer mode +TELLURIUM_NUB_PATH=/usr/palm/tellurium/telluriumnub.js +ENABLE_INSPECTOR=1 + +# Enable cursor by default +ENABLE_CURSOR_BY_DEFAULT=1 + +# Enable launch optimization +ENABLE_LAUNCH_OPTIMIZATION=1 + +# Set the duration(seconds) passed from last network activity (e.g. FMP Detector) +# If set to a positive value, adjust a custom timeout for a network stable timer in FMPDetector +NETWORK_STABLE_TIMEOUT=3 + +# please keep it in alphabetical order +#WAM_EXTRA_FLAGS="" +#WAM_JS_FLAGS="" +#WAM_COMMON_SWITCHES=" \ +# --application-cache-domain-limit=$WAM_APPCACHE_DOMAINLIMIT \ +# --application-cache-size=$WAM_APPCACHE_MAXSIZE \ +# --browser-subprocess-path=$WAM_EXE_PATH \ +# --disable-direct-npapi-requests \ +# --disable-extensions \ +# --disable-low-res-tiling \ +# --disable-new-video-renderer \ +# --disk-cache-size=$WAM_DISKCACHE_MAXSIZE \ +# --enable-aggressive-release-policy \ +# --enable-accelerated-plugin-rendering \ +# --accelerated-plugin-rendering-blacklist=device;drmAgent;sound;service \ +# --enable-gpu-rasterization \ +# --disable-gpu-rasterization-for-first-frame \ +# --enable-key-event-throttling \ +# --enable-threaded-compositing \ +# --enable-watchdog \ +# --hide-selection-handles \ +# --ignore-gpu-blacklist \ +# --ignore-netif=p2p \ +# --in-process-gpu \ +# --max-unused-resource-memory-usage-percentage=0 \ +# --network-stable-timeout=$NETWORK_STABLE_TIMEOUT \ +# --noerrdialogs \ +# --num-raster-threads=$BLINK_NUM_RASTER_THREADS \ +# --ozone-platform=wayland \ +# --remote-debugging-port=9998 \ +# --resource-buffer-max-allocation-size=$WAM_RESOURCE_BUFFER_MAX_ALLOC_SIZE \ +# --resource-buffer-size=$WAM_RESOURCE_BUFFER_SIZE \ +# --touch-events=disabled \ +# --ui-disable-opaque-shader-program \ +# --user-agent-suffix=SmartTV \ +# --user-data-dir=$WAM_DATA_PATH \ +# --enable-devtools-experiments \ +# --webos-wam \ " + +#WAM_LITE_SWITCHES=" --in-process-zygote " + +#export WAM_WEBOS_LITE=NO +#if [ "${WAM_WEBOS_LITE}" = "YES" ] ; then +# export WAM_SWITCHES=${WAM_COMMON_SWITCHES}${WAM_LITE_SWITCHES} +# export SKIA_FONT_CACHE_SIZE=1 +# export SKIA_IMAGE_CACHE_SIZE=40 +# export SKIA_BACKGROUND_FONT_CACHE_SIZE=0 +#else +# export WAM_SWITCHES=${WAM_COMMON_SWITCHES} +# export SKIA_FONT_CACHE_SIZE=8 +# export SKIA_IMAGE_CACHE_SIZE=80 +# export SKIA_BACKGROUND_FONT_CACHE_SIZE=512 +#fi + +#export WAM_EXTRA_SKIA_CACHE_SWITCHES=" \ +# --skia-font-cache-size-mb=$SKIA_FONT_CACHE_SIZE \ +# --skia-image-cache-size-mb=$SKIA_IMAGE_CACHE_SIZE \ +# --skia-background-font-cache-size-kb=$SKIA_BACKGROUND_FONT_CACHE_SIZE \ +# " + +#export WAM_EXTRA_GPU_TUNING_SWITCHES=" \ +# --gpu-program-cache-size-kb=$GPU_PROGRAM_CACHE_SIZE \ +# " +#export WAM_WATCHDOG_RENDER_TIMEOUT_SWITCHES=" \ +# --watchdog-render-timeout=$WATCHDOG_RENDER_TIMEOUT \ +# " + +#WEBOS_LOAD_ACCESSIBILITY_PLUGIN=1 + +#WAM_V8_CODE_CACHE_SWITCHES=" --enable-local-resource-code-cache --disallow-code-cache-from-file-uris-with-query-string " + +# Load any special configuration from plugins +#if [ -e "/etc/wam/plugins/conf.sh" ] ; then +# . /etc/wam/plugins/conf.sh || true +#fi + +#exec $WAM_EXE_PATH $WAM_SWITCHES $WAM_EXTRA_SKIA_CACHE_SWITCHES $WAM_EXTRA_GPU_TUNING_SWITCHES $WAM_WATCHDOG_RENDER_TIMEOUT_SWITCHES $WAM_EXTRA_FLAGS $WAM_V8_CODE_CACHE_SWITCHES --js-flags="$WAM_JS_FLAGS" + diff --git a/_to_remove/recipes-wam/wam/files/WebAppMgr@.service b/_to_remove/recipes-wam/wam/files/WebAppMgr@.service new file mode 100644 index 000000000..beffd114c --- /dev/null +++ b/_to_remove/recipes-wam/wam/files/WebAppMgr@.service @@ -0,0 +1,37 @@ +# @@@LICENSE +# +# Copyright (c) 2017-2018 LG Electronics, Inc. +# +# Confidential computer software. Valid license from LG required for +# possession, use or copying. Consistent with FAR 12.211 and 12.212, +# Commercial Computer Software, Computer Software Documentation, and +# Technical Data for Commercial Items are licensed to the U.S. Government +# under vendor's standard commercial license. +# +# LICENSE@@@ + +[Unit] +Description="WebAppMgr is responsible for running web apps and manage their lifecycle" +After=afm-service-homescreen-service--0.1--main@%i.service weston@display.service +Wants=afm-service-homescreen-service--0.1--main@%i.service +BindsTo=weston@display.service + +[Service] +Type=simple +User=%i +Slice=user-%i.slice +SmackProcessLabel=System +SupplementaryGroups=audio display +UMask=0077 +CapabilityBoundingSet= +OOMScoreAdjust=-1000 +EnvironmentFile=-/etc/default/WebAppMgr.env +Environment=XDG_RUNTIME_DIR=/run/user/%i +Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%i/bus +Environment=WAM_DATA_PATH="/home/%i/wamdata" +ExecStart=/usr/bin/WebAppMgr --enable-features=UseOzonePlatform --ozone-platform=wayland --no-sandbox --use-viz-fmp-with-timeout=0 --in-process-gpu --remote-debugging-port=9998 --user-data-dir="/home/%i/wamdata" --webos-wam +Restart=on-failure +RestartSec=50 + +[Install] +WantedBy=default.target diff --git a/_to_remove/recipes-wam/wam/files/trunc-webapp-roles.patch b/_to_remove/recipes-wam/wam/files/trunc-webapp-roles.patch new file mode 100644 index 000000000..829abe07f --- /dev/null +++ b/_to_remove/recipes-wam/wam/files/trunc-webapp-roles.patch @@ -0,0 +1,56 @@ +From f31e93261f34abaa3dcdc4959963f5b5a8983002 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jan-Simon=20M=C3=B6ller?= <jsmoeller@linuxfoundation.org> +Date: Thu, 25 Jun 2020 19:47:24 +0200 +Subject: [PATCH] Set webapp roles that are max 12 characters long. + +From: =?UTF-8?q?Jacobo=20Aragunde=20P=C3=A9rez?= <jaragunde@igalia.com> + +This is a workaround for SPEC-3127. To prevent repeated roles as much +as possible, I'm using the appid as a basis instead of "Webapp-" + +host + port, which has many chances to be redundant in the first 12 +chars. + +Bug-AGL: SPEC-3127 + +--- + src/agl/WebRuntimeAGL.cpp | 10 +++------- + 1 file changed, 3 insertions(+), 7 deletions(-) + +diff --git a/src/agl/WebRuntimeAGL.cpp b/src/agl/WebRuntimeAGL.cpp +index aed928b..efd2ee4 100644 +--- a/src/agl/WebRuntimeAGL.cpp ++++ b/src/agl/WebRuntimeAGL.cpp +@@ -274,7 +274,6 @@ int WebAppLauncherRuntime::run(int argc, const char** argv) { + + m_id = getAppId(args); + m_url = getAppUrl(args); +- m_role = "WebApp"; + + setup_signals(); + +@@ -326,15 +325,9 @@ bool WebAppLauncherRuntime::init() { + if (n != std::string::npos) { + std::string sport = authority.substr(n+1); + m_host = authority.substr(0, n); +- m_role.push_back('-'); +- m_role.append(m_host); +- m_role.push_back('-'); +- m_role.append(sport); + m_port = stringTo<int>(sport); + } else { + m_host = authority; +- m_role.push_back('-'); +- m_role.append(m_host); + } + } + +@@ -375,6 +368,9 @@ bool WebAppLauncherRuntime::init() { + m_role = "homescreen"; + else if (m_id.rfind("webapps-homescreen", 0) == 0) + m_role = "homescreen"; ++ else { ++ m_role = m_id.substr(0,12); ++ } + + LOG_DEBUG("id=[%s], name=[%s], role=[%s], url=[%s], host=[%s], port=%d, token=[%s], width=[%s], height[%s], surface_type[%d], panel_type[%d]", + m_id.c_str(), m_name.c_str(), m_role.c_str(), m_url.c_str(), diff --git a/_to_remove/recipes-wam/wam/files/wam-user-setup.sh b/_to_remove/recipes-wam/wam/files/wam-user-setup.sh new file mode 100755 index 000000000..515ea82ec --- /dev/null +++ b/_to_remove/recipes-wam/wam/files/wam-user-setup.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +uid="$1" +bdir=/run/user +udir="$bdir/$uid" +hdir="/home/$uid" + +dodir() { + local x smackset="$1" + shift + for x; do + test -e "$x" || mkdir -m 700 "$x" + chmod 700 "$x" + chown "$uid:$uid" "$x" + chsmack $smackset "$x" + done +} + +dodir '-t -a User::Home' "$hdir/wamdata" + +# Initialize lockfile, without this apps will be blocked by SMACK +touch "$udir/wamsocket.lock" +chmod 660 "$udir/wamsocket.lock" +chown "$uid:$uid" "$udir/wamsocket.lock" +chsmack -a User::App-Shared "$udir/wamsocket.lock" diff --git a/_to_remove/recipes-wam/wam/files/wam-user-setup@.service b/_to_remove/recipes-wam/wam/files/wam-user-setup@.service new file mode 100644 index 000000000..f4814787d --- /dev/null +++ b/_to_remove/recipes-wam/wam/files/wam-user-setup@.service @@ -0,0 +1,10 @@ +[Unit] +Description=Set up WAM for user %i +Requires=afm-user-setup@i.service +After=user-runtime-dir@%i.service afm-user-setup@i.service +Before=user@%i.service + +[Service] +Type=oneshot +StartLimitInterval=0 +ExecStart=-/usr/libexec/wam/wam-user-setup.sh %i diff --git a/_to_remove/recipes-wam/wam/wam_git.bb b/_to_remove/recipes-wam/wam/wam_git.bb new file mode 100644 index 000000000..9de8573fa --- /dev/null +++ b/_to_remove/recipes-wam/wam/wam_git.bb @@ -0,0 +1,64 @@ +SUMMARY = "WAM" +AUTHOR = "Jani Hautakangas <jani.hautakangas@lge.com>" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +inherit cmake + +DEPENDS = "glib-2.0 jsoncpp boost chromium84 libhomescreen protobuf protobuf-native" + +EXTRA_OECMAKE = "\ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=${prefix} \ + -DPLATFORM_NAME=${@'${DISTRO}'.upper().replace('-', '_')} \ + -DCHROMIUM_SRC_DIR=${STAGING_INCDIR}/chromium84" + +PR="r0" + +PROVIDES += "virtual/webruntime" +RPROVIDES:${PN} += "virtual/webruntime" + +# Disable some of securit_flags +# Disable D_FORTIFY_SOURCE=2 and -fstack-protector-strong +# Refer conf/distro/include/security_flags.inc in meta-webos/conf/distro/include/webos.inc +lcl_maybe_fortify = "" +SECURITY_STACK_PROTECTOR = "" + +SRC_URI = "\ + git://github.com/igalia/${BPN}.git;branch=koi;protocol=https \ + file://WebAppMgr@.service \ + file://WebAppMgr.env \ + file://wam-user-setup.sh \ + file://wam-user-setup@.service \ + file://trunc-webapp-roles.patch \ +" +S = "${WORKDIR}/git" +SRCREV = "2a246d2ea79bd335b86942a5579d6de0c9ddce40" + +do_install:append() { + install -d ${D}${sysconfdir}/wam + install -v -m 644 ${S}/files/launch/security_policy.conf ${D}${sysconfdir}/wam/security_policy.conf + install -d ${D}${systemd_system_unitdir} + install -v -m 644 ${WORKDIR}/WebAppMgr@.service ${D}${systemd_system_unitdir}/WebAppMgr@.service + install -d ${D}${sysconfdir}/default/ + install -v -m 644 ${WORKDIR}/WebAppMgr.env ${D}${sysconfdir}/default/WebAppMgr.env + ln -snf WebAppMgr ${D}${bindir}/web-runtime + install -d ${D}${systemd_system_unitdir}/afm-user-session@.target.wants + ln -sf ../WebAppMgr@.service ${D}${systemd_system_unitdir}/afm-user-session@.target.wants/ + install -d ${D}${libexecdir}/wam/ + install -v -m 755 ${WORKDIR}/wam-user-setup.sh ${D}${libexecdir}/wam/wam-user-setup.sh + install -v -m 644 ${WORKDIR}/wam-user-setup@.service ${D}${systemd_system_unitdir}/wam-user-setup@.service + install -d ${D}${systemd_system_unitdir}/user-runtime-dir@.service.wants/ + ln -sf ../wam-user-setup@.service ${D}${systemd_system_unitdir}/user-runtime-dir@.service.wants/ +} + +FILES:${PN} += "${sysconfdir}/init ${sysconfdir}/wam ${libdir}/webappmanager/plugins/*.so ${systemd_system_unitdir}" + +CXXFLAGS:append:agl-devel = " -DAGL_DEVEL" + +do_install:append:agl-devel() { + # Enable remote inspector and dev mode + install -d ${D}${localstatedir}/agl-devel/preferences + touch ${D}${localstatedir}/agl-devel/preferences/debug_system_apps + touch ${D}${localstatedir}/agl-devel/preferences/devmode_enabled +} |