OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 import argparse | 6 import argparse |
7 import logging | 7 import logging |
8 import sys | 8 import sys |
9 import os.path | |
10 import subprocess | |
11 | 9 |
12 import devtools | |
13 devtools.add_lib_to_path() | |
14 from devtoolslib.android_shell import AndroidShell | 10 from devtoolslib.android_shell import AndroidShell |
15 from devtoolslib.linux_shell import LinuxShell | 11 from devtoolslib.linux_shell import LinuxShell |
16 from devtoolslib import shell_arguments | 12 from devtoolslib import shell_arguments |
17 | 13 from devtoolslib import default_paths |
18 from mopy.config import Config | |
19 from mopy.paths import Paths | |
20 | 14 |
21 USAGE = ("mojo_shell.py " | 15 USAGE = ("mojo_shell.py " |
22 "[--args-for=<mojo-app>] " | 16 "[--args-for=<mojo-app>] " |
23 "[--content-handlers=<handlers>] " | 17 "[--content-handlers=<handlers>] " |
24 "[--enable-external-applications] " | 18 "[--enable-external-applications] " |
25 "[--disable-cache] " | 19 "[--disable-cache] " |
26 "[--enable-multiprocess] " | 20 "[--enable-multiprocess] " |
27 "[--url-mappings=from1=to1,from2=to2] " | 21 "[--url-mappings=from1=to1,from2=to2] " |
28 "[<mojo-app>] " | 22 "[<mojo-app>] " |
29 """ | 23 """ |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 parser.add_argument('--logcat-tags', | 68 parser.add_argument('--logcat-tags', |
75 help='(android-only) Comma-separated list of additional ' | 69 help='(android-only) Comma-separated list of additional ' |
76 'logcat tags to display on the console.') | 70 'logcat tags to display on the console.') |
77 | 71 |
78 # Desktop-only arguments. | 72 # Desktop-only arguments. |
79 parser.add_argument('--use-osmesa', action='store_true', | 73 parser.add_argument('--use-osmesa', action='store_true', |
80 help='(linux-only) Configure the native viewport service ' | 74 help='(linux-only) Configure the native viewport service ' |
81 'for off-screen rendering.') | 75 'for off-screen rendering.') |
82 | 76 |
83 launcher_args, args = parser.parse_known_args() | 77 launcher_args, args = parser.parse_known_args() |
| 78 paths, error_msg = default_paths.infer_default_paths(launcher_args.android, |
| 79 launcher_args.debug, |
| 80 launcher_args.target_cpu) |
| 81 if not paths: |
| 82 print error_msg |
| 83 return -1 |
| 84 |
84 if launcher_args.android: | 85 if launcher_args.android: |
85 config = Config(target_os=Config.OS_ANDROID, | |
86 target_cpu=launcher_args.target_cpu, | |
87 is_debug=launcher_args.debug) | |
88 paths = Paths(config) | |
89 verbose_pipe = sys.stdout if launcher_args.verbose else None | 86 verbose_pipe = sys.stdout if launcher_args.verbose else None |
90 | 87 |
91 shell = AndroidShell(paths.adb_path, launcher_args.target_device, | 88 shell = AndroidShell(paths['adb'], launcher_args.target_device, |
92 logcat_tags=launcher_args.logcat_tags, | 89 logcat_tags=launcher_args.logcat_tags, |
93 verbose_pipe=verbose_pipe) | 90 verbose_pipe=verbose_pipe) |
94 device_status, error = shell.CheckDevice() | 91 device_status, error = shell.CheckDevice() |
95 if not device_status: | 92 if not device_status: |
96 print 'Device check failed: ' + error | 93 print 'Device check failed: ' + error |
97 return 1 | 94 return 1 |
98 shell.InstallApk(paths.target_mojo_shell_path) | 95 shell.InstallApk(paths['shell']) |
99 | 96 |
100 args = shell_arguments.RewriteMapOriginParameters(shell, args) | 97 args = shell_arguments.RewriteMapOriginParameters(shell, args) |
101 if not launcher_args.origin: | 98 if not launcher_args.origin: |
102 args.extend(shell_arguments.ConfigureLocalOrigin(shell, paths.build_dir)) | 99 args.extend(shell_arguments.ConfigureLocalOrigin(shell, paths['build'])) |
103 else: | 100 else: |
104 config = Config(target_os=Config.OS_LINUX, | 101 shell = LinuxShell(paths['shell']) |
105 target_cpu=launcher_args.target_cpu, | |
106 is_debug=launcher_args.debug) | |
107 paths = Paths(config) | |
108 shell = LinuxShell(paths.mojo_shell_path) | |
109 if launcher_args.use_osmesa: | 102 if launcher_args.use_osmesa: |
110 args.append('--args-for=mojo:native_viewport_service --use-osmesa') | 103 args.append('--args-for=mojo:native_viewport_service --use-osmesa') |
111 | 104 |
112 if launcher_args.origin: | 105 if launcher_args.origin: |
113 args.append('--origin=' + launcher_args.origin) | 106 args.append('--origin=' + launcher_args.origin) |
114 args = shell_arguments.AppendToArgument(args, '--url-mappings=', | 107 args = shell_arguments.AppendToArgument(args, '--url-mappings=', |
115 'mojo:window_manager=%s' % | 108 'mojo:window_manager=%s' % |
116 launcher_args.window_manager) | 109 launcher_args.window_manager) |
117 if not launcher_args.no_debugger: | 110 if not launcher_args.no_debugger: |
118 args.extend(shell_arguments.ConfigureDebugger(shell)) | 111 args.extend(shell_arguments.ConfigureDebugger(shell)) |
119 | 112 |
120 if launcher_args.sky: | 113 if launcher_args.sky: |
121 # Configure a server to serve the checkout root at / (so that Sky examples | 114 # Configure a server to serve the checkout root at / (so that Sky examples |
122 # are accessible using a root-relative path) and Sky packages at /packages. | 115 # are accessible using a root-relative path) and Sky packages at /packages. |
123 # This is independent from the server that potentially serves the origin | 116 # This is independent from the server that potentially serves the origin |
124 # directory containing the mojo: apps. | 117 # directory containing the mojo: apps. |
125 packages_local_path = os.path.join(paths.build_dir, 'gen', 'dart-pkg', | |
126 'packages') | |
127 additional_mappings = [ | 118 additional_mappings = [ |
128 ('packages/', packages_local_path), | 119 ('packages/', paths['sky_packages']), |
129 ] | 120 ] |
130 server_url = shell.ServeLocalDirectory(paths.src_root, | 121 server_url = shell.ServeLocalDirectory(paths['root'], |
131 port=_SKY_SERVER_PORT, additional_mappings=additional_mappings) | 122 port=_SKY_SERVER_PORT, additional_mappings=additional_mappings) |
132 | 123 |
133 # Configure the content type mappings for the sky_viewer. This is needed | 124 # Configure the content type mappings for the sky_viewer. This is needed |
134 # only for the Sky apps that do not declare mojo:sky_viewer in a shebang, | 125 # only for the Sky apps that do not declare mojo:sky_viewer in a shebang, |
135 # and it is unfortunate as it configures the shell to map all items of the | 126 # and it is unfortunate as it configures the shell to map all items of the |
136 # application/dart content-type as Sky apps. | 127 # application/dart content-type as Sky apps. |
137 # TODO(ppi): drop this part once we can rely on the Sky files declaring | 128 # TODO(ppi): drop this part once we can rely on the Sky files declaring |
138 # correct shebang. | 129 # correct shebang. |
139 args = shell_arguments.AppendToArgument(args, '--content-handlers=', | 130 args = shell_arguments.AppendToArgument(args, '--content-handlers=', |
140 'text/sky,mojo:sky_viewer') | 131 'text/sky,mojo:sky_viewer') |
141 args = shell_arguments.AppendToArgument(args, '--content-handlers=', | 132 args = shell_arguments.AppendToArgument(args, '--content-handlers=', |
142 'application/dart,mojo:sky_viewer') | 133 'application/dart,mojo:sky_viewer') |
143 | 134 |
144 # Configure the window manager to embed the sky_viewer. | 135 # Configure the window manager to embed the sky_viewer. |
145 sky_url = server_url + launcher_args.sky | 136 sky_url = server_url + launcher_args.sky |
146 args.append('mojo:window_manager %s' % sky_url) | 137 args.append('mojo:window_manager %s' % sky_url) |
147 | 138 |
148 if launcher_args.verbose: | 139 if launcher_args.verbose: |
149 print "Shell arguments: " + str(args) | 140 print "Shell arguments: " + str(args) |
150 | 141 |
151 shell.Run(args) | 142 shell.Run(args) |
152 return 0 | 143 return 0 |
153 | 144 |
154 | 145 |
155 if __name__ == "__main__": | 146 if __name__ == "__main__": |
156 sys.exit(main()) | 147 sys.exit(main()) |
OLD | NEW |