1645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# Copyright 2014 The Chromium Authors. All rights reserved. 2645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# Use of this source code is governed by a BSD-style license that can be 3645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# found in the LICENSE file. 4645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 5645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezimport os 6645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezimport posixpath 7645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 8645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezfrom devil import devil_env 9645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezfrom devil.android import device_errors 10645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezfrom devil.android.constants import file_system 11645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 12645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector ChavezBIN_DIR = '%s/bin' % file_system.TEST_EXECUTABLE_DIR 13645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez_FRAMEWORK_DIR = '%s/framework' % file_system.TEST_EXECUTABLE_DIR 14645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 15645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez_COMMANDS = { 16645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 'unzip': 'org.chromium.android.commands.unzip.Unzip', 17645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez} 18645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 19645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez_SHELL_COMMAND_FORMAT = ( 20645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez"""#!/system/bin/sh 21645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezbase=%s 22645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezexport CLASSPATH=$base/framework/chromium_commands.jar 23645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezexec app_process $base/bin %s $@ 24645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez""") 25645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 26645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 27645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdef Installed(device): 28645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez paths = [posixpath.join(BIN_DIR, c) for c in _COMMANDS] 29645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez paths.append(posixpath.join(_FRAMEWORK_DIR, 'chromium_commands.jar')) 30645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return device.PathExists(paths) 31645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 32645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 33645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdef InstallCommands(device): 34645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if device.IsUserBuild(): 35645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez raise device_errors.CommandFailedError( 36645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 'chromium_commands currently requires a userdebug build.', 37645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez device_serial=device.adb.GetDeviceSerial()) 38645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 39645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez chromium_commands_jar_path = devil_env.config.FetchPath('chromium_commands') 40645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if not os.path.exists(chromium_commands_jar_path): 41645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez raise device_errors.CommandFailedError( 42645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez '%s not found. Please build chromium_commands.' 43645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez % chromium_commands_jar_path) 44645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 45645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez device.RunShellCommand(['mkdir', BIN_DIR, _FRAMEWORK_DIR]) 46645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez for command, main_class in _COMMANDS.iteritems(): 47645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez shell_command = _SHELL_COMMAND_FORMAT % ( 48645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez file_system.TEST_EXECUTABLE_DIR, main_class) 49645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez shell_file = '%s/%s' % (BIN_DIR, command) 50645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez device.WriteFile(shell_file, shell_command) 51645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez device.RunShellCommand( 52645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez ['chmod', '755', shell_file], check_return=True) 53645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 54645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez device.adb.Push( 55645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez chromium_commands_jar_path, 56645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez '%s/chromium_commands.jar' % _FRAMEWORK_DIR) 57645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 58