1# Copyright 2013 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5"""Android-specific, installs pre-built profilers.""" 6 7import logging 8import os 9 10from telemetry.internal.util import binary_manager 11from telemetry import decorators 12 13_DEVICE_PROFILER_DIR = '/data/local/tmp/profilers/' 14 15 16def GetDevicePath(profiler_binary): 17 return os.path.join(_DEVICE_PROFILER_DIR, os.path.basename(profiler_binary)) 18 19 20@decorators.Cache 21def InstallOnDevice(device, profiler_binary): 22 arch_name = device.GetABI() 23 host_path = binary_manager.FetchPath(profiler_binary, arch_name, 'android') 24 if not host_path: 25 logging.error('Profiler binary "%s" not found. Could not be installed', 26 host_path) 27 return False 28 29 device_binary_path = GetDevicePath(profiler_binary) 30 device.PushChangedFiles([(host_path, device_binary_path)]) 31 device.RunShellCommand('chmod 777 ' + device_binary_path) 32 return True 33