#!/bin/bash
#
# Copyright 2018, The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "$DIR/lib/common"

launch_application() {
  local package="$1"
  local activity="$2"

  # if there's any $s inside of the activity name, it needs to be escaped to \$.
  # example '.app.honeycomb.Shell$HomeActivity'
  # if the $ is not escaped, adb shell will try to evaluate $HomeActivity to a variable.
  activity=${activity//\$/\\$}

  local am_output="$(adb shell am start -S -W "$package"/"$activity")"
  verbose_print adb shell am start -S -W "$package"/"$activity"
  if [[ $? -ne 0 ]]; then
    echo "am start failed" >&2

    return 1
  fi

  # for everything else use the am start "TotalTime" output.
  verbose_print "$am_output"
  local total_time="$(echo "$am_output" | grep 'TotalTime:' | sed 's/TotalTime: //g')"
  verbose_print "total time: $total_time"

  # TODO: Extract alternative metrics such as the #reportFullyDrawn.

  echo "$total_time"
}

launch_application "$@"
