chromium/remoting/tools/set_android_flags.sh

#!/bin/sh
# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# This script can be used to set test flags in the Chromoting Android app.

set -e

if [[ $# -ne 1 ]]; then
  echo "Usage: $0 <flags>" >&2
  exit 1
fi

FLAGS=$1

TMP_FILE=`tempfile`

# Pull the file from the device.
adb shell run-as org.chromium.chromoting cat \
  /data/data/org.chromium.chromoting/shared_prefs/Chromoting.xml > $TMP_FILE

# Remove flags parameter if it's already there.
sed -i '/<string name=\"flags\">/d' $TMP_FILE

# Add flags at the end.
sed -i "s/<\/map>/    <string name=\"flags\">$FLAGS<\/string>\n<\/map>/" \
  $TMP_FILE

# Confirmation prompt.
echo "Updated content of Chromoting.xml:"
cat $TMP_FILE
while true; do
    read -p "Continue pushing to the device (y/n)? " yn
    case $yn in
        [Yy]* ) break;;
        [Nn]* ) rm $TMP_FILE; exit;;
        * ) echo "Please answer yes or no.";;
    esac
done

# Push the file back to the device.
FILE_CONTENT="`cat $TMP_FILE`"
FILE_CONTENT="${FILE_CONTENT//\'/\'}"
FILE_CONTENT="${FILE_CONTENT//\"/\\\\\\\"}"
adb shell run-as org.chromium.chromoting sh -c "echo \\\"${FILE_CONTENT}\\\" > \
     /data/data/org.chromium.chromoting/shared_prefs/Chromoting.xml"

rm $TMP_FILE