|  | # Copyright 2014 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. | 
|  |  | 
|  | from __future__ import absolute_import | 
|  | from pylib import constants | 
|  | from pylib.local.device import local_device_environment | 
|  | from pylib.local.machine import local_machine_environment | 
|  |  | 
|  | try: | 
|  | # local_emulator_environment depends on //tools. | 
|  | # If a client pulls in the //build subtree but not the //tools | 
|  | # one, fail at emulator environment creation time. | 
|  | from pylib.local.emulator import local_emulator_environment | 
|  | except ImportError: | 
|  | local_emulator_environment = None | 
|  |  | 
|  |  | 
|  | def CreateEnvironment(args, output_manager, error_func): | 
|  |  | 
|  | if args.environment == 'local': | 
|  | if args.command not in constants.LOCAL_MACHINE_TESTS: | 
|  | if args.avd_config: | 
|  | if not local_emulator_environment: | 
|  | error_func('emulator environment requested but not available.') | 
|  | return local_emulator_environment.LocalEmulatorEnvironment( | 
|  | args, output_manager, error_func) | 
|  | return local_device_environment.LocalDeviceEnvironment( | 
|  | args, output_manager, error_func) | 
|  | else: | 
|  | return local_machine_environment.LocalMachineEnvironment( | 
|  | args, output_manager, error_func) | 
|  |  | 
|  | error_func('Unable to create %s environment.' % args.environment) |