chromium/chrome/installer/linux/common/postinst.include

# Add icons to the system icons
XDG_ICON_RESOURCE="`command -v xdg-icon-resource 2> /dev/null || true`"
if [ ! -x "$XDG_ICON_RESOURCE" ]; then
  echo "Error: Could not find xdg-icon-resource" >&2
  exit 1
fi
for icon in @@LOGO_RESOURCES_PNG@@; do
  size="$(echo ${icon} | sed 's/[^0-9]//g')"
  "$XDG_ICON_RESOURCE" install --size "${size}" "@@INSTALLDIR@@/${icon}" \
    "@@PACKAGE@@"
done

UPDATE_MENUS="`command -v update-menus 2> /dev/null || true`"
if [ -x "$UPDATE_MENUS" ]; then
  update-menus
fi

# Update cache of .desktop file MIME types. Non-fatal since it's just a cache.
update-desktop-database > /dev/null 2>&1 || true

# Updates defaults.list file if present.
update_defaults_list() {
  # $1: name of the .desktop file

  local DEFAULTS_LIST="/usr/share/applications/defaults.list"

  if [ ! -f "${DEFAULTS_LIST}" ]; then
    return
  fi

  # Split key-value pair out of MimeType= line from the .desktop file,
  # then split semicolon-separated list of mime types (they should not contain
  # spaces).
  mime_types="$(grep MimeType= /usr/share/applications/${1} |
                cut -d '=' -f 2- |
                tr ';' ' ')"
  for mime_type in ${mime_types}; do
    if egrep -q "^${mime_type}=" "${DEFAULTS_LIST}"; then
      if ! egrep -q "^${mime_type}=.*${1}" "${DEFAULTS_LIST}"; then
        default_apps="$(grep ${mime_type}= "${DEFAULTS_LIST}" |
                        cut -d '=' -f 2-)"
        egrep -v "^${mime_type}=" "${DEFAULTS_LIST}" > "${DEFAULTS_LIST}.new"
        echo "${mime_type}=${default_apps};${1}" >> "${DEFAULTS_LIST}.new"
        mv "${DEFAULTS_LIST}.new" "${DEFAULTS_LIST}"
      fi
    else
      # If there's no mention of the mime type in the file, add it.
      echo "${mime_type}=${1};" >> "${DEFAULTS_LIST}"
    fi
  done
}

update_defaults_list "@@PACKAGE@@.desktop"

# This function uses sed to insert the contents of one file into another file,
# after the first line matching a given regular expression. If there is no
# matching line, then the file is unchanged.
insert_after_first_match() {
  # $1: file to update
  # $2: regular expression
  # $3: file to insert
  sed -i -e "1,/$2/ {
    /$2/ r $3
    }" "$1"
}

# If /usr/share/gnome-control-center/default-apps/gnome-default-applications.xml
# exists, it may need to be updated to add ourselves to the default applications
# list. If we find the file and it does not seem to contain our patch already
# (the patch is safe to leave even after uninstall), update it.
GNOME_DFL_APPS=/usr/share/gnome-control-center/default-apps/gnome-default-applications.xml
if [ -f "$GNOME_DFL_APPS" ]; then
# Conditionally insert the contents of the file "default-app-block" after the
# first "<web-browsers>" line we find in gnome-default-applications.xml
  fgrep -q "@@MENUNAME@@" "$GNOME_DFL_APPS" || insert_after_first_match \
    "$GNOME_DFL_APPS" \
    "^[ 	]*<web-browsers>[ 	]*$" \
    "@@INSTALLDIR@@/default-app-block"
fi

# This function performs the setup for the chrome management service process.
# It creates a new chromemgmt group, creates the signing key file, and updates
# permissions for both the signing key file and the binary.
chrome_management_service_setup() {
  if [ ! -f "$DEFAULTS_FILE" ]; then
    return
  fi

  if ! grep -q "install_device_trust_key_management_command=true" \
    "$DEFAULTS_FILE"; then
    return
  fi

  getent group chromemgmt > /dev/null || groupadd chromemgmt

  chgrp chromemgmt "@@INSTALLDIR@@/chrome-management-service"
  chmod 2755 "@@INSTALLDIR@@/chrome-management-service"

  mkdir -p "@@ENROLLMENTDIR@@"
  SIGNING_KEY_FILE="@@ENROLLMENTDIR@@/DeviceTrustSigningKey"
  if [ ! -e "$SIGNING_KEY_FILE" ]; then
    touch "$SIGNING_KEY_FILE"
  fi

  chgrp chromemgmt "$SIGNING_KEY_FILE"
  chmod 664 "$SIGNING_KEY_FILE"
}

chrome_management_service_setup