#!/usr/bin/env python
#
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""Enables dalvik vm asserts in the android device."""

from pylib import android_commands
from pylib.device import device_utils
import optparse
import sys


def main(argv):
  option_parser = optparse.OptionParser()
  option_parser.add_option('--enable_asserts', dest='set_asserts',
      action='store_true', default=None,
      help='Sets the dalvik.vm.enableassertions property to "all"')
  option_parser.add_option('--disable_asserts', dest='set_asserts',
      action='store_false', default=None,
      help='Removes the dalvik.vm.enableassertions property')
  options, _ = option_parser.parse_args(argv)

  # TODO(jbudorick): Accept optional serial number and run only for the
  # specified device when present.
  devices = android_commands.GetAttachedDevices()
  for device in [device_utils.DeviceUtils(serial) for serial in devices]:
    if options.set_asserts != None:
      if device.old_interface.SetJavaAssertsEnabled(options.set_asserts):
        # TODO(jbudorick) How to best do shell restarts after the
        #                 android_commands refactor?
        device.RunShellCommand('stop')
        device.RunShellCommand('start')


if __name__ == '__main__':
  main(sys.argv)
