Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / installer / linux / common / postinst.include
blobc659d9a5150a1f1ac9175d27270b289dca589450
1 # Add icons to the system icons
2 XDG_ICON_RESOURCE="`which xdg-icon-resource 2> /dev/null || true`"
3 if [ ! -x "$XDG_ICON_RESOURCE" ]; then
4   echo "Error: Could not find xdg-icon-resource" >&2
5   exit 1
6 fi
7 for icon in "@@INSTALLDIR@@/product_logo_"*.png; do
8   size="${icon##*/product_logo_}"
9   "$XDG_ICON_RESOURCE" install --size "${size%.png}" "$icon" "@@PACKAGE@@"
10 done
12 UPDATE_MENUS="`which update-menus 2> /dev/null || true`"
13 if [ -x "$UPDATE_MENUS" ]; then
14   update-menus
17 # Update cache of .desktop file MIME types. Non-fatal since it's just a cache.
18 update-desktop-database > /dev/null 2>&1 || true
20 # Updates defaults.list file if present.
21 update_defaults_list() {
22   # $1: name of the .desktop file
24   local DEFAULTS_FILE="/usr/share/applications/defaults.list"
26   if [ ! -f "${DEFAULTS_FILE}" ]; then
27     return
28   fi
30   # Split key-value pair out of MimeType= line from the .desktop file,
31   # then split semicolon-separated list of mime types (they should not contain
32   # spaces).
33   mime_types="$(grep MimeType= /usr/share/applications/${1} |
34                 cut -d '=' -f 2- |
35                 tr ';' ' ')"
36   for mime_type in ${mime_types}; do
37     if egrep -q "^${mime_type}=" "${DEFAULTS_FILE}"; then
38       if ! egrep -q "^${mime_type}=.*${1}" "${DEFAULTS_FILE}"; then
39         default_apps="$(grep ${mime_type}= "${DEFAULTS_FILE}" |
40                         cut -d '=' -f 2-)"
41         egrep -v "^${mime_type}=" "${DEFAULTS_FILE}" > "${DEFAULTS_FILE}.new"
42         echo "${mime_type}=${default_apps};${1}" >> "${DEFAULTS_FILE}.new"
43         mv "${DEFAULTS_FILE}.new" "${DEFAULTS_FILE}"
44       fi
45     else
46       # If there's no mention of the mime type in the file, add it.
47       echo "${mime_type}=${1};" >> "${DEFAULTS_FILE}"
48     fi
49   done
52 update_defaults_list "@@PACKAGE@@.desktop"
54 # This function uses sed to insert the contents of one file into another file,
55 # after the first line matching a given regular expression. If there is no
56 # matching line, then the file is unchanged.
57 insert_after_first_match() {
58   # $1: file to update
59   # $2: regular expression
60   # $3: file to insert
61   sed -i -e "1,/$2/ {
62     /$2/ r $3
63     }" "$1"
66 # If /usr/share/gnome-control-center/default-apps/gnome-default-applications.xml
67 # exists, it may need to be updated to add ourselves to the default applications
68 # list. If we find the file and it does not seem to contain our patch already
69 # (the patch is safe to leave even after uninstall), update it.
70 GNOME_DFL_APPS=/usr/share/gnome-control-center/default-apps/gnome-default-applications.xml
71 if [ -f "$GNOME_DFL_APPS" ]; then
72 # Conditionally insert the contents of the file "default-app-block" after the
73 # first "<web-browsers>" line we find in gnome-default-applications.xml
74   fgrep -q "@@MENUNAME@@" "$GNOME_DFL_APPS" || insert_after_first_match \
75     "$GNOME_DFL_APPS" \
76     "^[         ]*<web-browsers>[       ]*$" \
77     "@@INSTALLDIR@@/default-app-block"