From 257b48536ab6a43ec38caba4e4490f290149718b Mon Sep 17 00:00:00 2001
From: Kongqun Yang
Date: Tue, 21 Jan 2014 12:36:27 -0800
Subject: [PATCH] Clean up tools directory.
Remove all files and directories except:
clang emacs git gyp heapcheck protoc_wrapper valgrind vim
xdisplaycheck
Change-Id: I6326e4edad4b843e0d0c2ef39c20ac90f13c8579
---
tools/DEPS | 6 -
tools/OWNERS | 3 -
tools/PRESUBMIT.py | 48 -
tools/android/OWNERS | 6 -
tools/android/adb_reboot/adb_reboot.c | 43 -
tools/android/adb_reboot/adb_reboot.gyp | 14 -
tools/android/android_tools.gyp | 27 -
tools/android/asan/asanwrapper.sh | 9 -
tools/android/common/adb_connection.cc | 107 -
tools/android/common/adb_connection.h | 18 -
tools/android/common/common.gyp | 26 -
tools/android/common/daemon.cc | 75 -
tools/android/common/daemon.h | 28 -
tools/android/common/net.cc | 40 -
tools/android/common/net.h | 25 -
.../device_stats_monitor.cc | 108 -
.../device_stats_monitor.gyp | 41 -
tools/android/fake_dns/DEPS | 3 -
tools/android/fake_dns/fake_dns.cc | 238 -
tools/android/fake_dns/fake_dns.gyp | 44 -
tools/android/find_unused_resources.py | 126 -
tools/android/findbugs_plugin/README | 15 -
tools/android/findbugs_plugin/build.xml | 48 -
tools/android/findbugs_plugin/findbugs.xml | 18 -
.../findbugs_plugin/findbugs_plugin.gyp | 16 -
.../findbugs_plugin/lib/chromiumPlugin.jar | Bin 3913 -> 0 bytes
tools/android/findbugs_plugin/messages.xml | 56 -
.../plugin/SynchronizedMethodDetector.java | 38 -
.../plugin/SynchronizedThisDetector.java | 73 -
.../findbugs_plugin/test/expected_result.txt | 3 -
.../plugin/SimpleSynchronizedMethod.java | 16 -
.../SimpleSynchronizedStaticMethod.java | 15 -
.../plugin/SimpleSynchronizedThis.java | 19 -
.../test/run_findbugs_plugin_tests.py | 44 -
tools/android/forwarder/forwarder.cc | 426 -
tools/android/forwarder/forwarder.gyp | 43 -
tools/android/forwarder2/command.cc | 96 -
tools/android/forwarder2/command.h | 48 -
tools/android/forwarder2/common.cc | 28 -
tools/android/forwarder2/common.h | 89 -
tools/android/forwarder2/daemon.cc | 288 -
tools/android/forwarder2/daemon.h | 75 -
tools/android/forwarder2/device_controller.cc | 154 -
tools/android/forwarder2/device_controller.h | 66 -
.../forwarder2/device_forwarder_main.cc | 169 -
tools/android/forwarder2/device_listener.cc | 148 -
tools/android/forwarder2/device_listener.h | 114 -
tools/android/forwarder2/forwarder.cc | 171 -
tools/android/forwarder2/forwarder.gyp | 85 -
tools/android/forwarder2/forwarder.h | 19 -
tools/android/forwarder2/host_controller.cc | 186 -
tools/android/forwarder2/host_controller.h | 99 -
.../android/forwarder2/host_forwarder_main.cc | 414 -
tools/android/forwarder2/pipe_notifier.cc | 43 -
tools/android/forwarder2/pipe_notifier.h | 35 -
tools/android/forwarder2/socket.cc | 422 -
tools/android/forwarder2/socket.h | 145 -
tools/android/md5sum/md5sum.cc | 93 -
tools/android/md5sum/md5sum.gyp | 77 -
tools/android/memdump/memdump.cc | 555 -
tools/android/memdump/memdump.gyp | 31 -
tools/android/memdump/memreport.py | 122 -
tools/android/memdump/memsymbols.py | 152 -
tools/android/remove_strings.py | 49 -
tools/bash-completion | 25 -
tools/bisect-builds.py | 718 -
tools/bisect-manual-test.py | 52 -
tools/bisect-perf-regression.py | 2456 -
tools/bisect_test.py | 53 -
tools/bisect_utils.py | 402 -
tools/checkbins/checkbins.py | 109 -
tools/checkdeps/DEPS | 3 -
tools/checkdeps/PRESUBMIT.py | 25 -
tools/checkdeps/checkdeps.py | 526 -
tools/checkdeps/checkdeps_test.py | 177 -
tools/checkdeps/cpp_checker.py | 113 -
tools/checkdeps/java_checker.py | 107 -
tools/checkdeps/results.py | 140 -
tools/checkdeps/rules.py | 151 -
tools/checkdeps/testdata/DEPS | 8 -
tools/checkdeps/testdata/allowed/DEPS | 12 -
.../testdata/allowed/foo_unittest.cc | 5 -
.../checkdeps/testdata/allowed/not_a_test.cc | 5 -
tools/checkdeps/testdata/allowed/test.h | 11 -
tools/checkdeps/testdata/checkdeps_test/DEPS | 5 -
.../testdata/checkdeps_test/allowed/DEPS | 11 -
.../checkdeps_test/allowed/foo_unittest.cc | 5 -
.../checkdeps_test/allowed/not_a_test.cc | 5 -
.../testdata/checkdeps_test/allowed/test.h | 11 -
.../checkdeps_test/disallowed/allowed/DEPS | 3 -
.../disallowed/allowed/skipped/test.h | 5 -
.../checkdeps_test/disallowed/allowed/test.h | 11 -
.../testdata/checkdeps_test/disallowed/test.h | 12 -
.../testdata/disallowed/allowed/DEPS | 3 -
.../disallowed/allowed/skipped/test.h | 5 -
.../testdata/disallowed/allowed/test.h | 11 -
.../testdata/disallowed/foo_unittest.cc | 10 -
tools/checkdeps/testdata/disallowed/test.h | 12 -
tools/checklicenses/OWNERS | 3 -
tools/checklicenses/checklicenses.py | 548 -
tools/checkperms/OWNERS | 1 -
tools/checkperms/PRESUBMIT.py | 27 -
tools/checkperms/checkperms.py | 508 -
tools/code_coverage/coverage.py | 359 -
tools/code_coverage/coverage_posix.py | 1266 -
.../code_coverage/coverage_posix_unittest.py | 142 -
tools/code_coverage/croc.css | 102 -
tools/code_coverage/croc.py | 722 -
tools/code_coverage/croc_html.py | 451 -
tools/code_coverage/croc_scan.py | 164 -
tools/code_coverage/croc_scan_test.py | 187 -
tools/code_coverage/croc_test.py | 758 -
tools/code_coverage/example.croc | 197 -
tools/code_coverage/process_coverage.py | 413 -
.../code_coverage/third_party/README.chromium | 11 -
tools/code_coverage/third_party/sorttable.js | 494 -
tools/compile_test/compile_test.py | 65 -
tools/coverity/coverity.py | 308 -
tools/crx_id/PRESUBMIT.py | 27 -
tools/crx_id/__init__.py | 8 -
tools/crx_id/crx_id.py | 151 -
tools/crx_id/crx_id_unittest.py | 85 -
.../jebgalgnebhfojomionfpkfelancnnkf.crx | Bin 1843 -> 0 bytes
tools/cygprofile/cygprofile.cc | 401 -
tools/cygprofile/cygprofile.gyp | 19 -
tools/cygprofile/mergetraces.py | 186 -
tools/cygprofile/patch_orderfile.py | 117 -
tools/cygprofile/symbolize.py | 251 -
tools/deep_memory_profiler/OWNERS | 1 -
tools/deep_memory_profiler/PRESUBMIT.py | 45 -
tools/deep_memory_profiler/README.policy | 56 -
tools/deep_memory_profiler/dmprof | 12 -
tools/deep_memory_profiler/dmprof.py | 81 -
tools/deep_memory_profiler/download.sh | 7 -
tools/deep_memory_profiler/graph.py | 68 -
tools/deep_memory_profiler/lib/__init__.py | 3 -
tools/deep_memory_profiler/lib/bucket.py | 191 -
tools/deep_memory_profiler/lib/dump.py | 487 -
tools/deep_memory_profiler/lib/exceptions.py | 22 -
.../deep_memory_profiler/lib/ordered_dict.py | 19 -
tools/deep_memory_profiler/lib/pageframe.py | 163 -
tools/deep_memory_profiler/lib/policy.py | 404 -
tools/deep_memory_profiler/lib/range_dict.py | 144 -
tools/deep_memory_profiler/lib/sorter.py | 470 -
tools/deep_memory_profiler/lib/subcommand.py | 160 -
tools/deep_memory_profiler/lib/symbol.py | 189 -
tools/deep_memory_profiler/policies.json | 34 -
.../policy.android.browser.json | 301 -
.../policy.android.renderer.json | 579 -
.../policy.android.webview.json | 639 -
tools/deep_memory_profiler/policy.l0.json | 162 -
tools/deep_memory_profiler/policy.l1.json | 204 -
tools/deep_memory_profiler/policy.l2.json | 490 -
.../policy.sourcefile.json | 186 -
tools/deep_memory_profiler/policy.t0.json | 205 -
.../sorter.malloc-component.json | 261 -
.../sorter.malloc-type.json | 38 -
tools/deep_memory_profiler/sorter.vm-map.json | 107 -
.../sorter.vm-sharing.json | 25 -
.../subcommands/__init__.py | 14 -
.../subcommands/buckets.py | 35 -
tools/deep_memory_profiler/subcommands/cat.py | 179 -
.../subcommands/expand.py | 104 -
tools/deep_memory_profiler/subcommands/map.py | 102 -
.../subcommands/policies.py | 375 -
.../deep_memory_profiler/subcommands/pprof.py | 161 -
.../subcommands/stacktrace.py | 41 -
.../subcommands/upload.py | 79 -
tools/deep_memory_profiler/templates.json | 12 -
.../tests/data/.gitignore | 1 -
.../tests/data/heap.01234.0001.buckets | 5 -
.../tests/data/heap.01234.0001.heap | 25 -
.../tests/data/heap.01234.0002.buckets | 2 -
.../tests/data/heap.01234.0002.heap | 28 -
.../tests/data/heap.01234.maps | 410 -
.../data/heap.01234.symmap/chrome.abcdef.nm | 914 -
.../heap.01234.symmap/chrome.uvwxyz.readelf-e | 101 -
.../tests/data/heap.01234.symmap/files.json | 12 -
.../tests/data/heap.01234.symmap/maps | 410 -
.../deep_memory_profiler/tests/dmprof_test.py | 220 -
.../deep_memory_profiler/tests/mock_gsutil.py | 51 -
.../deep_memory_profiler/tests/output/buckets | 7 -
.../tests/range_dict_tests.py | 131 -
.../deep_memory_profiler/visualizer/main.css | 9 -
.../deep_memory_profiler/visualizer/main.html | 17 -
tools/deep_memory_profiler/visualizer/main.js | 160 -
tools/deps2git | 1 -
tools/diagnose-me.py | 95 -
.../dromaeo_benchmark_runner.py | 266 -
tools/export_tarball/export_tarball.py | 172 -
tools/export_tarball/export_v8_tarball.py | 108 -
tools/find_depot_tools.py | 40 -
tools/find_runtime_symbols/OWNERS | 1 -
tools/find_runtime_symbols/PRESUBMIT.py | 45 -
tools/find_runtime_symbols/README | 24 -
.../find_runtime_symbols.py | 207 -
.../prepare_symbol_info.py | 226 -
tools/find_runtime_symbols/proc_maps.py | 125 -
.../find_runtime_symbols/reduce_debugline.py | 68 -
tools/find_runtime_symbols/static_symbols.py | 277 -
.../tests/proc_maps_test.py | 110 -
.../tests/reduce_debugline_test.py | 66 -
tools/flakiness/find_flakiness.py | 179 -
tools/gdb/gdb_chrome.py | 296 -
.../gen_keyboard_overlay_data.py | 529 -
.../generate_library_loader.py | 256 -
.../generate_shim_headers.py | 107 -
tools/generate_stubs/generate_stubs.py | 1131 -
.../generate_stubs/generate_stubs_unittest.py | 297 -
tools/gn/BUILD.gn | 174 -
tools/gn/OWNERS | 1 -
tools/gn/README.txt | 7 -
tools/gn/binary_target_generator.cc | 36 -
tools/gn/binary_target_generator.h | 32 -
tools/gn/build_settings.cc | 44 -
tools/gn/build_settings.h | 110 -
tools/gn/command_desc.cc | 344 -
tools/gn/command_gen.cc | 82 -
tools/gn/command_help.cc | 156 -
tools/gn/commands.cc | 97 -
tools/gn/commands.h | 67 -
tools/gn/config.cc | 80 -
tools/gn/config.h | 45 -
tools/gn/config_values.cc | 11 -
tools/gn/config_values.h | 51 -
tools/gn/config_values_extractors.cc | 35 -
tools/gn/config_values_extractors.h | 58 -
tools/gn/config_values_generator.cc | 73 -
tools/gn/config_values_generator.h | 43 -
tools/gn/copy_target_generator.cc | 47 -
tools/gn/copy_target_generator.h | 30 -
tools/gn/err.cc | 196 -
tools/gn/err.h | 85 -
tools/gn/escape.cc | 77 -
tools/gn/escape.h | 53 -
tools/gn/escape_unittest.cc | 4 -
tools/gn/file_template.cc | 125 -
tools/gn/file_template.h | 74 -
tools/gn/file_template_unittest.cc | 45 -
tools/gn/filesystem_utils.cc | 371 -
tools/gn/filesystem_utils.h | 115 -
tools/gn/filesystem_utils_unittest.cc | 146 -
tools/gn/function_define_rule.cc | 44 -
tools/gn/function_exec_script.cc | 355 -
tools/gn/function_process_file_template.cc | 72 -
tools/gn/function_read_file.cc | 72 -
tools/gn/function_set_default_toolchain.cc | 75 -
tools/gn/function_template.cc | 113 -
tools/gn/function_toolchain.cc | 143 -
tools/gn/function_write_file.cc | 89 -
tools/gn/functions.cc | 548 -
tools/gn/functions.h | 303 -
tools/gn/functions_target.cc | 277 -
tools/gn/generate_test_gn_data.cc | 129 -
tools/gn/gn.gyp | 191 -
tools/gn/gn_main.cc | 62 -
tools/gn/group_target_generator.cc | 21 -
tools/gn/group_target_generator.h | 28 -
tools/gn/import_manager.cc | 83 -
tools/gn/import_manager.h | 41 -
tools/gn/input_conversion.cc | 205 -
tools/gn/input_conversion.h | 28 -
tools/gn/input_conversion_unittest.cc | 81 -
tools/gn/input_file.cc | 31 -
tools/gn/input_file.h | 58 -
tools/gn/input_file_manager.cc | 252 -
tools/gn/input_file_manager.h | 124 -
tools/gn/item.cc | 31 -
tools/gn/item.h | 45 -
tools/gn/item_node.cc | 119 -
tools/gn/item_node.h | 159 -
tools/gn/item_tree.cc | 200 -
tools/gn/item_tree.h | 92 -
tools/gn/label.cc | 263 -
tools/gn/label.h | 116 -
tools/gn/label_unittest.cc | 88 -
tools/gn/location.h | 77 -
tools/gn/ninja_binary_target_writer.cc | 346 -
tools/gn/ninja_binary_target_writer.h | 39 -
tools/gn/ninja_build_writer.cc | 162 -
tools/gn/ninja_build_writer.h | 53 -
tools/gn/ninja_copy_target_writer.cc | 64 -
tools/gn/ninja_copy_target_writer.h | 23 -
tools/gn/ninja_group_target_writer.cc | 37 -
tools/gn/ninja_group_target_writer.h | 23 -
tools/gn/ninja_helper.cc | 177 -
tools/gn/ninja_helper.h | 71 -
tools/gn/ninja_helper_unittest.cc | 73 -
tools/gn/ninja_script_target_writer.cc | 207 -
tools/gn/ninja_script_target_writer.h | 49 -
tools/gn/ninja_target_writer.cc | 83 -
tools/gn/ninja_target_writer.h | 47 -
tools/gn/ninja_toolchain_writer.cc | 92 -
tools/gn/ninja_toolchain_writer.h | 46 -
tools/gn/ninja_writer.cc | 78 -
tools/gn/ninja_writer.h | 28 -
tools/gn/operators.cc | 573 -
tools/gn/operators.h | 35 -
tools/gn/output_file.h | 41 -
tools/gn/output_stream.h | 42 -
tools/gn/parse_tree.cc | 473 -
tools/gn/parse_tree.h | 366 -
tools/gn/parser.cc | 470 -
tools/gn/parser.h | 81 -
tools/gn/parser_unittest.cc | 329 -
tools/gn/path_output.cc | 116 -
tools/gn/path_output.h | 80 -
tools/gn/path_output_unittest.cc | 193 -
tools/gn/pattern.cc | 185 -
tools/gn/pattern.h | 86 -
tools/gn/pattern_unittest.cc | 61 -
tools/gn/scheduler.cc | 130 -
tools/gn/scheduler.h | 91 -
tools/gn/scope.cc | 372 -
tools/gn/scope.h | 260 -
tools/gn/scope_per_file_provider.cc | 151 -
tools/gn/scope_per_file_provider.h | 59 -
tools/gn/script_target_generator.cc | 82 -
tools/gn/script_target_generator.h | 32 -
tools/gn/script_values.cc | 11 -
tools/gn/script_values.h | 41 -
tools/gn/secondary/BUILD.gn | 10 -
tools/gn/secondary/base/BUILD.gn | 990 -
tools/gn/secondary/base/allocator/BUILD.gn | 10 -
.../third_party/dynamic_annotations/BUILD.gn | 11 -
.../secondary/base/third_party/nspr/BUILD.gn | 19 -
.../base/third_party/symbolize/BUILD.gn | 19 -
.../base/third_party/xdg_mime/BUILD.gn | 27 -
.../base/third_party/xdg_user_dirs/BUILD.gn | 10 -
tools/gn/secondary/build/config/BUILD.gn | 52 -
.../gn/secondary/build/config/BUILDCONFIG.gn | 210 -
.../gn/secondary/build/config/clang/BUILD.gn | 18 -
.../secondary/build/config/compiler/BUILD.gn | 338 -
.../gn/secondary/build/config/linux/BUILD.gn | 14 -
.../build/config/linux/system/BUILD.gn | 31 -
.../build/config/linux/system/pkg-config.py | 8 -
.../build/config/linux/toolchain/BUILD.gn | 47 -
tools/gn/secondary/build/config/mac/BUILD.gn | 76 -
tools/gn/secondary/build/config/win/BUILD.gn | 184 -
.../build/config/win/get_msvc_config.py | 77 -
.../build/config/win/get_msvc_config_real.py | 575 -
tools/gn/secondary/ipc/BUILD.gn | 168 -
tools/gn/secondary/testing/BUILD.gn | 44 -
tools/gn/secondary/third_party/icu/BUILD.gn | 5 -
.../secondary/third_party/libevent/BUILD.gn | 42 -
.../third_party/mach_override/BUILD.gn | 10 -
.../secondary/third_party/modp_b64/BUILD.gn | 11 -
tools/gn/settings.cc | 50 -
tools/gn/settings.h | 121 -
tools/gn/setup.cc | 232 -
tools/gn/setup.h | 71 -
tools/gn/source_dir.cc | 98 -
tools/gn/source_dir.h | 104 -
tools/gn/source_dir_unittest.cc | 45 -
tools/gn/source_file.cc | 67 -
tools/gn/source_file.h | 97 -
tools/gn/standard_out.cc | 84 -
tools/gn/standard_out.h | 22 -
tools/gn/string_utils.cc | 168 -
tools/gn/string_utils.h | 51 -
tools/gn/string_utils_unittest.cc | 71 -
tools/gn/target.cc | 92 -
tools/gn/target.h | 140 -
tools/gn/target_generator.cc | 229 -
tools/gn/target_generator.h | 82 -
tools/gn/target_generator_unittest.cc | 8 -
tools/gn/target_manager.cc | 130 -
tools/gn/target_manager.h | 69 -
tools/gn/target_manager_unittest.cc | 95 -
tools/gn/token.cc | 60 -
tools/gn/token.h | 52 -
tools/gn/tokenizer.cc | 309 -
tools/gn/tokenizer.h | 86 -
tools/gn/tokenizer_unittest.cc | 162 -
tools/gn/toolchain.cc | 82 -
tools/gn/toolchain.h | 96 -
tools/gn/toolchain_manager.cc | 497 -
tools/gn/toolchain_manager.h | 168 -
tools/gn/value.cc | 126 -
tools/gn/value.h | 91 -
tools/gn/value_extractors.cc | 102 -
tools/gn/value_extractors.h | 57 -
tools/gn/variables.cc | 364 -
tools/gn/variables.h | 126 -
tools/grit | 1 -
tools/gritsettings/resource_ids | 221 -
.../gtk_clipboard_dump/gtk_clipboard_dump.cc | 85 -
.../gtk_clipboard_dump/gtk_clipboard_dump.gyp | 14 -
tools/gyp-explain.py | 119 -
tools/gypv8sh.py | 55 -
tools/idl_parser/PRESUBMIT.py | 15 -
tools/idl_parser/__init__.py | 0
tools/idl_parser/idl_lexer.py | 285 -
tools/idl_parser/idl_lexer_test.py | 99 -
tools/idl_parser/idl_node.py | 217 -
tools/idl_parser/idl_parser.py | 1053 -
tools/idl_parser/idl_parser_test.py | 106 -
tools/idl_parser/idl_ppapi_lexer.py | 70 -
tools/idl_parser/idl_ppapi_parser.py | 304 -
tools/idl_parser/run_tests.py | 20 -
tools/idl_parser/test_lexer/keywords.in | 37 -
tools/idl_parser/test_lexer/keywords_ppapi.in | 44 -
tools/idl_parser/test_lexer/values.in | 55 -
tools/idl_parser/test_lexer/values_ppapi.in | 50 -
tools/idl_parser/test_parser/callback_web.idl | 116 -
.../idl_parser/test_parser/dictionary_web.idl | 95 -
tools/idl_parser/test_parser/enum_ppapi.idl | 126 -
tools/idl_parser/test_parser/enum_web.idl | 119 -
.../idl_parser/test_parser/exception_web.idl | 87 -
.../idl_parser/test_parser/extattr_ppapi.idl | 91 -
.../idl_parser/test_parser/implements_web.idl | 52 -
tools/idl_parser/test_parser/inline_ppapi.idl | 46 -
.../idl_parser/test_parser/interface_web.idl | 127 -
tools/idl_parser/test_parser/label_ppapi.idl | 48 -
tools/idl_parser/test_parser/struct_ppapi.idl | 52 -
.../idl_parser/test_parser/typedef_ppapi.idl | 92 -
tools/idl_parser/test_parser/typedef_web.idl | 190 -
tools/imagediff/DEPS | 4 -
tools/imagediff/image_diff.cc | 381 -
tools/imagediff/image_diff.gyp | 39 -
tools/imagediff/image_diff_png.cc | 650 -
tools/imagediff/image_diff_png.h | 35 -
tools/include_tracer.py | 202 -
tools/ipc_messages_log.py | 168 -
tools/json_comment_eater/everything.json | 13 -
.../everything_expected.json | 13 -
.../json_comment_eater/json_comment_eater.py | 60 -
.../json_comment_eater_test.py | 26 -
tools/json_schema_compiler/PRESUBMIT.py | 20 -
tools/json_schema_compiler/api_gen_util.gyp | 20 -
tools/json_schema_compiler/cc_generator.py | 943 -
tools/json_schema_compiler/code.py | 141 -
tools/json_schema_compiler/code_test.py | 165 -
tools/json_schema_compiler/compiler.py | 159 -
.../cpp_bundle_generator.py | 291 -
tools/json_schema_compiler/cpp_generator.py | 11 -
.../cpp_type_generator.py | 276 -
.../cpp_type_generator_test.py | 167 -
tools/json_schema_compiler/cpp_util.py | 113 -
tools/json_schema_compiler/cpp_util_test.py | 31 -
tools/json_schema_compiler/dart_generator.py | 762 -
.../dart_generator_test.py | 85 -
.../dart_test/comments.dart | 31 -
.../dart_test/comments.idl | 32 -
.../dart_test/dictionaries.dart | 235 -
.../dart_test/dictionaries.idl | 61 -
.../dart_test/empty_namespace.dart | 19 -
.../dart_test/empty_namespace.idl | 7 -
.../dart_test/empty_type.dart | 37 -
.../dart_test/empty_type.idl | 10 -
.../json_schema_compiler/dart_test/enums.idl | 12 -
.../dart_test/events.dart | 282 -
.../json_schema_compiler/dart_test/events.idl | 56 -
.../dart_test/functions.dart | 93 -
.../dart_test/functions.idl | 55 -
.../dart_test/operatable_type.dart | 94 -
.../dart_test/operatable_type.idl | 32 -
.../json_schema_compiler/dart_test/tags.dart | 116 -
tools/json_schema_compiler/dart_test/tags.idl | 33 -
tools/json_schema_compiler/h_generator.py | 397 -
.../highlighters/__init__.py | 0
.../highlighters/hilite_me_highlighter.py | 30 -
.../highlighters/none_highlighter.py | 20 -
.../highlighters/pygments_highlighter.py | 37 -
tools/json_schema_compiler/idl_schema.py | 417 -
tools/json_schema_compiler/idl_schema_test.py | 159 -
tools/json_schema_compiler/json_parse.py | 61 -
tools/json_schema_compiler/json_schema.py | 50 -
.../json_schema_compiler/json_schema_test.py | 83 -
tools/json_schema_compiler/memoize.py | 13 -
tools/json_schema_compiler/model.py | 492 -
tools/json_schema_compiler/model_test.py | 104 -
tools/json_schema_compiler/preview.py | 366 -
tools/json_schema_compiler/schema_loader.py | 53 -
tools/json_schema_compiler/schema_util.py | 37 -
.../json_schema_compiler/schema_util_test.py | 25 -
.../test/additional_properties.json | 56 -
.../test/additional_properties_unittest.cc | 63 -
tools/json_schema_compiler/test/any.json | 68 -
.../json_schema_compiler/test/any_unittest.cc | 57 -
tools/json_schema_compiler/test/arrays.json | 232 -
.../test/arrays_unittest.cc | 222 -
.../test/browser_action.json | 273 -
.../json_schema_compiler/test/callbacks.json | 72 -
.../test/callbacks_unittest.cc | 35 -
tools/json_schema_compiler/test/choices.json | 167 -
.../test/choices_unittest.cc | 292 -
.../test/content_settings.json | 222 -
tools/json_schema_compiler/test/crossref.json | 76 -
.../test/crossref_unittest.cc | 115 -
.../test/dependency_tester.json | 33 -
tools/json_schema_compiler/test/enums.json | 252 -
.../test/enums_unittest.cc | 261 -
.../test/error_generation.json | 118 -
.../test/error_generation_unittest.cc | 203 -
.../test/font_settings.json | 551 -
.../json_schema_compiler/test/forbidden.json | 40 -
.../test/functions_as_parameters.json | 29 -
.../test/functions_as_parameters_unittest.cc | 94 -
.../test/functions_on_types.json | 75 -
.../test/functions_on_types_unittest.cc | 69 -
.../json_schema_compiler/test/idl_basics.idl | 90 -
.../test/idl_callback_arrays.idl | 13 -
.../test/idl_object_types.idl | 22 -
.../test/idl_reserved_words.idl | 27 -
.../test/idl_schemas_unittest.cc | 199 -
.../test/json_schema_compiler_tests.gyp | 44 -
.../test/json_schema_test.json | 106 -
tools/json_schema_compiler/test/objects.json | 140 -
.../test/objects_unittest.cc | 71 -
.../test/permissions.json | 140 -
.../json_schema_compiler/test/simple_api.json | 163 -
.../test/simple_api_unittest.cc | 180 -
tools/json_schema_compiler/test/tabs.json | 770 -
tools/json_schema_compiler/test/test_util.cc | 69 -
tools/json_schema_compiler/test/test_util.h | 55 -
tools/json_schema_compiler/test/windows.json | 265 -
tools/json_schema_compiler/util.cc | 97 -
tools/json_schema_compiler/util.h | 181 -
tools/json_schema_compiler/util_cc_helper.py | 85 -
tools/json_to_struct/PRESUBMIT.py | 20 -
tools/json_to_struct/element_generator.py | 122 -
.../json_to_struct/element_generator_test.py | 160 -
tools/json_to_struct/json_to_struct.py | 211 -
tools/json_to_struct/struct_generator.py | 43 -
tools/json_to_struct/struct_generator_test.py | 58 -
tools/licenses.py | 477 -
tools/linux/dump-static-initializers.py | 231 -
tools/lsan/suppressions.txt | 51 -
tools/mac/symbolicate_crash.py | 504 -
.../ff_ext/chrome.manifest | 2 -
.../ff_ext/content/firefoxOverlay.xul | 7 -
.../ff_ext/content/measure_page_load_time.js | 209 -
.../measure_page_load_time/ff_ext/install.rdf | 17 -
.../ie_bho/MeasurePageLoadTime.cpp | 72 -
.../ie_bho/MeasurePageLoadTime.def | 9 -
.../ie_bho/MeasurePageLoadTime.idl | 40 -
.../ie_bho/MeasurePageLoadTime.rc | 121 -
.../ie_bho/MeasurePageLoadTime.rgs | 29 -
.../ie_bho/MeasurePageLoadTime.vcproj | 320 -
.../ie_bho/MeasurePageLoadTimeBHO.cpp | 292 -
.../ie_bho/MeasurePageLoadTimeBHO.h | 87 -
.../ie_bho/MeasurePageLoadTimeBHO.rgs | 27 -
.../measure_page_load_time/ie_bho/resource.h | 18 -
tools/memory_watcher/DEPS | 4 -
tools/memory_watcher/README | 17 -
tools/memory_watcher/call_stack.cc | 399 -
tools/memory_watcher/call_stack.h | 168 -
tools/memory_watcher/dllmain.cc | 155 -
tools/memory_watcher/hotkey.h | 48 -
tools/memory_watcher/ia32_modrm_map.cc | 94 -
tools/memory_watcher/ia32_opcode_map.cc | 1161 -
tools/memory_watcher/memory_hook.cc | 562 -
tools/memory_watcher/memory_hook.h | 153 -
tools/memory_watcher/memory_watcher.cc | 255 -
tools/memory_watcher/memory_watcher.gyp | 43 -
tools/memory_watcher/memory_watcher.h | 95 -
tools/memory_watcher/mini_disassembler.cc | 392 -
tools/memory_watcher/mini_disassembler.h | 163 -
.../memory_watcher/mini_disassembler_types.h | 199 -
tools/memory_watcher/preamble_patcher.cc | 228 -
tools/memory_watcher/preamble_patcher.h | 293 -
.../preamble_patcher_with_stub.cc | 174 -
tools/memory_watcher/scripts/finditem.pl | 56 -
tools/memory_watcher/scripts/memprof.pl | 116 -
tools/memory_watcher/scripts/memtrace.pl | 146 -
tools/memory_watcher/scripts/summary.pl | 156 -
tools/metrics/OWNERS | 10 -
tools/metrics/actions/OWNERS | 2 -
tools/metrics/actions/chromeactions.txt | 1640 -
tools/metrics/actions/extract_actions.py | 608 -
tools/metrics/actions/extract_actions.sh | 13 -
tools/metrics/histograms/PRESUBMIT.py | 39 -
tools/metrics/histograms/diffutil.py | 47 -
.../metrics/histograms/extract_histograms.py | 368 -
.../histograms/find_unmapped_histograms.py | 227 -
tools/metrics/histograms/histograms.xml | 24865 --
tools/metrics/histograms/pretty_print.py | 358 -
.../histograms/update_extension_functions.py | 148 -
tools/metrics/histograms/update_policies.py | 132 -
tools/metrics/histograms/validate_format.py | 17 -
tools/nocompile_driver.py | 472 -
tools/omahaproxy.py | 90 -
tools/oopif/OWNERS | 4 -
tools/oopif/iframe_server.py | 224 -
tools/page_cycler/acid3 | 1 -
tools/page_cycler/common/head.js | 128 -
tools/page_cycler/common/report.html | 183 -
tools/page_cycler/common/start.js | 82 -
tools/page_cycler/database/common.js | 109 -
.../database/delete-transactions/index.html | 26 -
.../database/delete-transactions/start.html | 9 -
tools/page_cycler/database/head.js | 125 -
.../database/insert-transactions/index.html | 28 -
.../database/insert-transactions/start.html | 9 -
.../pseudo-random-transactions/index.html | 103 -
.../pseudo-random-transactions/start.html | 9 -
.../index.html | 33 -
.../start.html | 9 -
.../select-readtransactions/index.html | 26 -
.../select-readtransactions/start.html | 9 -
.../database/select-transactions/index.html | 25 -
.../database/select-transactions/start.html | 9 -
.../database/update-transactions/index.html | 28 -
.../database/update-transactions/start.html | 9 -
.../indexed_db/basic_insert/index.html | 91 -
.../indexed_db/basic_insert/start.html | 9 -
tools/page_cycler/indexed_db/common.js | 32 -
tools/page_cycler/indexed_db/head.js | 125 -
tools/page_cycler/sample/page1/index.html | 9 -
tools/page_cycler/sample/page2/index.html | 9 -
tools/page_cycler/sample/page3/index.html | 9 -
tools/page_cycler/sample/page4/index.html | 9 -
tools/page_cycler/sample/pages.js | 10 -
tools/page_cycler/sample/start.html | 7 -
tools/page_cycler/startup_test_common/README | 4 -
.../startup_test_common/blank.html | 5 -
tools/page_cycler/startup_test_common/head.js | 7 -
tools/page_cycler/webpagereplay/README | 15 -
.../webpagereplay/extension/background.html | 2 -
.../webpagereplay/extension/background.js | 328 -
.../webpagereplay/extension/content.js | 14 -
.../webpagereplay/extension/manifest.json | 29 -
.../webpagereplay/extension/page_cycler.js | 54 -
.../webpagereplay/extension/start.js | 88 -
tools/page_cycler/webpagereplay/start.html | 26 -
tools/page_cycler/webpagereplay/start.js | 123 -
.../page_cycler/webpagereplay/tests/2012Q2.js | 77 -
.../page_cycler/webpagereplay/tests/2012Q3.js | 49 -
tools/perf/OWNERS | 6 -
tools/perf/PRESUBMIT.py | 35 -
tools/perf/benchmarks/__init__.py | 0
tools/perf/benchmarks/blink_perf.py | 19 -
tools/perf/benchmarks/dom_perf.py | 91 -
tools/perf/benchmarks/dromaeo.py | 76 -
tools/perf/benchmarks/image_decoding.py | 12 -
tools/perf/benchmarks/jsgamebench.py | 39 -
tools/perf/benchmarks/kraken.py | 52 -
tools/perf/benchmarks/media.py | 11 -
tools/perf/benchmarks/memory.py | 16 -
tools/perf/benchmarks/octane.py | 56 -
tools/perf/benchmarks/page_cycler.py | 91 -
tools/perf/benchmarks/pica.py | 20 -
tools/perf/benchmarks/robohornet_pro.py | 40 -
tools/perf/benchmarks/smoothness.py | 15 -
tools/perf/benchmarks/spaceport.py | 66 -
tools/perf/benchmarks/startup.py | 20 -
tools/perf/benchmarks/sunspider.py | 52 -
.../clear_system_cache/clear_system_cache.gyp | 23 -
.../clear_system_cache_main.cc | 55 -
tools/perf/measurements/__init__.py | 0
tools/perf/measurements/blink_perf.js | 20 -
tools/perf/measurements/blink_perf.py | 104 -
tools/perf/measurements/dromaeo.py | 30 -
tools/perf/measurements/image_decoding.py | 53 -
.../loading_measurement_analyzer.py | 183 -
.../loading_measurement_analyzer_unittest.py | 54 -
tools/perf/measurements/loading_profile.py | 58 -
tools/perf/measurements/loading_timeline.py | 34 -
tools/perf/measurements/loading_trace.py | 34 -
tools/perf/measurements/media.py | 30 -
tools/perf/measurements/memory.py | 80 -
tools/perf/measurements/page_cycler.js | 61 -
tools/perf/measurements/page_cycler.py | 104 -
.../perf/measurements/rasterize_and_record.py | 192 -
tools/perf/measurements/skpicture_printer.py | 33 -
tools/perf/measurements/smoothness.py | 75 -
tools/perf/measurements/startup.py | 74 -
tools/perf/measurements/tab_switching.py | 64 -
.../test_data/loading_profile.csv | 10 -
.../test_data/loading_timeline.csv | 10 -
tools/perf/metrics/__init__.py | 41 -
tools/perf/metrics/gpu_rendering_stats.py | 47 -
tools/perf/metrics/histogram.py | 40 -
tools/perf/metrics/histogram_util.py | 50 -
tools/perf/metrics/histogram_util_unittest.py | 27 -
tools/perf/metrics/io.py | 57 -
tools/perf/metrics/loading.py | 26 -
tools/perf/metrics/media.js | 176 -
tools/perf/metrics/media.py | 68 -
tools/perf/metrics/memory.py | 79 -
tools/perf/metrics/smoothness.js | 161 -
tools/perf/metrics/smoothness.py | 157 -
tools/perf/metrics/smoothness_unittest.py | 113 -
tools/perf/metrics/timeline.py | 67 -
tools/perf/page_sets/.gitignore | 12 -
tools/perf/page_sets/2012Q3.json | 228 -
tools/perf/page_sets/PRESUBMIT.py | 63 -
tools/perf/page_sets/__init__.py | 15 -
tools/perf/page_sets/blank_page.json | 6 -
.../perf/page_sets/blank_page/blank_page.html | 0
tools/perf/page_sets/dromaeo/domcoreattr.json | 8 -
.../perf/page_sets/dromaeo/domcoremodify.json | 8 -
.../perf/page_sets/dromaeo/domcorequery.json | 8 -
.../page_sets/dromaeo/domcoretraverse.json | 8 -
.../page_sets/dromaeo/jslibattrjquery.json | 8 -
.../page_sets/dromaeo/jslibattrprototype.json | 8 -
.../page_sets/dromaeo/jslibeventjquery.json | 8 -
.../dromaeo/jslibeventprototype.json | 8 -
.../page_sets/dromaeo/jslibmodifyjquery.json | 8 -
.../dromaeo/jslibmodifyprototype.json | 8 -
.../page_sets/dromaeo/jslibstylejquery.json | 8 -
.../dromaeo/jslibstyleprototype.json | 8 -
.../dromaeo/jslibtraversejquery.json | 8 -
.../dromaeo/jslibtraverseprototype.json | 8 -
.../page_sets/image_decoding_measurement.json | 12 -
tools/perf/page_sets/intl_ar_fa_he.json | 32 -
tools/perf/page_sets/intl_es_fr_pt-BR.json | 40 -
tools/perf/page_sets/intl_hi_ru.json | 46 -
tools/perf/page_sets/intl_ja_zh.json | 73 -
tools/perf/page_sets/intl_ko_th_vi.json | 52 -
tools/perf/page_sets/key_desktop_sites.json | 749 -
tools/perf/page_sets/key_mobile_sites.json | 232 -
tools/perf/page_sets/mobile_memory.json | 14 -
.../perf/page_sets/page_cycler/alexa_us.json | 26 -
tools/perf/page_sets/page_cycler/bloat.json | 7 -
tools/perf/page_sets/page_cycler/dhtml.json | 23 -
tools/perf/page_sets/page_cycler/dom.json | 15 -
.../page_cycler/indexed_db/basic_insert.json | 8 -
tools/perf/page_sets/page_cycler/intl1.json | 62 -
tools/perf/page_sets/page_cycler/intl2.json | 36 -
tools/perf/page_sets/page_cycler/morejs.json | 15 -
.../perf/page_sets/page_cycler/morejsnp.json | 15 -
tools/perf/page_sets/page_cycler/moz.json | 47 -
tools/perf/page_sets/page_cycler/moz2.json | 47 -
tools/perf/page_sets/pica.json | 16 -
tools/perf/page_sets/top_10.json | 62 -
tools/perf/page_sets/top_25.json | 413 -
.../perf/page_sets/tough_animation_cases.json | 22 -
.../keyframed_animations.html | 160 -
.../transform_transition_js_block.html | 45 -
.../transform_transitions.html | 130 -
tools/perf/page_sets/tough_canvas_cases.json | 40 -
.../canvas-animation-no-clear.html | 38 -
.../canvas2d_balls_common/bouncing_balls.html | 29 -
.../canvas2d_balls_common/bouncing_balls.js | 176 -
...ncing_balls_draw_back_as_aligned_canvas.js | 18 -
...g_balls_draw_back_as_aligned_image_data.js | 19 -
.../bouncing_balls_draw_back_as_canvas.js | 18 -
.../bouncing_balls_draw_back_as_gradient.js | 16 -
.../bouncing_balls_draw_back_as_image.js | 13 -
.../bouncing_balls_draw_back_as_white.js | 13 -
...uncing_balls_draw_ball_as_canvas_sprite.js | 41 -
...bouncing_balls_draw_ball_as_filled_path.js | 31 -
.../bouncing_balls_draw_ball_as_image.js | 20 -
...ng_balls_draw_ball_as_image_with_shadow.js | 24 -
.../bouncing_balls_draw_ball_as_rect.js | 18 -
.../bouncing_balls_draw_ball_as_text.js | 21 -
.../canvas2d_balls_common/parse_url.js | 26 -
.../compositing_huge_div/index.html | 46 -
.../tough_canvas_cases/many_images/bench.js | 29 -
.../many_images/images/generate_images.sh | 25 -
.../many_images/many_images.html | 443 -
.../many_images/single_image.html | 44 -
.../tough_canvas_cases/many_images/sprites.js | 41 -
tools/perf/page_sets/tough_image_cases.json | 8 -
tools/perf/page_sets/tough_layer_cases.json | 6 -
.../page_sets/tough_layer_cases/opacity.html | 42 -
tools/perf/page_sets/tough_layout_cases.json | 39 -
.../perf/page_sets/tough_scrolling_cases.json | 15 -
.../background_fixed.html | 50 -
.../page_sets/tough_scrolling_cases/busy.js | 40 -
.../tough_scrolling_cases/cust_scrollbar.html | 56 -
.../tough_scrolling_cases/div_scrolls.html | 52 -
.../fixed_nonstacking.html | 52 -
.../tough_scrolling_cases/fixed_stacking.html | 52 -
.../tough_scrolling_cases/iframe_scrolls.html | 50 -
.../tough_scrolling_cases/simple.html | 49 -
.../wheel_body_prevdefault.html | 54 -
.../wheel_div_prevdefault.html | 57 -
.../page_sets/tough_texture_upload_cases.json | 10 -
.../background_color_animation.html | 42 -
...lor_animation_and_transform_animation.html | 67 -
...kground_color_animation_with_gradient.html | 50 -
...with_gradient_and_transform_animation.html | 75 -
tools/perf/page_sets/tough_video_cases.json | 75 -
.../tough_video_cases/crowd.ogg.sha1 | 1 -
.../tough_video_cases/crowd.wav.sha1 | 1 -
.../tough_video_cases/crowd1080.mp4.sha1 | 1 -
.../tough_video_cases/crowd1080.ogv.sha1 | 1 -
.../tough_video_cases/crowd1080.webm.sha1 | 1 -
.../tough_video_cases/crowd2160.mp4.sha1 | 1 -
.../tough_video_cases/crowd2160.ogv.sha1 | 1 -
.../tough_video_cases/crowd2160.webm.sha1 | 1 -
.../tough_video_cases/crowd360.mp4.sha1 | 1 -
.../tough_video_cases/crowd360.ogv.sha1 | 1 -
.../tough_video_cases/crowd360.webm.sha1 | 1 -
.../tough_video_cases/crowd480.webm.sha1 | 1 -
.../tough_video_cases/crowd720.webm.sha1 | 1 -
.../tough_video_cases/tulip2.m4a.sha1 | 1 -
.../tough_video_cases/tulip2.mp3.sha1 | 1 -
.../tough_video_cases/tulip2.mp4.sha1 | 1 -
.../tough_video_cases/tulip2.ogg.sha1 | 1 -
.../tough_video_cases/tulip2.ogv.sha1 | 1 -
.../tough_video_cases/tulip2.wav.sha1 | 1 -
.../tough_video_cases/tulip2.webm.sha1 | 1 -
.../page_sets/tough_video_cases/video.html | 37 -
tools/perf/page_sets/typical_25.json | 92 -
tools/perf/perf_tools/__init__.py | 39 -
tools/perf/perf_tools/bootstrap_deps | 29 -
tools/perf/profile_creators/__init__.py | 4 -
.../profile_creators/small_profile_creator.py | 23 -
tools/perf/record_wpr | 17 -
tools/perf/run_benchmark | 13 -
tools/perf/run_measurement | 102 -
tools/perf/run_multipage_benchmarks | 16 -
tools/perf/run_tests | 35 -
tools/perf/test-info.json | 295 -
tools/perf/trace-info.json | 342 -
tools/perf/unit-info.json | 94 -
tools/perf/utils/results_viewer/src/base.js | 84 -
tools/perf/utils/results_viewer/src/main.css | 13 -
tools/perf/utils/results_viewer/src/main.js | 293 -
.../results_viewer/src/results_viewer.html | 39 -
.../results_viewer/src/results_viewer.js | 51 -
tools/perf/utils/results_viewer/src/ui.js | 83 -
tools/perf_expectations/PRESUBMIT.py | 42 -
tools/perf_expectations/README.txt | 2 -
.../chromium_perf_expectations.cfg | 4 -
tools/perf_expectations/make_expectations.py | 375 -
.../perf_expectations/perf_expectations.json | 746 -
.../perf_expectations/sample_test_cases.json | 28 -
.../tests/perf_expectations_unittest.py | 167 -
.../update_perf_expectations.py | 263 -
.../update_perf_expectations_unittest.py | 204 -
tools/playback_benchmark/common.js | 320 -
tools/playback_benchmark/playback.js | 258 -
tools/playback_benchmark/playback_driver.py | 195 -
tools/playback_benchmark/proxy_handler.py | 122 -
tools/playback_benchmark/run.py | 44 -
tools/prepare-bisect-perf-regression.py | 64 -
tools/python/google/__init__.py | 1 -
tools/python/google/gethash_timer.py | 149 -
tools/python/google/httpd_config/httpd.conf | 734 -
tools/python/google/httpd_config/httpd2.conf | 280 -
tools/python/google/httpd_config/httpd2.pem | 110 -
.../google/httpd_config/httpd2_linux.conf | 144 -
.../google/httpd_config/httpd2_mac.conf | 229 -
tools/python/google/httpd_config/mime.types | 599 -
.../google/httpd_config/root_ca_cert.pem | 102 -
tools/python/google/httpd_utils.py | 200 -
tools/python/google/logging_utils.py | 82 -
tools/python/google/path_utils.py | 84 -
tools/python/google/platform_utils.py | 23 -
tools/python/google/platform_utils_linux.py | 148 -
tools/python/google/platform_utils_mac.py | 145 -
tools/python/google/platform_utils_win.py | 194 -
tools/python/google/process_utils.py | 221 -
tools/run-bisect-manual-test.py | 113 -
tools/run-bisect-perf-regression.cfg | 89 -
tools/run-bisect-perf-regression.py | 179 -
tools/safely-roll-blink.py | 127 -
tools/set_default_handler/DEPS | 4 -
.../set_default_handler.gyp | 25 -
.../set_default_handler_main.cc | 67 -
tools/sharding_supervisor/PRESUBMIT.py | 24 -
.../data/gtest_results.xml0 | 23 -
.../data/gtest_results.xml1 | 19 -
.../data/gtest_results_expected.xml | 22 -
tools/sharding_supervisor/dummy_test.py | 12 -
.../sharding_supervisor.py | 84 -
tools/sharding_supervisor/stdio_buffer.py | 52 -
tools/site_compare/command_line.py | 802 -
tools/site_compare/commands/__init__.py | 0
tools/site_compare/commands/compare2.py | 170 -
tools/site_compare/commands/maskmaker.py | 272 -
tools/site_compare/commands/measure.py | 52 -
tools/site_compare/commands/scrape.py | 59 -
tools/site_compare/commands/timeload.py | 144 -
tools/site_compare/drivers/__init__.py | 13 -
tools/site_compare/drivers/win32/__init__.py | 0
tools/site_compare/drivers/win32/keyboard.py | 201 -
tools/site_compare/drivers/win32/mouse.py | 222 -
tools/site_compare/drivers/win32/windowing.py | 366 -
tools/site_compare/operators/__init__.py | 23 -
tools/site_compare/operators/equals.py | 37 -
.../operators/equals_with_mask.py | 57 -
tools/site_compare/scrapers/__init__.py | 33 -
.../site_compare/scrapers/chrome/__init__.py | 36 -
.../scrapers/chrome/chrome011010.py | 42 -
.../scrapers/chrome/chrome01970.py | 42 -
.../scrapers/chrome/chromebase.py | 199 -
.../site_compare/scrapers/firefox/__init__.py | 28 -
.../site_compare/scrapers/firefox/firefox2.py | 249 -
tools/site_compare/scrapers/ie/__init__.py | 28 -
tools/site_compare/scrapers/ie/ie7.py | 210 -
tools/site_compare/site_compare.py | 176 -
tools/site_compare/utils/__init__.py | 0
tools/site_compare/utils/browser_iterate.py | 199 -
tools/sort-headers.py | 185 -
tools/stats_viewer/OpenDialog.Designer.cs | 88 -
tools/stats_viewer/OpenDialog.cs | 45 -
tools/stats_viewer/OpenDialog.resx | 120 -
tools/stats_viewer/Properties/AssemblyInfo.cs | 33 -
.../Properties/Resources.Designer.cs | 71 -
tools/stats_viewer/Properties/Resources.resx | 117 -
.../Properties/Settings.Designer.cs | 30 -
.../stats_viewer/Properties/Settings.settings | 7 -
tools/stats_viewer/Resources.Designer.cs | 77 -
tools/stats_viewer/Resources.resx | 127 -
tools/stats_viewer/Resources/kitten.png | Bin 36163 -> 0 bytes
.../Resources/kittenbackground.png | Bin 1275 -> 0 bytes
tools/stats_viewer/program.cs | 23 -
tools/stats_viewer/stats_table.cs | 546 -
tools/stats_viewer/stats_viewer.Designer.cs | 392 -
tools/stats_viewer/stats_viewer.cs | 510 -
tools/stats_viewer/stats_viewer.csproj | 107 -
tools/stats_viewer/stats_viewer.resx | 1129 -
tools/stats_viewer/win32.cs | 50 -
tools/swarm_client | 1 -
tools/swig/swig.py | 45 -
tools/symsrc/COPYING-pefile | 27 -
tools/symsrc/README.chromium | 14 -
tools/symsrc/img_fingerprint.py | 34 -
tools/symsrc/pdb_fingerprint_from_img.py | 64 -
tools/symsrc/pefile.py | 3729 -
tools/symsrc/source_index.py | 226 -
tools/sync-webkit-git.py | 221 -
tools/tcmalloc/print-live-objects.py | 91 -
tools/telemetry/.gitignore | 4 -
tools/telemetry/OWNERS | 11 -
tools/telemetry/PRESUBMIT.py | 53 -
tools/telemetry/README | 5 -
tools/telemetry/build/__init__.py | 3 -
tools/telemetry/build/update_docs.py | 148 -
.../docs/telemetry.core.browser.html | 176 -
.../telemetry.core.browser_credentials.html | 78 -
.../docs/telemetry.core.browser_finder.html | 179 -
.../docs/telemetry.core.browser_options.html | 79 -
.../telemetry.core.chrome.adb_commands.html | 173 -
...y.core.chrome.android_browser_backend.html | 318 -
...ry.core.chrome.android_browser_finder.html | 102 -
...telemetry.core.chrome.browser_backend.html | 218 -
...etry.core.chrome.cros_browser_backend.html | 177 -
...metry.core.chrome.cros_browser_finder.html | 94 -
.../telemetry.core.chrome.cros_interface.html | 250 -
.../docs/telemetry.core.chrome.crx_id.html | 41 -
...y.core.chrome.desktop_browser_backend.html | 140 -
...ry.core.chrome.desktop_browser_finder.html | 100 -
...ry.core.chrome.extension_dict_backend.html | 133 -
...e.chrome.facebook_credentials_backend.html | 88 -
...chrome.form_based_credentials_backend.html | 79 -
...sed_credentials_backend_unittest_base.html | 343 -
...ore.chrome.google_credentials_backend.html | 88 -
.../telemetry/docs/telemetry.core.chrome.html | 65 -
...lemetry.core.chrome.inspector_backend.html | 198 -
...lemetry.core.chrome.inspector_console.html | 60 -
...elemetry.core.chrome.inspector_memory.html | 133 -
...lemetry.core.chrome.inspector_network.html | 51 -
.../telemetry.core.chrome.inspector_page.html | 74 -
...lemetry.core.chrome.inspector_runtime.html | 72 -
...emetry.core.chrome.inspector_timeline.html | 133 -
...core.chrome.misc_web_contents_backend.html | 68 -
.../telemetry.core.chrome.png_bitmap.html | 100 -
...elemetry.core.chrome.tab_list_backend.html | 85 -
.../telemetry.core.chrome.trace_result.html | 54 -
...telemetry.core.chrome.tracing_backend.html | 160 -
.../docs/telemetry.core.chrome.websocket.html | 40 -
.../docs/telemetry.core.discover.html | 55 -
.../docs/telemetry.core.exceptions.html | 338 -
.../docs/telemetry.core.extension_dict.html | 64 -
.../docs/telemetry.core.extension_page.html | 103 -
.../telemetry.core.extension_to_load.html | 194 -
tools/telemetry/docs/telemetry.core.html | 57 -
...lemetry.core.memory_cache_http_server.html | 560 -
...ore.platform.android_platform_backend.html | 102 -
...y.core.platform.cros_platform_backend.html | 101 -
.../docs/telemetry.core.platform.html | 108 -
....core.platform.linux_platform_backend.html | 97 -
...ry.core.platform.mac_platform_backend.html | 98 -
...emetry.core.platform.platform_backend.html | 77 -
....core.platform.posix_platform_backend.html | 94 -
.../telemetry.core.platform.profiler.html | 73 -
....platform.profiler.iprofiler_profiler.html | 76 -
....platform.profiler.java_heap_profiler.html | 77 -
....core.platform.profiler.perf_profiler.html | 76 -
...ore.platform.profiler.profiler_finder.html | 38 -
...ore.platform.profiler.sample_profiler.html | 76 -
...tform.profiler.tcmalloc_heap_profiler.html | 76 -
...core.platform.profiler.trace_profiler.html | 72 -
...ry.core.platform.win_platform_backend.html | 108 -
.../docs/telemetry.core.possible_browser.html | 63 -
.../docs/telemetry.core.profile_creator.html | 53 -
.../docs/telemetry.core.profile_types.html | 51 -
tools/telemetry/docs/telemetry.core.tab.html | 168 -
.../docs/telemetry.core.tab_list.html | 61 -
.../telemetry.core.temporary_http_server.html | 76 -
.../telemetry.core.timeline.async_slice.html | 77 -
.../docs/telemetry.core.timeline.bounds.html | 71 -
.../docs/telemetry.core.timeline.counter.html | 113 -
.../docs/telemetry.core.timeline.event.html | 55 -
...lemetry.core.timeline.event_container.html | 55 -
.../docs/telemetry.core.timeline.html | 39 -
.../telemetry.core.timeline.importer.html | 61 -
...etry.core.timeline.inspector_importer.html | 76 -
.../docs/telemetry.core.timeline.model.html | 85 -
.../docs/telemetry.core.timeline.process.html | 87 -
.../docs/telemetry.core.timeline.sample.html | 77 -
.../docs/telemetry.core.timeline.slice.html | 90 -
.../docs/telemetry.core.timeline.thread.html | 118 -
...ry.core.timeline.trace_event_importer.html | 78 -
.../docs/telemetry.core.user_agent.html | 33 -
tools/telemetry/docs/telemetry.core.util.html | 138 -
.../docs/telemetry.core.web_contents.html | 94 -
.../docs/telemetry.core.wpr_modes.html | 25 -
.../docs/telemetry.core.wpr_server.html | 74 -
tools/telemetry/docs/telemetry.html | 491 -
...lemetry.page.actions.all_page_actions.html | 36 -
.../telemetry.page.actions.click_element.html | 99 -
.../docs/telemetry.page.actions.html | 33 -
...metry.page.actions.js_collect_garbage.html | 96 -
.../telemetry.page.actions.page_action.html | 205 -
.../docs/telemetry.page.actions.play.html | 107 -
.../docs/telemetry.page.actions.reload.html | 97 -
.../docs/telemetry.page.actions.scroll.html | 85 -
.../docs/telemetry.page.actions.wait.html | 98 -
...y.page.block_page_measurement_results.html | 144 -
...age.buildbot_page_measurement_results.html | 147 -
.../docs/telemetry.page.cloud_storage.html | 40 -
...try.page.csv_page_measurement_results.html | 144 -
.../telemetry.page.gtest_test_results.html | 125 -
tools/telemetry/docs/telemetry.page.html | 54 -
tools/telemetry/docs/telemetry.page.page.html | 79 -
.../docs/telemetry.page.page_filter.html | 66 -
.../docs/telemetry.page.page_measurement.html | 248 -
...lemetry.page.page_measurement_results.html | 177 -
...elemetry.page.page_measurement_runner.html | 106 -
...y.page.page_measurement_unittest_base.html | 346 -
...telemetry.page.page_measurement_value.html | 61 -
.../docs/telemetry.page.page_runner.html | 84 -
.../docs/telemetry.page.page_set.html | 82 -
.../telemetry.page.page_set_archive_info.html | 71 -
.../docs/telemetry.page.page_test.html | 194 -
.../telemetry.page.page_test_results.html | 120 -
.../docs/telemetry.page.page_test_runner.html | 104 -
.../telemetry.page.perf_tests_helper.html | 41 -
.../docs/telemetry.page.record_wpr.html | 140 -
tools/telemetry/docs/telemetry.test.html | 74 -
.../telemetry/docs/telemetry.test_runner.html | 229 -
.../telemetry.unittest.gtest_testrunner.html | 121 -
tools/telemetry/docs/telemetry.unittest.html | 41 -
...emetry.unittest.options_for_unittests.html | 31 -
.../docs/telemetry.unittest.run_tests.html | 42 -
.../docs/telemetry.unittest.simple_mock.html | 106 -
.../docs/telemetry.unittest.system_stub.html | 164 -
.../telemetry.unittest.tab_test_case.html | 334 -
.../examples/credentials_example.json | 10 -
.../examples/list_available_browsers | 21 -
.../telemetry/examples/telemetry_perf_test.py | 44 -
tools/telemetry/examples/top1k | 999 -
tools/telemetry/run_tests | 21 -
.../support/html_output/results-template.html | 598 -
tools/telemetry/telemetry/__init__.py | 51 -
tools/telemetry/telemetry/core/__init__.py | 3 -
.../telemetry/core/backends/__init__.py | 3 -
.../core/backends/browser_backend.py | 96 -
.../core/backends/chrome/__init__.py | 3 -
.../backends/chrome/chrome_browser_backend.py | 231 -
.../core/backends/webdriver/__init__.py | 3 -
.../webdriver/webdriver_browser_backend.py | 70 -
.../webdriver_desktop_browser_finder.py | 103 -
.../webdriver/webdriver_tab_backend.py | 120 -
.../webdriver/webdriver_tab_list_backend.py | 47 -
tools/telemetry/telemetry/core/browser.py | 319 -
.../telemetry/core/browser_credentials.py | 145 -
.../core/browser_credentials_unittest.py | 71 -
.../telemetry/core/browser_finder.py | 106 -
.../telemetry/core/browser_options.py | 242 -
.../core/browser_options_unittest.py | 99 -
.../telemetry/core/browser_unittest.py | 125 -
.../telemetry/core/chrome/__init__.py | 3 -
.../telemetry/core/chrome/adb_commands.py | 182 -
.../core/chrome/android_browser_backend.py | 304 -
.../core/chrome/android_browser_finder.py | 185 -
.../chrome/android_browser_finder_unittest.py | 89 -
.../core/chrome/chromeos_login_ext/main.html | 9 -
.../core/chrome/chromeos_login_ext/main.js | 17 -
.../chrome/chromeos_login_ext/manifest.json | 16 -
.../core/chrome/cros_browser_backend.py | 407 -
.../core/chrome/cros_browser_finder.py | 110 -
.../chrome/cros_browser_finder_unittest.py | 11 -
.../telemetry/core/chrome/cros_interface.py | 345 -
.../core/chrome/cros_interface_unittest.py | 158 -
.../telemetry/telemetry/core/chrome/crx_id.py | 18 -
.../core/chrome/desktop_browser_backend.py | 190 -
.../core/chrome/desktop_browser_finder.py | 251 -
.../chrome/desktop_browser_finder_unittest.py | 188 -
.../core/chrome/extension_dict_backend.py | 71 -
.../chrome/facebook_credentials_backend.py | 32 -
.../facebook_credentials_backend_unittest.py | 16 -
.../chrome/form_based_credentials_backend.py | 110 -
...based_credentials_backend_unittest_base.py | 128 -
.../core/chrome/google_credentials_backend.py | 31 -
.../google_credentials_backend_unittest.py | 16 -
.../core/chrome/inspector_backend.py | 326 -
.../core/chrome/inspector_console.py | 61 -
.../core/chrome/inspector_console_unittest.py | 37 -
.../telemetry/core/chrome/inspector_memory.py | 50 -
.../core/chrome/inspector_memory_unittest.py | 25 -
.../core/chrome/inspector_network.py | 17 -
.../telemetry/core/chrome/inspector_page.py | 114 -
.../core/chrome/inspector_page_unittest.py | 55 -
.../core/chrome/inspector_runtime.py | 56 -
.../core/chrome/inspector_runtime_unittest.py | 31 -
.../core/chrome/inspector_timeline.py | 71 -
.../chrome/inspector_timeline_unittest.py | 37 -
.../core/chrome/misc_web_contents_backend.py | 38 -
.../telemetry/core/chrome/png_bitmap.py | 72 -
.../core/chrome/png_bitmap_unittest.py | 27 -
.../telemetry/core/chrome/tab_list_backend.py | 135 -
.../telemetry/core/chrome/trace_result.py | 16 -
.../telemetry/core/chrome/tracing_backend.py | 161 -
.../core/chrome/tracing_backend_unittest.py | 92 -
.../telemetry/core/chrome/websocket.py | 19 -
.../core/chrome/websocket_unittest.py | 10 -
tools/telemetry/telemetry/core/discover.py | 73 -
.../telemetry/core/discover_unittest.py | 26 -
tools/telemetry/telemetry/core/exceptions.py | 26 -
.../telemetry/core/extension_dict.py | 25 -
.../telemetry/core/extension_page.py | 12 -
.../telemetry/core/extension_to_load.py | 65 -
.../telemetry/core/extension_unittest.py | 162 -
.../core/memory_cache_http_server.py | 192 -
.../telemetry/core/platform/__init__.py | 123 -
.../core/platform/android_platform_backend.py | 134 -
.../core/platform/cros_platform_backend.py | 75 -
.../core/platform/desktop_platform_backend.py | 54 -
.../core/platform/linux_platform_backend.py | 50 -
.../core/platform/mac_platform_backend.py | 72 -
.../core/platform/platform_backend.py | 59 -
.../core/platform/posix_platform_backend.py | 51 -
.../posix_platform_backend_unittest.py | 34 -
.../telemetry/core/platform/proc_util.py | 65 -
.../core/platform/profiler/__init__.py | 48 -
.../platform/profiler/iprofiler_profiler.py | 100 -
.../platform/profiler/java_heap_profiler.py | 72 -
.../core/platform/profiler/perf_profiler.py | 128 -
.../profiler/perf_profiler_unittest.py | 31 -
.../core/platform/profiler/profiler_finder.py | 27 -
.../core/platform/profiler/sample_profiler.py | 90 -
.../profiler/tcmalloc_heap_profiler.py | 125 -
.../platform/profiler/tcpdump_profiler.py | 111 -
.../platform/profiler/testdata/perf.profile | Bin 157980 -> 0 bytes
.../core/platform/profiler/trace_profiler.py | 41 -
.../core/platform/win_platform_backend.py | 167 -
.../telemetry/core/possible_browser.py | 30 -
.../telemetry/core/profile_creator.py | 13 -
.../telemetry/telemetry/core/profile_types.py | 71 -
.../telemetry/core/profile_types_unittest.py | 32 -
.../telemetry/core/repeat_options.py | 61 -
tools/telemetry/telemetry/core/tab.py | 104 -
tools/telemetry/telemetry/core/tab_list.py | 18 -
.../telemetry/telemetry/core/tab_unittest.py | 84 -
.../telemetry/core/temporary_http_server.py | 69 -
.../core/temporary_http_server_unittest.py | 25 -
.../telemetry/telemetry/core/timeline/OWNERS | 2 -
.../telemetry/core/timeline/__init__.py | 0
.../telemetry/core/timeline/async_slice.py | 28 -
.../telemetry/core/timeline/bounds.py | 71 -
.../telemetry/core/timeline/counter.py | 82 -
.../telemetry/core/timeline/event.py | 28 -
.../core/timeline/event_container.py | 15 -
.../telemetry/core/timeline/event_unittest.py | 8 -
.../telemetry/core/timeline/importer.py | 25 -
.../core/timeline/inspector_importer.py | 69 -
.../timeline/inspector_importer_unittest.py | 112 -
.../telemetry/core/timeline/model.py | 128 -
.../telemetry/core/timeline/model_unittest.py | 8 -
.../telemetry/core/timeline/process.py | 72 -
.../telemetry/core/timeline/sample.py | 19 -
.../telemetry/core/timeline/slice.py | 52 -
.../telemetry/core/timeline/slice_unittest.py | 26 -
.../telemetry/core/timeline/thread.py | 207 -
.../core/timeline/trace_event_importer.py | 349 -
.../timeline/trace_event_importer_unittest.py | 921 -
tools/telemetry/telemetry/core/user_agent.py | 28 -
.../telemetry/core/user_agent_unittest.py | 15 -
tools/telemetry/telemetry/core/util.py | 108 -
.../telemetry/telemetry/core/util_unittest.py | 18 -
.../telemetry/telemetry/core/web_contents.py | 73 -
tools/telemetry/telemetry/core/wpr_modes.py | 7 -
tools/telemetry/telemetry/core/wpr_server.py | 82 -
tools/telemetry/telemetry/page/__init__.py | 3 -
.../telemetry/page/actions/__init__.py | 0
.../page/actions/all_page_actions.py | 21 -
.../telemetry/page/actions/click_element.py | 42 -
.../page/actions/click_element_unittest.py | 46 -
.../page/actions/js_collect_garbage.py | 11 -
.../telemetry/page/actions/media_action.js | 38 -
.../telemetry/page/actions/media_action.py | 46 -
.../telemetry/page/actions/page_action.py | 61 -
.../telemetry/telemetry/page/actions/play.js | 42 -
.../telemetry/telemetry/page/actions/play.py | 42 -
.../telemetry/page/actions/play_unittest.py | 108 -
.../telemetry/page/actions/reload.py | 14 -
.../telemetry/page/actions/scroll.js | 182 -
.../telemetry/page/actions/scroll.py | 82 -
.../telemetry/page/actions/scroll_unittest.py | 98 -
.../telemetry/telemetry/page/actions/seek.js | 63 -
.../telemetry/telemetry/page/actions/seek.py | 47 -
.../telemetry/page/actions/seek_unittest.py | 76 -
.../telemetry/page/actions/tap_element.py | 45 -
.../telemetry/telemetry/page/actions/wait.py | 59 -
.../telemetry/page/actions/wait_unittest.py | 26 -
.../page/block_page_measurement_results.py | 33 -
...block_page_measurement_results_unittest.py | 63 -
.../page/buildbot_page_measurement_results.py | 119 -
...ldbot_page_measurement_results_unittest.py | 270 -
.../telemetry/telemetry/page/cloud_storage.py | 128 -
.../page/csv_page_measurement_results.py | 85 -
.../csv_page_measurement_results_unittest.py | 127 -
.../telemetry/page/gtest_test_results.py | 75 -
.../page/html_page_measurement_results.py | 112 -
.../html_page_measurement_results_unittest.py | 203 -
tools/telemetry/telemetry/page/page.py | 140 -
tools/telemetry/telemetry/page/page_filter.py | 41 -
.../telemetry/page/page_measurement.py | 143 -
.../page/page_measurement_results.py | 112 -
.../page/page_measurement_results_unittest.py | 105 -
.../telemetry/page/page_measurement_runner.py | 26 -
.../page/page_measurement_unittest.py | 147 -
.../page/page_measurement_unittest_base.py | 48 -
.../telemetry/page/page_measurement_value.py | 32 -
tools/telemetry/telemetry/page/page_runner.py | 447 -
.../telemetry/page/page_runner_repeat.py | 61 -
.../telemetry/page/page_runner_unittest.py | 280 -
tools/telemetry/telemetry/page/page_set.py | 122 -
.../telemetry/page/page_set_archive_info.py | 145 -
.../page/page_set_archive_info_unittest.py | 161 -
.../telemetry/page/page_set_unittest.py | 59 -
tools/telemetry/telemetry/page/page_test.py | 220 -
.../telemetry/page/page_test_results.py | 66 -
.../telemetry/page/page_test_runner.py | 177 -
.../telemetry/page/page_test_unittest.py | 117 -
.../telemetry/telemetry/page/page_unittest.py | 141 -
.../telemetry/page/perf_tests_helper.py | 27 -
tools/telemetry/telemetry/page/record_wpr.py | 122 -
.../telemetry/page/test_expectations.py | 72 -
.../page/test_expectations_unittest.py | 85 -
tools/telemetry/telemetry/test.py | 74 -
tools/telemetry/telemetry/test_runner.py | 162 -
.../telemetry/telemetry/unittest/__init__.py | 12 -
.../telemetry/unittest/gtest_testrunner.py | 51 -
.../unittest/options_for_unittests.py | 33 -
.../telemetry/telemetry/unittest/run_tests.py | 142 -
.../telemetry/unittest/simple_mock.py | 98 -
.../unittest/simple_mock_unittest.py | 84 -
.../telemetry/unittest/system_stub.py | 157 -
.../telemetry/unittest/tab_test_case.py | 44 -
tools/telemetry/third_party/.gitignore | 1 -
.../third_party/davclient/README.chromium | 17 -
.../third_party/davclient/davclient.py | 312 -
.../telemetry/third_party/png/README.chromium | 17 -
tools/telemetry/third_party/png/png.py | 3857 -
.../third_party/websocket-client/.gitignore | 8 -
.../third_party/websocket-client/LICENSE | 506 -
.../websocket-client/README.chromium | 20 -
.../third_party/websocket-client/README.rst | 140 -
.../third_party/websocket-client/websocket.py | 756 -
tools/telemetry/unittest_data/.gitignore | 1 -
tools/telemetry/unittest_data/bear.webm | Bin 219229 -> 0 bytes
tools/telemetry/unittest_data/blank.html | 8 -
.../component_extension/background.js | 8 -
.../component_extension/manifest.json | 10 -
.../discoverable_classes/__init__.py | 3 -
.../discover_dummyclass.py | 8 -
.../dummy_profile_creator.py | 9 -
.../unittest_data/dom_counter_sample.html | 12 -
tools/telemetry/unittest_data/green_rect.html | 19 -
tools/telemetry/unittest_data/image.png | Bin 10502 -> 0 bytes
.../unittest_data/image_decoding.html | 8 -
.../unittest_data/non_scrollable_page.html | 10 -
.../page_that_logs_to_console.html | 14 -
.../unittest_data/page_with_link.html | 8 -
.../unittest_data/scrollable_page.html | 9 -
.../simple_extension/background.js | 8 -
.../simple_extension/manifest.json | 9 -
tools/telemetry/unittest_data/video_test.html | 7 -
tools/telemetry/update_docs | 11 -
tools/telemetry_tools/__init__.py | 4 -
tools/telemetry_tools/bootstrap_deps | 35 -
tools/telemetry_tools/telemetry_bootstrap.py | 162 -
tools/trace/trace.html | 287 -
tools/trace/trace_data.js | 1050 -
tools/traceline/svgui/README | 12 -
tools/traceline/svgui/startup-release.json | 178 -
tools/traceline/svgui/traceline.css | 73 -
tools/traceline/svgui/traceline.js | 693 -
tools/traceline/svgui/traceline.xml | 11 -
tools/traceline/traceline/Makefile | 30 -
tools/traceline/traceline/README | 21 -
tools/traceline/traceline/assembler.h | 576 -
.../traceline/traceline/assembler_unittest.cc | 83 -
.../traceline/traceline/assembler_unittest.sh | 7 -
.../traceline/assembler_unittest.sh.expected | 54 -
.../traceline/dump_syscalls_idarub.rb | 32 -
tools/traceline/traceline/logging.h | 28 -
tools/traceline/traceline/main.cc | 1339 -
tools/traceline/traceline/rdtsc.h | 43 -
tools/traceline/traceline/scripts/__init__.py | 0
tools/traceline/traceline/scripts/alloc.py | 27 -
tools/traceline/traceline/scripts/crit_sec.js | 87 -
tools/traceline/traceline/scripts/crit_sec.py | 57 -
.../traceline/scripts/filter_short.py | 34 -
.../traceline/scripts/filter_split.sh | 14 -
tools/traceline/traceline/scripts/heap.js | 69 -
tools/traceline/traceline/scripts/scstats.py | 32 -
tools/traceline/traceline/scripts/split.py | 31 -
tools/traceline/traceline/scripts/syscalls.py | 942 -
.../traceline/sidestep/ia32_modrm_map.cc | 92 -
.../traceline/sidestep/ia32_opcode_map.cc | 1159 -
.../traceline/sidestep/mini_disassembler.cc | 416 -
.../traceline/sidestep/mini_disassembler.h | 156 -
.../sidestep/mini_disassembler_types.h | 197 -
tools/traceline/traceline/stubs.asm | 132 -
tools/traceline/traceline/sym_resolver.h | 167 -
tools/traceline/traceline/syscall_map.h | 2116 -
tools/unused-symbols-report.py | 171 -
tools/update_reference_build.py | 231 -
tools/usb_ids/usb_ids.py | 110 -
tools/webrtc_perf_expectations/README | 13 -
.../perf_expectations.json | 8 -
.../webrtc_perf_expectations.cfg | 4 -
tools/win/copy-installer.bat | 134 -
tools/win/link_limiter/build_link_limiter.py | 99 -
tools/win/link_limiter/limiter.cc | 337 -
tools/win/sizeviewer/README.chromium | 2 -
tools/win/sizeviewer/code_tally.exe | Bin 281088 -> 0 bytes
tools/win/sizeviewer/sizeviewer.py | 95 -
tools/win/sizeviewer/template.html | 199 -
tools/win/split_link/check_installed.py | 46 -
tools/win/split_link/graph_dependencies.py | 89 -
tools/win/split_link/install_split_link.py | 100 -
tools/win/split_link/split_link.cc | 258 -
tools/win/split_link/split_link.py | 420 -
tools/win/split_link/viz.js/COPYING | 129 -
tools/win/split_link/viz.js/viz.js | 201588 ---------------
tools/win/toolchain/7z/7z.dll | Bin 1422336 -> 0 bytes
tools/win/toolchain/7z/7z.exe | Bin 284160 -> 0 bytes
tools/win/toolchain/7z/LICENSE | 57 -
tools/win/toolchain/toolchain.py | 711 -
1341 files changed, 395845 deletions(-)
delete mode 100644 tools/DEPS
delete mode 100644 tools/OWNERS
delete mode 100644 tools/PRESUBMIT.py
delete mode 100644 tools/android/OWNERS
delete mode 100644 tools/android/adb_reboot/adb_reboot.c
delete mode 100644 tools/android/adb_reboot/adb_reboot.gyp
delete mode 100644 tools/android/android_tools.gyp
delete mode 100755 tools/android/asan/asanwrapper.sh
delete mode 100644 tools/android/common/adb_connection.cc
delete mode 100644 tools/android/common/adb_connection.h
delete mode 100644 tools/android/common/common.gyp
delete mode 100644 tools/android/common/daemon.cc
delete mode 100644 tools/android/common/daemon.h
delete mode 100644 tools/android/common/net.cc
delete mode 100644 tools/android/common/net.h
delete mode 100644 tools/android/device_stats_monitor/device_stats_monitor.cc
delete mode 100644 tools/android/device_stats_monitor/device_stats_monitor.gyp
delete mode 100644 tools/android/fake_dns/DEPS
delete mode 100644 tools/android/fake_dns/fake_dns.cc
delete mode 100644 tools/android/fake_dns/fake_dns.gyp
delete mode 100755 tools/android/find_unused_resources.py
delete mode 100644 tools/android/findbugs_plugin/README
delete mode 100644 tools/android/findbugs_plugin/build.xml
delete mode 100644 tools/android/findbugs_plugin/findbugs.xml
delete mode 100644 tools/android/findbugs_plugin/findbugs_plugin.gyp
delete mode 100644 tools/android/findbugs_plugin/lib/chromiumPlugin.jar
delete mode 100644 tools/android/findbugs_plugin/messages.xml
delete mode 100644 tools/android/findbugs_plugin/src/org/chromium/tools/findbugs/plugin/SynchronizedMethodDetector.java
delete mode 100644 tools/android/findbugs_plugin/src/org/chromium/tools/findbugs/plugin/SynchronizedThisDetector.java
delete mode 100644 tools/android/findbugs_plugin/test/expected_result.txt
delete mode 100644 tools/android/findbugs_plugin/test/java/src/org/chromium/tools/findbugs/plugin/SimpleSynchronizedMethod.java
delete mode 100644 tools/android/findbugs_plugin/test/java/src/org/chromium/tools/findbugs/plugin/SimpleSynchronizedStaticMethod.java
delete mode 100644 tools/android/findbugs_plugin/test/java/src/org/chromium/tools/findbugs/plugin/SimpleSynchronizedThis.java
delete mode 100755 tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py
delete mode 100644 tools/android/forwarder/forwarder.cc
delete mode 100644 tools/android/forwarder/forwarder.gyp
delete mode 100644 tools/android/forwarder2/command.cc
delete mode 100644 tools/android/forwarder2/command.h
delete mode 100644 tools/android/forwarder2/common.cc
delete mode 100644 tools/android/forwarder2/common.h
delete mode 100644 tools/android/forwarder2/daemon.cc
delete mode 100644 tools/android/forwarder2/daemon.h
delete mode 100644 tools/android/forwarder2/device_controller.cc
delete mode 100644 tools/android/forwarder2/device_controller.h
delete mode 100644 tools/android/forwarder2/device_forwarder_main.cc
delete mode 100644 tools/android/forwarder2/device_listener.cc
delete mode 100644 tools/android/forwarder2/device_listener.h
delete mode 100644 tools/android/forwarder2/forwarder.cc
delete mode 100644 tools/android/forwarder2/forwarder.gyp
delete mode 100644 tools/android/forwarder2/forwarder.h
delete mode 100644 tools/android/forwarder2/host_controller.cc
delete mode 100644 tools/android/forwarder2/host_controller.h
delete mode 100644 tools/android/forwarder2/host_forwarder_main.cc
delete mode 100644 tools/android/forwarder2/pipe_notifier.cc
delete mode 100644 tools/android/forwarder2/pipe_notifier.h
delete mode 100644 tools/android/forwarder2/socket.cc
delete mode 100644 tools/android/forwarder2/socket.h
delete mode 100644 tools/android/md5sum/md5sum.cc
delete mode 100644 tools/android/md5sum/md5sum.gyp
delete mode 100644 tools/android/memdump/memdump.cc
delete mode 100644 tools/android/memdump/memdump.gyp
delete mode 100755 tools/android/memdump/memreport.py
delete mode 100755 tools/android/memdump/memsymbols.py
delete mode 100755 tools/android/remove_strings.py
delete mode 100644 tools/bash-completion
delete mode 100755 tools/bisect-builds.py
delete mode 100755 tools/bisect-manual-test.py
delete mode 100755 tools/bisect-perf-regression.py
delete mode 100644 tools/bisect_test.py
delete mode 100644 tools/bisect_utils.py
delete mode 100755 tools/checkbins/checkbins.py
delete mode 100644 tools/checkdeps/DEPS
delete mode 100644 tools/checkdeps/PRESUBMIT.py
delete mode 100755 tools/checkdeps/checkdeps.py
delete mode 100755 tools/checkdeps/checkdeps_test.py
delete mode 100644 tools/checkdeps/cpp_checker.py
delete mode 100644 tools/checkdeps/java_checker.py
delete mode 100644 tools/checkdeps/results.py
delete mode 100644 tools/checkdeps/rules.py
delete mode 100644 tools/checkdeps/testdata/DEPS
delete mode 100644 tools/checkdeps/testdata/allowed/DEPS
delete mode 100644 tools/checkdeps/testdata/allowed/foo_unittest.cc
delete mode 100644 tools/checkdeps/testdata/allowed/not_a_test.cc
delete mode 100644 tools/checkdeps/testdata/allowed/test.h
delete mode 100644 tools/checkdeps/testdata/checkdeps_test/DEPS
delete mode 100644 tools/checkdeps/testdata/checkdeps_test/allowed/DEPS
delete mode 100644 tools/checkdeps/testdata/checkdeps_test/allowed/foo_unittest.cc
delete mode 100644 tools/checkdeps/testdata/checkdeps_test/allowed/not_a_test.cc
delete mode 100644 tools/checkdeps/testdata/checkdeps_test/allowed/test.h
delete mode 100644 tools/checkdeps/testdata/checkdeps_test/disallowed/allowed/DEPS
delete mode 100644 tools/checkdeps/testdata/checkdeps_test/disallowed/allowed/skipped/test.h
delete mode 100644 tools/checkdeps/testdata/checkdeps_test/disallowed/allowed/test.h
delete mode 100644 tools/checkdeps/testdata/checkdeps_test/disallowed/test.h
delete mode 100644 tools/checkdeps/testdata/disallowed/allowed/DEPS
delete mode 100644 tools/checkdeps/testdata/disallowed/allowed/skipped/test.h
delete mode 100644 tools/checkdeps/testdata/disallowed/allowed/test.h
delete mode 100644 tools/checkdeps/testdata/disallowed/foo_unittest.cc
delete mode 100644 tools/checkdeps/testdata/disallowed/test.h
delete mode 100644 tools/checklicenses/OWNERS
delete mode 100755 tools/checklicenses/checklicenses.py
delete mode 100644 tools/checkperms/OWNERS
delete mode 100644 tools/checkperms/PRESUBMIT.py
delete mode 100755 tools/checkperms/checkperms.py
delete mode 100755 tools/code_coverage/coverage.py
delete mode 100755 tools/code_coverage/coverage_posix.py
delete mode 100755 tools/code_coverage/coverage_posix_unittest.py
delete mode 100644 tools/code_coverage/croc.css
delete mode 100755 tools/code_coverage/croc.py
delete mode 100644 tools/code_coverage/croc_html.py
delete mode 100644 tools/code_coverage/croc_scan.py
delete mode 100755 tools/code_coverage/croc_scan_test.py
delete mode 100755 tools/code_coverage/croc_test.py
delete mode 100644 tools/code_coverage/example.croc
delete mode 100755 tools/code_coverage/process_coverage.py
delete mode 100644 tools/code_coverage/third_party/README.chromium
delete mode 100644 tools/code_coverage/third_party/sorttable.js
delete mode 100755 tools/compile_test/compile_test.py
delete mode 100755 tools/coverity/coverity.py
delete mode 100644 tools/crx_id/PRESUBMIT.py
delete mode 100644 tools/crx_id/__init__.py
delete mode 100755 tools/crx_id/crx_id.py
delete mode 100755 tools/crx_id/crx_id_unittest.py
delete mode 100644 tools/crx_id/jebgalgnebhfojomionfpkfelancnnkf.crx
delete mode 100644 tools/cygprofile/cygprofile.cc
delete mode 100644 tools/cygprofile/cygprofile.gyp
delete mode 100755 tools/cygprofile/mergetraces.py
delete mode 100755 tools/cygprofile/patch_orderfile.py
delete mode 100755 tools/cygprofile/symbolize.py
delete mode 100644 tools/deep_memory_profiler/OWNERS
delete mode 100644 tools/deep_memory_profiler/PRESUBMIT.py
delete mode 100644 tools/deep_memory_profiler/README.policy
delete mode 100755 tools/deep_memory_profiler/dmprof
delete mode 100644 tools/deep_memory_profiler/dmprof.py
delete mode 100755 tools/deep_memory_profiler/download.sh
delete mode 100755 tools/deep_memory_profiler/graph.py
delete mode 100644 tools/deep_memory_profiler/lib/__init__.py
delete mode 100644 tools/deep_memory_profiler/lib/bucket.py
delete mode 100644 tools/deep_memory_profiler/lib/dump.py
delete mode 100644 tools/deep_memory_profiler/lib/exceptions.py
delete mode 100644 tools/deep_memory_profiler/lib/ordered_dict.py
delete mode 100644 tools/deep_memory_profiler/lib/pageframe.py
delete mode 100644 tools/deep_memory_profiler/lib/policy.py
delete mode 100644 tools/deep_memory_profiler/lib/range_dict.py
delete mode 100644 tools/deep_memory_profiler/lib/sorter.py
delete mode 100644 tools/deep_memory_profiler/lib/subcommand.py
delete mode 100644 tools/deep_memory_profiler/lib/symbol.py
delete mode 100644 tools/deep_memory_profiler/policies.json
delete mode 100644 tools/deep_memory_profiler/policy.android.browser.json
delete mode 100644 tools/deep_memory_profiler/policy.android.renderer.json
delete mode 100644 tools/deep_memory_profiler/policy.android.webview.json
delete mode 100644 tools/deep_memory_profiler/policy.l0.json
delete mode 100644 tools/deep_memory_profiler/policy.l1.json
delete mode 100644 tools/deep_memory_profiler/policy.l2.json
delete mode 100644 tools/deep_memory_profiler/policy.sourcefile.json
delete mode 100644 tools/deep_memory_profiler/policy.t0.json
delete mode 100644 tools/deep_memory_profiler/sorter.malloc-component.json
delete mode 100644 tools/deep_memory_profiler/sorter.malloc-type.json
delete mode 100644 tools/deep_memory_profiler/sorter.vm-map.json
delete mode 100644 tools/deep_memory_profiler/sorter.vm-sharing.json
delete mode 100644 tools/deep_memory_profiler/subcommands/__init__.py
delete mode 100644 tools/deep_memory_profiler/subcommands/buckets.py
delete mode 100644 tools/deep_memory_profiler/subcommands/cat.py
delete mode 100644 tools/deep_memory_profiler/subcommands/expand.py
delete mode 100644 tools/deep_memory_profiler/subcommands/map.py
delete mode 100644 tools/deep_memory_profiler/subcommands/policies.py
delete mode 100644 tools/deep_memory_profiler/subcommands/pprof.py
delete mode 100644 tools/deep_memory_profiler/subcommands/stacktrace.py
delete mode 100644 tools/deep_memory_profiler/subcommands/upload.py
delete mode 100644 tools/deep_memory_profiler/templates.json
delete mode 100644 tools/deep_memory_profiler/tests/data/.gitignore
delete mode 100644 tools/deep_memory_profiler/tests/data/heap.01234.0001.buckets
delete mode 100644 tools/deep_memory_profiler/tests/data/heap.01234.0001.heap
delete mode 100644 tools/deep_memory_profiler/tests/data/heap.01234.0002.buckets
delete mode 100644 tools/deep_memory_profiler/tests/data/heap.01234.0002.heap
delete mode 100644 tools/deep_memory_profiler/tests/data/heap.01234.maps
delete mode 100644 tools/deep_memory_profiler/tests/data/heap.01234.symmap/chrome.abcdef.nm
delete mode 100644 tools/deep_memory_profiler/tests/data/heap.01234.symmap/chrome.uvwxyz.readelf-e
delete mode 100644 tools/deep_memory_profiler/tests/data/heap.01234.symmap/files.json
delete mode 100644 tools/deep_memory_profiler/tests/data/heap.01234.symmap/maps
delete mode 100755 tools/deep_memory_profiler/tests/dmprof_test.py
delete mode 100755 tools/deep_memory_profiler/tests/mock_gsutil.py
delete mode 100644 tools/deep_memory_profiler/tests/output/buckets
delete mode 100755 tools/deep_memory_profiler/tests/range_dict_tests.py
delete mode 100644 tools/deep_memory_profiler/visualizer/main.css
delete mode 100644 tools/deep_memory_profiler/visualizer/main.html
delete mode 100644 tools/deep_memory_profiler/visualizer/main.js
delete mode 160000 tools/deps2git
delete mode 100755 tools/diagnose-me.py
delete mode 100755 tools/dromaeo_benchmark_runner/dromaeo_benchmark_runner.py
delete mode 100755 tools/export_tarball/export_tarball.py
delete mode 100755 tools/export_tarball/export_v8_tarball.py
delete mode 100644 tools/find_depot_tools.py
delete mode 100644 tools/find_runtime_symbols/OWNERS
delete mode 100644 tools/find_runtime_symbols/PRESUBMIT.py
delete mode 100644 tools/find_runtime_symbols/README
delete mode 100755 tools/find_runtime_symbols/find_runtime_symbols.py
delete mode 100755 tools/find_runtime_symbols/prepare_symbol_info.py
delete mode 100644 tools/find_runtime_symbols/proc_maps.py
delete mode 100755 tools/find_runtime_symbols/reduce_debugline.py
delete mode 100644 tools/find_runtime_symbols/static_symbols.py
delete mode 100755 tools/find_runtime_symbols/tests/proc_maps_test.py
delete mode 100755 tools/find_runtime_symbols/tests/reduce_debugline_test.py
delete mode 100755 tools/flakiness/find_flakiness.py
delete mode 100644 tools/gdb/gdb_chrome.py
delete mode 100755 tools/gen_keyboard_overlay_data/gen_keyboard_overlay_data.py
delete mode 100755 tools/generate_library_loader/generate_library_loader.py
delete mode 100755 tools/generate_shim_headers/generate_shim_headers.py
delete mode 100755 tools/generate_stubs/generate_stubs.py
delete mode 100755 tools/generate_stubs/generate_stubs_unittest.py
delete mode 100644 tools/gn/BUILD.gn
delete mode 100644 tools/gn/OWNERS
delete mode 100644 tools/gn/README.txt
delete mode 100644 tools/gn/binary_target_generator.cc
delete mode 100644 tools/gn/binary_target_generator.h
delete mode 100644 tools/gn/build_settings.cc
delete mode 100644 tools/gn/build_settings.h
delete mode 100644 tools/gn/command_desc.cc
delete mode 100644 tools/gn/command_gen.cc
delete mode 100644 tools/gn/command_help.cc
delete mode 100644 tools/gn/commands.cc
delete mode 100644 tools/gn/commands.h
delete mode 100644 tools/gn/config.cc
delete mode 100644 tools/gn/config.h
delete mode 100644 tools/gn/config_values.cc
delete mode 100644 tools/gn/config_values.h
delete mode 100644 tools/gn/config_values_extractors.cc
delete mode 100644 tools/gn/config_values_extractors.h
delete mode 100644 tools/gn/config_values_generator.cc
delete mode 100644 tools/gn/config_values_generator.h
delete mode 100644 tools/gn/copy_target_generator.cc
delete mode 100644 tools/gn/copy_target_generator.h
delete mode 100644 tools/gn/err.cc
delete mode 100644 tools/gn/err.h
delete mode 100644 tools/gn/escape.cc
delete mode 100644 tools/gn/escape.h
delete mode 100644 tools/gn/escape_unittest.cc
delete mode 100644 tools/gn/file_template.cc
delete mode 100644 tools/gn/file_template.h
delete mode 100644 tools/gn/file_template_unittest.cc
delete mode 100644 tools/gn/filesystem_utils.cc
delete mode 100644 tools/gn/filesystem_utils.h
delete mode 100644 tools/gn/filesystem_utils_unittest.cc
delete mode 100644 tools/gn/function_define_rule.cc
delete mode 100644 tools/gn/function_exec_script.cc
delete mode 100644 tools/gn/function_process_file_template.cc
delete mode 100644 tools/gn/function_read_file.cc
delete mode 100644 tools/gn/function_set_default_toolchain.cc
delete mode 100644 tools/gn/function_template.cc
delete mode 100644 tools/gn/function_toolchain.cc
delete mode 100644 tools/gn/function_write_file.cc
delete mode 100644 tools/gn/functions.cc
delete mode 100644 tools/gn/functions.h
delete mode 100644 tools/gn/functions_target.cc
delete mode 100644 tools/gn/generate_test_gn_data.cc
delete mode 100644 tools/gn/gn.gyp
delete mode 100644 tools/gn/gn_main.cc
delete mode 100644 tools/gn/group_target_generator.cc
delete mode 100644 tools/gn/group_target_generator.h
delete mode 100644 tools/gn/import_manager.cc
delete mode 100644 tools/gn/import_manager.h
delete mode 100644 tools/gn/input_conversion.cc
delete mode 100644 tools/gn/input_conversion.h
delete mode 100644 tools/gn/input_conversion_unittest.cc
delete mode 100644 tools/gn/input_file.cc
delete mode 100644 tools/gn/input_file.h
delete mode 100644 tools/gn/input_file_manager.cc
delete mode 100644 tools/gn/input_file_manager.h
delete mode 100644 tools/gn/item.cc
delete mode 100644 tools/gn/item.h
delete mode 100644 tools/gn/item_node.cc
delete mode 100644 tools/gn/item_node.h
delete mode 100644 tools/gn/item_tree.cc
delete mode 100644 tools/gn/item_tree.h
delete mode 100644 tools/gn/label.cc
delete mode 100644 tools/gn/label.h
delete mode 100644 tools/gn/label_unittest.cc
delete mode 100644 tools/gn/location.h
delete mode 100644 tools/gn/ninja_binary_target_writer.cc
delete mode 100644 tools/gn/ninja_binary_target_writer.h
delete mode 100644 tools/gn/ninja_build_writer.cc
delete mode 100644 tools/gn/ninja_build_writer.h
delete mode 100644 tools/gn/ninja_copy_target_writer.cc
delete mode 100644 tools/gn/ninja_copy_target_writer.h
delete mode 100644 tools/gn/ninja_group_target_writer.cc
delete mode 100644 tools/gn/ninja_group_target_writer.h
delete mode 100644 tools/gn/ninja_helper.cc
delete mode 100644 tools/gn/ninja_helper.h
delete mode 100644 tools/gn/ninja_helper_unittest.cc
delete mode 100644 tools/gn/ninja_script_target_writer.cc
delete mode 100644 tools/gn/ninja_script_target_writer.h
delete mode 100644 tools/gn/ninja_target_writer.cc
delete mode 100644 tools/gn/ninja_target_writer.h
delete mode 100644 tools/gn/ninja_toolchain_writer.cc
delete mode 100644 tools/gn/ninja_toolchain_writer.h
delete mode 100644 tools/gn/ninja_writer.cc
delete mode 100644 tools/gn/ninja_writer.h
delete mode 100644 tools/gn/operators.cc
delete mode 100644 tools/gn/operators.h
delete mode 100644 tools/gn/output_file.h
delete mode 100644 tools/gn/output_stream.h
delete mode 100644 tools/gn/parse_tree.cc
delete mode 100644 tools/gn/parse_tree.h
delete mode 100644 tools/gn/parser.cc
delete mode 100644 tools/gn/parser.h
delete mode 100644 tools/gn/parser_unittest.cc
delete mode 100644 tools/gn/path_output.cc
delete mode 100644 tools/gn/path_output.h
delete mode 100644 tools/gn/path_output_unittest.cc
delete mode 100644 tools/gn/pattern.cc
delete mode 100644 tools/gn/pattern.h
delete mode 100644 tools/gn/pattern_unittest.cc
delete mode 100644 tools/gn/scheduler.cc
delete mode 100644 tools/gn/scheduler.h
delete mode 100644 tools/gn/scope.cc
delete mode 100644 tools/gn/scope.h
delete mode 100644 tools/gn/scope_per_file_provider.cc
delete mode 100644 tools/gn/scope_per_file_provider.h
delete mode 100644 tools/gn/script_target_generator.cc
delete mode 100644 tools/gn/script_target_generator.h
delete mode 100644 tools/gn/script_values.cc
delete mode 100644 tools/gn/script_values.h
delete mode 100644 tools/gn/secondary/BUILD.gn
delete mode 100644 tools/gn/secondary/base/BUILD.gn
delete mode 100644 tools/gn/secondary/base/allocator/BUILD.gn
delete mode 100644 tools/gn/secondary/base/third_party/dynamic_annotations/BUILD.gn
delete mode 100644 tools/gn/secondary/base/third_party/nspr/BUILD.gn
delete mode 100644 tools/gn/secondary/base/third_party/symbolize/BUILD.gn
delete mode 100644 tools/gn/secondary/base/third_party/xdg_mime/BUILD.gn
delete mode 100644 tools/gn/secondary/base/third_party/xdg_user_dirs/BUILD.gn
delete mode 100644 tools/gn/secondary/build/config/BUILD.gn
delete mode 100644 tools/gn/secondary/build/config/BUILDCONFIG.gn
delete mode 100644 tools/gn/secondary/build/config/clang/BUILD.gn
delete mode 100644 tools/gn/secondary/build/config/compiler/BUILD.gn
delete mode 100644 tools/gn/secondary/build/config/linux/BUILD.gn
delete mode 100644 tools/gn/secondary/build/config/linux/system/BUILD.gn
delete mode 100644 tools/gn/secondary/build/config/linux/system/pkg-config.py
delete mode 100644 tools/gn/secondary/build/config/linux/toolchain/BUILD.gn
delete mode 100644 tools/gn/secondary/build/config/mac/BUILD.gn
delete mode 100644 tools/gn/secondary/build/config/win/BUILD.gn
delete mode 100644 tools/gn/secondary/build/config/win/get_msvc_config.py
delete mode 100644 tools/gn/secondary/build/config/win/get_msvc_config_real.py
delete mode 100644 tools/gn/secondary/ipc/BUILD.gn
delete mode 100644 tools/gn/secondary/testing/BUILD.gn
delete mode 100644 tools/gn/secondary/third_party/icu/BUILD.gn
delete mode 100644 tools/gn/secondary/third_party/libevent/BUILD.gn
delete mode 100644 tools/gn/secondary/third_party/mach_override/BUILD.gn
delete mode 100644 tools/gn/secondary/third_party/modp_b64/BUILD.gn
delete mode 100644 tools/gn/settings.cc
delete mode 100644 tools/gn/settings.h
delete mode 100644 tools/gn/setup.cc
delete mode 100644 tools/gn/setup.h
delete mode 100644 tools/gn/source_dir.cc
delete mode 100644 tools/gn/source_dir.h
delete mode 100644 tools/gn/source_dir_unittest.cc
delete mode 100644 tools/gn/source_file.cc
delete mode 100644 tools/gn/source_file.h
delete mode 100644 tools/gn/standard_out.cc
delete mode 100644 tools/gn/standard_out.h
delete mode 100644 tools/gn/string_utils.cc
delete mode 100644 tools/gn/string_utils.h
delete mode 100644 tools/gn/string_utils_unittest.cc
delete mode 100644 tools/gn/target.cc
delete mode 100644 tools/gn/target.h
delete mode 100644 tools/gn/target_generator.cc
delete mode 100644 tools/gn/target_generator.h
delete mode 100644 tools/gn/target_generator_unittest.cc
delete mode 100644 tools/gn/target_manager.cc
delete mode 100644 tools/gn/target_manager.h
delete mode 100644 tools/gn/target_manager_unittest.cc
delete mode 100644 tools/gn/token.cc
delete mode 100644 tools/gn/token.h
delete mode 100644 tools/gn/tokenizer.cc
delete mode 100644 tools/gn/tokenizer.h
delete mode 100644 tools/gn/tokenizer_unittest.cc
delete mode 100644 tools/gn/toolchain.cc
delete mode 100644 tools/gn/toolchain.h
delete mode 100644 tools/gn/toolchain_manager.cc
delete mode 100644 tools/gn/toolchain_manager.h
delete mode 100644 tools/gn/value.cc
delete mode 100644 tools/gn/value.h
delete mode 100644 tools/gn/value_extractors.cc
delete mode 100644 tools/gn/value_extractors.h
delete mode 100644 tools/gn/variables.cc
delete mode 100644 tools/gn/variables.h
delete mode 160000 tools/grit
delete mode 100644 tools/gritsettings/resource_ids
delete mode 100644 tools/gtk_clipboard_dump/gtk_clipboard_dump.cc
delete mode 100644 tools/gtk_clipboard_dump/gtk_clipboard_dump.gyp
delete mode 100755 tools/gyp-explain.py
delete mode 100755 tools/gypv8sh.py
delete mode 100644 tools/idl_parser/PRESUBMIT.py
delete mode 100644 tools/idl_parser/__init__.py
delete mode 100755 tools/idl_parser/idl_lexer.py
delete mode 100755 tools/idl_parser/idl_lexer_test.py
delete mode 100755 tools/idl_parser/idl_node.py
delete mode 100755 tools/idl_parser/idl_parser.py
delete mode 100755 tools/idl_parser/idl_parser_test.py
delete mode 100755 tools/idl_parser/idl_ppapi_lexer.py
delete mode 100755 tools/idl_parser/idl_ppapi_parser.py
delete mode 100755 tools/idl_parser/run_tests.py
delete mode 100644 tools/idl_parser/test_lexer/keywords.in
delete mode 100644 tools/idl_parser/test_lexer/keywords_ppapi.in
delete mode 100644 tools/idl_parser/test_lexer/values.in
delete mode 100644 tools/idl_parser/test_lexer/values_ppapi.in
delete mode 100644 tools/idl_parser/test_parser/callback_web.idl
delete mode 100644 tools/idl_parser/test_parser/dictionary_web.idl
delete mode 100644 tools/idl_parser/test_parser/enum_ppapi.idl
delete mode 100644 tools/idl_parser/test_parser/enum_web.idl
delete mode 100644 tools/idl_parser/test_parser/exception_web.idl
delete mode 100644 tools/idl_parser/test_parser/extattr_ppapi.idl
delete mode 100644 tools/idl_parser/test_parser/implements_web.idl
delete mode 100644 tools/idl_parser/test_parser/inline_ppapi.idl
delete mode 100644 tools/idl_parser/test_parser/interface_web.idl
delete mode 100644 tools/idl_parser/test_parser/label_ppapi.idl
delete mode 100644 tools/idl_parser/test_parser/struct_ppapi.idl
delete mode 100644 tools/idl_parser/test_parser/typedef_ppapi.idl
delete mode 100644 tools/idl_parser/test_parser/typedef_web.idl
delete mode 100644 tools/imagediff/DEPS
delete mode 100644 tools/imagediff/image_diff.cc
delete mode 100644 tools/imagediff/image_diff.gyp
delete mode 100644 tools/imagediff/image_diff_png.cc
delete mode 100644 tools/imagediff/image_diff_png.h
delete mode 100755 tools/include_tracer.py
delete mode 100755 tools/ipc_messages_log.py
delete mode 100644 tools/json_comment_eater/everything.json
delete mode 100644 tools/json_comment_eater/everything_expected.json
delete mode 100644 tools/json_comment_eater/json_comment_eater.py
delete mode 100755 tools/json_comment_eater/json_comment_eater_test.py
delete mode 100644 tools/json_schema_compiler/PRESUBMIT.py
delete mode 100644 tools/json_schema_compiler/api_gen_util.gyp
delete mode 100644 tools/json_schema_compiler/cc_generator.py
delete mode 100644 tools/json_schema_compiler/code.py
delete mode 100755 tools/json_schema_compiler/code_test.py
delete mode 100755 tools/json_schema_compiler/compiler.py
delete mode 100644 tools/json_schema_compiler/cpp_bundle_generator.py
delete mode 100644 tools/json_schema_compiler/cpp_generator.py
delete mode 100644 tools/json_schema_compiler/cpp_type_generator.py
delete mode 100755 tools/json_schema_compiler/cpp_type_generator_test.py
delete mode 100644 tools/json_schema_compiler/cpp_util.py
delete mode 100755 tools/json_schema_compiler/cpp_util_test.py
delete mode 100644 tools/json_schema_compiler/dart_generator.py
delete mode 100755 tools/json_schema_compiler/dart_generator_test.py
delete mode 100644 tools/json_schema_compiler/dart_test/comments.dart
delete mode 100644 tools/json_schema_compiler/dart_test/comments.idl
delete mode 100644 tools/json_schema_compiler/dart_test/dictionaries.dart
delete mode 100644 tools/json_schema_compiler/dart_test/dictionaries.idl
delete mode 100644 tools/json_schema_compiler/dart_test/empty_namespace.dart
delete mode 100644 tools/json_schema_compiler/dart_test/empty_namespace.idl
delete mode 100644 tools/json_schema_compiler/dart_test/empty_type.dart
delete mode 100644 tools/json_schema_compiler/dart_test/empty_type.idl
delete mode 100644 tools/json_schema_compiler/dart_test/enums.idl
delete mode 100644 tools/json_schema_compiler/dart_test/events.dart
delete mode 100644 tools/json_schema_compiler/dart_test/events.idl
delete mode 100644 tools/json_schema_compiler/dart_test/functions.dart
delete mode 100644 tools/json_schema_compiler/dart_test/functions.idl
delete mode 100644 tools/json_schema_compiler/dart_test/operatable_type.dart
delete mode 100644 tools/json_schema_compiler/dart_test/operatable_type.idl
delete mode 100644 tools/json_schema_compiler/dart_test/tags.dart
delete mode 100644 tools/json_schema_compiler/dart_test/tags.idl
delete mode 100644 tools/json_schema_compiler/h_generator.py
delete mode 100644 tools/json_schema_compiler/highlighters/__init__.py
delete mode 100644 tools/json_schema_compiler/highlighters/hilite_me_highlighter.py
delete mode 100644 tools/json_schema_compiler/highlighters/none_highlighter.py
delete mode 100644 tools/json_schema_compiler/highlighters/pygments_highlighter.py
delete mode 100644 tools/json_schema_compiler/idl_schema.py
delete mode 100755 tools/json_schema_compiler/idl_schema_test.py
delete mode 100644 tools/json_schema_compiler/json_parse.py
delete mode 100644 tools/json_schema_compiler/json_schema.py
delete mode 100755 tools/json_schema_compiler/json_schema_test.py
delete mode 100644 tools/json_schema_compiler/memoize.py
delete mode 100644 tools/json_schema_compiler/model.py
delete mode 100755 tools/json_schema_compiler/model_test.py
delete mode 100755 tools/json_schema_compiler/preview.py
delete mode 100644 tools/json_schema_compiler/schema_loader.py
delete mode 100644 tools/json_schema_compiler/schema_util.py
delete mode 100755 tools/json_schema_compiler/schema_util_test.py
delete mode 100644 tools/json_schema_compiler/test/additional_properties.json
delete mode 100644 tools/json_schema_compiler/test/additional_properties_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/any.json
delete mode 100644 tools/json_schema_compiler/test/any_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/arrays.json
delete mode 100644 tools/json_schema_compiler/test/arrays_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/browser_action.json
delete mode 100644 tools/json_schema_compiler/test/callbacks.json
delete mode 100644 tools/json_schema_compiler/test/callbacks_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/choices.json
delete mode 100644 tools/json_schema_compiler/test/choices_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/content_settings.json
delete mode 100644 tools/json_schema_compiler/test/crossref.json
delete mode 100644 tools/json_schema_compiler/test/crossref_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/dependency_tester.json
delete mode 100644 tools/json_schema_compiler/test/enums.json
delete mode 100644 tools/json_schema_compiler/test/enums_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/error_generation.json
delete mode 100644 tools/json_schema_compiler/test/error_generation_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/font_settings.json
delete mode 100644 tools/json_schema_compiler/test/forbidden.json
delete mode 100644 tools/json_schema_compiler/test/functions_as_parameters.json
delete mode 100644 tools/json_schema_compiler/test/functions_as_parameters_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/functions_on_types.json
delete mode 100644 tools/json_schema_compiler/test/functions_on_types_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/idl_basics.idl
delete mode 100644 tools/json_schema_compiler/test/idl_callback_arrays.idl
delete mode 100644 tools/json_schema_compiler/test/idl_object_types.idl
delete mode 100644 tools/json_schema_compiler/test/idl_reserved_words.idl
delete mode 100644 tools/json_schema_compiler/test/idl_schemas_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/json_schema_compiler_tests.gyp
delete mode 100644 tools/json_schema_compiler/test/json_schema_test.json
delete mode 100644 tools/json_schema_compiler/test/objects.json
delete mode 100644 tools/json_schema_compiler/test/objects_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/permissions.json
delete mode 100644 tools/json_schema_compiler/test/simple_api.json
delete mode 100644 tools/json_schema_compiler/test/simple_api_unittest.cc
delete mode 100644 tools/json_schema_compiler/test/tabs.json
delete mode 100644 tools/json_schema_compiler/test/test_util.cc
delete mode 100644 tools/json_schema_compiler/test/test_util.h
delete mode 100644 tools/json_schema_compiler/test/windows.json
delete mode 100644 tools/json_schema_compiler/util.cc
delete mode 100644 tools/json_schema_compiler/util.h
delete mode 100644 tools/json_schema_compiler/util_cc_helper.py
delete mode 100644 tools/json_to_struct/PRESUBMIT.py
delete mode 100644 tools/json_to_struct/element_generator.py
delete mode 100755 tools/json_to_struct/element_generator_test.py
delete mode 100755 tools/json_to_struct/json_to_struct.py
delete mode 100644 tools/json_to_struct/struct_generator.py
delete mode 100755 tools/json_to_struct/struct_generator_test.py
delete mode 100755 tools/licenses.py
delete mode 100755 tools/linux/dump-static-initializers.py
delete mode 100644 tools/lsan/suppressions.txt
delete mode 100755 tools/mac/symbolicate_crash.py
delete mode 100644 tools/measure_page_load_time/ff_ext/chrome.manifest
delete mode 100644 tools/measure_page_load_time/ff_ext/content/firefoxOverlay.xul
delete mode 100644 tools/measure_page_load_time/ff_ext/content/measure_page_load_time.js
delete mode 100644 tools/measure_page_load_time/ff_ext/install.rdf
delete mode 100644 tools/measure_page_load_time/ie_bho/MeasurePageLoadTime.cpp
delete mode 100644 tools/measure_page_load_time/ie_bho/MeasurePageLoadTime.def
delete mode 100644 tools/measure_page_load_time/ie_bho/MeasurePageLoadTime.idl
delete mode 100644 tools/measure_page_load_time/ie_bho/MeasurePageLoadTime.rc
delete mode 100644 tools/measure_page_load_time/ie_bho/MeasurePageLoadTime.rgs
delete mode 100644 tools/measure_page_load_time/ie_bho/MeasurePageLoadTime.vcproj
delete mode 100644 tools/measure_page_load_time/ie_bho/MeasurePageLoadTimeBHO.cpp
delete mode 100644 tools/measure_page_load_time/ie_bho/MeasurePageLoadTimeBHO.h
delete mode 100644 tools/measure_page_load_time/ie_bho/MeasurePageLoadTimeBHO.rgs
delete mode 100644 tools/measure_page_load_time/ie_bho/resource.h
delete mode 100644 tools/memory_watcher/DEPS
delete mode 100644 tools/memory_watcher/README
delete mode 100644 tools/memory_watcher/call_stack.cc
delete mode 100644 tools/memory_watcher/call_stack.h
delete mode 100644 tools/memory_watcher/dllmain.cc
delete mode 100644 tools/memory_watcher/hotkey.h
delete mode 100644 tools/memory_watcher/ia32_modrm_map.cc
delete mode 100644 tools/memory_watcher/ia32_opcode_map.cc
delete mode 100644 tools/memory_watcher/memory_hook.cc
delete mode 100644 tools/memory_watcher/memory_hook.h
delete mode 100644 tools/memory_watcher/memory_watcher.cc
delete mode 100644 tools/memory_watcher/memory_watcher.gyp
delete mode 100644 tools/memory_watcher/memory_watcher.h
delete mode 100644 tools/memory_watcher/mini_disassembler.cc
delete mode 100644 tools/memory_watcher/mini_disassembler.h
delete mode 100644 tools/memory_watcher/mini_disassembler_types.h
delete mode 100644 tools/memory_watcher/preamble_patcher.cc
delete mode 100644 tools/memory_watcher/preamble_patcher.h
delete mode 100644 tools/memory_watcher/preamble_patcher_with_stub.cc
delete mode 100755 tools/memory_watcher/scripts/finditem.pl
delete mode 100755 tools/memory_watcher/scripts/memprof.pl
delete mode 100755 tools/memory_watcher/scripts/memtrace.pl
delete mode 100755 tools/memory_watcher/scripts/summary.pl
delete mode 100644 tools/metrics/OWNERS
delete mode 100644 tools/metrics/actions/OWNERS
delete mode 100644 tools/metrics/actions/chromeactions.txt
delete mode 100755 tools/metrics/actions/extract_actions.py
delete mode 100755 tools/metrics/actions/extract_actions.sh
delete mode 100644 tools/metrics/histograms/PRESUBMIT.py
delete mode 100644 tools/metrics/histograms/diffutil.py
delete mode 100644 tools/metrics/histograms/extract_histograms.py
delete mode 100644 tools/metrics/histograms/find_unmapped_histograms.py
delete mode 100644 tools/metrics/histograms/histograms.xml
delete mode 100755 tools/metrics/histograms/pretty_print.py
delete mode 100644 tools/metrics/histograms/update_extension_functions.py
delete mode 100644 tools/metrics/histograms/update_policies.py
delete mode 100644 tools/metrics/histograms/validate_format.py
delete mode 100755 tools/nocompile_driver.py
delete mode 100755 tools/omahaproxy.py
delete mode 100644 tools/oopif/OWNERS
delete mode 100644 tools/oopif/iframe_server.py
delete mode 160000 tools/page_cycler/acid3
delete mode 100644 tools/page_cycler/common/head.js
delete mode 100644 tools/page_cycler/common/report.html
delete mode 100644 tools/page_cycler/common/start.js
delete mode 100644 tools/page_cycler/database/common.js
delete mode 100644 tools/page_cycler/database/delete-transactions/index.html
delete mode 100644 tools/page_cycler/database/delete-transactions/start.html
delete mode 100644 tools/page_cycler/database/head.js
delete mode 100644 tools/page_cycler/database/insert-transactions/index.html
delete mode 100644 tools/page_cycler/database/insert-transactions/start.html
delete mode 100644 tools/page_cycler/database/pseudo-random-transactions/index.html
delete mode 100644 tools/page_cycler/database/pseudo-random-transactions/start.html
delete mode 100644 tools/page_cycler/database/select-readtransactions-read-results/index.html
delete mode 100644 tools/page_cycler/database/select-readtransactions-read-results/start.html
delete mode 100644 tools/page_cycler/database/select-readtransactions/index.html
delete mode 100644 tools/page_cycler/database/select-readtransactions/start.html
delete mode 100644 tools/page_cycler/database/select-transactions/index.html
delete mode 100644 tools/page_cycler/database/select-transactions/start.html
delete mode 100644 tools/page_cycler/database/update-transactions/index.html
delete mode 100644 tools/page_cycler/database/update-transactions/start.html
delete mode 100644 tools/page_cycler/indexed_db/basic_insert/index.html
delete mode 100644 tools/page_cycler/indexed_db/basic_insert/start.html
delete mode 100644 tools/page_cycler/indexed_db/common.js
delete mode 100644 tools/page_cycler/indexed_db/head.js
delete mode 100644 tools/page_cycler/sample/page1/index.html
delete mode 100644 tools/page_cycler/sample/page2/index.html
delete mode 100644 tools/page_cycler/sample/page3/index.html
delete mode 100644 tools/page_cycler/sample/page4/index.html
delete mode 100644 tools/page_cycler/sample/pages.js
delete mode 100644 tools/page_cycler/sample/start.html
delete mode 100644 tools/page_cycler/startup_test_common/README
delete mode 100644 tools/page_cycler/startup_test_common/blank.html
delete mode 100644 tools/page_cycler/startup_test_common/head.js
delete mode 100644 tools/page_cycler/webpagereplay/README
delete mode 100644 tools/page_cycler/webpagereplay/extension/background.html
delete mode 100644 tools/page_cycler/webpagereplay/extension/background.js
delete mode 100644 tools/page_cycler/webpagereplay/extension/content.js
delete mode 100644 tools/page_cycler/webpagereplay/extension/manifest.json
delete mode 100644 tools/page_cycler/webpagereplay/extension/page_cycler.js
delete mode 100644 tools/page_cycler/webpagereplay/extension/start.js
delete mode 100644 tools/page_cycler/webpagereplay/start.html
delete mode 100644 tools/page_cycler/webpagereplay/start.js
delete mode 100644 tools/page_cycler/webpagereplay/tests/2012Q2.js
delete mode 100644 tools/page_cycler/webpagereplay/tests/2012Q3.js
delete mode 100644 tools/perf/OWNERS
delete mode 100644 tools/perf/PRESUBMIT.py
delete mode 100644 tools/perf/benchmarks/__init__.py
delete mode 100644 tools/perf/benchmarks/blink_perf.py
delete mode 100644 tools/perf/benchmarks/dom_perf.py
delete mode 100644 tools/perf/benchmarks/dromaeo.py
delete mode 100644 tools/perf/benchmarks/image_decoding.py
delete mode 100644 tools/perf/benchmarks/jsgamebench.py
delete mode 100644 tools/perf/benchmarks/kraken.py
delete mode 100644 tools/perf/benchmarks/media.py
delete mode 100644 tools/perf/benchmarks/memory.py
delete mode 100644 tools/perf/benchmarks/octane.py
delete mode 100644 tools/perf/benchmarks/page_cycler.py
delete mode 100644 tools/perf/benchmarks/pica.py
delete mode 100644 tools/perf/benchmarks/robohornet_pro.py
delete mode 100644 tools/perf/benchmarks/smoothness.py
delete mode 100644 tools/perf/benchmarks/spaceport.py
delete mode 100644 tools/perf/benchmarks/startup.py
delete mode 100644 tools/perf/benchmarks/sunspider.py
delete mode 100644 tools/perf/clear_system_cache/clear_system_cache.gyp
delete mode 100644 tools/perf/clear_system_cache/clear_system_cache_main.cc
delete mode 100644 tools/perf/measurements/__init__.py
delete mode 100644 tools/perf/measurements/blink_perf.js
delete mode 100644 tools/perf/measurements/blink_perf.py
delete mode 100644 tools/perf/measurements/dromaeo.py
delete mode 100644 tools/perf/measurements/image_decoding.py
delete mode 100755 tools/perf/measurements/loading_measurement_analyzer.py
delete mode 100644 tools/perf/measurements/loading_measurement_analyzer_unittest.py
delete mode 100644 tools/perf/measurements/loading_profile.py
delete mode 100644 tools/perf/measurements/loading_timeline.py
delete mode 100644 tools/perf/measurements/loading_trace.py
delete mode 100644 tools/perf/measurements/media.py
delete mode 100644 tools/perf/measurements/memory.py
delete mode 100644 tools/perf/measurements/page_cycler.js
delete mode 100644 tools/perf/measurements/page_cycler.py
delete mode 100644 tools/perf/measurements/rasterize_and_record.py
delete mode 100644 tools/perf/measurements/skpicture_printer.py
delete mode 100644 tools/perf/measurements/smoothness.py
delete mode 100644 tools/perf/measurements/startup.py
delete mode 100644 tools/perf/measurements/tab_switching.py
delete mode 100644 tools/perf/measurements/test_data/loading_profile.csv
delete mode 100644 tools/perf/measurements/test_data/loading_timeline.csv
delete mode 100644 tools/perf/metrics/__init__.py
delete mode 100644 tools/perf/metrics/gpu_rendering_stats.py
delete mode 100644 tools/perf/metrics/histogram.py
delete mode 100644 tools/perf/metrics/histogram_util.py
delete mode 100644 tools/perf/metrics/histogram_util_unittest.py
delete mode 100644 tools/perf/metrics/io.py
delete mode 100644 tools/perf/metrics/loading.py
delete mode 100644 tools/perf/metrics/media.js
delete mode 100644 tools/perf/metrics/media.py
delete mode 100644 tools/perf/metrics/memory.py
delete mode 100644 tools/perf/metrics/smoothness.js
delete mode 100644 tools/perf/metrics/smoothness.py
delete mode 100644 tools/perf/metrics/smoothness_unittest.py
delete mode 100644 tools/perf/metrics/timeline.py
delete mode 100644 tools/perf/page_sets/.gitignore
delete mode 100644 tools/perf/page_sets/2012Q3.json
delete mode 100644 tools/perf/page_sets/PRESUBMIT.py
delete mode 100644 tools/perf/page_sets/__init__.py
delete mode 100644 tools/perf/page_sets/blank_page.json
delete mode 100644 tools/perf/page_sets/blank_page/blank_page.html
delete mode 100644 tools/perf/page_sets/dromaeo/domcoreattr.json
delete mode 100644 tools/perf/page_sets/dromaeo/domcoremodify.json
delete mode 100644 tools/perf/page_sets/dromaeo/domcorequery.json
delete mode 100644 tools/perf/page_sets/dromaeo/domcoretraverse.json
delete mode 100644 tools/perf/page_sets/dromaeo/jslibattrjquery.json
delete mode 100644 tools/perf/page_sets/dromaeo/jslibattrprototype.json
delete mode 100644 tools/perf/page_sets/dromaeo/jslibeventjquery.json
delete mode 100644 tools/perf/page_sets/dromaeo/jslibeventprototype.json
delete mode 100644 tools/perf/page_sets/dromaeo/jslibmodifyjquery.json
delete mode 100644 tools/perf/page_sets/dromaeo/jslibmodifyprototype.json
delete mode 100644 tools/perf/page_sets/dromaeo/jslibstylejquery.json
delete mode 100644 tools/perf/page_sets/dromaeo/jslibstyleprototype.json
delete mode 100644 tools/perf/page_sets/dromaeo/jslibtraversejquery.json
delete mode 100644 tools/perf/page_sets/dromaeo/jslibtraverseprototype.json
delete mode 100644 tools/perf/page_sets/image_decoding_measurement.json
delete mode 100644 tools/perf/page_sets/intl_ar_fa_he.json
delete mode 100644 tools/perf/page_sets/intl_es_fr_pt-BR.json
delete mode 100644 tools/perf/page_sets/intl_hi_ru.json
delete mode 100644 tools/perf/page_sets/intl_ja_zh.json
delete mode 100644 tools/perf/page_sets/intl_ko_th_vi.json
delete mode 100644 tools/perf/page_sets/key_desktop_sites.json
delete mode 100644 tools/perf/page_sets/key_mobile_sites.json
delete mode 100644 tools/perf/page_sets/mobile_memory.json
delete mode 100644 tools/perf/page_sets/page_cycler/alexa_us.json
delete mode 100644 tools/perf/page_sets/page_cycler/bloat.json
delete mode 100644 tools/perf/page_sets/page_cycler/dhtml.json
delete mode 100644 tools/perf/page_sets/page_cycler/dom.json
delete mode 100644 tools/perf/page_sets/page_cycler/indexed_db/basic_insert.json
delete mode 100644 tools/perf/page_sets/page_cycler/intl1.json
delete mode 100644 tools/perf/page_sets/page_cycler/intl2.json
delete mode 100644 tools/perf/page_sets/page_cycler/morejs.json
delete mode 100644 tools/perf/page_sets/page_cycler/morejsnp.json
delete mode 100644 tools/perf/page_sets/page_cycler/moz.json
delete mode 100644 tools/perf/page_sets/page_cycler/moz2.json
delete mode 100644 tools/perf/page_sets/pica.json
delete mode 100644 tools/perf/page_sets/top_10.json
delete mode 100644 tools/perf/page_sets/top_25.json
delete mode 100644 tools/perf/page_sets/tough_animation_cases.json
delete mode 100644 tools/perf/page_sets/tough_animation_cases/keyframed_animations.html
delete mode 100644 tools/perf/page_sets/tough_animation_cases/transform_transition_js_block.html
delete mode 100644 tools/perf/page_sets/tough_animation_cases/transform_transitions.html
delete mode 100644 tools/perf/page_sets/tough_canvas_cases.json
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas-animation-no-clear.html
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls.html
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls_draw_back_as_aligned_canvas.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls_draw_back_as_aligned_image_data.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls_draw_back_as_canvas.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls_draw_back_as_gradient.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls_draw_back_as_image.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls_draw_back_as_white.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls_draw_ball_as_canvas_sprite.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls_draw_ball_as_filled_path.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls_draw_ball_as_image.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls_draw_ball_as_image_with_shadow.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls_draw_ball_as_rect.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/bouncing_balls_draw_ball_as_text.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/canvas2d_balls_common/parse_url.js
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/compositing_huge_div/index.html
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/many_images/bench.js
delete mode 100755 tools/perf/page_sets/tough_canvas_cases/many_images/images/generate_images.sh
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/many_images/many_images.html
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/many_images/single_image.html
delete mode 100644 tools/perf/page_sets/tough_canvas_cases/many_images/sprites.js
delete mode 100644 tools/perf/page_sets/tough_image_cases.json
delete mode 100644 tools/perf/page_sets/tough_layer_cases.json
delete mode 100644 tools/perf/page_sets/tough_layer_cases/opacity.html
delete mode 100644 tools/perf/page_sets/tough_layout_cases.json
delete mode 100644 tools/perf/page_sets/tough_scrolling_cases.json
delete mode 100644 tools/perf/page_sets/tough_scrolling_cases/background_fixed.html
delete mode 100644 tools/perf/page_sets/tough_scrolling_cases/busy.js
delete mode 100644 tools/perf/page_sets/tough_scrolling_cases/cust_scrollbar.html
delete mode 100644 tools/perf/page_sets/tough_scrolling_cases/div_scrolls.html
delete mode 100644 tools/perf/page_sets/tough_scrolling_cases/fixed_nonstacking.html
delete mode 100644 tools/perf/page_sets/tough_scrolling_cases/fixed_stacking.html
delete mode 100644 tools/perf/page_sets/tough_scrolling_cases/iframe_scrolls.html
delete mode 100644 tools/perf/page_sets/tough_scrolling_cases/simple.html
delete mode 100644 tools/perf/page_sets/tough_scrolling_cases/wheel_body_prevdefault.html
delete mode 100644 tools/perf/page_sets/tough_scrolling_cases/wheel_div_prevdefault.html
delete mode 100644 tools/perf/page_sets/tough_texture_upload_cases.json
delete mode 100644 tools/perf/page_sets/tough_texture_upload_cases/background_color_animation.html
delete mode 100644 tools/perf/page_sets/tough_texture_upload_cases/background_color_animation_and_transform_animation.html
delete mode 100644 tools/perf/page_sets/tough_texture_upload_cases/background_color_animation_with_gradient.html
delete mode 100644 tools/perf/page_sets/tough_texture_upload_cases/background_color_animation_with_gradient_and_transform_animation.html
delete mode 100644 tools/perf/page_sets/tough_video_cases.json
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd.ogg.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd.wav.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd1080.mp4.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd1080.ogv.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd1080.webm.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd2160.mp4.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd2160.ogv.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd2160.webm.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd360.mp4.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd360.ogv.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd360.webm.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd480.webm.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/crowd720.webm.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/tulip2.m4a.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/tulip2.mp3.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/tulip2.mp4.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/tulip2.ogg.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/tulip2.ogv.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/tulip2.wav.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/tulip2.webm.sha1
delete mode 100644 tools/perf/page_sets/tough_video_cases/video.html
delete mode 100644 tools/perf/page_sets/typical_25.json
delete mode 100644 tools/perf/perf_tools/__init__.py
delete mode 100644 tools/perf/perf_tools/bootstrap_deps
delete mode 100644 tools/perf/profile_creators/__init__.py
delete mode 100644 tools/perf/profile_creators/small_profile_creator.py
delete mode 100755 tools/perf/record_wpr
delete mode 100755 tools/perf/run_benchmark
delete mode 100755 tools/perf/run_measurement
delete mode 100755 tools/perf/run_multipage_benchmarks
delete mode 100755 tools/perf/run_tests
delete mode 100644 tools/perf/test-info.json
delete mode 100644 tools/perf/trace-info.json
delete mode 100644 tools/perf/unit-info.json
delete mode 100644 tools/perf/utils/results_viewer/src/base.js
delete mode 100644 tools/perf/utils/results_viewer/src/main.css
delete mode 100644 tools/perf/utils/results_viewer/src/main.js
delete mode 100644 tools/perf/utils/results_viewer/src/results_viewer.html
delete mode 100644 tools/perf/utils/results_viewer/src/results_viewer.js
delete mode 100644 tools/perf/utils/results_viewer/src/ui.js
delete mode 100644 tools/perf_expectations/PRESUBMIT.py
delete mode 100644 tools/perf_expectations/README.txt
delete mode 100644 tools/perf_expectations/chromium_perf_expectations.cfg
delete mode 100755 tools/perf_expectations/make_expectations.py
delete mode 100644 tools/perf_expectations/perf_expectations.json
delete mode 100644 tools/perf_expectations/sample_test_cases.json
delete mode 100755 tools/perf_expectations/tests/perf_expectations_unittest.py
delete mode 100755 tools/perf_expectations/update_perf_expectations.py
delete mode 100755 tools/perf_expectations/update_perf_expectations_unittest.py
delete mode 100644 tools/playback_benchmark/common.js
delete mode 100644 tools/playback_benchmark/playback.js
delete mode 100644 tools/playback_benchmark/playback_driver.py
delete mode 100644 tools/playback_benchmark/proxy_handler.py
delete mode 100755 tools/playback_benchmark/run.py
delete mode 100755 tools/prepare-bisect-perf-regression.py
delete mode 100644 tools/python/google/__init__.py
delete mode 100755 tools/python/google/gethash_timer.py
delete mode 100644 tools/python/google/httpd_config/httpd.conf
delete mode 100644 tools/python/google/httpd_config/httpd2.conf
delete mode 100644 tools/python/google/httpd_config/httpd2.pem
delete mode 100644 tools/python/google/httpd_config/httpd2_linux.conf
delete mode 100644 tools/python/google/httpd_config/httpd2_mac.conf
delete mode 100644 tools/python/google/httpd_config/mime.types
delete mode 100644 tools/python/google/httpd_config/root_ca_cert.pem
delete mode 100755 tools/python/google/httpd_utils.py
delete mode 100644 tools/python/google/logging_utils.py
delete mode 100644 tools/python/google/path_utils.py
delete mode 100644 tools/python/google/platform_utils.py
delete mode 100644 tools/python/google/platform_utils_linux.py
delete mode 100644 tools/python/google/platform_utils_mac.py
delete mode 100644 tools/python/google/platform_utils_win.py
delete mode 100644 tools/python/google/process_utils.py
delete mode 100755 tools/run-bisect-manual-test.py
delete mode 100644 tools/run-bisect-perf-regression.cfg
delete mode 100755 tools/run-bisect-perf-regression.py
delete mode 100755 tools/safely-roll-blink.py
delete mode 100644 tools/set_default_handler/DEPS
delete mode 100644 tools/set_default_handler/set_default_handler.gyp
delete mode 100644 tools/set_default_handler/set_default_handler_main.cc
delete mode 100644 tools/sharding_supervisor/PRESUBMIT.py
delete mode 100644 tools/sharding_supervisor/data/gtest_results.xml0
delete mode 100644 tools/sharding_supervisor/data/gtest_results.xml1
delete mode 100644 tools/sharding_supervisor/data/gtest_results_expected.xml
delete mode 100755 tools/sharding_supervisor/dummy_test.py
delete mode 100755 tools/sharding_supervisor/sharding_supervisor.py
delete mode 100644 tools/sharding_supervisor/stdio_buffer.py
delete mode 100755 tools/site_compare/command_line.py
delete mode 100644 tools/site_compare/commands/__init__.py
delete mode 100644 tools/site_compare/commands/compare2.py
delete mode 100644 tools/site_compare/commands/maskmaker.py
delete mode 100644 tools/site_compare/commands/measure.py
delete mode 100644 tools/site_compare/commands/scrape.py
delete mode 100644 tools/site_compare/commands/timeload.py
delete mode 100644 tools/site_compare/drivers/__init__.py
delete mode 100644 tools/site_compare/drivers/win32/__init__.py
delete mode 100755 tools/site_compare/drivers/win32/keyboard.py
delete mode 100755 tools/site_compare/drivers/win32/mouse.py
delete mode 100755 tools/site_compare/drivers/win32/windowing.py
delete mode 100644 tools/site_compare/operators/__init__.py
delete mode 100644 tools/site_compare/operators/equals.py
delete mode 100644 tools/site_compare/operators/equals_with_mask.py
delete mode 100755 tools/site_compare/scrapers/__init__.py
delete mode 100755 tools/site_compare/scrapers/chrome/__init__.py
delete mode 100644 tools/site_compare/scrapers/chrome/chrome011010.py
delete mode 100644 tools/site_compare/scrapers/chrome/chrome01970.py
delete mode 100755 tools/site_compare/scrapers/chrome/chromebase.py
delete mode 100755 tools/site_compare/scrapers/firefox/__init__.py
delete mode 100755 tools/site_compare/scrapers/firefox/firefox2.py
delete mode 100755 tools/site_compare/scrapers/ie/__init__.py
delete mode 100755 tools/site_compare/scrapers/ie/ie7.py
delete mode 100755 tools/site_compare/site_compare.py
delete mode 100644 tools/site_compare/utils/__init__.py
delete mode 100644 tools/site_compare/utils/browser_iterate.py
delete mode 100755 tools/sort-headers.py
delete mode 100644 tools/stats_viewer/OpenDialog.Designer.cs
delete mode 100644 tools/stats_viewer/OpenDialog.cs
delete mode 100644 tools/stats_viewer/OpenDialog.resx
delete mode 100644 tools/stats_viewer/Properties/AssemblyInfo.cs
delete mode 100644 tools/stats_viewer/Properties/Resources.Designer.cs
delete mode 100644 tools/stats_viewer/Properties/Resources.resx
delete mode 100644 tools/stats_viewer/Properties/Settings.Designer.cs
delete mode 100644 tools/stats_viewer/Properties/Settings.settings
delete mode 100644 tools/stats_viewer/Resources.Designer.cs
delete mode 100644 tools/stats_viewer/Resources.resx
delete mode 100644 tools/stats_viewer/Resources/kitten.png
delete mode 100644 tools/stats_viewer/Resources/kittenbackground.png
delete mode 100644 tools/stats_viewer/program.cs
delete mode 100644 tools/stats_viewer/stats_table.cs
delete mode 100644 tools/stats_viewer/stats_viewer.Designer.cs
delete mode 100644 tools/stats_viewer/stats_viewer.cs
delete mode 100644 tools/stats_viewer/stats_viewer.csproj
delete mode 100644 tools/stats_viewer/stats_viewer.resx
delete mode 100644 tools/stats_viewer/win32.cs
delete mode 160000 tools/swarm_client
delete mode 100755 tools/swig/swig.py
delete mode 100644 tools/symsrc/COPYING-pefile
delete mode 100644 tools/symsrc/README.chromium
delete mode 100755 tools/symsrc/img_fingerprint.py
delete mode 100755 tools/symsrc/pdb_fingerprint_from_img.py
delete mode 100644 tools/symsrc/pefile.py
delete mode 100755 tools/symsrc/source_index.py
delete mode 100755 tools/sync-webkit-git.py
delete mode 100755 tools/tcmalloc/print-live-objects.py
delete mode 100644 tools/telemetry/.gitignore
delete mode 100644 tools/telemetry/OWNERS
delete mode 100644 tools/telemetry/PRESUBMIT.py
delete mode 100644 tools/telemetry/README
delete mode 100644 tools/telemetry/build/__init__.py
delete mode 100644 tools/telemetry/build/update_docs.py
delete mode 100644 tools/telemetry/docs/telemetry.core.browser.html
delete mode 100644 tools/telemetry/docs/telemetry.core.browser_credentials.html
delete mode 100644 tools/telemetry/docs/telemetry.core.browser_finder.html
delete mode 100644 tools/telemetry/docs/telemetry.core.browser_options.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.adb_commands.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.android_browser_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.android_browser_finder.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.browser_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.cros_browser_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.cros_browser_finder.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.cros_interface.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.crx_id.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.desktop_browser_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.desktop_browser_finder.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.extension_dict_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.facebook_credentials_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.form_based_credentials_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.form_based_credentials_backend_unittest_base.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.google_credentials_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.inspector_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.inspector_console.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.inspector_memory.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.inspector_network.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.inspector_page.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.inspector_runtime.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.inspector_timeline.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.misc_web_contents_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.png_bitmap.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.tab_list_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.trace_result.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.tracing_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.chrome.websocket.html
delete mode 100644 tools/telemetry/docs/telemetry.core.discover.html
delete mode 100644 tools/telemetry/docs/telemetry.core.exceptions.html
delete mode 100644 tools/telemetry/docs/telemetry.core.extension_dict.html
delete mode 100644 tools/telemetry/docs/telemetry.core.extension_page.html
delete mode 100644 tools/telemetry/docs/telemetry.core.extension_to_load.html
delete mode 100644 tools/telemetry/docs/telemetry.core.html
delete mode 100644 tools/telemetry/docs/telemetry.core.memory_cache_http_server.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.android_platform_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.cros_platform_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.linux_platform_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.mac_platform_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.platform_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.posix_platform_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.profiler.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.profiler.iprofiler_profiler.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.profiler.java_heap_profiler.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.profiler.perf_profiler.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.profiler.profiler_finder.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.profiler.sample_profiler.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.profiler.tcmalloc_heap_profiler.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.profiler.trace_profiler.html
delete mode 100644 tools/telemetry/docs/telemetry.core.platform.win_platform_backend.html
delete mode 100644 tools/telemetry/docs/telemetry.core.possible_browser.html
delete mode 100644 tools/telemetry/docs/telemetry.core.profile_creator.html
delete mode 100644 tools/telemetry/docs/telemetry.core.profile_types.html
delete mode 100644 tools/telemetry/docs/telemetry.core.tab.html
delete mode 100644 tools/telemetry/docs/telemetry.core.tab_list.html
delete mode 100644 tools/telemetry/docs/telemetry.core.temporary_http_server.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.async_slice.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.bounds.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.counter.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.event.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.event_container.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.importer.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.inspector_importer.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.model.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.process.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.sample.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.slice.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.thread.html
delete mode 100644 tools/telemetry/docs/telemetry.core.timeline.trace_event_importer.html
delete mode 100644 tools/telemetry/docs/telemetry.core.user_agent.html
delete mode 100644 tools/telemetry/docs/telemetry.core.util.html
delete mode 100644 tools/telemetry/docs/telemetry.core.web_contents.html
delete mode 100644 tools/telemetry/docs/telemetry.core.wpr_modes.html
delete mode 100644 tools/telemetry/docs/telemetry.core.wpr_server.html
delete mode 100644 tools/telemetry/docs/telemetry.html
delete mode 100644 tools/telemetry/docs/telemetry.page.actions.all_page_actions.html
delete mode 100644 tools/telemetry/docs/telemetry.page.actions.click_element.html
delete mode 100644 tools/telemetry/docs/telemetry.page.actions.html
delete mode 100644 tools/telemetry/docs/telemetry.page.actions.js_collect_garbage.html
delete mode 100644 tools/telemetry/docs/telemetry.page.actions.page_action.html
delete mode 100644 tools/telemetry/docs/telemetry.page.actions.play.html
delete mode 100644 tools/telemetry/docs/telemetry.page.actions.reload.html
delete mode 100644 tools/telemetry/docs/telemetry.page.actions.scroll.html
delete mode 100644 tools/telemetry/docs/telemetry.page.actions.wait.html
delete mode 100644 tools/telemetry/docs/telemetry.page.block_page_measurement_results.html
delete mode 100644 tools/telemetry/docs/telemetry.page.buildbot_page_measurement_results.html
delete mode 100644 tools/telemetry/docs/telemetry.page.cloud_storage.html
delete mode 100644 tools/telemetry/docs/telemetry.page.csv_page_measurement_results.html
delete mode 100644 tools/telemetry/docs/telemetry.page.gtest_test_results.html
delete mode 100644 tools/telemetry/docs/telemetry.page.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page_filter.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page_measurement.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page_measurement_results.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page_measurement_runner.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page_measurement_unittest_base.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page_measurement_value.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page_runner.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page_set.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page_set_archive_info.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page_test.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page_test_results.html
delete mode 100644 tools/telemetry/docs/telemetry.page.page_test_runner.html
delete mode 100644 tools/telemetry/docs/telemetry.page.perf_tests_helper.html
delete mode 100644 tools/telemetry/docs/telemetry.page.record_wpr.html
delete mode 100644 tools/telemetry/docs/telemetry.test.html
delete mode 100644 tools/telemetry/docs/telemetry.test_runner.html
delete mode 100644 tools/telemetry/docs/telemetry.unittest.gtest_testrunner.html
delete mode 100644 tools/telemetry/docs/telemetry.unittest.html
delete mode 100644 tools/telemetry/docs/telemetry.unittest.options_for_unittests.html
delete mode 100644 tools/telemetry/docs/telemetry.unittest.run_tests.html
delete mode 100644 tools/telemetry/docs/telemetry.unittest.simple_mock.html
delete mode 100644 tools/telemetry/docs/telemetry.unittest.system_stub.html
delete mode 100644 tools/telemetry/docs/telemetry.unittest.tab_test_case.html
delete mode 100644 tools/telemetry/examples/credentials_example.json
delete mode 100755 tools/telemetry/examples/list_available_browsers
delete mode 100755 tools/telemetry/examples/telemetry_perf_test.py
delete mode 100644 tools/telemetry/examples/top1k
delete mode 100755 tools/telemetry/run_tests
delete mode 100644 tools/telemetry/support/html_output/results-template.html
delete mode 100644 tools/telemetry/telemetry/__init__.py
delete mode 100644 tools/telemetry/telemetry/core/__init__.py
delete mode 100644 tools/telemetry/telemetry/core/backends/__init__.py
delete mode 100644 tools/telemetry/telemetry/core/backends/browser_backend.py
delete mode 100644 tools/telemetry/telemetry/core/backends/chrome/__init__.py
delete mode 100644 tools/telemetry/telemetry/core/backends/chrome/chrome_browser_backend.py
delete mode 100644 tools/telemetry/telemetry/core/backends/webdriver/__init__.py
delete mode 100644 tools/telemetry/telemetry/core/backends/webdriver/webdriver_browser_backend.py
delete mode 100644 tools/telemetry/telemetry/core/backends/webdriver/webdriver_desktop_browser_finder.py
delete mode 100644 tools/telemetry/telemetry/core/backends/webdriver/webdriver_tab_backend.py
delete mode 100644 tools/telemetry/telemetry/core/backends/webdriver/webdriver_tab_list_backend.py
delete mode 100644 tools/telemetry/telemetry/core/browser.py
delete mode 100644 tools/telemetry/telemetry/core/browser_credentials.py
delete mode 100644 tools/telemetry/telemetry/core/browser_credentials_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/browser_finder.py
delete mode 100644 tools/telemetry/telemetry/core/browser_options.py
delete mode 100644 tools/telemetry/telemetry/core/browser_options_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/browser_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/__init__.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/adb_commands.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/android_browser_backend.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/android_browser_finder.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/android_browser_finder_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/chromeos_login_ext/main.html
delete mode 100644 tools/telemetry/telemetry/core/chrome/chromeos_login_ext/main.js
delete mode 100644 tools/telemetry/telemetry/core/chrome/chromeos_login_ext/manifest.json
delete mode 100644 tools/telemetry/telemetry/core/chrome/cros_browser_backend.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/cros_browser_finder.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/cros_browser_finder_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/cros_interface.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/cros_interface_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/crx_id.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/desktop_browser_backend.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/desktop_browser_finder.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/desktop_browser_finder_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/extension_dict_backend.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/facebook_credentials_backend.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/facebook_credentials_backend_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/form_based_credentials_backend.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/form_based_credentials_backend_unittest_base.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/google_credentials_backend.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/google_credentials_backend_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/inspector_backend.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/inspector_console.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/inspector_console_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/inspector_memory.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/inspector_memory_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/inspector_network.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/inspector_page.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/inspector_page_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/inspector_runtime.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/inspector_runtime_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/inspector_timeline.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/inspector_timeline_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/misc_web_contents_backend.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/png_bitmap.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/png_bitmap_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/tab_list_backend.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/trace_result.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/tracing_backend.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/tracing_backend_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/websocket.py
delete mode 100644 tools/telemetry/telemetry/core/chrome/websocket_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/discover.py
delete mode 100644 tools/telemetry/telemetry/core/discover_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/exceptions.py
delete mode 100644 tools/telemetry/telemetry/core/extension_dict.py
delete mode 100644 tools/telemetry/telemetry/core/extension_page.py
delete mode 100644 tools/telemetry/telemetry/core/extension_to_load.py
delete mode 100644 tools/telemetry/telemetry/core/extension_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/memory_cache_http_server.py
delete mode 100644 tools/telemetry/telemetry/core/platform/__init__.py
delete mode 100644 tools/telemetry/telemetry/core/platform/android_platform_backend.py
delete mode 100644 tools/telemetry/telemetry/core/platform/cros_platform_backend.py
delete mode 100644 tools/telemetry/telemetry/core/platform/desktop_platform_backend.py
delete mode 100644 tools/telemetry/telemetry/core/platform/linux_platform_backend.py
delete mode 100644 tools/telemetry/telemetry/core/platform/mac_platform_backend.py
delete mode 100644 tools/telemetry/telemetry/core/platform/platform_backend.py
delete mode 100644 tools/telemetry/telemetry/core/platform/posix_platform_backend.py
delete mode 100644 tools/telemetry/telemetry/core/platform/posix_platform_backend_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/platform/proc_util.py
delete mode 100644 tools/telemetry/telemetry/core/platform/profiler/__init__.py
delete mode 100644 tools/telemetry/telemetry/core/platform/profiler/iprofiler_profiler.py
delete mode 100644 tools/telemetry/telemetry/core/platform/profiler/java_heap_profiler.py
delete mode 100644 tools/telemetry/telemetry/core/platform/profiler/perf_profiler.py
delete mode 100644 tools/telemetry/telemetry/core/platform/profiler/perf_profiler_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/platform/profiler/profiler_finder.py
delete mode 100644 tools/telemetry/telemetry/core/platform/profiler/sample_profiler.py
delete mode 100644 tools/telemetry/telemetry/core/platform/profiler/tcmalloc_heap_profiler.py
delete mode 100644 tools/telemetry/telemetry/core/platform/profiler/tcpdump_profiler.py
delete mode 100644 tools/telemetry/telemetry/core/platform/profiler/testdata/perf.profile
delete mode 100644 tools/telemetry/telemetry/core/platform/profiler/trace_profiler.py
delete mode 100644 tools/telemetry/telemetry/core/platform/win_platform_backend.py
delete mode 100644 tools/telemetry/telemetry/core/possible_browser.py
delete mode 100644 tools/telemetry/telemetry/core/profile_creator.py
delete mode 100644 tools/telemetry/telemetry/core/profile_types.py
delete mode 100644 tools/telemetry/telemetry/core/profile_types_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/repeat_options.py
delete mode 100644 tools/telemetry/telemetry/core/tab.py
delete mode 100644 tools/telemetry/telemetry/core/tab_list.py
delete mode 100644 tools/telemetry/telemetry/core/tab_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/temporary_http_server.py
delete mode 100644 tools/telemetry/telemetry/core/temporary_http_server_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/OWNERS
delete mode 100644 tools/telemetry/telemetry/core/timeline/__init__.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/async_slice.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/bounds.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/counter.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/event.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/event_container.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/event_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/importer.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/inspector_importer.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/inspector_importer_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/model.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/model_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/process.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/sample.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/slice.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/slice_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/thread.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/trace_event_importer.py
delete mode 100644 tools/telemetry/telemetry/core/timeline/trace_event_importer_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/user_agent.py
delete mode 100644 tools/telemetry/telemetry/core/user_agent_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/util.py
delete mode 100644 tools/telemetry/telemetry/core/util_unittest.py
delete mode 100644 tools/telemetry/telemetry/core/web_contents.py
delete mode 100644 tools/telemetry/telemetry/core/wpr_modes.py
delete mode 100644 tools/telemetry/telemetry/core/wpr_server.py
delete mode 100644 tools/telemetry/telemetry/page/__init__.py
delete mode 100644 tools/telemetry/telemetry/page/actions/__init__.py
delete mode 100644 tools/telemetry/telemetry/page/actions/all_page_actions.py
delete mode 100644 tools/telemetry/telemetry/page/actions/click_element.py
delete mode 100644 tools/telemetry/telemetry/page/actions/click_element_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/actions/js_collect_garbage.py
delete mode 100644 tools/telemetry/telemetry/page/actions/media_action.js
delete mode 100644 tools/telemetry/telemetry/page/actions/media_action.py
delete mode 100644 tools/telemetry/telemetry/page/actions/page_action.py
delete mode 100644 tools/telemetry/telemetry/page/actions/play.js
delete mode 100644 tools/telemetry/telemetry/page/actions/play.py
delete mode 100644 tools/telemetry/telemetry/page/actions/play_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/actions/reload.py
delete mode 100644 tools/telemetry/telemetry/page/actions/scroll.js
delete mode 100644 tools/telemetry/telemetry/page/actions/scroll.py
delete mode 100644 tools/telemetry/telemetry/page/actions/scroll_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/actions/seek.js
delete mode 100644 tools/telemetry/telemetry/page/actions/seek.py
delete mode 100644 tools/telemetry/telemetry/page/actions/seek_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/actions/tap_element.py
delete mode 100644 tools/telemetry/telemetry/page/actions/wait.py
delete mode 100644 tools/telemetry/telemetry/page/actions/wait_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/block_page_measurement_results.py
delete mode 100644 tools/telemetry/telemetry/page/block_page_measurement_results_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/buildbot_page_measurement_results.py
delete mode 100644 tools/telemetry/telemetry/page/buildbot_page_measurement_results_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/cloud_storage.py
delete mode 100644 tools/telemetry/telemetry/page/csv_page_measurement_results.py
delete mode 100644 tools/telemetry/telemetry/page/csv_page_measurement_results_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/gtest_test_results.py
delete mode 100644 tools/telemetry/telemetry/page/html_page_measurement_results.py
delete mode 100644 tools/telemetry/telemetry/page/html_page_measurement_results_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/page.py
delete mode 100644 tools/telemetry/telemetry/page/page_filter.py
delete mode 100644 tools/telemetry/telemetry/page/page_measurement.py
delete mode 100644 tools/telemetry/telemetry/page/page_measurement_results.py
delete mode 100644 tools/telemetry/telemetry/page/page_measurement_results_unittest.py
delete mode 100755 tools/telemetry/telemetry/page/page_measurement_runner.py
delete mode 100644 tools/telemetry/telemetry/page/page_measurement_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/page_measurement_unittest_base.py
delete mode 100644 tools/telemetry/telemetry/page/page_measurement_value.py
delete mode 100644 tools/telemetry/telemetry/page/page_runner.py
delete mode 100644 tools/telemetry/telemetry/page/page_runner_repeat.py
delete mode 100644 tools/telemetry/telemetry/page/page_runner_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/page_set.py
delete mode 100644 tools/telemetry/telemetry/page/page_set_archive_info.py
delete mode 100644 tools/telemetry/telemetry/page/page_set_archive_info_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/page_set_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/page_test.py
delete mode 100644 tools/telemetry/telemetry/page/page_test_results.py
delete mode 100644 tools/telemetry/telemetry/page/page_test_runner.py
delete mode 100644 tools/telemetry/telemetry/page/page_test_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/page_unittest.py
delete mode 100644 tools/telemetry/telemetry/page/perf_tests_helper.py
delete mode 100755 tools/telemetry/telemetry/page/record_wpr.py
delete mode 100644 tools/telemetry/telemetry/page/test_expectations.py
delete mode 100644 tools/telemetry/telemetry/page/test_expectations_unittest.py
delete mode 100644 tools/telemetry/telemetry/test.py
delete mode 100644 tools/telemetry/telemetry/test_runner.py
delete mode 100644 tools/telemetry/telemetry/unittest/__init__.py
delete mode 100755 tools/telemetry/telemetry/unittest/gtest_testrunner.py
delete mode 100644 tools/telemetry/telemetry/unittest/options_for_unittests.py
delete mode 100644 tools/telemetry/telemetry/unittest/run_tests.py
delete mode 100644 tools/telemetry/telemetry/unittest/simple_mock.py
delete mode 100644 tools/telemetry/telemetry/unittest/simple_mock_unittest.py
delete mode 100644 tools/telemetry/telemetry/unittest/system_stub.py
delete mode 100644 tools/telemetry/telemetry/unittest/tab_test_case.py
delete mode 100644 tools/telemetry/third_party/.gitignore
delete mode 100644 tools/telemetry/third_party/davclient/README.chromium
delete mode 100644 tools/telemetry/third_party/davclient/davclient.py
delete mode 100644 tools/telemetry/third_party/png/README.chromium
delete mode 100755 tools/telemetry/third_party/png/png.py
delete mode 100644 tools/telemetry/third_party/websocket-client/.gitignore
delete mode 100644 tools/telemetry/third_party/websocket-client/LICENSE
delete mode 100644 tools/telemetry/third_party/websocket-client/README.chromium
delete mode 100644 tools/telemetry/third_party/websocket-client/README.rst
delete mode 100644 tools/telemetry/third_party/websocket-client/websocket.py
delete mode 100644 tools/telemetry/unittest_data/.gitignore
delete mode 100644 tools/telemetry/unittest_data/bear.webm
delete mode 100644 tools/telemetry/unittest_data/blank.html
delete mode 100644 tools/telemetry/unittest_data/component_extension/background.js
delete mode 100644 tools/telemetry/unittest_data/component_extension/manifest.json
delete mode 100644 tools/telemetry/unittest_data/discoverable_classes/__init__.py
delete mode 100644 tools/telemetry/unittest_data/discoverable_classes/discover_dummyclass.py
delete mode 100644 tools/telemetry/unittest_data/discoverable_classes/dummy_profile_creator.py
delete mode 100644 tools/telemetry/unittest_data/dom_counter_sample.html
delete mode 100644 tools/telemetry/unittest_data/green_rect.html
delete mode 100644 tools/telemetry/unittest_data/image.png
delete mode 100644 tools/telemetry/unittest_data/image_decoding.html
delete mode 100644 tools/telemetry/unittest_data/non_scrollable_page.html
delete mode 100644 tools/telemetry/unittest_data/page_that_logs_to_console.html
delete mode 100644 tools/telemetry/unittest_data/page_with_link.html
delete mode 100644 tools/telemetry/unittest_data/scrollable_page.html
delete mode 100644 tools/telemetry/unittest_data/simple_extension/background.js
delete mode 100644 tools/telemetry/unittest_data/simple_extension/manifest.json
delete mode 100644 tools/telemetry/unittest_data/video_test.html
delete mode 100755 tools/telemetry/update_docs
delete mode 100644 tools/telemetry_tools/__init__.py
delete mode 100644 tools/telemetry_tools/bootstrap_deps
delete mode 100644 tools/telemetry_tools/telemetry_bootstrap.py
delete mode 100644 tools/trace/trace.html
delete mode 100644 tools/trace/trace_data.js
delete mode 100644 tools/traceline/svgui/README
delete mode 100644 tools/traceline/svgui/startup-release.json
delete mode 100644 tools/traceline/svgui/traceline.css
delete mode 100644 tools/traceline/svgui/traceline.js
delete mode 100644 tools/traceline/svgui/traceline.xml
delete mode 100644 tools/traceline/traceline/Makefile
delete mode 100644 tools/traceline/traceline/README
delete mode 100644 tools/traceline/traceline/assembler.h
delete mode 100644 tools/traceline/traceline/assembler_unittest.cc
delete mode 100755 tools/traceline/traceline/assembler_unittest.sh
delete mode 100644 tools/traceline/traceline/assembler_unittest.sh.expected
delete mode 100755 tools/traceline/traceline/dump_syscalls_idarub.rb
delete mode 100644 tools/traceline/traceline/logging.h
delete mode 100644 tools/traceline/traceline/main.cc
delete mode 100644 tools/traceline/traceline/rdtsc.h
delete mode 100644 tools/traceline/traceline/scripts/__init__.py
delete mode 100755 tools/traceline/traceline/scripts/alloc.py
delete mode 100644 tools/traceline/traceline/scripts/crit_sec.js
delete mode 100755 tools/traceline/traceline/scripts/crit_sec.py
delete mode 100755 tools/traceline/traceline/scripts/filter_short.py
delete mode 100755 tools/traceline/traceline/scripts/filter_split.sh
delete mode 100644 tools/traceline/traceline/scripts/heap.js
delete mode 100755 tools/traceline/traceline/scripts/scstats.py
delete mode 100755 tools/traceline/traceline/scripts/split.py
delete mode 100644 tools/traceline/traceline/scripts/syscalls.py
delete mode 100644 tools/traceline/traceline/sidestep/ia32_modrm_map.cc
delete mode 100644 tools/traceline/traceline/sidestep/ia32_opcode_map.cc
delete mode 100644 tools/traceline/traceline/sidestep/mini_disassembler.cc
delete mode 100644 tools/traceline/traceline/sidestep/mini_disassembler.h
delete mode 100644 tools/traceline/traceline/sidestep/mini_disassembler_types.h
delete mode 100644 tools/traceline/traceline/stubs.asm
delete mode 100644 tools/traceline/traceline/sym_resolver.h
delete mode 100644 tools/traceline/traceline/syscall_map.h
delete mode 100755 tools/unused-symbols-report.py
delete mode 100755 tools/update_reference_build.py
delete mode 100644 tools/usb_ids/usb_ids.py
delete mode 100644 tools/webrtc_perf_expectations/README
delete mode 100644 tools/webrtc_perf_expectations/perf_expectations.json
delete mode 100644 tools/webrtc_perf_expectations/webrtc_perf_expectations.cfg
delete mode 100755 tools/win/copy-installer.bat
delete mode 100755 tools/win/link_limiter/build_link_limiter.py
delete mode 100644 tools/win/link_limiter/limiter.cc
delete mode 100644 tools/win/sizeviewer/README.chromium
delete mode 100755 tools/win/sizeviewer/code_tally.exe
delete mode 100644 tools/win/sizeviewer/sizeviewer.py
delete mode 100644 tools/win/sizeviewer/template.html
delete mode 100644 tools/win/split_link/check_installed.py
delete mode 100644 tools/win/split_link/graph_dependencies.py
delete mode 100644 tools/win/split_link/install_split_link.py
delete mode 100644 tools/win/split_link/split_link.cc
delete mode 100644 tools/win/split_link/split_link.py
delete mode 100644 tools/win/split_link/viz.js/COPYING
delete mode 100644 tools/win/split_link/viz.js/viz.js
delete mode 100755 tools/win/toolchain/7z/7z.dll
delete mode 100755 tools/win/toolchain/7z/7z.exe
delete mode 100644 tools/win/toolchain/7z/LICENSE
delete mode 100644 tools/win/toolchain/toolchain.py
diff --git a/tools/DEPS b/tools/DEPS
deleted file mode 100644
index dc04e3dfc6..0000000000
--- a/tools/DEPS
+++ /dev/null
@@ -1,6 +0,0 @@
-# checkdeps.py shouldn't check include paths for files in these dirs:
-skip_child_includes = [
- "clang",
- "gyp",
- "traceline",
-]
diff --git a/tools/OWNERS b/tools/OWNERS
deleted file mode 100644
index 4cd808f040..0000000000
--- a/tools/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-*
-
-per-file bisect-builds.py=rsesek@chromium.org
diff --git a/tools/PRESUBMIT.py b/tools/PRESUBMIT.py
deleted file mode 100644
index 01572314c0..0000000000
--- a/tools/PRESUBMIT.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (c) 2013 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.
-
-"""Top-level presubmit script for bisect trybot.
-
-See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts for
-details on the presubmit API built into gcl.
-"""
-
-import imp
-
-def _ExamineBisectConfigFile(input_api, output_api):
- for f in input_api.AffectedFiles():
- if not f.LocalPath().endswith('run-bisect-perf-regression.cfg'):
- continue
-
- try:
- cfg_file = imp.load_source('config', 'run-bisect-perf-regression.cfg')
-
- for k, v in cfg_file.config.iteritems():
- if v:
- return f.LocalPath()
- except (IOError, AttributeError, TypeError):
- return f.LocalPath()
-
- return None
-
-def _CheckNoChangesToBisectConfigFile(input_api, output_api):
- results = _ExamineBisectConfigFile(input_api, output_api)
- if results:
- return [output_api.PresubmitError(
- 'The bisection config file should only contain a config dict with '
- 'empty fields. Changes to this file should never be submitted.',
- items=[results])]
-
- return []
-
-def CommonChecks(input_api, output_api):
- results = []
- results.extend(_CheckNoChangesToBisectConfigFile(input_api, output_api))
- return results
-
-def CheckChangeOnUpload(input_api, output_api):
- return CommonChecks(input_api, output_api)
-
-def CheckChangeOnCommit(input_api, output_api):
- return CommonChecks(input_api, output_api)
diff --git a/tools/android/OWNERS b/tools/android/OWNERS
deleted file mode 100644
index e911c595c5..0000000000
--- a/tools/android/OWNERS
+++ /dev/null
@@ -1,6 +0,0 @@
-bulach@chromium.org
-digit@chromium.org
-michaelbai@chromium.org
-pliard@chromium.org
-wangxianzhu@chromium.org
-yfriedman@chromium.org
diff --git a/tools/android/adb_reboot/adb_reboot.c b/tools/android/adb_reboot/adb_reboot.c
deleted file mode 100644
index 48c5cbe58f..0000000000
--- a/tools/android/adb_reboot/adb_reboot.c
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2013 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.
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-int main(int argc, char ** argv) {
- int i = fork();
- struct stat ft;
- time_t ct;
-
- if (i < 0) {
- printf("fork error");
- return 1;
- }
- if (i > 0)
- return 0;
-
- /* child (daemon) continues */
- int j;
- for (j = 0; j < getdtablesize(); j++)
- close(j);
-
- setsid(); /* obtain a new process group */
-
- while (1) {
- sleep(120);
-
- stat("/sdcard/host_heartbeat", &ft);
- time(&ct);
- if (ct - ft.st_mtime > 120) {
- /* File was not touched for some time. */
- system("su -c reboot");
- }
- }
-
- return 0;
-}
diff --git a/tools/android/adb_reboot/adb_reboot.gyp b/tools/android/adb_reboot/adb_reboot.gyp
deleted file mode 100644
index 85134b9906..0000000000
--- a/tools/android/adb_reboot/adb_reboot.gyp
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright (c) 2013 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.
-{
- 'targets': [
- {
- 'target_name': 'adb_reboot',
- 'type': 'executable',
- 'sources': [
- 'adb_reboot.c',
- ],
- },
- ],
-}
diff --git a/tools/android/android_tools.gyp b/tools/android/android_tools.gyp
deleted file mode 100644
index c38cd70d58..0000000000
--- a/tools/android/android_tools.gyp
+++ /dev/null
@@ -1,27 +0,0 @@
-# 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.
-
-{
- 'targets': [
- # Intermediate target grouping the android tools needed to run native
- # unittests and instrumentation test apks.
- {
- 'target_name': 'android_tools',
- 'type': 'none',
- 'dependencies': [
- 'fake_dns/fake_dns.gyp:fake_dns',
- 'forwarder2/forwarder.gyp:forwarder2',
- 'md5sum/md5sum.gyp:md5sum',
- 'adb_reboot/adb_reboot.gyp:adb_reboot',
- ],
- },
- {
- 'target_name': 'memdump',
- 'type': 'none',
- 'dependencies': [
- 'memdump/memdump.gyp:memdump',
- ],
- }
- ],
-}
diff --git a/tools/android/asan/asanwrapper.sh b/tools/android/asan/asanwrapper.sh
deleted file mode 100755
index 2392d2ca44..0000000000
--- a/tools/android/asan/asanwrapper.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/system/bin/sh
-# 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.
-
-ASAN_OPTIONS=debug=1,verbosity=1,strict_memcmp=0 \
-LD_LIBRARY_PATH=/data/local/tmp/asan:$LD_LIBRARY_PATH \
-LD_PRELOAD=libclang_rt.asan-arm-android.so \
-exec $@
diff --git a/tools/android/common/adb_connection.cc b/tools/android/common/adb_connection.cc
deleted file mode 100644
index 91c25fed20..0000000000
--- a/tools/android/common/adb_connection.cc
+++ /dev/null
@@ -1,107 +0,0 @@
-// 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.
-
-#include "tools/android/common/adb_connection.h"
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "base/logging.h"
-#include "base/posix/eintr_wrapper.h"
-#include "tools/android/common/net.h"
-
-namespace tools {
-namespace {
-
-void CloseSocket(int fd) {
- if (fd >= 0) {
- int old_errno = errno;
- (void) HANDLE_EINTR(close(fd));
- errno = old_errno;
- }
-}
-
-} // namespace
-
-int ConnectAdbHostSocket(const char* forward_to) {
- // ADB port forward request format: HHHHtcp:port:address.
- // HHHH is the hexidecimal length of the "tcp:port:address" part.
- const size_t kBufferMaxLength = 30;
- const size_t kLengthOfLength = 4;
- const size_t kAddressMaxLength = kBufferMaxLength - kLengthOfLength;
-
- const char kAddressPrefix[] = { 't', 'c', 'p', ':' };
- size_t address_length = arraysize(kAddressPrefix) + strlen(forward_to);
- if (address_length > kBufferMaxLength - kLengthOfLength) {
- LOG(ERROR) << "Forward to address is too long: " << forward_to;
- return -1;
- }
-
- char request[kBufferMaxLength];
- memcpy(request + kLengthOfLength, kAddressPrefix, arraysize(kAddressPrefix));
- memcpy(request + kLengthOfLength + arraysize(kAddressPrefix),
- forward_to, strlen(forward_to));
-
- char length_buffer[kLengthOfLength + 1];
- snprintf(length_buffer, arraysize(length_buffer), "%04X",
- static_cast(address_length));
- memcpy(request, length_buffer, kLengthOfLength);
-
- int host_socket = socket(AF_INET, SOCK_STREAM, 0);
- if (host_socket < 0) {
- LOG(ERROR) << "Failed to create adb socket: " << strerror(errno);
- return -1;
- }
-
- DisableNagle(host_socket);
-
- const int kAdbPort = 5037;
- sockaddr_in addr;
- memset(&addr, 0, sizeof(addr));
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
- addr.sin_port = htons(kAdbPort);
- if (HANDLE_EINTR(connect(host_socket, reinterpret_cast(&addr),
- sizeof(addr))) < 0) {
- LOG(ERROR) << "Failed to connect adb socket: " << strerror(errno);
- CloseSocket(host_socket);
- return -1;
- }
-
- size_t bytes_remaining = address_length + kLengthOfLength;
- size_t bytes_sent = 0;
- while (bytes_remaining > 0) {
- int ret = HANDLE_EINTR(send(host_socket, request + bytes_sent,
- bytes_remaining, 0));
- if (ret < 0) {
- LOG(ERROR) << "Failed to send request: " << strerror(errno);
- CloseSocket(host_socket);
- return -1;
- }
-
- bytes_sent += ret;
- bytes_remaining -= ret;
- }
-
- const size_t kAdbStatusLength = 4;
- char response[kBufferMaxLength];
- int response_length = HANDLE_EINTR(recv(host_socket, response,
- kBufferMaxLength, 0));
- if (response_length < kAdbStatusLength ||
- strncmp("OKAY", response, kAdbStatusLength) != 0) {
- LOG(ERROR) << "Bad response from ADB: length: " << response_length
- << " data: " << DumpBinary(response, response_length);
- CloseSocket(host_socket);
- return -1;
- }
-
- return host_socket;
-}
-
-} // namespace tools
diff --git a/tools/android/common/adb_connection.h b/tools/android/common/adb_connection.h
deleted file mode 100644
index 3fa0fb396f..0000000000
--- a/tools/android/common/adb_connection.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-#ifndef TOOLS_ANDROID_COMMON_ADB_CONNECTION_H_
-#define TOOLS_ANDROID_COMMON_ADB_CONNECTION_H_
-
-namespace tools {
-
-// Creates a socket that can forward to a host socket through ADB.
-// The format of forward_to is :.
-// Returns the socket handle, or -1 on any error.
-int ConnectAdbHostSocket(const char* forward_to);
-
-} // namespace tools
-
-#endif // TOOLS_ANDROID_COMMON_ADB_CONNECTION_H_
-
diff --git a/tools/android/common/common.gyp b/tools/android/common/common.gyp
deleted file mode 100644
index 8622625844..0000000000
--- a/tools/android/common/common.gyp
+++ /dev/null
@@ -1,26 +0,0 @@
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'android_tools_common',
- 'type': 'static_library',
- 'toolsets': ['host', 'target'],
- 'include_dirs': [
- '..',
- '../../..',
- ],
- 'sources': [
- 'adb_connection.cc',
- 'adb_connection.h',
- 'daemon.cc',
- 'daemon.h',
- 'net.cc',
- 'net.h',
- ],
- },
- ],
-}
-
diff --git a/tools/android/common/daemon.cc b/tools/android/common/daemon.cc
deleted file mode 100644
index 9eafdbce05..0000000000
--- a/tools/android/common/daemon.cc
+++ /dev/null
@@ -1,75 +0,0 @@
-// 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.
-
-#include "tools/android/common/daemon.h"
-
-#include
-#include
-#include
-#include
-
-#include "base/command_line.h"
-#include "base/logging.h"
-#include "base/posix/eintr_wrapper.h"
-
-namespace {
-
-const char kNoSpawnDaemon[] = "D";
-
-int g_exit_status = 0;
-
-void Exit(int unused) {
- _exit(g_exit_status);
-}
-
-void CloseFileDescriptor(int fd) {
- int old_errno = errno;
- (void) HANDLE_EINTR(close(fd));
- errno = old_errno;
-}
-
-} // namespace
-
-namespace tools {
-
-bool HasHelpSwitch(const CommandLine& command_line) {
- return command_line.HasSwitch("h") || command_line.HasSwitch("help");
-}
-
-bool HasNoSpawnDaemonSwitch(const CommandLine& command_line) {
- return command_line.HasSwitch(kNoSpawnDaemon);
-}
-
-void ShowHelp(const char* program,
- const char* extra_title,
- const char* extra_descriptions) {
- printf("Usage: %s [-%s] %s\n"
- " -%s stops from spawning a daemon process\n%s",
- program, kNoSpawnDaemon, extra_title, kNoSpawnDaemon,
- extra_descriptions);
-}
-
-void SpawnDaemon(int exit_status) {
- g_exit_status = exit_status;
- signal(SIGUSR1, Exit);
-
- if (fork()) {
- // In parent process.
- sleep(10); // Wait for the child process to finish setsid().
- NOTREACHED();
- }
-
- // In child process.
- setsid(); // Detach the child process from its parent.
- kill(getppid(), SIGUSR1); // Inform the parent process to exit.
-
- // Close the standard input and outputs, otherwise the process may block
- // adbd when the shell exits.
- // Comment out these lines if you want to see outputs for debugging.
- CloseFileDescriptor(0);
- CloseFileDescriptor(1);
- CloseFileDescriptor(2);
-}
-
-} // namespace tools
diff --git a/tools/android/common/daemon.h b/tools/android/common/daemon.h
deleted file mode 100644
index 0c1640107d..0000000000
--- a/tools/android/common/daemon.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-#ifndef TOOLS_ANDROID_COMMON_DAEMON_H_
-#define TOOLS_ANDROID_COMMON_DAEMON_H_
-
-class CommandLine;
-
-namespace tools {
-
-bool HasHelpSwitch(const CommandLine& command_line);
-
-bool HasNoSpawnDaemonSwitch(const CommandLine& command_line);
-
-void ShowHelp(const char* program,
- const char* extra_title,
- const char* extra_descriptions);
-
-// Spawns a daemon process and exits the current process with exit_status.
-// Any code executed after this function returns will be executed in the
-// spawned daemon process.
-void SpawnDaemon(int exit_status);
-
-} // namespace tools
-
-#endif // TOOLS_ANDROID_COMMON_DAEMON_H_
-
diff --git a/tools/android/common/net.cc b/tools/android/common/net.cc
deleted file mode 100644
index 3b9ef15bc3..0000000000
--- a/tools/android/common/net.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-// 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.
-
-#include "tools/android/common/net.h"
-
-#include
-#include
-#include
-#include
-
-#include "base/strings/stringprintf.h"
-
-namespace tools {
-
-int DisableNagle(int socket) {
- int on = 1;
- return setsockopt(socket, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
-}
-
-int DeferAccept(int socket) {
- int on = 1;
- return setsockopt(socket, IPPROTO_TCP, TCP_DEFER_ACCEPT, &on, sizeof(on));
-}
-
-std::string DumpBinary(const char* buffer, size_t length) {
- std::string result = "[";
- for (int i = 0; i < length; ++i) {
- base::StringAppendF(&result, "%02x,",
- static_cast(buffer[i]));
- }
-
- if (length)
- result.erase(result.length() - 1);
-
- return result + "]";
-}
-
-} // namespace tools
-
diff --git a/tools/android/common/net.h b/tools/android/common/net.h
deleted file mode 100644
index e3619548ab..0000000000
--- a/tools/android/common/net.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-
-#ifndef TOOLS_ANDROID_COMMON_NET_H_
-#define TOOLS_ANDROID_COMMON_NET_H_
-
-#include
-
-namespace tools {
-
-// DisableNagle can improve TCP transmission performance. Both Chrome net stack
-// and adb tool use it.
-int DisableNagle(int socket);
-
-// Wake up listener only when data arrive.
-int DeferAccept(int socket);
-
-// Dumps a binary buffer into a string in a human-readable format.
-std::string DumpBinary(const char* buffer, size_t length);
-
-} // namespace tools
-
-#endif // TOOLS_ANDROID_COMMON_NET_H_
-
diff --git a/tools/android/device_stats_monitor/device_stats_monitor.cc b/tools/android/device_stats_monitor/device_stats_monitor.cc
deleted file mode 100644
index 6388cdaf43..0000000000
--- a/tools/android/device_stats_monitor/device_stats_monitor.cc
+++ /dev/null
@@ -1,108 +0,0 @@
-// 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.
-
-// Dumps CPU and IO stats to a file at a regular interval.
-//
-// Output may be post processed by host to get top/iotop style information.
-
-#include
-#include
-
-#include
-#include
-#include
-
-#include "base/command_line.h"
-#include "base/file_util.h"
-#include "base/strings/string_split.h"
-
-namespace {
-
-const char kIOStatsPath[] = "/proc/diskstats";
-const char kCPUStatsPath[] = "/proc/stat";
-
-class DeviceStatsMonitor {
- public:
- explicit DeviceStatsMonitor(const std::string& out_path)
- : out_path_(out_path),
- record_(true) {
- CHECK(!out_path_.empty());
- samples_.reserve(1024 * 1024);
- }
-
- // Records stats continuously at |hz| cycles per second util
- // StopRecordingAndDumpStats() is called.
- //
- // Yes, this buffers everything in memory, so it cannot be used for extended
- // durations without OOM. But that beats writing during the trace which
- // would affect the results.
- void Start(int hz) {
- const int sample_interval = 1000000 / hz;
- const base::FilePath io_stats_path(kIOStatsPath);
- const base::FilePath cpu_stats_path(kCPUStatsPath);
- std::string out;
- while (record_) {
- out.clear();
- CHECK(file_util::ReadFileToString(io_stats_path, &out));
- CHECK(file_util::ReadFileToString(cpu_stats_path, &out));
- samples_.push_back(out);
- usleep(sample_interval);
- }
- }
-
- // Stops recording and saves samples to file.
- void StopAndDumpStats() {
- record_ = false;
- usleep(250 * 1000);
- std::ofstream out_stream;
- out_stream.open(out_path_.value().c_str(), std::ios::out);
- for (std::vector::const_iterator i = samples_.begin();
- i != samples_.end(); ++i) {
- out_stream << i->c_str() << std::endl;
- }
- out_stream.close();
- }
-
- private:
- const base::FilePath out_path_;
- std::vector samples_;
- bool record_;
-
- DISALLOW_COPY_AND_ASSIGN(DeviceStatsMonitor);
-};
-
-DeviceStatsMonitor* g_device_stats_monitor = NULL;
-
-void SigTermHandler(int unused) {
- printf("Stopping device stats monitor\n");
- g_device_stats_monitor->StopAndDumpStats();
-}
-
-} // namespace
-
-int main(int argc, char** argv) {
- const int kDefaultHz = 20;
-
- CommandLine command_line(argc, argv);
- CommandLine::StringVector args = command_line.GetArgs();
- if (command_line.HasSwitch("h") || command_line.HasSwitch("help") ||
- args.size() != 1) {
- printf("Usage: %s OUTPUT_FILE\n"
- " --hz=HZ Number of samples/second. default=%d\n",
- argv[0], kDefaultHz);
- return 1;
- }
-
- int hz = command_line.HasSwitch("hz") ?
- atoi(command_line.GetSwitchValueNative("hz").c_str()) :
- kDefaultHz;
-
- printf("Starting device stats monitor\n");
- g_device_stats_monitor = new DeviceStatsMonitor(args[0]);
- signal(SIGTERM, SigTermHandler);
- g_device_stats_monitor->Start(hz);
- delete g_device_stats_monitor;
-
- return 0;
-}
diff --git a/tools/android/device_stats_monitor/device_stats_monitor.gyp b/tools/android/device_stats_monitor/device_stats_monitor.gyp
deleted file mode 100644
index f9bd9e8e4b..0000000000
--- a/tools/android/device_stats_monitor/device_stats_monitor.gyp
+++ /dev/null
@@ -1,41 +0,0 @@
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'device_stats_monitor',
- 'type': 'none',
- 'dependencies': [
- 'device_stats_monitor_symbols',
- ],
- 'actions': [
- {
- 'action_name': 'strip_device_stats_monitor',
- 'inputs': ['<(PRODUCT_DIR)/device_stats_monitor_symbols'],
- 'outputs': ['<(PRODUCT_DIR)/device_stats_monitor'],
- 'action': [
- '<(android_strip)',
- '--strip-unneeded',
- '<@(_inputs)',
- '-o',
- '<@(_outputs)',
- ],
- },
- ],
- }, {
- 'target_name': 'device_stats_monitor_symbols',
- 'type': 'executable',
- 'dependencies': [
- '../../../base/base.gyp:base',
- ],
- 'include_dirs': [
- '../../..',
- ],
- 'sources': [
- 'device_stats_monitor.cc',
- ],
- },
- ],
-}
diff --git a/tools/android/fake_dns/DEPS b/tools/android/fake_dns/DEPS
deleted file mode 100644
index 8fa9d48d88..0000000000
--- a/tools/android/fake_dns/DEPS
+++ /dev/null
@@ -1,3 +0,0 @@
-include_rules = [
- "+net",
-]
diff --git a/tools/android/fake_dns/fake_dns.cc b/tools/android/fake_dns/fake_dns.cc
deleted file mode 100644
index 9a055bfd37..0000000000
--- a/tools/android/fake_dns/fake_dns.cc
+++ /dev/null
@@ -1,238 +0,0 @@
-// 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.
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-
-#include "base/basictypes.h"
-#include "base/command_line.h"
-#include "base/logging.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/safe_strerror_posix.h"
-#include "net/base/big_endian.h"
-#include "net/base/net_util.h"
-#include "net/dns/dns_protocol.h"
-#include "tools/android/common/daemon.h"
-#include "tools/android/common/net.h"
-
-namespace {
-
-// Mininum request size: 1 question containing 1 QNAME, 1 TYPE and 1 CLASS.
-const size_t kMinRequestSize = sizeof(net::dns_protocol::Header) + 6;
-
-// The name reference in the answer pointing to the name in the query.
-// Its format is: highest two bits set to 1, then the offset of the name
-// which just follows the header.
-const uint16 kPointerToQueryName =
- static_cast(0xc000 | sizeof(net::dns_protocol::Header));
-
-const uint32 kTTL = 86400; // One day.
-
-void PError(const char* msg) {
- int current_errno = errno;
- LOG(ERROR) << "ERROR: " << msg << ": " << safe_strerror(current_errno);
-}
-
-void SendTo(int sockfd, const void* buf, size_t len, int flags,
- const sockaddr* dest_addr, socklen_t addrlen) {
- if (HANDLE_EINTR(sendto(sockfd, buf, len, flags, dest_addr, addrlen)) == -1)
- PError("sendto()");
-}
-
-void CloseFileDescriptor(int fd) {
- int old_errno = errno;
- (void) HANDLE_EINTR(close(fd));
- errno = old_errno;
-}
-
-void SendRefusedResponse(int sock, const sockaddr_in& client_addr, uint16 id) {
- net::dns_protocol::Header response;
- response.id = htons(id);
- response.flags = htons(net::dns_protocol::kFlagResponse |
- net::dns_protocol::kFlagAA |
- net::dns_protocol::kFlagRD |
- net::dns_protocol::kFlagRA |
- net::dns_protocol::kRcodeREFUSED);
- response.qdcount = 0;
- response.ancount = 0;
- response.nscount = 0;
- response.arcount = 0;
- SendTo(sock, &response, sizeof(response), 0,
- reinterpret_cast(&client_addr), sizeof(client_addr));
-}
-
-void SendResponse(int sock, const sockaddr_in& client_addr, uint16 id,
- uint16 qtype, const char* question, size_t question_length) {
- net::dns_protocol::Header header;
- header.id = htons(id);
- header.flags = htons(net::dns_protocol::kFlagResponse |
- net::dns_protocol::kFlagAA |
- net::dns_protocol::kFlagRD |
- net::dns_protocol::kFlagRA |
- net::dns_protocol::kRcodeNOERROR);
- header.qdcount = htons(1);
- header.ancount = htons(1);
- header.nscount = 0;
- header.arcount = 0;
-
- // Size of RDATA which is a IPv4 or IPv6 address.
- size_t rdata_size = qtype == net::dns_protocol::kTypeA ?
- net::kIPv4AddressSize : net::kIPv6AddressSize;
-
- // Size of the whole response which contains the header, the question and
- // the answer. 12 is the sum of sizes of the compressed name reference, TYPE,
- // CLASS, TTL and RDLENGTH.
- size_t response_size = sizeof(header) + question_length + 12 + rdata_size;
-
- if (response_size > net::dns_protocol::kMaxUDPSize) {
- LOG(ERROR) << "Response is too large: " << response_size;
- SendRefusedResponse(sock, client_addr, id);
- return;
- }
-
- char response[net::dns_protocol::kMaxUDPSize];
- net::BigEndianWriter writer(response, arraysize(response));
- writer.WriteBytes(&header, sizeof(header));
-
- // Repeat the question in the response. Some clients (e.g. ping) needs this.
- writer.WriteBytes(question, question_length);
-
- // Construct the answer.
- writer.WriteU16(kPointerToQueryName);
- writer.WriteU16(qtype);
- writer.WriteU16(net::dns_protocol::kClassIN);
- writer.WriteU32(kTTL);
- writer.WriteU16(rdata_size);
- if (qtype == net::dns_protocol::kTypeA)
- writer.WriteU32(INADDR_LOOPBACK);
- else
- writer.WriteBytes(&in6addr_loopback, sizeof(in6_addr));
- DCHECK(writer.ptr() - response == response_size);
-
- SendTo(sock, response, response_size, 0,
- reinterpret_cast(&client_addr), sizeof(client_addr));
-}
-
-void HandleRequest(int sock, const char* request, size_t size,
- const sockaddr_in& client_addr) {
- if (size < kMinRequestSize) {
- LOG(ERROR) << "Request is too small " << size
- << "\n" << tools::DumpBinary(request, size);
- return;
- }
-
- net::BigEndianReader reader(request, size);
- net::dns_protocol::Header header;
- reader.ReadBytes(&header, sizeof(header));
- uint16 id = ntohs(header.id);
- uint16 flags = ntohs(header.flags);
- uint16 qdcount = ntohs(header.qdcount);
- uint16 ancount = ntohs(header.ancount);
- uint16 nscount = ntohs(header.nscount);
- uint16 arcount = ntohs(header.arcount);
-
- const uint16 kAllowedFlags = 0x07ff;
- if ((flags & ~kAllowedFlags) ||
- qdcount != 1 || ancount || nscount || arcount) {
- LOG(ERROR) << "Unsupported request: FLAGS=" << flags
- << " QDCOUNT=" << qdcount
- << " ANCOUNT=" << ancount
- << " NSCOUNT=" << nscount
- << " ARCOUNT=" << arcount
- << "\n" << tools::DumpBinary(request, size);
- SendRefusedResponse(sock, client_addr, id);
- return;
- }
-
- // request[size - 5] should be the end of the QNAME (a zero byte).
- // We don't care about the validity of QNAME because we don't parse it.
- const char* qname_end = &request[size - 5];
- if (*qname_end) {
- LOG(ERROR) << "Error parsing QNAME\n" << tools::DumpBinary(request, size);
- SendRefusedResponse(sock, client_addr, id);
- return;
- }
-
- reader.Skip(qname_end - reader.ptr() + 1);
-
- uint16 qtype;
- uint16 qclass;
- reader.ReadU16(&qtype);
- reader.ReadU16(&qclass);
- if ((qtype != net::dns_protocol::kTypeA &&
- qtype != net::dns_protocol::kTypeAAAA) ||
- qclass != net::dns_protocol::kClassIN) {
- LOG(ERROR) << "Unsupported query: QTYPE=" << qtype << " QCLASS=" << qclass
- << "\n" << tools::DumpBinary(request, size);
- SendRefusedResponse(sock, client_addr, id);
- return;
- }
-
- SendResponse(sock, client_addr, id, qtype,
- request + sizeof(header), size - sizeof(header));
-}
-
-} // namespace
-
-int main(int argc, char** argv) {
- printf("Fake DNS server\n");
-
- CommandLine command_line(argc, argv);
- if (tools::HasHelpSwitch(command_line) || command_line.GetArgs().size()) {
- tools::ShowHelp(argv[0], "", "");
- return 0;
- }
-
- int sock = socket(AF_INET, SOCK_DGRAM, 0);
- if (sock < 0) {
- PError("create socket");
- return 1;
- }
-
- sockaddr_in addr;
- memset(&addr, 0, sizeof(addr));
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
- addr.sin_port = htons(53);
- int reuse_addr = 1;
- if (HANDLE_EINTR(bind(sock, reinterpret_cast(&addr),
- sizeof(addr))) < 0) {
- PError("server bind");
- CloseFileDescriptor(sock);
- return 1;
- }
-
- if (!tools::HasNoSpawnDaemonSwitch(command_line))
- tools::SpawnDaemon(0);
-
- while (true) {
- sockaddr_in client_addr;
- socklen_t client_addr_len = sizeof(client_addr);
- char request[net::dns_protocol::kMaxUDPSize];
- int size = HANDLE_EINTR(recvfrom(sock, request, sizeof(request),
- MSG_WAITALL,
- reinterpret_cast(&client_addr),
- &client_addr_len));
- if (size < 0) {
- // Unrecoverable error, can only exit.
- LOG(ERROR) << "Failed to receive a request: " << strerror(errno);
- CloseFileDescriptor(sock);
- return 1;
- }
-
- if (size > 0)
- HandleRequest(sock, request, size, client_addr);
- }
-}
-
diff --git a/tools/android/fake_dns/fake_dns.gyp b/tools/android/fake_dns/fake_dns.gyp
deleted file mode 100644
index 0edacfadf0..0000000000
--- a/tools/android/fake_dns/fake_dns.gyp
+++ /dev/null
@@ -1,44 +0,0 @@
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'fake_dns',
- 'type': 'none',
- 'dependencies': [
- 'fake_dns_symbols',
- ],
- 'actions': [
- {
- 'action_name': 'strip_fake_dns',
- 'inputs': ['<(PRODUCT_DIR)/fake_dns_symbols'],
- 'outputs': ['<(PRODUCT_DIR)/fake_dns'],
- 'action': [
- '<(android_strip)',
- '--strip-unneeded',
- '<@(_inputs)',
- '-o',
- '<@(_outputs)',
- ],
- },
- ],
- }, {
- 'target_name': 'fake_dns_symbols',
- 'type': 'executable',
- 'dependencies': [
- '../../../base/base.gyp:base',
- '../../../net/net.gyp:net',
- '../common/common.gyp:android_tools_common',
- ],
- 'include_dirs': [
- '../../..',
- ],
- 'sources': [
- 'fake_dns.cc',
- ],
- },
- ],
-}
-
diff --git a/tools/android/find_unused_resources.py b/tools/android/find_unused_resources.py
deleted file mode 100755
index da86e73415..0000000000
--- a/tools/android/find_unused_resources.py
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/usr/bin/python
-# Copyright (c) 2013 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.
-
-"""Lists unused Java strings and other resources."""
-
-import optparse
-import re
-import subprocess
-import sys
-
-
-def GetApkResources(apk_path):
- """Returns the types and names of resources packaged in an APK.
-
- Args:
- apk_path: path to the APK.
-
- Returns:
- The resources in the APK as a list of tuples (type, name). Example:
- [('drawable', 'arrow'), ('layout', 'month_picker'), ...]
- """
- p = subprocess.Popen(
- ['aapt', 'dump', 'resources', apk_path],
- stdout=subprocess.PIPE)
- dump_out, _ = p.communicate()
- assert p.returncode == 0, 'aapt dump failed'
- matches = re.finditer(
- r'^\s+spec resource 0x[0-9a-fA-F]+ [\w.]+:(?P\w+)/(?P\w+)',
- dump_out, re.MULTILINE)
- return [m.group('type', 'name') for m in matches]
-
-
-def GetUsedResources(source_paths, resource_types):
- """Returns the types and names of resources used in Java or resource files.
-
- Args:
- source_paths: a list of files or folders collectively containing all the
- Java files, resource files, and the AndroidManifest.xml.
- resource_types: a list of resource types to look for. Example:
- ['string', 'drawable']
-
- Returns:
- The resources referenced by the Java and resource files as a list of tuples
- (type, name). Example:
- [('drawable', 'app_icon'), ('layout', 'month_picker'), ...]
- """
- type_regex = '|'.join(map(re.escape, resource_types))
- patterns = [r'@(())(%s)/(\w+)' % type_regex,
- r'\b((\w+\.)*)R\.(%s)\.(\w+)' % type_regex]
- resources = []
- for pattern in patterns:
- p = subprocess.Popen(
- ['grep', '-REIhoe', pattern] + source_paths,
- stdout=subprocess.PIPE)
- grep_out, grep_err = p.communicate()
- # Check stderr instead of return code, since return code is 1 when no
- # matches are found.
- assert not grep_err, 'grep failed'
- matches = re.finditer(pattern, grep_out)
- for match in matches:
- package = match.group(1)
- if package == 'android.':
- continue
- type_ = match.group(3)
- name = match.group(4)
- resources.append((type_, name))
- return resources
-
-
-def FormatResources(resources):
- """Formats a list of resources for printing.
-
- Args:
- resources: a list of resources, given as (type, name) tuples.
- """
- return '\n'.join(['%-12s %s' % (t, n) for t, n in sorted(resources)])
-
-
-def ParseArgs(args):
- usage = 'usage: %prog [-v] APK_PATH SOURCE_PATH...'
- parser = optparse.OptionParser(usage=usage)
- parser.add_option('-v', help='Show verbose output', action='store_true')
- options, args = parser.parse_args(args=args)
- if len(args) < 2:
- parser.error('must provide APK_PATH and SOURCE_PATH arguments')
- return options.v, args[0], args[1:]
-
-
-def main(args=None):
- verbose, apk_path, source_paths = ParseArgs(args)
- apk_resources = GetApkResources(apk_path)
- resource_types = list(set([r[0] for r in apk_resources]))
- used_resources = GetUsedResources(source_paths, resource_types)
- unused_resources = set(apk_resources) - set(used_resources)
- undefined_resources = set(used_resources) - set(apk_resources)
-
- # aapt dump fails silently. Notify the user if things look wrong.
- if not apk_resources:
- print >> sys.stderr, (
- 'Warning: No resources found in the APK. Did you provide the correct '
- 'APK path?')
- if not used_resources:
- print >> sys.stderr, (
- 'Warning: No resources references from Java or resource files. Did you '
- 'provide the correct source paths?')
- if undefined_resources:
- print >> sys.stderr, (
- 'Warning: found %d "undefined" resources that are referenced by Java '
- 'files or by other resources, but are not in the APK. Run with -v to '
- 'see them.' % len(undefined_resources))
-
- if verbose:
- print '%d undefined resources:' % len(undefined_resources)
- print FormatResources(undefined_resources), '\n'
- print '%d resources packaged into the APK:' % len(apk_resources)
- print FormatResources(apk_resources), '\n'
- print '%d used resources:' % len(used_resources)
- print FormatResources(used_resources), '\n'
- print '%d unused resources:' % len(unused_resources)
- print FormatResources(unused_resources)
-
-
-if __name__ == '__main__':
- main()
diff --git a/tools/android/findbugs_plugin/README b/tools/android/findbugs_plugin/README
deleted file mode 100644
index 3ba3f53085..0000000000
--- a/tools/android/findbugs_plugin/README
+++ /dev/null
@@ -1,15 +0,0 @@
-This is the FindBugs plugin for chrome on android.
-
-Currently it detects:
-- synchronized method
-- synchronized 'this'
-
-We don't want the synchronized method and synchronized 'this' to be
-used, the exception is the synchronized method defined in Android
-API.
-
-The plugin jar file was prebuilt and checked in, to rebuild the
-plugin, you need ant, and run below command, the new jar file will
-be in lib directory.
-
-ant install
diff --git a/tools/android/findbugs_plugin/build.xml b/tools/android/findbugs_plugin/build.xml
deleted file mode 100644
index 09ee13c41f..0000000000
--- a/tools/android/findbugs_plugin/build.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
- Build findbugs_plugin for Chromium Android
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/tools/android/findbugs_plugin/findbugs.xml b/tools/android/findbugs_plugin/findbugs.xml
deleted file mode 100644
index 43b1f3417d..0000000000
--- a/tools/android/findbugs_plugin/findbugs.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/tools/android/findbugs_plugin/findbugs_plugin.gyp b/tools/android/findbugs_plugin/findbugs_plugin.gyp
deleted file mode 100644
index 16d06e6c25..0000000000
--- a/tools/android/findbugs_plugin/findbugs_plugin.gyp
+++ /dev/null
@@ -1,16 +0,0 @@
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'findbugs_plugin_test',
- 'type': 'none',
- 'variables': {
- 'java_in_dir': 'test/java/',
- },
- 'includes': [ '../../../build/java.gypi' ],
- }
- ]
-}
diff --git a/tools/android/findbugs_plugin/lib/chromiumPlugin.jar b/tools/android/findbugs_plugin/lib/chromiumPlugin.jar
deleted file mode 100644
index 6ccf61b4303f7e3edc39f6be7d0042c624141127..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 3913
zcma)9c|4SB8y-y7u`k(DcCt3M6on85$rz`QvW#h%A;y}JUG_wlQdtrs$(lKsV~J!p
zM#>V|mnH{A@BLiQb(uh@fb;+WEdX#=&sr1k)1m_a
z0Y*Aznlk#vx^i310D#H&P+C9|In;YW25LPvoHuT-AHd)J{M0$QaR9)@4I#JN
z@joLNzem_zb#p-@JSd{%Q)S^I8gf06&us;1MJT1%vdfcU
zBcNM7FJn>R@mnOO%Pp&&Fj$XxK&!9I`{ihXI2aubQCDKRB(NWGGa=uwX#i2_J%7U{
zZuI?B@aPI42RmQd#K3TPO`Lm`=1c@b2r>gEnno`cBa^5sYuL=z9!jmqOQdPFs#^dB
z^##j>P-OA8vFgzW#^N%?L>%Hh<7=RbnCLl!5Yuakz!DwXKyfxxk<4mGdulC$Qk|nJ
zksavo9*?7mFsfF5jz#eA2&*VMSN{i&!EuO-DL
z{cX9R0EN<~0)mTU*@*~HS;tqU&UMSEJXWsD{ihoyCJe^yQ}dhitN9w88kj$vCp@8j
zkXwKwu%{wL!OH&Qe1l_w$+wQ3$~rQ@7wVLBG{$#%+&X5ni(=EYpj7nkv~49_a^<2Z
zsr=MjZ_7gMM^S5OVe0pM9y7D5MR)!AQGblC*N7M?3FL}J^2FS1u$qpIy*Ht
zvM&!61&@|ybaG{n+)+R2GSPNV+~vzxS;z-22ARZ`WJ~Q72mIXf>*@yLryscpm51
zGJ|*JXEdG}XCVsTJq}I{n20^JIJi~@{{CS;PNnlDr$!K|j
z1NF$`A)$I*W&BS@PHGlhj1Dw_j)jF$@tVzKos_xmX=~^|=F>7xxP;3igrG!c0(Dfa_3hna|0(2z0=OF^^zlixd=l*
zWg07or*`_=Kb#qm#6Ib^5@d88bWv)-GQeb)8;ee)Xcuz&~P0$=6nN#!!DEHmujfnyKZF)D>!&J_u;Fpi;P
zXxIB@UiL`sN&tbhj;@`E}>KnV@Nd#o9l(%%@h|=NUM-F@9?d|M}%spGhV5VCh%j
zvN-NW@qGexV;hF{i=(-HryR<
z=kDSrYlpJIU}B(7=h!tl)VpaO!=r9S%9S387({z;d}4PDN(>Q`k!TQG3^nu$pPTV4
ze@8?8?bhjFZ9&Ho=Ebu-i1MmarNiOXzFw=XxJmrh#^xGd4W;!&{Hr->#evuQ7?p6}
zl;+_rd4aKbUCmS^+(CDdrG#ERxi$+lL08(|-}HX$QU^2coIG^YTstdPr|ssvYMrBw
zr-q!yUD_~f)jGN%mR8O}?OCHBVkE*fXa&!HT(A~ZG_j@(zvNJ^icTGPoYN9?rNdPf
z*7?;G&kA0KrhB}&(313`gkrs_OUW+BtO%>36#bzn?7UUCNyvl1jEoSlrp?V9EUlK9
zp-+G#9F57c-ZU9PqY9-0s{bspcvn#9T!1#?SYT&7r>Ue?zYOA1tg6Wjo2}4Xw9r@S
z$M?EsGBK)mRI_By>Xr*%9o3KsxrV=%-(FvifO$8yb>8_b^M(Cj@1ta^`=3?SE}E4!
z^{IVi%}bk2PAm*hP*20tpOK#d9!zSi^`zxmSNUw#Z8|61k08S9a$-8YLaNPRysuK>
z1-aZUbthsvr_OP9Xg&?cFXJXH2VAhi`p=kobGs*A6PLiI^-(wO^zsWg!)
zcLmud;)PvlUwW(hh^N3o4JpO0A!Dqjm(R=N1wS!NqwQ=Z{Gy{bj!8fK$UMd-Z}5s+
zHCokqb)*gA#rDE@Dv@93?DgA=%>T`vi$~BHJb6xu3ILfZmjPaf=?`MXD}-1md{
z=Q%aIip2afrDm4UZVisDa-+2J>^`B$pa|NleDM+_?L+)PhpD#=3C-MoHSrJ_&v*$8Z4AYsW0S5;vuLR;O$8sQ=HoDUe%=eBu1
zzt~nq?eufMpxagGGNSpQXpA1dBl&nK9j(8V+E6o1QCX5QcmL$|_
zNvr%TG_Ve#PU9ydUUe;nvg_rOmgRpn-<9y0c-o>aEsPEYe$Muh87f_lh0K!1qGR7?
zQj~}o)q5aQ&eCnf#g#ZOS0L?9sZ93`U0;d-mqfCXyxCSRh9Y}AnKI2IlvocV4}UtO
z#rHv|CwU6RB{Z1PVe*dVeCFkm>&NpF-39ZK-H(M1iK^F?CDy$l2xu92Guyyznd_L|
zp1ok_i6cp}kIqa7tqKYRJ-hOVfuuPkPvr;mlu6;GbkzCOknvN1d$#SI)7n|P9a$c
zgBwhzO@Dp-$@@kY;keS2;70=0{S)l*%I`95n}Z*jF#nQi&noP`
zmi^7bZp!SyQgXuGKDGtpk5={NsZNPs3gWMQY
diff --git a/tools/android/findbugs_plugin/messages.xml b/tools/android/findbugs_plugin/messages.xml
deleted file mode 100644
index aea983bc24..0000000000
--- a/tools/android/findbugs_plugin/messages.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
- Chromium FindBugs Plugin
- Adds style checks enforced in the chromium project.
-
-
-
-
-
-
-
-
-
-
- Shouldn't use synchronized(this)
- Shouldn't use synchronized(this), please narrow down the synchronization scope.
-
-Shouldn't use synchronized(this), please narrow down the synchronization scope.
-]]>
-
-
-
-
-
-
-
-
-
-
-
- Shouldn't use synchronized method
- Shouldn't use synchronized method, please narrow down the synchronization scope.
-
-Shouldn't use synchronized method, please narrow down the synchronization scope.
-]]>
-
-
-
- CHROMIUM
-
diff --git a/tools/android/findbugs_plugin/src/org/chromium/tools/findbugs/plugin/SynchronizedMethodDetector.java b/tools/android/findbugs_plugin/src/org/chromium/tools/findbugs/plugin/SynchronizedMethodDetector.java
deleted file mode 100644
index 7a879f6644..0000000000
--- a/tools/android/findbugs_plugin/src/org/chromium/tools/findbugs/plugin/SynchronizedMethodDetector.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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.
-
-package org.chromium.tools.findbugs.plugin;
-
-import edu.umd.cs.findbugs.BugInstance;
-import edu.umd.cs.findbugs.BugReporter;
-import edu.umd.cs.findbugs.bcel.OpcodeStackDetector;
-
-import org.apache.bcel.classfile.Code;
-
-/**
- * This class detects the synchronized method.
- */
-public class SynchronizedMethodDetector extends OpcodeStackDetector {
-
- private BugReporter mBugReporter;
-
- public SynchronizedMethodDetector(BugReporter bugReporter) {
- this.mBugReporter = bugReporter;
- }
-
- @Override
- public void visit(Code code) {
- if (getMethod().isSynchronized()) {
- mBugReporter.reportBug(new BugInstance(this, "CHROMIUM_SYNCHRONIZED_METHOD",
- NORMAL_PRIORITY)
- .addClassAndMethod(this)
- .addSourceLine(this));
- }
- super.visit(code);
- }
-
- @Override
- public void sawOpcode(int arg0) {
- }
-}
diff --git a/tools/android/findbugs_plugin/src/org/chromium/tools/findbugs/plugin/SynchronizedThisDetector.java b/tools/android/findbugs_plugin/src/org/chromium/tools/findbugs/plugin/SynchronizedThisDetector.java
deleted file mode 100644
index 330431ba7c..0000000000
--- a/tools/android/findbugs_plugin/src/org/chromium/tools/findbugs/plugin/SynchronizedThisDetector.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// 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.
-
-package org.chromium.tools.findbugs.plugin;
-
-import org.apache.bcel.classfile.Code;
-
-import edu.umd.cs.findbugs.BugInstance;
-import edu.umd.cs.findbugs.BugReporter;
-import edu.umd.cs.findbugs.bcel.OpcodeStackDetector;
-
-/**
- * This class detects the synchronized(this).
- *
- * The pattern of byte code of synchronized(this) is
- * aload_0 # Load the 'this' pointer on top of stack
- * dup # Duplicate the 'this' pointer
- * astore_x # Store this for late use, it might be astore.
- * monitorenter
- */
-public class SynchronizedThisDetector extends OpcodeStackDetector {
- private final int PATTERN[] = {ALOAD_0, DUP, 0xff, 0xff, MONITORENTER};
-
- private int mStep = 0;
- private BugReporter mBugReporter;
-
- public SynchronizedThisDetector(BugReporter bugReporter) {
- mBugReporter = bugReporter;
- }
-
- @Override
- public void visit(Code code) {
- mStep = 0;
- super.visit(code);
- }
-
- @Override
- public void sawOpcode(int seen) {
- if (PATTERN[mStep] == seen) {
- mStep++;
- if (mStep == PATTERN.length) {
- mBugReporter.reportBug(new BugInstance(this, "CHROMIUM_SYNCHRONIZED_THIS",
- NORMAL_PRIORITY)
- .addClassAndMethod(this)
- .addSourceLine(this));
- mStep = 0;
- return;
- }
- } else if (mStep == 2) {
- // This could be astore_x
- switch (seen) {
- case ASTORE_0:
- case ASTORE_1:
- case ASTORE_2:
- case ASTORE_3:
- mStep += 2;
- break;
- case ASTORE:
- mStep++;
- break;
- default:
- mStep = 0;
- break;
- }
- } else if (mStep == 3) {
- // Could be any byte following the ASTORE.
- mStep++;
- } else {
- mStep = 0;
- }
- }
-}
diff --git a/tools/android/findbugs_plugin/test/expected_result.txt b/tools/android/findbugs_plugin/test/expected_result.txt
deleted file mode 100644
index 076b00703c..0000000000
--- a/tools/android/findbugs_plugin/test/expected_result.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-M C CSM: Shouldn't use synchronized method, please narrow down the synchronization scope. At SimpleSynchronizedMethod.java
-M C CSM: Shouldn't use synchronized method, please narrow down the synchronization scope. At SimpleSynchronizedStaticMethod.java
-M C CST: Shouldn't use synchronized(this), please narrow down the synchronization scope. At SimpleSynchronizedThis.java
diff --git a/tools/android/findbugs_plugin/test/java/src/org/chromium/tools/findbugs/plugin/SimpleSynchronizedMethod.java b/tools/android/findbugs_plugin/test/java/src/org/chromium/tools/findbugs/plugin/SimpleSynchronizedMethod.java
deleted file mode 100644
index c04a35cb02..0000000000
--- a/tools/android/findbugs_plugin/test/java/src/org/chromium/tools/findbugs/plugin/SimpleSynchronizedMethod.java
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-
-package org.chromium.tools.findbugs.plugin;
-
-/**
- * This class has synchronized method and is used to test
- * SynchronizedMethodDetector.
- */
-class SimpleSynchronizedMethod {
- private int i = 0;
- synchronized void synchronizedMethod() {
- i++;
- }
-}
diff --git a/tools/android/findbugs_plugin/test/java/src/org/chromium/tools/findbugs/plugin/SimpleSynchronizedStaticMethod.java b/tools/android/findbugs_plugin/test/java/src/org/chromium/tools/findbugs/plugin/SimpleSynchronizedStaticMethod.java
deleted file mode 100644
index 0af6582fa0..0000000000
--- a/tools/android/findbugs_plugin/test/java/src/org/chromium/tools/findbugs/plugin/SimpleSynchronizedStaticMethod.java
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-package org.chromium.tools.findbugs.plugin;
-
-/**
- * This class is used to test SynchronizedMethodDetector
- */
-class SimpleSynchronizedStaticMethod {
- private static int i = 0;
- synchronized static void synchronizedStaticMethod() {
- i++;
- }
-}
diff --git a/tools/android/findbugs_plugin/test/java/src/org/chromium/tools/findbugs/plugin/SimpleSynchronizedThis.java b/tools/android/findbugs_plugin/test/java/src/org/chromium/tools/findbugs/plugin/SimpleSynchronizedThis.java
deleted file mode 100644
index 2c7e6fdfb4..0000000000
--- a/tools/android/findbugs_plugin/test/java/src/org/chromium/tools/findbugs/plugin/SimpleSynchronizedThis.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-package org.chromium.tools.findbugs.plugin;
-
-/**
- * This class has synchronized(this) statement and is used to test
- * SynchronizedThisDetector.
- */
-class SimpleSynchronizedThis {
- private int i = 0;
-
- void synchronizedThis() {
- synchronized(this) {
- i++;
- }
- }
-}
diff --git a/tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py b/tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py
deleted file mode 100755
index c2e1531484..0000000000
--- a/tools/android/findbugs_plugin/test/run_findbugs_plugin_tests.py
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/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.
-
-# This is used to test the findbugs plugin, it calls
-# build/android/pylib/utils/findbugs.py to analyze the classes in
-# org.chromium.tools.findbugs.plugin package, and expects to get the same
-# issue with those in expected_result.txt.
-#
-# Useful command line:
-# --rebaseline to generate the expected_result.txt, please make sure don't
-# remove the expected result of exsting tests.
-
-
-import optparse
-import os
-import sys
-
-sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__),
- '..', '..', '..', '..',
- 'build', 'android')))
-
-from pylib import constants
-from pylib.utils import findbugs
-
-
-def main(argv):
- parser = findbugs.GetCommonParser()
-
- options, _ = parser.parse_args()
-
- if not options.known_bugs:
- options.known_bugs = os.path.join(constants.DIR_SOURCE_ROOT, 'tools',
- 'android', 'findbugs_plugin', 'test',
- 'expected_result.txt')
- if not options.only_analyze:
- options.only_analyze = 'org.chromium.tools.findbugs.plugin.*'
-
- return findbugs.Run(options)
-
-if __name__ == '__main__':
- sys.exit(main(sys.argv))
diff --git a/tools/android/forwarder/forwarder.cc b/tools/android/forwarder/forwarder.cc
deleted file mode 100644
index e77c8065ff..0000000000
--- a/tools/android/forwarder/forwarder.cc
+++ /dev/null
@@ -1,426 +0,0 @@
-// 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.
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "base/command_line.h"
-#include "base/logging.h"
-#include "base/posix/eintr_wrapper.h"
-#include "tools/android/common/adb_connection.h"
-#include "tools/android/common/daemon.h"
-#include "tools/android/common/net.h"
-
-namespace {
-
-const pthread_t kInvalidThread = static_cast(-1);
-volatile bool g_killed = false;
-
-void CloseSocket(int fd) {
- if (fd >= 0) {
- int old_errno = errno;
- (void) HANDLE_EINTR(close(fd));
- errno = old_errno;
- }
-}
-
-class Buffer {
- public:
- Buffer()
- : bytes_read_(0),
- write_offset_(0) {
- }
-
- bool CanRead() {
- return bytes_read_ == 0;
- }
-
- bool CanWrite() {
- return write_offset_ < bytes_read_;
- }
-
- int Read(int fd) {
- int ret = -1;
- if (CanRead()) {
- ret = HANDLE_EINTR(read(fd, buffer_, kBufferSize));
- if (ret > 0)
- bytes_read_ = ret;
- }
- return ret;
- }
-
- int Write(int fd) {
- int ret = -1;
- if (CanWrite()) {
- ret = HANDLE_EINTR(write(fd, buffer_ + write_offset_,
- bytes_read_ - write_offset_));
- if (ret > 0) {
- write_offset_ += ret;
- if (write_offset_ == bytes_read_) {
- write_offset_ = 0;
- bytes_read_ = 0;
- }
- }
- }
- return ret;
- }
-
- private:
- // A big buffer to let our file-over-http bridge work more like real file.
- static const int kBufferSize = 1024 * 128;
- int bytes_read_;
- int write_offset_;
- char buffer_[kBufferSize];
-
- DISALLOW_COPY_AND_ASSIGN(Buffer);
-};
-
-class Server;
-
-struct ForwarderThreadInfo {
- ForwarderThreadInfo(Server* a_server, int a_forwarder_index)
- : server(a_server),
- forwarder_index(a_forwarder_index) {
- }
- Server* server;
- int forwarder_index;
-};
-
-struct ForwarderInfo {
- time_t start_time;
- int socket1;
- time_t socket1_last_byte_time;
- size_t socket1_bytes;
- int socket2;
- time_t socket2_last_byte_time;
- size_t socket2_bytes;
-};
-
-class Server {
- public:
- Server()
- : thread_(kInvalidThread),
- socket_(-1) {
- memset(forward_to_, 0, sizeof(forward_to_));
- memset(&forwarders_, 0, sizeof(forwarders_));
- }
-
- int GetFreeForwarderIndex() {
- for (int i = 0; i < kMaxForwarders; i++) {
- if (forwarders_[i].start_time == 0)
- return i;
- }
- return -1;
- }
-
- void DisposeForwarderInfo(int index) {
- forwarders_[index].start_time = 0;
- }
-
- ForwarderInfo* GetForwarderInfo(int index) {
- return &forwarders_[index];
- }
-
- void DumpInformation() {
- LOG(INFO) << "Server information: " << forward_to_;
- LOG(INFO) << "No.: age up(bytes,idle) down(bytes,idle)";
- int count = 0;
- time_t now = time(NULL);
- for (int i = 0; i < kMaxForwarders; i++) {
- const ForwarderInfo& info = forwarders_[i];
- if (info.start_time) {
- count++;
- LOG(INFO) << count << ": " << now - info.start_time << " up("
- << info.socket1_bytes << ","
- << now - info.socket1_last_byte_time << " down("
- << info.socket2_bytes << ","
- << now - info.socket2_last_byte_time << ")";
- }
- }
- }
-
- void Shutdown() {
- if (socket_ >= 0)
- shutdown(socket_, SHUT_RDWR);
- }
-
- bool InitSocket(const char* arg);
-
- void StartThread() {
- pthread_create(&thread_, NULL, ServerThread, this);
- }
-
- void JoinThread() {
- if (thread_ != kInvalidThread)
- pthread_join(thread_, NULL);
- }
-
- private:
- static void* ServerThread(void* arg);
-
- // There are 3 kinds of threads that will access the array:
- // 1. Server thread will get a free ForwarderInfo and initialize it;
- // 2. Forwarder threads will dispose the ForwarderInfo when it finishes;
- // 3. Main thread will iterate and print the forwarders.
- // Using an array is not optimal, but can avoid locks or other complex
- // inter-thread communication.
- static const int kMaxForwarders = 512;
- ForwarderInfo forwarders_[kMaxForwarders];
-
- pthread_t thread_;
- int socket_;
- char forward_to_[40];
-
- DISALLOW_COPY_AND_ASSIGN(Server);
-};
-
-// Forwards all outputs from one socket to another socket.
-void* ForwarderThread(void* arg) {
- ForwarderThreadInfo* thread_info =
- reinterpret_cast(arg);
- Server* server = thread_info->server;
- int index = thread_info->forwarder_index;
- delete thread_info;
- ForwarderInfo* info = server->GetForwarderInfo(index);
- int socket1 = info->socket1;
- int socket2 = info->socket2;
- int nfds = socket1 > socket2 ? socket1 + 1 : socket2 + 1;
- fd_set read_fds;
- fd_set write_fds;
- Buffer buffer1;
- Buffer buffer2;
-
- while (!g_killed) {
- FD_ZERO(&read_fds);
- if (buffer1.CanRead())
- FD_SET(socket1, &read_fds);
- if (buffer2.CanRead())
- FD_SET(socket2, &read_fds);
-
- FD_ZERO(&write_fds);
- if (buffer1.CanWrite())
- FD_SET(socket2, &write_fds);
- if (buffer2.CanWrite())
- FD_SET(socket1, &write_fds);
-
- if (HANDLE_EINTR(select(nfds, &read_fds, &write_fds, NULL, NULL)) <= 0) {
- LOG(ERROR) << "Select error: " << strerror(errno);
- break;
- }
-
- int now = time(NULL);
- if (FD_ISSET(socket1, &read_fds)) {
- info->socket1_last_byte_time = now;
- int bytes = buffer1.Read(socket1);
- if (bytes <= 0)
- break;
- info->socket1_bytes += bytes;
- }
- if (FD_ISSET(socket2, &read_fds)) {
- info->socket2_last_byte_time = now;
- int bytes = buffer2.Read(socket2);
- if (bytes <= 0)
- break;
- info->socket2_bytes += bytes;
- }
- if (FD_ISSET(socket1, &write_fds)) {
- if (buffer2.Write(socket1) <= 0)
- break;
- }
- if (FD_ISSET(socket2, &write_fds)) {
- if (buffer1.Write(socket2) <= 0)
- break;
- }
- }
-
- CloseSocket(socket1);
- CloseSocket(socket2);
- server->DisposeForwarderInfo(index);
- return NULL;
-}
-
-// Listens to a server socket. On incoming request, forward it to the host.
-// static
-void* Server::ServerThread(void* arg) {
- Server* server = reinterpret_cast(arg);
- while (!g_killed) {
- int forwarder_index = server->GetFreeForwarderIndex();
- if (forwarder_index < 0) {
- LOG(ERROR) << "Too many forwarders";
- continue;
- }
-
- struct sockaddr_in addr;
- socklen_t addr_len = sizeof(addr);
- int socket = HANDLE_EINTR(accept(server->socket_,
- reinterpret_cast(&addr),
- &addr_len));
- if (socket < 0) {
- LOG(ERROR) << "Failed to accept: " << strerror(errno);
- break;
- }
- tools::DisableNagle(socket);
-
- int host_socket = tools::ConnectAdbHostSocket(server->forward_to_);
- if (host_socket >= 0) {
- // Set NONBLOCK flag because we use select().
- fcntl(socket, F_SETFL, fcntl(socket, F_GETFL) | O_NONBLOCK);
- fcntl(host_socket, F_SETFL, fcntl(host_socket, F_GETFL) | O_NONBLOCK);
-
- ForwarderInfo* forwarder_info = server->GetForwarderInfo(forwarder_index);
- time_t now = time(NULL);
- forwarder_info->start_time = now;
- forwarder_info->socket1 = socket;
- forwarder_info->socket1_last_byte_time = now;
- forwarder_info->socket1_bytes = 0;
- forwarder_info->socket2 = host_socket;
- forwarder_info->socket2_last_byte_time = now;
- forwarder_info->socket2_bytes = 0;
-
- pthread_t thread;
- pthread_create(&thread, NULL, ForwarderThread,
- new ForwarderThreadInfo(server, forwarder_index));
- } else {
- // Close the unused client socket which is failed to connect to host.
- CloseSocket(socket);
- }
- }
-
- CloseSocket(server->socket_);
- server->socket_ = -1;
- return NULL;
-}
-
-// Format of arg: [::]
-bool Server::InitSocket(const char* arg) {
- char* endptr;
- int local_port = static_cast(strtol(arg, &endptr, 10));
- if (local_port < 0)
- return false;
-
- if (*endptr != ':') {
- snprintf(forward_to_, sizeof(forward_to_), "%d:127.0.0.1", local_port);
- } else {
- strncpy(forward_to_, endptr + 1, sizeof(forward_to_) - 1);
- }
-
- socket_ = socket(AF_INET, SOCK_STREAM, 0);
- if (socket_ < 0) {
- perror("server socket");
- return false;
- }
- tools::DisableNagle(socket_);
-
- sockaddr_in addr;
- memset(&addr, 0, sizeof(addr));
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
- addr.sin_port = htons(local_port);
- int reuse_addr = 1;
- setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR,
- &reuse_addr, sizeof(reuse_addr));
- tools::DeferAccept(socket_);
- if (HANDLE_EINTR(bind(socket_, reinterpret_cast(&addr),
- sizeof(addr))) < 0 ||
- HANDLE_EINTR(listen(socket_, 5)) < 0) {
- perror("server bind");
- CloseSocket(socket_);
- socket_ = -1;
- return false;
- }
-
- if (local_port == 0) {
- socklen_t addrlen = sizeof(addr);
- if (getsockname(socket_, reinterpret_cast(&addr), &addrlen)
- != 0) {
- perror("get listen address");
- CloseSocket(socket_);
- socket_ = -1;
- return false;
- }
- local_port = ntohs(addr.sin_port);
- }
-
- printf("Forwarding device port %d to host %s\n", local_port, forward_to_);
- return true;
-}
-
-int g_server_count = 0;
-Server* g_servers = NULL;
-
-void KillHandler(int unused) {
- g_killed = true;
- for (int i = 0; i < g_server_count; i++)
- g_servers[i].Shutdown();
-}
-
-void DumpInformation(int unused) {
- for (int i = 0; i < g_server_count; i++)
- g_servers[i].DumpInformation();
-}
-
-} // namespace
-
-int main(int argc, char** argv) {
- printf("Android device to host TCP forwarder\n");
- printf("Like 'adb forward' but in the reverse direction\n");
-
- CommandLine command_line(argc, argv);
- CommandLine::StringVector server_args = command_line.GetArgs();
- if (tools::HasHelpSwitch(command_line) || server_args.empty()) {
- tools::ShowHelp(
- argv[0],
- "[::] ...",
- " default is \n"
- " default is 127.0.0.1\n"
- "If is 0, a port will by dynamically allocated.\n");
- return 0;
- }
-
- g_servers = new Server[server_args.size()];
- g_server_count = 0;
- int failed_count = 0;
- for (size_t i = 0; i < server_args.size(); i++) {
- if (!g_servers[g_server_count].InitSocket(server_args[i].c_str())) {
- printf("Couldn't start forwarder server for port spec: %s\n",
- server_args[i].c_str());
- ++failed_count;
- } else {
- ++g_server_count;
- }
- }
-
- if (g_server_count == 0) {
- printf("No forwarder servers could be started. Exiting.\n");
- delete [] g_servers;
- return failed_count;
- }
-
- if (!tools::HasNoSpawnDaemonSwitch(command_line))
- tools::SpawnDaemon(failed_count);
-
- signal(SIGTERM, KillHandler);
- signal(SIGUSR2, DumpInformation);
-
- for (int i = 0; i < g_server_count; i++)
- g_servers[i].StartThread();
- for (int i = 0; i < g_server_count; i++)
- g_servers[i].JoinThread();
- g_server_count = 0;
- delete [] g_servers;
-
- return 0;
-}
-
diff --git a/tools/android/forwarder/forwarder.gyp b/tools/android/forwarder/forwarder.gyp
deleted file mode 100644
index 1df518b1bb..0000000000
--- a/tools/android/forwarder/forwarder.gyp
+++ /dev/null
@@ -1,43 +0,0 @@
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'forwarder',
- 'type': 'none',
- 'dependencies': [
- 'forwarder_symbols',
- ],
- 'actions': [
- {
- 'action_name': 'strip_forwarder',
- 'inputs': ['<(PRODUCT_DIR)/forwarder_symbols'],
- 'outputs': ['<(PRODUCT_DIR)/forwarder'],
- 'action': [
- '<(android_strip)',
- '--strip-unneeded',
- '<@(_inputs)',
- '-o',
- '<@(_outputs)',
- ],
- },
- ],
- }, {
- 'target_name': 'forwarder_symbols',
- 'type': 'executable',
- 'dependencies': [
- '../../../base/base.gyp:base',
- '../common/common.gyp:android_tools_common',
- ],
- 'include_dirs': [
- '../../..',
- ],
- 'sources': [
- 'forwarder.cc',
- ],
- },
- ],
-}
-
diff --git a/tools/android/forwarder2/command.cc b/tools/android/forwarder2/command.cc
deleted file mode 100644
index 9b0aa24cfb..0000000000
--- a/tools/android/forwarder2/command.cc
+++ /dev/null
@@ -1,96 +0,0 @@
-// 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.
-
-#include "tools/android/forwarder2/command.h"
-
-#include
-#include
-#include
-#include
-
-#include "base/logging.h"
-#include "base/safe_strerror_posix.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_piece.h"
-#include "tools/android/forwarder2/socket.h"
-
-using base::StringPiece;
-
-namespace {
-
-
-// Command format:
-// :
-//
-// Where:
-// is a 5-chars zero-padded ASCII decimal integer
-// matching the target port for the command (e.g.
-// '08080' for port 8080)
-// is a 3-char zero-padded ASCII decimal integer
-// matching a command::Type value (e.g. 002 for
-// ACK).
-// The column (:) is used as a separator for easier reading.
-const int kPortStringSize = 5;
-const int kCommandTypeStringSize = 2;
-// Command string size also includes the ':' separator char.
-const int kCommandStringSize = kPortStringSize + kCommandTypeStringSize + 1;
-
-} // namespace
-
-namespace forwarder2 {
-
-bool ReadCommand(Socket* socket,
- int* port_out,
- command::Type* command_type_out) {
- char command_buffer[kCommandStringSize + 1];
- // To make logging easier.
- command_buffer[kCommandStringSize] = '\0';
-
- int bytes_read = socket->ReadNumBytes(command_buffer, kCommandStringSize);
- if (bytes_read != kCommandStringSize) {
- if (bytes_read < 0)
- LOG(ERROR) << "Read() error: " << safe_strerror(errno);
- else if (!bytes_read)
- LOG(ERROR) << "Read() error, endpoint was unexpectedly closed.";
- else
- LOG(ERROR) << "Read() error, not enough data received from the socket.";
- return false;
- }
-
- StringPiece port_str(command_buffer, kPortStringSize);
- if (!StringToInt(port_str, port_out)) {
- LOG(ERROR) << "Could not parse the command port string: "
- << port_str;
- return false;
- }
-
- StringPiece command_type_str(
- &command_buffer[kPortStringSize + 1], kCommandTypeStringSize);
- int command_type;
- if (!StringToInt(command_type_str, &command_type)) {
- LOG(ERROR) << "Could not parse the command type string: "
- << command_type_str;
- return false;
- }
- *command_type_out = static_cast(command_type);
- return true;
-}
-
-bool SendCommand(command::Type command, int port, Socket* socket) {
- char buffer[kCommandStringSize + 1];
- int len = snprintf(buffer, sizeof(buffer), "%05d:%02d", port, command);
- CHECK_EQ(len, kCommandStringSize);
- // Write the full command minus the leading \0 char.
- return socket->WriteNumBytes(buffer, len) == len;
-}
-
-bool ReceivedCommand(command::Type command, Socket* socket) {
- int port;
- command::Type received_command;
- if (!ReadCommand(socket, &port, &received_command))
- return false;
- return received_command == command;
-}
-
-} // namespace forwarder
diff --git a/tools/android/forwarder2/command.h b/tools/android/forwarder2/command.h
deleted file mode 100644
index 8e222ef7bb..0000000000
--- a/tools/android/forwarder2/command.h
+++ /dev/null
@@ -1,48 +0,0 @@
-// 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.
-
-#ifndef TOOLS_ANDROID_FORWARDER2_COMMAND_H_
-#define TOOLS_ANDROID_FORWARDER2_COMMAND_H_
-
-#include "base/basictypes.h"
-
-namespace forwarder2 {
-
-class Socket;
-
-namespace command {
-
-enum Type {
- ACCEPT_ERROR = 0,
- ACCEPT_SUCCESS,
- ACK,
- ADB_DATA_SOCKET_ERROR,
- ADB_DATA_SOCKET_SUCCESS,
- BIND_ERROR,
- BIND_SUCCESS,
- DATA_CONNECTION,
- HOST_SERVER_ERROR,
- HOST_SERVER_SUCCESS,
- KILL_ALL_LISTENERS,
- LISTEN,
- UNLISTEN,
- UNLISTEN_ERROR,
- UNLISTEN_SUCCESS,
-};
-
-} // namespace command
-
-bool ReadCommand(Socket* socket,
- int* port_out,
- command::Type* command_type_out);
-
-// Helper function to read the command from the |socket| and return true if the
-// |command| is equal to the given command parameter.
-bool ReceivedCommand(command::Type command, Socket* socket);
-
-bool SendCommand(command::Type command, int port, Socket* socket);
-
-} // namespace forwarder
-
-#endif // TOOLS_ANDROID_FORWARDER2_COMMAND_H_
diff --git a/tools/android/forwarder2/common.cc b/tools/android/forwarder2/common.cc
deleted file mode 100644
index c97ed8056b..0000000000
--- a/tools/android/forwarder2/common.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-#include "tools/android/forwarder2/common.h"
-
-#include
-#include
-
-#include "base/logging.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/safe_strerror_posix.h"
-
-namespace forwarder2 {
-
-void PError(const char* msg) {
- LOG(ERROR) << msg << ": " << safe_strerror(errno);
-}
-
-void CloseFD(int fd) {
- const int errno_copy = errno;
- if (HANDLE_EINTR(close(fd)) < 0) {
- PError("close");
- errno = errno_copy;
- }
-}
-
-} // namespace forwarder2
diff --git a/tools/android/forwarder2/common.h b/tools/android/forwarder2/common.h
deleted file mode 100644
index 43de57b160..0000000000
--- a/tools/android/forwarder2/common.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// 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.
-
-// Common helper functions/classes used both in the host and device forwarder.
-
-#ifndef TOOLS_ANDROID_FORWARDER2_COMMON_H_
-#define TOOLS_ANDROID_FORWARDER2_COMMON_H_
-
-#include
-#include
-#include
-
-#include "base/basictypes.h"
-#include "base/compiler_specific.h"
-#include "base/logging.h"
-#include "base/posix/eintr_wrapper.h"
-
-// Preserving errno for Close() is important because the function is very often
-// used in cleanup code, after an error occurred, and it is very easy to pass an
-// invalid file descriptor to close() in this context, or more rarely, a
-// spurious signal might make close() return -1 + setting errno to EINTR,
-// masking the real reason for the original error. This leads to very unpleasant
-// debugging sessions.
-#define PRESERVE_ERRNO_HANDLE_EINTR(Func) \
- do { \
- int local_errno = errno; \
- (void) HANDLE_EINTR(Func); \
- errno = local_errno; \
- } while (false);
-
-// Wrapper around RAW_LOG() which is signal-safe. The only purpose of this macro
-// is to avoid documenting uses of RawLog().
-#define SIGNAL_SAFE_LOG(Level, Msg) \
- RAW_LOG(Level, Msg);
-
-namespace forwarder2 {
-
-// Note that the two following functions are not signal-safe.
-
-// Chromium logging-aware implementation of libc's perror().
-void PError(const char* msg);
-
-// Closes the provided file descriptor and logs an error if it failed.
-void CloseFD(int fd);
-
-// Helps build a formatted C-string allocated in a fixed-size array. This is
-// useful in signal handlers where base::StringPrintf() can't be used safely
-// (due to its use of LOG()).
-template
-class FixedSizeStringBuilder {
- public:
- FixedSizeStringBuilder() {
- Reset();
- }
-
- const char* buffer() const { return buffer_; }
-
- void Reset() {
- buffer_[0] = 0;
- write_ptr_ = buffer_;
- }
-
- // Returns the number of bytes appended to the underlying buffer or -1 if it
- // failed.
- int Append(const char* format, ...) PRINTF_FORMAT(/* + 1 for 'this' */ 2, 3) {
- if (write_ptr_ >= buffer_ + BufferSize)
- return -1;
- va_list ap;
- va_start(ap, format);
- const int bytes_written = vsnprintf(
- write_ptr_, BufferSize - (write_ptr_ - buffer_), format, ap);
- va_end(ap);
- if (bytes_written > 0)
- write_ptr_ += bytes_written;
- return bytes_written;
- }
-
- private:
- char* write_ptr_;
- char buffer_[BufferSize];
-
- COMPILE_ASSERT(BufferSize >= 1, Size_of_buffer_must_be_at_least_one);
- DISALLOW_COPY_AND_ASSIGN(FixedSizeStringBuilder);
-};
-
-} // namespace forwarder2
-
-#endif // TOOLS_ANDROID_FORWARDER2_COMMON_H_
diff --git a/tools/android/forwarder2/daemon.cc b/tools/android/forwarder2/daemon.cc
deleted file mode 100644
index 0ca89d1a5f..0000000000
--- a/tools/android/forwarder2/daemon.cc
+++ /dev/null
@@ -1,288 +0,0 @@
-// 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.
-
-#include "tools/android/forwarder2/daemon.h"
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-
-#include "base/basictypes.h"
-#include "base/file_util.h"
-#include "base/files/file_path.h"
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/safe_strerror_posix.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/stringprintf.h"
-#include "tools/android/forwarder2/common.h"
-#include "tools/android/forwarder2/socket.h"
-
-namespace forwarder2 {
-namespace {
-
-const int kBufferSize = 256;
-
-// Timeout constant used for polling when connecting to the daemon's Unix Domain
-// Socket and also when waiting for its death when it is killed.
-const int kNumTries = 100;
-const int kIdleTimeMSec = 20;
-
-void InitLoggingForDaemon(const std::string& log_file) {
- logging::LoggingSettings settings;
- settings.logging_dest =
- log_file.empty() ?
- logging::LOG_TO_SYSTEM_DEBUG_LOG : logging::LOG_TO_FILE;
- settings.log_file = log_file.c_str();
- settings.lock_log = logging::DONT_LOCK_LOG_FILE;
- settings.dcheck_state =
- logging::ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS;
- CHECK(logging::InitLogging(settings));
-}
-
-bool RunServerAcceptLoop(const std::string& welcome_message,
- Socket* server_socket,
- Daemon::ServerDelegate* server_delegate) {
- bool failed = false;
- for (;;) {
- scoped_ptr client_socket(new Socket());
- if (!server_socket->Accept(client_socket.get())) {
- if (server_socket->DidReceiveEvent())
- break;
- PError("Accept()");
- failed = true;
- break;
- }
- if (!client_socket->Write(welcome_message.c_str(),
- welcome_message.length() + 1)) {
- PError("Write()");
- failed = true;
- continue;
- }
- server_delegate->OnClientConnected(client_socket.Pass());
- }
- return !failed;
-}
-
-void SigChildHandler(int signal_number) {
- DCHECK_EQ(signal_number, SIGCHLD);
- int status;
- pid_t child_pid = waitpid(-1 /* any child */, &status, WNOHANG);
- if (child_pid < 0) {
- PError("waitpid");
- return;
- }
- if (child_pid == 0)
- return;
- if (WIFEXITED(status) && WEXITSTATUS(status) == 0)
- return;
- // Avoid using StringAppendF() since it's unsafe in a signal handler due to
- // its use of LOG().
- FixedSizeStringBuilder<256> string_builder;
- string_builder.Append("Daemon (pid=%d) died unexpectedly with ", child_pid);
- if (WIFEXITED(status))
- string_builder.Append("status %d.", WEXITSTATUS(status));
- else if (WIFSIGNALED(status))
- string_builder.Append("signal %d.", WTERMSIG(status));
- else
- string_builder.Append("unknown reason.");
- SIGNAL_SAFE_LOG(ERROR, string_builder.buffer());
-}
-
-// Note that 0 is written to |lock_owner_pid| in case the file is not locked.
-bool GetFileLockOwnerPid(int fd, pid_t* lock_owner_pid) {
- struct flock lock_info = {};
- lock_info.l_type = F_WRLCK;
- lock_info.l_whence = SEEK_CUR;
- const int ret = HANDLE_EINTR(fcntl(fd, F_GETLK, &lock_info));
- if (ret < 0) {
- if (errno == EBADF) {
- // Assume that the provided file descriptor corresponding to the PID file
- // was valid until the daemon removed this file.
- *lock_owner_pid = 0;
- return true;
- }
- PError("fcntl");
- return false;
- }
- if (lock_info.l_type == F_UNLCK) {
- *lock_owner_pid = 0;
- return true;
- }
- CHECK_EQ(F_WRLCK /* exclusive lock */, lock_info.l_type);
- *lock_owner_pid = lock_info.l_pid;
- return true;
-}
-
-scoped_ptr ConnectToUnixDomainSocket(
- const std::string& socket_name,
- int tries_count,
- int idle_time_msec,
- const std::string& expected_welcome_message) {
- for (int i = 0; i < tries_count; ++i) {
- scoped_ptr socket(new Socket());
- if (!socket->ConnectUnix(socket_name)) {
- if (idle_time_msec)
- usleep(idle_time_msec * 1000);
- continue;
- }
- char buf[kBufferSize];
- DCHECK(expected_welcome_message.length() + 1 <= sizeof(buf));
- memset(buf, 0, sizeof(buf));
- if (socket->Read(buf, expected_welcome_message.length() + 1) < 0) {
- perror("read");
- continue;
- }
- if (expected_welcome_message != buf) {
- LOG(ERROR) << "Unexpected message read from daemon: " << buf;
- break;
- }
- return socket.Pass();
- }
- return scoped_ptr();
-}
-
-} // namespace
-
-Daemon::Daemon(const std::string& log_file_path,
- const std::string& identifier,
- ClientDelegate* client_delegate,
- ServerDelegate* server_delegate,
- GetExitNotifierFDCallback get_exit_fd_callback)
- : log_file_path_(log_file_path),
- identifier_(identifier),
- client_delegate_(client_delegate),
- server_delegate_(server_delegate),
- get_exit_fd_callback_(get_exit_fd_callback) {
- DCHECK(client_delegate_);
- DCHECK(server_delegate_);
- DCHECK(get_exit_fd_callback_);
-}
-
-Daemon::~Daemon() {}
-
-bool Daemon::SpawnIfNeeded() {
- const int kSingleTry = 1;
- const int kNoIdleTime = 0;
- scoped_ptr client_socket = ConnectToUnixDomainSocket(
- identifier_, kSingleTry, kNoIdleTime, identifier_);
- if (!client_socket) {
- switch (fork()) {
- case -1:
- PError("fork()");
- return false;
- // Child.
- case 0: {
- if (setsid() < 0) { // Detach the child process from its parent.
- PError("setsid()");
- exit(1);
- }
- InitLoggingForDaemon(log_file_path_);
- CloseFD(STDIN_FILENO);
- CloseFD(STDOUT_FILENO);
- CloseFD(STDERR_FILENO);
- const int null_fd = open("/dev/null", O_RDWR);
- CHECK_EQ(null_fd, STDIN_FILENO);
- CHECK_EQ(dup(null_fd), STDOUT_FILENO);
- CHECK_EQ(dup(null_fd), STDERR_FILENO);
- Socket command_socket;
- if (!command_socket.BindUnix(identifier_)) {
- scoped_ptr client_socket = ConnectToUnixDomainSocket(
- identifier_, kSingleTry, kNoIdleTime, identifier_);
- if (client_socket.get()) {
- // The daemon was spawned by a concurrent process.
- exit(0);
- }
- PError("bind()");
- exit(1);
- }
- server_delegate_->Init();
- command_socket.AddEventFd(get_exit_fd_callback_());
- return RunServerAcceptLoop(
- identifier_, &command_socket, server_delegate_);
- }
- default:
- break;
- }
- }
- // Parent.
- // Install the custom SIGCHLD handler.
- sigset_t blocked_signals_set;
- if (sigprocmask(0 /* first arg ignored */, NULL, &blocked_signals_set) < 0) {
- PError("sigprocmask()");
- return false;
- }
- struct sigaction old_action;
- struct sigaction new_action;
- memset(&new_action, 0, sizeof(new_action));
- new_action.sa_handler = SigChildHandler;
- new_action.sa_flags = SA_NOCLDSTOP;
- sigemptyset(&new_action.sa_mask);
- if (sigaction(SIGCHLD, &new_action, &old_action) < 0) {
- PError("sigaction()");
- return false;
- }
- // Connect to the daemon's Unix Domain Socket.
- bool failed = false;
- if (!client_socket) {
- client_socket = ConnectToUnixDomainSocket(
- identifier_, kNumTries, kIdleTimeMSec, identifier_);
- if (!client_socket) {
- LOG(ERROR) << "Could not connect to daemon's Unix Daemon socket";
- failed = true;
- }
- }
- if (!failed)
- client_delegate_->OnDaemonReady(client_socket.get());
- // Restore the previous signal action for SIGCHLD.
- if (sigaction(SIGCHLD, &old_action, NULL) < 0) {
- PError("sigaction");
- failed = true;
- }
- return !failed;
-}
-
-bool Daemon::Kill() {
- pid_t daemon_pid = Socket::GetUnixDomainSocketProcessOwner(identifier_);
- if (daemon_pid < 0)
- return true; // No daemon running.
- if (kill(daemon_pid, SIGTERM) < 0) {
- if (errno == ESRCH /* invalid PID */)
- // The daemon exited for some reason (e.g. kill by a process other than
- // us) right before the call to kill() above.
- return true;
- PError("kill");
- return false;
- }
- for (int i = 0; i < kNumTries; ++i) {
- const pid_t previous_pid = daemon_pid;
- daemon_pid = Socket::GetUnixDomainSocketProcessOwner(identifier_);
- if (daemon_pid < 0)
- return true;
- // Since we are polling we might not see the 'daemon exited' event if
- // another daemon was spawned during our idle period.
- if (daemon_pid != previous_pid) {
- LOG(WARNING) << "Daemon (pid=" << previous_pid
- << ") was successfully killed but a new daemon (pid="
- << daemon_pid << ") seems to be running now.";
- return true;
- }
- usleep(kIdleTimeMSec * 1000);
- }
- LOG(ERROR) << "Timed out while killing daemon. "
- "It might still be tearing down.";
- return false;
-}
-
-} // namespace forwarder2
diff --git a/tools/android/forwarder2/daemon.h b/tools/android/forwarder2/daemon.h
deleted file mode 100644
index 4b05ea423c..0000000000
--- a/tools/android/forwarder2/daemon.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// 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.
-
-#ifndef TOOLS_ANDROID_FORWARDER2_DAEMON_H_
-#define TOOLS_ANDROID_FORWARDER2_DAEMON_H_
-
-#include
-
-#include "base/basictypes.h"
-#include "base/memory/scoped_ptr.h"
-
-namespace forwarder2 {
-
-class Socket;
-
-// Provides a way to spawn a daemon and communicate with it.
-class Daemon {
- public:
- // Callback used by the daemon to shutdown properly. See pipe_notifier.h for
- // more details.
- typedef int (*GetExitNotifierFDCallback)();
-
- class ClientDelegate {
- public:
- virtual ~ClientDelegate() {}
-
- // Called after the daemon is ready to receive commands.
- virtual void OnDaemonReady(Socket* daemon_socket) = 0;
- };
-
- class ServerDelegate {
- public:
- virtual ~ServerDelegate() {}
-
- // Called after the daemon bound its Unix Domain Socket. This can be used to
- // setup signal handlers or perform global initialization.
- virtual void Init() = 0;
-
- virtual void OnClientConnected(scoped_ptr client_socket) = 0;
- };
-
- // |identifier| should be a unique string identifier. It is used to
- // bind/connect the underlying Unix Domain Socket.
- // Note that this class does not take ownership of |client_delegate| and
- // |server_delegate|.
- Daemon(const std::string& log_file_path,
- const std::string& identifier,
- ClientDelegate* client_delegate,
- ServerDelegate* server_delegate,
- GetExitNotifierFDCallback get_exit_fd_callback);
-
- ~Daemon();
-
- // Returns whether the daemon was successfully spawned. Note that this does
- // not necessarily mean that the current process was forked in case the daemon
- // is already running.
- bool SpawnIfNeeded();
-
- // Kills the daemon and blocks until it exited. Returns whether it succeeded.
- bool Kill();
-
- private:
- const std::string log_file_path_;
- const std::string identifier_;
- ClientDelegate* const client_delegate_;
- ServerDelegate* const server_delegate_;
- const GetExitNotifierFDCallback get_exit_fd_callback_;
-
- DISALLOW_COPY_AND_ASSIGN(Daemon);
-};
-
-} // namespace forwarder2
-
-#endif // TOOLS_ANDROID_FORWARDER2_DAEMON_H_
diff --git a/tools/android/forwarder2/device_controller.cc b/tools/android/forwarder2/device_controller.cc
deleted file mode 100644
index 87d0e17143..0000000000
--- a/tools/android/forwarder2/device_controller.cc
+++ /dev/null
@@ -1,154 +0,0 @@
-// 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.
-
-#include "tools/android/forwarder2/device_controller.h"
-
-#include
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop/message_loop_proxy.h"
-#include "base/single_thread_task_runner.h"
-#include "tools/android/forwarder2/command.h"
-#include "tools/android/forwarder2/device_listener.h"
-#include "tools/android/forwarder2/socket.h"
-
-namespace forwarder2 {
-
-// static
-scoped_ptr DeviceController::Create(
- const std::string& adb_unix_socket,
- int exit_notifier_fd) {
- scoped_ptr device_controller;
- scoped_ptr host_socket(new Socket());
- if (!host_socket->BindUnix(adb_unix_socket)) {
- PLOG(ERROR) << "Could not BindAndListen DeviceController socket on port "
- << adb_unix_socket << ": ";
- return device_controller.Pass();
- }
- LOG(INFO) << "Listening on Unix Domain Socket " << adb_unix_socket;
- device_controller.reset(
- new DeviceController(host_socket.Pass(), exit_notifier_fd));
- return device_controller.Pass();
-}
-
-DeviceController::~DeviceController() {
- DCHECK(construction_task_runner_->RunsTasksOnCurrentThread());
-}
-
-void DeviceController::Start() {
- AcceptHostCommandSoon();
-}
-
-DeviceController::DeviceController(scoped_ptr host_socket,
- int exit_notifier_fd)
- : host_socket_(host_socket.Pass()),
- exit_notifier_fd_(exit_notifier_fd),
- construction_task_runner_(base::MessageLoopProxy::current()),
- weak_ptr_factory_(this) {
- host_socket_->AddEventFd(exit_notifier_fd);
-}
-
-void DeviceController::AcceptHostCommandSoon() {
- base::MessageLoopProxy::current()->PostTask(
- FROM_HERE,
- base::Bind(&DeviceController::AcceptHostCommandInternal,
- base::Unretained(this)));
-}
-
-void DeviceController::AcceptHostCommandInternal() {
- scoped_ptr socket(new Socket);
- if (!host_socket_->Accept(socket.get())) {
- if (!host_socket_->DidReceiveEvent())
- PLOG(ERROR) << "Could not Accept DeviceController socket";
- else
- LOG(INFO) << "Received exit notification";
- return;
- }
- base::ScopedClosureRunner accept_next_client(
- base::Bind(&DeviceController::AcceptHostCommandSoon,
- base::Unretained(this)));
- // So that |socket| doesn't block on read if it has notifications.
- socket->AddEventFd(exit_notifier_fd_);
- int port;
- command::Type command;
- if (!ReadCommand(socket.get(), &port, &command)) {
- LOG(ERROR) << "Invalid command received.";
- return;
- }
- const ListenersMap::iterator listener_it = listeners_.find(port);
- DeviceListener* const listener = listener_it == listeners_.end()
- ? static_cast(NULL) : listener_it->second.get();
- switch (command) {
- case command::LISTEN: {
- if (listener != NULL) {
- LOG(WARNING) << "Already forwarding port " << port
- << ". Attempting to restart the listener.\n";
- // Note that this deletes the listener object.
- listeners_.erase(listener_it);
- }
- scoped_ptr new_listener(
- DeviceListener::Create(
- socket.Pass(), port, base::Bind(&DeviceController::DeleteListener,
- weak_ptr_factory_.GetWeakPtr())));
- if (!new_listener)
- return;
- new_listener->Start();
- // |port| can be zero, to allow dynamically allocated port, so instead, we
- // call DeviceListener::listener_port() to retrieve the currently
- // allocated port to this new listener.
- const int listener_port = new_listener->listener_port();
- listeners_.insert(
- std::make_pair(listener_port,
- linked_ptr(new_listener.release())));
- LOG(INFO) << "Forwarding device port " << listener_port << " to host.";
- break;
- }
- case command::DATA_CONNECTION:
- if (listener == NULL) {
- LOG(ERROR) << "Data Connection command received, but "
- << "listener has not been set up yet for port " << port;
- // After this point it is assumed that, once we close our Adb Data
- // socket, the Adb forwarder command will propagate the closing of
- // sockets all the way to the host side.
- break;
- }
- listener->SetAdbDataSocket(socket.Pass());
- break;
- case command::UNLISTEN:
- if (!listener) {
- SendCommand(command::UNLISTEN_ERROR, port, socket.get());
- break;
- }
- listeners_.erase(listener_it);
- SendCommand(command::UNLISTEN_SUCCESS, port, socket.get());
- break;
- default:
- // TODO(felipeg): add a KillAllListeners command.
- LOG(ERROR) << "Invalid command received. Port: " << port
- << " Command: " << command;
- }
-}
-
-// static
-void DeviceController::DeleteListener(
- const base::WeakPtr& device_controller_ptr,
- int listener_port) {
- DeviceController* const controller = device_controller_ptr.get();
- if (!controller)
- return;
- DCHECK(controller->construction_task_runner_->RunsTasksOnCurrentThread());
- const ListenersMap::iterator listener_it = controller->listeners_.find(
- listener_port);
- if (listener_it == controller->listeners_.end())
- return;
- const linked_ptr listener = listener_it->second;
- // Note that the listener is removed from the map before it gets destroyed in
- // case its destructor would access the map.
- controller->listeners_.erase(listener_it);
-}
-
-} // namespace forwarder
diff --git a/tools/android/forwarder2/device_controller.h b/tools/android/forwarder2/device_controller.h
deleted file mode 100644
index 3daedb3688..0000000000
--- a/tools/android/forwarder2/device_controller.h
+++ /dev/null
@@ -1,66 +0,0 @@
-// 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.
-
-#ifndef TOOLS_ANDROID_FORWARDER2_DEVICE_CONTROLLER_H_
-#define TOOLS_ANDROID_FORWARDER2_DEVICE_CONTROLLER_H_
-
-#include
-
-#include "base/basictypes.h"
-#include "base/containers/hash_tables.h"
-#include "base/memory/linked_ptr.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "tools/android/forwarder2/socket.h"
-
-namespace base {
-class SingleThreadTaskRunner;
-} // namespace base
-
-namespace forwarder2 {
-
-class DeviceListener;
-
-// There is a single DeviceController per device_forwarder process, and it is in
-// charge of managing all active redirections on the device side (one
-// DeviceListener each).
-class DeviceController {
- public:
- static scoped_ptr Create(const std::string& adb_unix_socket,
- int exit_notifier_fd);
- ~DeviceController();
-
- void Start();
-
- private:
- typedef base::hash_map<
- int /* port */, linked_ptr > ListenersMap;
-
- DeviceController(scoped_ptr host_socket, int exit_notifier_fd);
-
- void AcceptHostCommandSoon();
- void AcceptHostCommandInternal();
-
- // Note that this can end up being called after the DeviceController is
- // destroyed which is why a weak pointer is used.
- static void DeleteListener(
- const base::WeakPtr& device_controller_ptr,
- int listener_port);
-
- const scoped_ptr host_socket_;
- // Used to notify the controller to exit.
- const int exit_notifier_fd_;
- // Lets ensure DeviceListener instances are deleted on the thread they were
- // created on.
- const scoped_refptr construction_task_runner_;
- base::WeakPtrFactory weak_ptr_factory_;
- ListenersMap listeners_;
-
- DISALLOW_COPY_AND_ASSIGN(DeviceController);
-};
-
-} // namespace forwarder
-
-#endif // TOOLS_ANDROID_FORWARDER2_DEVICE_CONTROLLER_H_
diff --git a/tools/android/forwarder2/device_forwarder_main.cc b/tools/android/forwarder2/device_forwarder_main.cc
deleted file mode 100644
index cad46f465a..0000000000
--- a/tools/android/forwarder2/device_forwarder_main.cc
+++ /dev/null
@@ -1,169 +0,0 @@
-// 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.
-
-#include
-#include
-
-#include
-#include
-
-#include "base/at_exit.h"
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/compiler_specific.h"
-#include "base/logging.h"
-#include "base/strings/string_piece.h"
-#include "base/strings/stringprintf.h"
-#include "base/threading/thread.h"
-#include "tools/android/forwarder2/common.h"
-#include "tools/android/forwarder2/daemon.h"
-#include "tools/android/forwarder2/device_controller.h"
-#include "tools/android/forwarder2/pipe_notifier.h"
-
-namespace forwarder2 {
-namespace {
-
-// Leaky global instance, accessed from the signal handler.
-forwarder2::PipeNotifier* g_notifier = NULL;
-
-const int kBufSize = 256;
-
-const char kUnixDomainSocketPath[] = "chrome_device_forwarder";
-const char kDaemonIdentifier[] = "chrome_device_forwarder_daemon";
-
-void KillHandler(int /* unused */) {
- CHECK(g_notifier);
- if (!g_notifier->Notify())
- exit(1);
-}
-
-// Lets the daemon fetch the exit notifier file descriptor.
-int GetExitNotifierFD() {
- DCHECK(g_notifier);
- return g_notifier->receiver_fd();
-}
-
-class ServerDelegate : public Daemon::ServerDelegate {
- public:
- ServerDelegate() : initialized_(false) {}
-
- virtual ~ServerDelegate() {
- if (!controller_thread_.get())
- return;
- // The DeviceController instance, if any, is constructed on the controller
- // thread. Make sure that it gets deleted on that same thread. Note that
- // DeleteSoon() is not used here since it would imply reading |controller_|
- // from the main thread while it's set on the internal thread.
- controller_thread_->message_loop_proxy()->PostTask(
- FROM_HERE,
- base::Bind(&ServerDelegate::DeleteControllerOnInternalThread,
- base::Unretained(this)));
- }
-
- void DeleteControllerOnInternalThread() {
- DCHECK(
- controller_thread_->message_loop_proxy()->RunsTasksOnCurrentThread());
- controller_.reset();
- }
-
- // Daemon::ServerDelegate:
- virtual void Init() OVERRIDE {
- DCHECK(!g_notifier);
- g_notifier = new forwarder2::PipeNotifier();
- signal(SIGTERM, KillHandler);
- signal(SIGINT, KillHandler);
- controller_thread_.reset(new base::Thread("controller_thread"));
- controller_thread_->Start();
- }
-
- virtual void OnClientConnected(scoped_ptr client_socket) OVERRIDE {
- if (initialized_) {
- client_socket->WriteString("OK");
- return;
- }
- controller_thread_->message_loop()->PostTask(
- FROM_HERE,
- base::Bind(&ServerDelegate::StartController, base::Unretained(this),
- GetExitNotifierFD(), base::Passed(&client_socket)));
- initialized_ = true;
- }
-
- private:
- void StartController(int exit_notifier_fd, scoped_ptr client_socket) {
- DCHECK(!controller_.get());
- scoped_ptr controller(
- DeviceController::Create(kUnixDomainSocketPath, exit_notifier_fd));
- if (!controller.get()) {
- client_socket->WriteString(
- base::StringPrintf("ERROR: Could not initialize device controller "
- "with ADB socket path: %s",
- kUnixDomainSocketPath));
- return;
- }
- controller_.swap(controller);
- controller_->Start();
- client_socket->WriteString("OK");
- client_socket->Close();
- }
-
- scoped_ptr controller_;
- scoped_ptr controller_thread_;
- bool initialized_;
-};
-
-class ClientDelegate : public Daemon::ClientDelegate {
- public:
- ClientDelegate() : has_failed_(false) {}
-
- bool has_failed() const { return has_failed_; }
-
- // Daemon::ClientDelegate:
- virtual void OnDaemonReady(Socket* daemon_socket) OVERRIDE {
- char buf[kBufSize];
- const int bytes_read = daemon_socket->Read(
- buf, sizeof(buf) - 1 /* leave space for null terminator */);
- CHECK_GT(bytes_read, 0);
- DCHECK(bytes_read < sizeof(buf));
- buf[bytes_read] = 0;
- base::StringPiece msg(buf, bytes_read);
- if (msg.starts_with("ERROR")) {
- LOG(ERROR) << msg;
- has_failed_ = true;
- return;
- }
- }
-
- private:
- bool has_failed_;
-};
-
-int RunDeviceForwarder(int argc, char** argv) {
- CommandLine::Init(argc, argv); // Needed by logging.
- const bool kill_server = CommandLine::ForCurrentProcess()->HasSwitch(
- "kill-server");
- if ((kill_server && argc != 2) || (!kill_server && argc != 1)) {
- std::cerr << "Usage: device_forwarder [--kill-server]" << std::endl;
- return 1;
- }
- base::AtExitManager at_exit_manager; // Used by base::Thread.
- ClientDelegate client_delegate;
- ServerDelegate daemon_delegate;
- const char kLogFilePath[] = ""; // Log to logcat.
- Daemon daemon(kLogFilePath, kDaemonIdentifier, &client_delegate,
- &daemon_delegate, &GetExitNotifierFD);
-
- if (kill_server)
- return !daemon.Kill();
-
- if (!daemon.SpawnIfNeeded())
- return 1;
- return client_delegate.has_failed();
-}
-
-} // namespace
-} // namespace forwarder2
-
-int main(int argc, char** argv) {
- return forwarder2::RunDeviceForwarder(argc, argv);
-}
diff --git a/tools/android/forwarder2/device_listener.cc b/tools/android/forwarder2/device_listener.cc
deleted file mode 100644
index 1819a8a6ed..0000000000
--- a/tools/android/forwarder2/device_listener.cc
+++ /dev/null
@@ -1,148 +0,0 @@
-// 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.
-
-#include "tools/android/forwarder2/device_listener.h"
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/callback.h"
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/message_loop/message_loop_proxy.h"
-#include "base/single_thread_task_runner.h"
-#include "tools/android/forwarder2/command.h"
-#include "tools/android/forwarder2/forwarder.h"
-#include "tools/android/forwarder2/socket.h"
-
-namespace forwarder2 {
-
-// static
-scoped_ptr DeviceListener::Create(
- scoped_ptr host_socket,
- int listener_port,
- const DeleteCallback& delete_callback) {
- scoped_ptr listener_socket(new Socket());
- scoped_ptr device_listener;
- if (!listener_socket->BindTcp("", listener_port)) {
- LOG(ERROR) << "Device could not bind and listen to local port "
- << listener_port;
- SendCommand(command::BIND_ERROR, listener_port, host_socket.get());
- return device_listener.Pass();
- }
- // In case the |listener_port_| was zero, GetPort() will return the
- // currently (non-zero) allocated port for this socket.
- listener_port = listener_socket->GetPort();
- SendCommand(command::BIND_SUCCESS, listener_port, host_socket.get());
- device_listener.reset(
- new DeviceListener(
- scoped_ptr(new PipeNotifier()), listener_socket.Pass(),
- host_socket.Pass(), listener_port, delete_callback));
- return device_listener.Pass();
-}
-
-DeviceListener::~DeviceListener() {
- DCHECK(deletion_task_runner_->RunsTasksOnCurrentThread());
- exit_notifier_->Notify();
-}
-
-void DeviceListener::Start() {
- thread_.Start();
- AcceptNextClientSoon();
-}
-
-void DeviceListener::SetAdbDataSocket(scoped_ptr adb_data_socket) {
- thread_.message_loop_proxy()->PostTask(
- FROM_HERE,
- base::Bind(&DeviceListener::OnAdbDataSocketReceivedOnInternalThread,
- base::Unretained(this), base::Passed(&adb_data_socket)));
-}
-
-DeviceListener::DeviceListener(scoped_ptr pipe_notifier,
- scoped_ptr listener_socket,
- scoped_ptr host_socket,
- int port,
- const DeleteCallback& delete_callback)
- : exit_notifier_(pipe_notifier.Pass()),
- listener_socket_(listener_socket.Pass()),
- host_socket_(host_socket.Pass()),
- listener_port_(port),
- delete_callback_(delete_callback),
- deletion_task_runner_(base::MessageLoopProxy::current()),
- thread_("DeviceListener") {
- CHECK(host_socket_.get());
- DCHECK(deletion_task_runner_.get());
- DCHECK(exit_notifier_.get());
- host_socket_->AddEventFd(exit_notifier_->receiver_fd());
- listener_socket_->AddEventFd(exit_notifier_->receiver_fd());
-}
-
-void DeviceListener::AcceptNextClientSoon() {
- thread_.message_loop_proxy()->PostTask(
- FROM_HERE,
- base::Bind(&DeviceListener::AcceptClientOnInternalThread,
- base::Unretained(this)));
-}
-
-void DeviceListener::AcceptClientOnInternalThread() {
- device_data_socket_.reset(new Socket());
- if (!listener_socket_->Accept(device_data_socket_.get())) {
- if (listener_socket_->DidReceiveEvent()) {
- LOG(INFO) << "Received exit notification, stopped accepting clients.";
- SelfDelete();
- return;
- }
- LOG(WARNING) << "Could not Accept in ListenerSocket.";
- SendCommand(command::ACCEPT_ERROR, listener_port_, host_socket_.get());
- SelfDelete();
- return;
- }
- SendCommand(command::ACCEPT_SUCCESS, listener_port_, host_socket_.get());
- if (!ReceivedCommand(command::HOST_SERVER_SUCCESS,
- host_socket_.get())) {
- SendCommand(command::ACK, listener_port_, host_socket_.get());
- LOG(ERROR) << "Host could not connect to server.";
- device_data_socket_->Close();
- if (host_socket_->has_error()) {
- LOG(ERROR) << "Adb Control connection lost. "
- << "Listener port: " << listener_port_;
- SelfDelete();
- return;
- }
- // It can continue if the host forwarder could not connect to the host
- // server but the control connection is still alive (no errors). The device
- // acknowledged that (above), and it can re-try later.
- AcceptNextClientSoon();
- return;
- }
-}
-
-void DeviceListener::OnAdbDataSocketReceivedOnInternalThread(
- scoped_ptr adb_data_socket) {
- adb_data_socket_.swap(adb_data_socket);
- SendCommand(command::ADB_DATA_SOCKET_SUCCESS, listener_port_,
- host_socket_.get());
- CHECK(adb_data_socket_.get());
- StartForwarder(device_data_socket_.Pass(), adb_data_socket_.Pass());
- AcceptNextClientSoon();
-}
-
-void DeviceListener::SelfDelete() {
- if (!deletion_task_runner_->RunsTasksOnCurrentThread()) {
- deletion_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&DeviceListener::SelfDeleteOnDeletionTaskRunner,
- delete_callback_, listener_port_));
- return;
- }
- SelfDeleteOnDeletionTaskRunner(delete_callback_, listener_port_);
-}
-
-// static
-void DeviceListener::SelfDeleteOnDeletionTaskRunner(
- const DeleteCallback& delete_callback,
- int listener_port) {
- delete_callback.Run(listener_port);
-}
-
-} // namespace forwarder
diff --git a/tools/android/forwarder2/device_listener.h b/tools/android/forwarder2/device_listener.h
deleted file mode 100644
index 2a69823196..0000000000
--- a/tools/android/forwarder2/device_listener.h
+++ /dev/null
@@ -1,114 +0,0 @@
-// 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.
-
-#ifndef TOOLS_ANDROID_FORWARDER2_DEVICE_LISTENER_H_
-#define TOOLS_ANDROID_FORWARDER2_DEVICE_LISTENER_H_
-
-#include "base/basictypes.h"
-#include "base/callback.h"
-#include "base/compiler_specific.h"
-#include "base/logging.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/threading/thread.h"
-#include "tools/android/forwarder2/pipe_notifier.h"
-#include "tools/android/forwarder2/socket.h"
-
-namespace base {
-class SingleThreadTaskRunner;
-} // namespace base
-
-namespace forwarder2 {
-
-class Forwarder;
-
-// A DeviceListener instance is used in the device_forwarder program to bind to
-// a specific device-side |port| and wait for client connections. When a
-// connection happens, it informs the corresponding HostController instance
-// running on the host, through |host_socket|. Then the class expects a call to
-// its SetAdbDataSocket() method (performed by the device controller) once the
-// host opened a new connection to the device. When this happens, a new internal
-// Forwarder instance is started.
-// Note that instances of this class are owned by the device controller which
-// creates and destroys them on the same thread. In case an internal error
-// happens on the DeviceListener's internal thread, the DeviceListener
-// can also self-delete by executing the user-provided callback on the thread
-// the DeviceListener was created on.
-// Note that the DeviceListener's destructor joins its internal thread (i.e.
-// waits for its completion) which means that the internal thread is guaranteed
-// not to be running anymore once the object is deleted.
-class DeviceListener {
- public:
- // Callback that is used for self-deletion as a way to let the device
- // controller perform some additional cleanup work (e.g. removing the device
- // listener instance from its internal map before deleting it).
- typedef base::Callback DeleteCallback;
-
- static scoped_ptr Create(
- scoped_ptr host_socket,
- int port,
- const DeleteCallback& delete_callback);
-
- ~DeviceListener();
-
- void Start();
-
- void SetAdbDataSocket(scoped_ptr adb_data_socket);
-
- int listener_port() const { return listener_port_; }
-
- private:
- DeviceListener(scoped_ptr pipe_notifier,
- scoped_ptr listener_socket,
- scoped_ptr host_socket,
- int port,
- const DeleteCallback& delete_callback);
-
- // Pushes an AcceptClientOnInternalThread() task to the internal thread's
- // message queue in order to wait for a new client soon.
- void AcceptNextClientSoon();
-
- void AcceptClientOnInternalThread();
-
- void OnAdbDataSocketReceivedOnInternalThread(
- scoped_ptr adb_data_socket);
-
- void SelfDelete();
-
- // Note that this can be called after the DeviceListener instance gets deleted
- // which is why this method is static.
- static void SelfDeleteOnDeletionTaskRunner(
- const DeleteCallback& delete_callback,
- int listener_port);
-
- // Used for the listener thread to be notified on destruction. We have one
- // notifier per Listener thread since each Listener thread may be requested to
- // exit for different reasons independently from each other and independent
- // from the main program, ex. when the host requests to forward/listen the
- // same port again. Both the |host_socket_| and |listener_socket_|
- // must share the same receiver file descriptor from |exit_notifier_| and it
- // is set in the constructor.
- const scoped_ptr exit_notifier_;
- // The local device listener socket for accepting connections from the local
- // port (listener_port_).
- const scoped_ptr listener_socket_;
- // The listener socket for sending control commands.
- const scoped_ptr host_socket_;
- scoped_ptr device_data_socket_;
- // This is the adb connection to transport the actual data, used for creating
- // the forwarder. Ownership transferred to the Forwarder.
- scoped_ptr adb_data_socket_;
- const int listener_port_;
- const DeleteCallback delete_callback_;
- // Task runner used for deletion set at construction time (i.e. the object is
- // deleted on the same thread it is created on).
- scoped_refptr deletion_task_runner_;
- base::Thread thread_;
-
- DISALLOW_COPY_AND_ASSIGN(DeviceListener);
-};
-
-} // namespace forwarder
-
-#endif // TOOLS_ANDROID_FORWARDER2_DEVICE_LISTENER_H_
diff --git a/tools/android/forwarder2/forwarder.cc b/tools/android/forwarder2/forwarder.cc
deleted file mode 100644
index df4c29cf9f..0000000000
--- a/tools/android/forwarder2/forwarder.cc
+++ /dev/null
@@ -1,171 +0,0 @@
-// 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.
-
-#include "tools/android/forwarder2/forwarder.h"
-
-#include "base/basictypes.h"
-#include "base/bind.h"
-#include "base/logging.h"
-#include "base/memory/ref_counted.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/single_thread_task_runner.h"
-#include "tools/android/forwarder2/socket.h"
-
-namespace forwarder2 {
-namespace {
-
-// Helper class to buffer reads and writes from one socket to another.
-class BufferedCopier {
- public:
- // Does NOT own the pointers.
- BufferedCopier(Socket* socket_from,
- Socket* socket_to)
- : socket_from_(socket_from),
- socket_to_(socket_to),
- bytes_read_(0),
- write_offset_(0) {
- }
-
- bool AddToReadSet(fd_set* read_fds) {
- if (bytes_read_ == 0)
- return socket_from_->AddFdToSet(read_fds);
- return false;
- }
-
- bool AddToWriteSet(fd_set* write_fds) {
- if (write_offset_ < bytes_read_)
- return socket_to_->AddFdToSet(write_fds);
- return false;
- }
-
- bool TryRead(const fd_set& read_fds) {
- if (!socket_from_->IsFdInSet(read_fds))
- return false;
- if (bytes_read_ != 0) // Can't read.
- return false;
- int ret = socket_from_->Read(buffer_, kBufferSize);
- if (ret > 0) {
- bytes_read_ = ret;
- return true;
- }
- return false;
- }
-
- bool TryWrite(const fd_set& write_fds) {
- if (!socket_to_->IsFdInSet(write_fds))
- return false;
- if (write_offset_ >= bytes_read_) // Nothing to write.
- return false;
- int ret = socket_to_->Write(buffer_ + write_offset_,
- bytes_read_ - write_offset_);
- if (ret > 0) {
- write_offset_ += ret;
- if (write_offset_ == bytes_read_) {
- write_offset_ = 0;
- bytes_read_ = 0;
- }
- return true;
- }
- return false;
- }
-
- private:
- // Not owned.
- Socket* socket_from_;
- Socket* socket_to_;
-
- // A big buffer to let our file-over-http bridge work more like real file.
- static const int kBufferSize = 1024 * 128;
- int bytes_read_;
- int write_offset_;
- char buffer_[kBufferSize];
-
- DISALLOW_COPY_AND_ASSIGN(BufferedCopier);
-};
-
-// Internal class that wraps a helper thread to forward traffic between
-// |socket1| and |socket2|. After creating a new instance, call its Start()
-// method to launch operations. Thread stops automatically if one of the socket
-// disconnects, but ensures that all buffered writes to the other, still alive,
-// socket, are written first. When this happens, the instance will delete itself
-// automatically.
-// Note that the instance will always be destroyed on the same thread that
-// created it.
-class Forwarder {
- public:
- Forwarder(scoped_ptr socket1, scoped_ptr socket2)
- : socket1_(socket1.Pass()),
- socket2_(socket2.Pass()),
- destructor_runner_(base::MessageLoopProxy::current()),
- thread_("ForwarderThread") {
- }
-
- void Start() {
- thread_.Start();
- thread_.message_loop_proxy()->PostTask(
- FROM_HERE,
- base::Bind(&Forwarder::ThreadHandler, base::Unretained(this)));
- }
-
- private:
- void ThreadHandler() {
- const int nfds = Socket::GetHighestFileDescriptor(*socket1_, *socket2_) + 1;
- fd_set read_fds;
- fd_set write_fds;
-
- // Copy from socket1 to socket2
- BufferedCopier buffer1(socket1_.get(), socket2_.get());
- // Copy from socket2 to socket1
- BufferedCopier buffer2(socket2_.get(), socket1_.get());
-
- bool run = true;
- while (run) {
- FD_ZERO(&read_fds);
- FD_ZERO(&write_fds);
-
- buffer1.AddToReadSet(&read_fds);
- buffer2.AddToReadSet(&read_fds);
- buffer1.AddToWriteSet(&write_fds);
- buffer2.AddToWriteSet(&write_fds);
-
- if (HANDLE_EINTR(select(nfds, &read_fds, &write_fds, NULL, NULL)) <= 0) {
- PLOG(ERROR) << "select";
- break;
- }
- // When a socket in the read set closes the connection, select() returns
- // with that socket descriptor set as "ready to read". When we call
- // TryRead() below, it will return false, but the while loop will continue
- // to run until all the write operations are finished, to make sure the
- // buffers are completely flushed out.
-
- // Keep running while we have some operation to do.
- run = buffer1.TryRead(read_fds);
- run = run || buffer2.TryRead(read_fds);
- run = run || buffer1.TryWrite(write_fds);
- run = run || buffer2.TryWrite(write_fds);
- }
-
- // Note that the thread that |destruction_runner_| runs tasks on could be
- // temporarily blocked on I/O (e.g. select()) therefore it is safer to close
- // the sockets now rather than relying on the destructor.
- socket1_.reset();
- socket2_.reset();
-
- // Note that base::Thread must be destroyed on the thread it was created on.
- destructor_runner_->DeleteSoon(FROM_HERE, this);
- }
-
- scoped_ptr socket1_;
- scoped_ptr socket2_;
- scoped_refptr destructor_runner_;
- base::Thread thread_;
-};
-
-} // namespace
-
-void StartForwarder(scoped_ptr socket1, scoped_ptr socket2) {
- (new Forwarder(socket1.Pass(), socket2.Pass()))->Start();
-}
-
-} // namespace forwarder2
diff --git a/tools/android/forwarder2/forwarder.gyp b/tools/android/forwarder2/forwarder.gyp
deleted file mode 100644
index fdc19aa4ce..0000000000
--- a/tools/android/forwarder2/forwarder.gyp
+++ /dev/null
@@ -1,85 +0,0 @@
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'forwarder2',
- 'type': 'none',
- 'dependencies': [
- 'device_forwarder',
- 'host_forwarder#host',
- ],
- # For the component build, ensure dependent shared libraries are stripped
- # and put alongside forwarder to simplify pushing to the device.
- 'variables': {
- 'output_dir': '<(PRODUCT_DIR)/forwarder_dist/',
- 'native_binary': '<(PRODUCT_DIR)/device_forwarder',
- },
- 'includes': ['../../../build/android/native_app_dependencies.gypi'],
- },
- {
- 'target_name': 'device_forwarder',
- 'type': 'executable',
- 'toolsets': ['target'],
- 'dependencies': [
- '../../../base/base.gyp:base',
- '../common/common.gyp:android_tools_common',
- ],
- 'include_dirs': [
- '../../..',
- ],
- 'conditions': [
- # Warning: A PIE tool cannot run on ICS 4.0.4, so only
- # build it as position-independent when ASAN
- # is activated. See b/6587214 for details.
- [ 'asan==1', {
- 'cflags': [
- '-fPIE',
- ],
- 'ldflags': [
- '-pie',
- ],
- }],
- ],
- 'sources': [
- 'command.cc',
- 'common.cc',
- 'daemon.cc',
- 'device_controller.cc',
- 'device_forwarder_main.cc',
- 'device_listener.cc',
- 'forwarder.cc',
- 'pipe_notifier.cc',
- 'socket.cc',
- ],
- },
- {
- 'target_name': 'host_forwarder',
- 'type': 'executable',
- 'toolsets': ['host'],
- 'dependencies': [
- '../../../base/base.gyp:base',
- '../common/common.gyp:android_tools_common',
- ],
- 'include_dirs': [
- '../../..',
- ],
- 'sources': [
- 'command.cc',
- 'common.cc',
- 'daemon.cc',
- 'forwarder.cc',
- 'host_controller.cc',
- 'host_forwarder_main.cc',
- 'pipe_notifier.cc',
- 'socket.cc',
- # TODO(pliard): Remove this. This is needed to avoid undefined
- # references at link time.
- '../../../base/message_loop/message_pump_glib.cc',
- '../../../base/message_loop/message_pump_gtk.cc',
- ],
- },
- ],
-}
diff --git a/tools/android/forwarder2/forwarder.h b/tools/android/forwarder2/forwarder.h
deleted file mode 100644
index 651b5e80f7..0000000000
--- a/tools/android/forwarder2/forwarder.h
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-#ifndef TOOLS_ANDROID_FORWARDER2_FORWARDER_H_
-#define TOOLS_ANDROID_FORWARDER2_FORWARDER_H_
-
-#include "base/memory/scoped_ptr.h"
-#include "base/threading/thread.h"
-
-namespace forwarder2 {
-
-class Socket;
-
-void StartForwarder(scoped_ptr socket1, scoped_ptr socket2);
-
-} // namespace forwarder2
-
-#endif // TOOLS_ANDROID_FORWARDER2_FORWARDER_H_
diff --git a/tools/android/forwarder2/host_controller.cc b/tools/android/forwarder2/host_controller.cc
deleted file mode 100644
index 1588e7291b..0000000000
--- a/tools/android/forwarder2/host_controller.cc
+++ /dev/null
@@ -1,186 +0,0 @@
-// 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.
-
-#include "tools/android/forwarder2/host_controller.h"
-
-#include
-
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "tools/android/forwarder2/command.h"
-#include "tools/android/forwarder2/forwarder.h"
-#include "tools/android/forwarder2/socket.h"
-
-namespace forwarder2 {
-
-// static
-scoped_ptr HostController::Create(
- int device_port,
- int host_port,
- int adb_port,
- int exit_notifier_fd,
- const DeletionCallback& deletion_callback) {
- scoped_ptr host_controller;
- scoped_ptr delete_controller_notifier(new PipeNotifier());
- scoped_ptr adb_control_socket(new Socket());
- adb_control_socket->AddEventFd(exit_notifier_fd);
- adb_control_socket->AddEventFd(delete_controller_notifier->receiver_fd());
- if (!adb_control_socket->ConnectTcp(std::string(), adb_port)) {
- LOG(ERROR) << "Could not connect HostController socket on port: "
- << adb_port;
- return host_controller.Pass();
- }
- // Send the command to the device start listening to the "device_forward_port"
- bool send_command_success = SendCommand(
- command::LISTEN, device_port, adb_control_socket.get());
- CHECK(send_command_success);
- int device_port_allocated;
- command::Type command;
- if (!ReadCommand(
- adb_control_socket.get(), &device_port_allocated, &command) ||
- command != command::BIND_SUCCESS) {
- LOG(ERROR) << "Device binding error using port " << device_port;
- return host_controller.Pass();
- }
- host_controller.reset(
- new HostController(
- device_port_allocated, host_port, adb_port, exit_notifier_fd,
- deletion_callback, adb_control_socket.Pass(),
- delete_controller_notifier.Pass()));
- return host_controller.Pass();
-}
-
-HostController::~HostController() {
- DCHECK(deletion_task_runner_->RunsTasksOnCurrentThread());
- delete_controller_notifier_->Notify();
- // Note that the Forwarder instance (that also received a delete notification)
- // might still be running on its own thread at this point. This is not a
- // problem since it will self-delete once the socket that it is operating on
- // is closed.
-}
-
-void HostController::Start() {
- thread_.Start();
- ReadNextCommandSoon();
-}
-
-HostController::HostController(
- int device_port,
- int host_port,
- int adb_port,
- int exit_notifier_fd,
- const DeletionCallback& deletion_callback,
- scoped_ptr adb_control_socket,
- scoped_ptr delete_controller_notifier)
- : device_port_(device_port),
- host_port_(host_port),
- adb_port_(adb_port),
- global_exit_notifier_fd_(exit_notifier_fd),
- deletion_callback_(deletion_callback),
- adb_control_socket_(adb_control_socket.Pass()),
- delete_controller_notifier_(delete_controller_notifier.Pass()),
- deletion_task_runner_(base::MessageLoopProxy::current()),
- thread_("HostControllerThread") {
-}
-
-void HostController::ReadNextCommandSoon() {
- thread_.message_loop_proxy()->PostTask(
- FROM_HERE,
- base::Bind(&HostController::ReadCommandOnInternalThread,
- base::Unretained(this)));
-}
-
-void HostController::ReadCommandOnInternalThread() {
- if (!ReceivedCommand(command::ACCEPT_SUCCESS, adb_control_socket_.get())) {
- SelfDelete();
- return;
- }
- // Try to connect to host server.
- scoped_ptr host_server_data_socket(CreateSocket());
- if (!host_server_data_socket->ConnectTcp(std::string(), host_port_)) {
- LOG(ERROR) << "Could not Connect HostServerData socket on port: "
- << host_port_;
- SendCommand(
- command::HOST_SERVER_ERROR, device_port_, adb_control_socket_.get());
- if (ReceivedCommand(command::ACK, adb_control_socket_.get())) {
- // It can continue if the host forwarder could not connect to the host
- // server but the device acknowledged that, so that the device could
- // re-try later.
- ReadNextCommandSoon();
- return;
- }
- SelfDelete();
- return;
- }
- SendCommand(
- command::HOST_SERVER_SUCCESS, device_port_, adb_control_socket_.get());
- StartForwarder(host_server_data_socket.Pass());
- ReadNextCommandSoon();
-}
-
-void HostController::StartForwarder(
- scoped_ptr host_server_data_socket) {
- scoped_ptr adb_data_socket(CreateSocket());
- if (!adb_data_socket->ConnectTcp("", adb_port_)) {
- LOG(ERROR) << "Could not connect AdbDataSocket on port: " << adb_port_;
- SelfDelete();
- return;
- }
- // Open the Adb data connection, and send a command with the
- // |device_forward_port| as a way for the device to identify the connection.
- SendCommand(command::DATA_CONNECTION, device_port_, adb_data_socket.get());
-
- // Check that the device received the new Adb Data Connection. Note that this
- // check is done through the |adb_control_socket_| that is handled in the
- // DeviceListener thread just after the call to WaitForAdbDataSocket().
- if (!ReceivedCommand(command::ADB_DATA_SOCKET_SUCCESS,
- adb_control_socket_.get())) {
- LOG(ERROR) << "Device could not handle the new Adb Data Connection.";
- SelfDelete();
- return;
- }
- forwarder2::StartForwarder(
- host_server_data_socket.Pass(), adb_data_socket.Pass());
-}
-
-scoped_ptr HostController::CreateSocket() {
- scoped_ptr socket(new Socket());
- socket->AddEventFd(global_exit_notifier_fd_);
- socket->AddEventFd(delete_controller_notifier_->receiver_fd());
- return socket.Pass();
-}
-
-void HostController::SelfDelete() {
- scoped_ptr self_deleter(this);
- deletion_task_runner_->PostTask(
- FROM_HERE,
- base::Bind(&HostController::SelfDeleteOnDeletionTaskRunner,
- deletion_callback_, base::Passed(&self_deleter)));
- // Tell the device to delete its corresponding controller instance before we
- // self-delete.
- Socket socket;
- if (!socket.ConnectTcp("", adb_port_)) {
- LOG(ERROR) << "Could not connect to device on port " << adb_port_;
- return;
- }
- if (!SendCommand(command::UNLISTEN, device_port_, &socket)) {
- LOG(ERROR) << "Could not send unmap command for port " << device_port_;
- return;
- }
- if (!ReceivedCommand(command::UNLISTEN_SUCCESS, &socket)) {
- LOG(ERROR) << "Unamp command failed for port " << device_port_;
- return;
- }
-}
-
-// static
-void HostController::SelfDeleteOnDeletionTaskRunner(
- const DeletionCallback& deletion_callback,
- scoped_ptr controller) {
- deletion_callback.Run(controller.Pass());
-}
-
-} // namespace forwarder2
diff --git a/tools/android/forwarder2/host_controller.h b/tools/android/forwarder2/host_controller.h
deleted file mode 100644
index aaedb945e8..0000000000
--- a/tools/android/forwarder2/host_controller.h
+++ /dev/null
@@ -1,99 +0,0 @@
-// 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.
-
-#ifndef TOOLS_ANDROID_FORWARDER2_HOST_CONTROLLER_H_
-#define TOOLS_ANDROID_FORWARDER2_HOST_CONTROLLER_H_
-
-#include
-
-#include "base/basictypes.h"
-#include "base/callback.h"
-#include "base/compiler_specific.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/threading/thread.h"
-#include "tools/android/forwarder2/pipe_notifier.h"
-#include "tools/android/forwarder2/socket.h"
-
-namespace forwarder2 {
-
-// This class partners with DeviceController and has the same lifetime and
-// threading characteristics as DeviceListener. In a nutshell, this class
-// operates on its own thread and is destroyed on the thread it was constructed
-// on. The class' deletion can happen in two different ways:
-// - Its destructor was called by its owner (HostControllersManager).
-// - Its internal thread requested self-deletion after an error happened. In
-// this case the owner (HostControllersManager) is notified on the
-// construction thread through the provided DeletionCallback invoked with the
-// HostController instance. When this callback is invoked, it's up to the
-// owner to delete the instance.
-class HostController {
- public:
- // Callback used for self-deletion that lets the client perform some cleanup
- // work before deleting the HostController instance.
- typedef base::Callback)> DeletionCallback;
-
- // If |device_port| is zero then a dynamic port is allocated (and retrievable
- // through device_port() below).
- static scoped_ptr Create(
- int device_port,
- int host_port,
- int adb_port,
- int exit_notifier_fd,
- const DeletionCallback& deletion_callback);
-
- ~HostController();
-
- // Starts the internal controller thread.
- void Start();
-
- int adb_port() const { return adb_port_; }
-
- int device_port() const { return device_port_; }
-
- private:
- HostController(int device_port,
- int host_port,
- int adb_port,
- int exit_notifier_fd,
- const DeletionCallback& deletion_callback,
- scoped_ptr adb_control_socket,
- scoped_ptr delete_controller_notifier);
-
- void ReadNextCommandSoon();
- void ReadCommandOnInternalThread();
-
- void StartForwarder(scoped_ptr host_server_data_socket);
-
- // Helper method that creates a socket and adds the appropriate event file
- // descriptors.
- scoped_ptr CreateSocket();
-
- void SelfDelete();
-
- static void SelfDeleteOnDeletionTaskRunner(
- const DeletionCallback& deletion_callback,
- scoped_ptr controller);
-
- const int device_port_;
- const int host_port_;
- const int adb_port_;
- // Used to notify the controller when the process is killed.
- const int global_exit_notifier_fd_;
- // Used to let the client delete the instance in case an error happened.
- const DeletionCallback deletion_callback_;
- scoped_ptr adb_control_socket_;
- scoped_ptr delete_controller_notifier_;
- // Used to cancel the pending blocking IO operations when the host controller
- // instance is deleted.
- // Task runner used for deletion set at construction time (i.e. the object is
- // deleted on the same thread it is created on).
- const scoped_refptr deletion_task_runner_;
- base::Thread thread_;
-
- DISALLOW_COPY_AND_ASSIGN(HostController);
-};
-
-} // namespace forwarder2
-
-#endif // TOOLS_ANDROID_FORWARDER2_HOST_CONTROLLER_H_
diff --git a/tools/android/forwarder2/host_forwarder_main.cc b/tools/android/forwarder2/host_forwarder_main.cc
deleted file mode 100644
index 1071aa7dd4..0000000000
--- a/tools/android/forwarder2/host_forwarder_main.cc
+++ /dev/null
@@ -1,414 +0,0 @@
-// 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.
-
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "base/at_exit.h"
-#include "base/basictypes.h"
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/compiler_specific.h"
-#include "base/containers/hash_tables.h"
-#include "base/file_util.h"
-#include "base/files/file_path.h"
-#include "base/logging.h"
-#include "base/memory/linked_ptr.h"
-#include "base/memory/scoped_vector.h"
-#include "base/memory/weak_ptr.h"
-#include "base/pickle.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/safe_strerror_posix.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_piece.h"
-#include "base/strings/string_split.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/task_runner.h"
-#include "base/threading/thread.h"
-#include "tools/android/forwarder2/common.h"
-#include "tools/android/forwarder2/daemon.h"
-#include "tools/android/forwarder2/host_controller.h"
-#include "tools/android/forwarder2/pipe_notifier.h"
-#include "tools/android/forwarder2/socket.h"
-
-namespace forwarder2 {
-namespace {
-
-const char kLogFilePath[] = "/tmp/host_forwarder_log";
-const char kDaemonIdentifier[] = "chrome_host_forwarder_daemon";
-
-const char kKillServerCommand[] = "kill-server";
-const char kForwardCommand[] = "forward";
-
-const int kBufSize = 256;
-
-// Needs to be global to be able to be accessed from the signal handler.
-PipeNotifier* g_notifier = NULL;
-
-// Lets the daemon fetch the exit notifier file descriptor.
-int GetExitNotifierFD() {
- DCHECK(g_notifier);
- return g_notifier->receiver_fd();
-}
-
-void KillHandler(int signal_number) {
- char buf[kBufSize];
- if (signal_number != SIGTERM && signal_number != SIGINT) {
- snprintf(buf, sizeof(buf), "Ignoring unexpected signal %d.", signal_number);
- SIGNAL_SAFE_LOG(WARNING, buf);
- return;
- }
- snprintf(buf, sizeof(buf), "Received signal %d.", signal_number);
- SIGNAL_SAFE_LOG(WARNING, buf);
- static int s_kill_handler_count = 0;
- CHECK(g_notifier);
- // If for some reason the forwarder get stuck in any socket waiting forever,
- // we can send a SIGKILL or SIGINT three times to force it die
- // (non-nicely). This is useful when debugging.
- ++s_kill_handler_count;
- if (!g_notifier->Notify() || s_kill_handler_count > 2)
- exit(1);
-}
-
-// Manages HostController instances. There is one HostController instance for
-// each connection being forwarded. Note that forwarding can happen with many
-// devices (identified with a serial id).
-class HostControllersManager {
- public:
- HostControllersManager()
- : weak_ptr_factory_(this),
- controllers_(new HostControllerMap()),
- has_failed_(false) {
- }
-
- ~HostControllersManager() {
- if (!thread_.get())
- return;
- // Delete the controllers on the thread they were created on.
- thread_->message_loop_proxy()->DeleteSoon(
- FROM_HERE, controllers_.release());
- }
-
- void HandleRequest(const std::string& device_serial,
- int device_port,
- int host_port,
- scoped_ptr client_socket) {
- // Lazy initialize so that the CLI process doesn't get this thread created.
- InitOnce();
- thread_->message_loop_proxy()->PostTask(
- FROM_HERE,
- base::Bind(
- &HostControllersManager::HandleRequestOnInternalThread,
- base::Unretained(this), device_serial, device_port, host_port,
- base::Passed(&client_socket)));
- }
-
- bool has_failed() const { return has_failed_; }
-
- private:
- typedef base::hash_map<
- std::string, linked_ptr > HostControllerMap;
-
- static std::string MakeHostControllerMapKey(int adb_port, int device_port) {
- return base::StringPrintf("%d:%d", adb_port, device_port);
- }
-
- void InitOnce() {
- if (thread_.get())
- return;
- at_exit_manager_.reset(new base::AtExitManager());
- thread_.reset(new base::Thread("HostControllersManagerThread"));
- thread_->Start();
- }
-
- // Invoked when a HostController instance reports an error (e.g. due to a
- // device connectivity issue). Note that this could be called after the
- // controller manager was destroyed which is why a weak pointer is used.
- static void DeleteHostController(
- const base::WeakPtr& manager_ptr,
- scoped_ptr host_controller) {
- HostController* const controller = host_controller.release();
- HostControllersManager* const manager = manager_ptr.get();
- if (!manager) {
- // Note that |controller| is not leaked in this case since the host
- // controllers manager owns the controllers. If the manager was deleted
- // then all the controllers (including |controller|) were also deleted.
- return;
- }
- DCHECK(manager->thread_->message_loop_proxy()->RunsTasksOnCurrentThread());
- // Note that this will delete |controller| which is owned by the map.
- manager->controllers_->erase(
- MakeHostControllerMapKey(controller->adb_port(),
- controller->device_port()));
- }
-
- void HandleRequestOnInternalThread(const std::string& device_serial,
- int device_port,
- int host_port,
- scoped_ptr client_socket) {
- const int adb_port = GetAdbPortForDevice(device_serial);
- if (adb_port < 0) {
- SendMessage(
- "ERROR: could not get adb port for device. You might need to add "
- "'adb' to your PATH or provide the device serial id.",
- client_socket.get());
- return;
- }
- if (device_port < 0) {
- // Remove the previously created host controller.
- const std::string controller_key = MakeHostControllerMapKey(
- adb_port, -device_port);
- const HostControllerMap::size_type removed_elements = controllers_->erase(
- controller_key);
- SendMessage(
- !removed_elements ? "ERROR: could not unmap port" : "OK",
- client_socket.get());
- return;
- }
- if (host_port < 0) {
- SendMessage("ERROR: missing host port", client_socket.get());
- return;
- }
- const bool use_dynamic_port_allocation = device_port == 0;
- if (!use_dynamic_port_allocation) {
- const std::string controller_key = MakeHostControllerMapKey(
- adb_port, device_port);
- if (controllers_->find(controller_key) != controllers_->end()) {
- LOG(INFO) << "Already forwarding device port " << device_port
- << " to host port " << host_port;
- SendMessage(base::StringPrintf("%d:%d", device_port, host_port),
- client_socket.get());
- return;
- }
- }
- // Create a new host controller.
- scoped_ptr host_controller(
- HostController::Create(
- device_port, host_port, adb_port, GetExitNotifierFD(),
- base::Bind(&HostControllersManager::DeleteHostController,
- weak_ptr_factory_.GetWeakPtr())));
- if (!host_controller.get()) {
- has_failed_ = true;
- SendMessage("ERROR: Connection to device failed.", client_socket.get());
- return;
- }
- // Get the current allocated port.
- device_port = host_controller->device_port();
- LOG(INFO) << "Forwarding device port " << device_port << " to host port "
- << host_port;
- const std::string msg = base::StringPrintf("%d:%d", device_port, host_port);
- if (!SendMessage(msg, client_socket.get()))
- return;
- host_controller->Start();
- controllers_->insert(
- std::make_pair(MakeHostControllerMapKey(adb_port, device_port),
- linked_ptr(host_controller.release())));
- }
-
- int GetAdbPortForDevice(const std::string& device_serial) {
- base::hash_map::const_iterator it =
- device_serial_to_adb_port_map_.find(device_serial);
- if (it != device_serial_to_adb_port_map_.end())
- return it->second;
- Socket bind_socket;
- CHECK(bind_socket.BindTcp("127.0.0.1", 0));
- const int port = bind_socket.GetPort();
- bind_socket.Close();
- const std::string serial_part = device_serial.empty() ?
- std::string() : std::string("-s ") + device_serial;
- const std::string command = base::StringPrintf(
- "adb %s forward tcp:%d localabstract:chrome_device_forwarder",
- device_serial.empty() ? "" : serial_part.c_str(),
- port);
- LOG(INFO) << command;
- const int ret = system(command.c_str());
- if (ret < 0 || !WIFEXITED(ret) || WEXITSTATUS(ret) != 0)
- return -1;
- device_serial_to_adb_port_map_[device_serial] = port;
- return port;
- }
-
- bool SendMessage(const std::string& msg, Socket* client_socket) {
- bool result = client_socket->WriteString(msg);
- DCHECK(result);
- if (!result)
- has_failed_ = true;
- return result;
- }
-
- base::WeakPtrFactory weak_ptr_factory_;
- base::hash_map device_serial_to_adb_port_map_;
- scoped_ptr controllers_;
- bool has_failed_;
- scoped_ptr at_exit_manager_; // Needed by base::Thread.
- scoped_ptr thread_;
-};
-
-class ServerDelegate : public Daemon::ServerDelegate {
- public:
- ServerDelegate() : has_failed_(false) {}
-
- bool has_failed() const {
- return has_failed_ || controllers_manager_.has_failed();
- }
-
- // Daemon::ServerDelegate:
- virtual void Init() OVERRIDE {
- LOG(INFO) << "Starting host process daemon (pid=" << getpid() << ")";
- DCHECK(!g_notifier);
- g_notifier = new PipeNotifier();
- signal(SIGTERM, KillHandler);
- signal(SIGINT, KillHandler);
- }
-
- virtual void OnClientConnected(scoped_ptr client_socket) OVERRIDE {
- char buf[kBufSize];
- const int bytes_read = client_socket->Read(buf, sizeof(buf));
- if (bytes_read <= 0) {
- if (client_socket->DidReceiveEvent())
- return;
- PError("Read()");
- has_failed_ = true;
- return;
- }
- const Pickle command_pickle(buf, bytes_read);
- PickleIterator pickle_it(command_pickle);
- std::string device_serial;
- CHECK(pickle_it.ReadString(&device_serial));
- int device_port;
- if (!pickle_it.ReadInt(&device_port)) {
- client_socket->WriteString("ERROR: missing device port");
- return;
- }
- int host_port;
- if (!pickle_it.ReadInt(&host_port))
- host_port = -1;
- controllers_manager_.HandleRequest(
- device_serial, device_port, host_port, client_socket.Pass());
- }
-
- private:
- bool has_failed_;
- HostControllersManager controllers_manager_;
-
- DISALLOW_COPY_AND_ASSIGN(ServerDelegate);
-};
-
-class ClientDelegate : public Daemon::ClientDelegate {
- public:
- ClientDelegate(const Pickle& command_pickle)
- : command_pickle_(command_pickle),
- has_failed_(false) {
- }
-
- bool has_failed() const { return has_failed_; }
-
- // Daemon::ClientDelegate:
- virtual void OnDaemonReady(Socket* daemon_socket) OVERRIDE {
- // Send the forward command to the daemon.
- CHECK_EQ(command_pickle_.size(),
- daemon_socket->WriteNumBytes(command_pickle_.data(),
- command_pickle_.size()));
- char buf[kBufSize];
- const int bytes_read = daemon_socket->Read(
- buf, sizeof(buf) - 1 /* leave space for null terminator */);
- CHECK_GT(bytes_read, 0);
- DCHECK(bytes_read < sizeof(buf));
- buf[bytes_read] = 0;
- base::StringPiece msg(buf, bytes_read);
- if (msg.starts_with("ERROR")) {
- LOG(ERROR) << msg;
- has_failed_ = true;
- return;
- }
- printf("%s\n", buf);
- }
-
- private:
- const Pickle command_pickle_;
- bool has_failed_;
-};
-
-void ExitWithUsage() {
- std::cerr << "Usage: host_forwarder [options]\n\n"
- "Options:\n"
- " --serial-id=[0-9A-Z]{16}]\n"
- " --map DEVICE_PORT HOST_PORT\n"
- " --unmap DEVICE_PORT\n"
- " --kill-server\n";
- exit(1);
-}
-
-int PortToInt(const std::string& s) {
- int value;
- // Note that 0 is a valid port (used for dynamic port allocation).
- if (!base::StringToInt(s, &value) || value < 0 ||
- value > std::numeric_limits::max()) {
- LOG(ERROR) << "Could not convert string " << s << " to port";
- ExitWithUsage();
- }
- return value;
-}
-
-int RunHostForwarder(int argc, char** argv) {
- CommandLine::Init(argc, argv);
- const CommandLine& cmd_line = *CommandLine::ForCurrentProcess();
- bool kill_server = false;
-
- Pickle pickle;
- pickle.WriteString(
- cmd_line.HasSwitch("serial-id") ?
- cmd_line.GetSwitchValueASCII("serial-id") : std::string());
-
- const std::vector args = cmd_line.GetArgs();
- if (cmd_line.HasSwitch("kill-server")) {
- kill_server = true;
- } else if (cmd_line.HasSwitch("unmap")) {
- if (args.size() != 1)
- ExitWithUsage();
- // Note the minus sign below.
- pickle.WriteInt(-PortToInt(args[0]));
- } else if (cmd_line.HasSwitch("map")) {
- if (args.size() != 2)
- ExitWithUsage();
- pickle.WriteInt(PortToInt(args[0]));
- pickle.WriteInt(PortToInt(args[1]));
- } else {
- ExitWithUsage();
- }
-
- if (kill_server && args.size() > 0)
- ExitWithUsage();
-
- ClientDelegate client_delegate(pickle);
- ServerDelegate daemon_delegate;
- Daemon daemon(
- kLogFilePath, kDaemonIdentifier, &client_delegate, &daemon_delegate,
- &GetExitNotifierFD);
-
- if (kill_server)
- return !daemon.Kill();
- if (!daemon.SpawnIfNeeded())
- return 1;
-
- return client_delegate.has_failed() || daemon_delegate.has_failed();
-}
-
-} // namespace
-} // namespace forwarder2
-
-int main(int argc, char** argv) {
- return forwarder2::RunHostForwarder(argc, argv);
-}
diff --git a/tools/android/forwarder2/pipe_notifier.cc b/tools/android/forwarder2/pipe_notifier.cc
deleted file mode 100644
index 3aba18b0d0..0000000000
--- a/tools/android/forwarder2/pipe_notifier.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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.
-
-#include "tools/android/forwarder2/pipe_notifier.h"
-
-#include
-#include
-#include
-#include
-
-#include "base/logging.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/safe_strerror_posix.h"
-
-namespace forwarder2 {
-
-PipeNotifier::PipeNotifier() {
- int pipe_fd[2];
- int ret = pipe(pipe_fd);
- CHECK_EQ(0, ret);
- receiver_fd_ = pipe_fd[0];
- sender_fd_ = pipe_fd[1];
- fcntl(sender_fd_, F_SETFL, O_NONBLOCK);
-}
-
-PipeNotifier::~PipeNotifier() {
- (void) HANDLE_EINTR(close(receiver_fd_));
- (void) HANDLE_EINTR(close(sender_fd_));
-}
-
-bool PipeNotifier::Notify() {
- CHECK_NE(-1, sender_fd_);
- errno = 0;
- int ret = HANDLE_EINTR(write(sender_fd_, "1", 1));
- if (ret < 0) {
- LOG(WARNING) << "Error while notifying pipe. " << safe_strerror(errno);
- return false;
- }
- return true;
-}
-
-} // namespace forwarder
diff --git a/tools/android/forwarder2/pipe_notifier.h b/tools/android/forwarder2/pipe_notifier.h
deleted file mode 100644
index efe303b2c1..0000000000
--- a/tools/android/forwarder2/pipe_notifier.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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.
-
-#ifndef TOOLS_ANDROID_FORWARDER2_PIPE_NOTIFIER_H_
-#define TOOLS_ANDROID_FORWARDER2_PIPE_NOTIFIER_H_
-
-#include "base/basictypes.h"
-
-namespace forwarder2 {
-
-// Helper class used to create a unix pipe that sends notifications to the
-// |receiver_fd_| file descriptor when called |Notify()|. This should be used
-// by the main thread to notify other threads that it must exit.
-// The |receiver_fd_| can be put into a fd_set and used in a select together
-// with a socket waiting to accept or read.
-class PipeNotifier {
- public:
- PipeNotifier();
- ~PipeNotifier();
-
- bool Notify();
-
- int receiver_fd() const { return receiver_fd_; }
-
- private:
- int sender_fd_;
- int receiver_fd_;
-
- DISALLOW_COPY_AND_ASSIGN(PipeNotifier);
-};
-
-} // namespace forwarder
-
-#endif // TOOLS_ANDROID_FORWARDER2_PIPE_NOTIFIER_H_
diff --git a/tools/android/forwarder2/socket.cc b/tools/android/forwarder2/socket.cc
deleted file mode 100644
index 9564e98634..0000000000
--- a/tools/android/forwarder2/socket.cc
+++ /dev/null
@@ -1,422 +0,0 @@
-// 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.
-
-#include "tools/android/forwarder2/socket.h"
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "base/logging.h"
-#include "base/posix/eintr_wrapper.h"
-#include "base/safe_strerror_posix.h"
-#include "tools/android/common/net.h"
-#include "tools/android/forwarder2/common.h"
-
-namespace {
-const int kNoTimeout = -1;
-const int kConnectTimeOut = 10; // Seconds.
-
-bool FamilyIsTCP(int family) {
- return family == AF_INET || family == AF_INET6;
-}
-} // namespace
-
-namespace forwarder2 {
-
-bool Socket::BindUnix(const std::string& path) {
- errno = 0;
- if (!InitUnixSocket(path) || !BindAndListen()) {
- Close();
- return false;
- }
- return true;
-}
-
-bool Socket::BindTcp(const std::string& host, int port) {
- errno = 0;
- if (!InitTcpSocket(host, port) || !BindAndListen()) {
- Close();
- return false;
- }
- return true;
-}
-
-bool Socket::ConnectUnix(const std::string& path) {
- errno = 0;
- if (!InitUnixSocket(path) || !Connect()) {
- Close();
- return false;
- }
- return true;
-}
-
-bool Socket::ConnectTcp(const std::string& host, int port) {
- errno = 0;
- if (!InitTcpSocket(host, port) || !Connect()) {
- Close();
- return false;
- }
- return true;
-}
-
-Socket::Socket()
- : socket_(-1),
- port_(0),
- socket_error_(false),
- family_(AF_INET),
- addr_ptr_(reinterpret_cast(&addr_.addr4)),
- addr_len_(sizeof(sockaddr)) {
- memset(&addr_, 0, sizeof(addr_));
-}
-
-Socket::~Socket() {
- Close();
-}
-
-void Socket::Shutdown() {
- if (!IsClosed()) {
- PRESERVE_ERRNO_HANDLE_EINTR(shutdown(socket_, SHUT_RDWR));
- }
-}
-
-void Socket::Close() {
- if (!IsClosed()) {
- CloseFD(socket_);
- socket_ = -1;
- }
-}
-
-bool Socket::InitSocketInternal() {
- socket_ = socket(family_, SOCK_STREAM, 0);
- if (socket_ < 0)
- return false;
- tools::DisableNagle(socket_);
- int reuse_addr = 1;
- setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR,
- &reuse_addr, sizeof(reuse_addr));
- return true;
-}
-
-bool Socket::InitUnixSocket(const std::string& path) {
- static const size_t kPathMax = sizeof(addr_.addr_un.sun_path);
- // For abstract sockets we need one extra byte for the leading zero.
- if (path.size() + 2 /* '\0' */ > kPathMax) {
- LOG(ERROR) << "The provided path is too big to create a unix "
- << "domain socket: " << path;
- return false;
- }
- family_ = PF_UNIX;
- addr_.addr_un.sun_family = family_;
- // Copied from net/socket/unix_domain_socket_posix.cc
- // Convert the path given into abstract socket name. It must start with
- // the '\0' character, so we are adding it. |addr_len| must specify the
- // length of the structure exactly, as potentially the socket name may
- // have '\0' characters embedded (although we don't support this).
- // Note that addr_.addr_un.sun_path is already zero initialized.
- memcpy(addr_.addr_un.sun_path + 1, path.c_str(), path.size());
- addr_len_ = path.size() + offsetof(struct sockaddr_un, sun_path) + 1;
- addr_ptr_ = reinterpret_cast(&addr_.addr_un);
- return InitSocketInternal();
-}
-
-bool Socket::InitTcpSocket(const std::string& host, int port) {
- port_ = port;
- if (host.empty()) {
- // Use localhost: INADDR_LOOPBACK
- family_ = AF_INET;
- addr_.addr4.sin_family = family_;
- addr_.addr4.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
- } else if (!Resolve(host)) {
- return false;
- }
- CHECK(FamilyIsTCP(family_)) << "Invalid socket family.";
- if (family_ == AF_INET) {
- addr_.addr4.sin_port = htons(port_);
- addr_ptr_ = reinterpret_cast(&addr_.addr4);
- addr_len_ = sizeof(addr_.addr4);
- } else if (family_ == AF_INET6) {
- addr_.addr6.sin6_port = htons(port_);
- addr_ptr_ = reinterpret_cast(&addr_.addr6);
- addr_len_ = sizeof(addr_.addr6);
- }
- return InitSocketInternal();
-}
-
-bool Socket::BindAndListen() {
- errno = 0;
- if (HANDLE_EINTR(bind(socket_, addr_ptr_, addr_len_)) < 0 ||
- HANDLE_EINTR(listen(socket_, SOMAXCONN)) < 0) {
- SetSocketError();
- return false;
- }
- if (port_ == 0 && FamilyIsTCP(family_)) {
- SockAddr addr;
- memset(&addr, 0, sizeof(addr));
- socklen_t addrlen = 0;
- sockaddr* addr_ptr = NULL;
- uint16* port_ptr = NULL;
- if (family_ == AF_INET) {
- addr_ptr = reinterpret_cast(&addr.addr4);
- port_ptr = &addr.addr4.sin_port;
- addrlen = sizeof(addr.addr4);
- } else if (family_ == AF_INET6) {
- addr_ptr = reinterpret_cast(&addr.addr6);
- port_ptr = &addr.addr6.sin6_port;
- addrlen = sizeof(addr.addr6);
- }
- errno = 0;
- if (getsockname(socket_, addr_ptr, &addrlen) != 0) {
- LOG(ERROR) << "getsockname error: " << safe_strerror(errno);;
- SetSocketError();
- return false;
- }
- port_ = ntohs(*port_ptr);
- }
- return true;
-}
-
-bool Socket::Accept(Socket* new_socket) {
- DCHECK(new_socket != NULL);
- if (!WaitForEvent(READ, kNoTimeout)) {
- SetSocketError();
- return false;
- }
- errno = 0;
- int new_socket_fd = HANDLE_EINTR(accept(socket_, NULL, NULL));
- if (new_socket_fd < 0) {
- SetSocketError();
- return false;
- }
-
- tools::DisableNagle(new_socket_fd);
- new_socket->socket_ = new_socket_fd;
- return true;
-}
-
-bool Socket::Connect() {
- // Set non-block because we use select for connect.
- const int kFlags = fcntl(socket_, F_GETFL);
- DCHECK(!(kFlags & O_NONBLOCK));
- fcntl(socket_, F_SETFL, kFlags | O_NONBLOCK);
- errno = 0;
- if (HANDLE_EINTR(connect(socket_, addr_ptr_, addr_len_)) < 0 &&
- errno != EINPROGRESS) {
- SetSocketError();
- PRESERVE_ERRNO_HANDLE_EINTR(fcntl(socket_, F_SETFL, kFlags));
- return false;
- }
- // Wait for connection to complete, or receive a notification.
- if (!WaitForEvent(WRITE, kConnectTimeOut)) {
- SetSocketError();
- PRESERVE_ERRNO_HANDLE_EINTR(fcntl(socket_, F_SETFL, kFlags));
- return false;
- }
- int socket_errno;
- socklen_t opt_len = sizeof(socket_errno);
- if (getsockopt(socket_, SOL_SOCKET, SO_ERROR, &socket_errno, &opt_len) < 0) {
- LOG(ERROR) << "getsockopt(): " << safe_strerror(errno);
- SetSocketError();
- PRESERVE_ERRNO_HANDLE_EINTR(fcntl(socket_, F_SETFL, kFlags));
- return false;
- }
- if (socket_errno != 0) {
- LOG(ERROR) << "Could not connect to host: " << safe_strerror(socket_errno);
- SetSocketError();
- PRESERVE_ERRNO_HANDLE_EINTR(fcntl(socket_, F_SETFL, kFlags));
- return false;
- }
- fcntl(socket_, F_SETFL, kFlags);
- return true;
-}
-
-bool Socket::Resolve(const std::string& host) {
- struct addrinfo hints;
- struct addrinfo* res;
- memset(&hints, 0, sizeof(hints));
- hints.ai_family = AF_UNSPEC;
- hints.ai_socktype = SOCK_STREAM;
- hints.ai_flags |= AI_CANONNAME;
-
- int errcode = getaddrinfo(host.c_str(), NULL, &hints, &res);
- if (errcode != 0) {
- SetSocketError();
- freeaddrinfo(res);
- return false;
- }
- family_ = res->ai_family;
- switch (res->ai_family) {
- case AF_INET:
- memcpy(&addr_.addr4,
- reinterpret_cast(res->ai_addr),
- sizeof(sockaddr_in));
- break;
- case AF_INET6:
- memcpy(&addr_.addr6,
- reinterpret_cast(res->ai_addr),
- sizeof(sockaddr_in6));
- break;
- }
- freeaddrinfo(res);
- return true;
-}
-
-int Socket::GetPort() {
- if (!FamilyIsTCP(family_)) {
- LOG(ERROR) << "Can't call GetPort() on an unix domain socket.";
- return 0;
- }
- return port_;
-}
-
-bool Socket::IsFdInSet(const fd_set& fds) const {
- if (IsClosed())
- return false;
- return FD_ISSET(socket_, &fds);
-}
-
-bool Socket::AddFdToSet(fd_set* fds) const {
- if (IsClosed())
- return false;
- FD_SET(socket_, fds);
- return true;
-}
-
-int Socket::ReadNumBytes(void* buffer, size_t num_bytes) {
- int bytes_read = 0;
- int ret = 1;
- while (bytes_read < num_bytes && ret > 0) {
- ret = Read(static_cast(buffer) + bytes_read, num_bytes - bytes_read);
- if (ret >= 0)
- bytes_read += ret;
- }
- return bytes_read;
-}
-
-void Socket::SetSocketError() {
- socket_error_ = true;
- // We never use non-blocking socket.
- DCHECK(errno != EAGAIN && errno != EWOULDBLOCK);
- Close();
-}
-
-int Socket::Read(void* buffer, size_t buffer_size) {
- if (!WaitForEvent(READ, kNoTimeout)) {
- SetSocketError();
- return 0;
- }
- int ret = HANDLE_EINTR(read(socket_, buffer, buffer_size));
- if (ret < 0)
- SetSocketError();
- return ret;
-}
-
-int Socket::Write(const void* buffer, size_t count) {
- int ret = HANDLE_EINTR(send(socket_, buffer, count, MSG_NOSIGNAL));
- if (ret < 0)
- SetSocketError();
- return ret;
-}
-
-int Socket::WriteString(const std::string& buffer) {
- return WriteNumBytes(buffer.c_str(), buffer.size());
-}
-
-void Socket::AddEventFd(int event_fd) {
- Event event;
- event.fd = event_fd;
- event.was_fired = false;
- events_.push_back(event);
-}
-
-bool Socket::DidReceiveEventOnFd(int fd) const {
- for (size_t i = 0; i < events_.size(); ++i)
- if (events_[i].fd == fd)
- return events_[i].was_fired;
- return false;
-}
-
-bool Socket::DidReceiveEvent() const {
- for (size_t i = 0; i < events_.size(); ++i)
- if (events_[i].was_fired)
- return true;
- return false;
-}
-
-int Socket::WriteNumBytes(const void* buffer, size_t num_bytes) {
- int bytes_written = 0;
- int ret = 1;
- while (bytes_written < num_bytes && ret > 0) {
- ret = Write(static_cast(buffer) + bytes_written,
- num_bytes - bytes_written);
- if (ret >= 0)
- bytes_written += ret;
- }
- return bytes_written;
-}
-
-bool Socket::WaitForEvent(EventType type, int timeout_secs) {
- if (events_.empty() || socket_ == -1)
- return true;
- fd_set read_fds;
- fd_set write_fds;
- FD_ZERO(&read_fds);
- FD_ZERO(&write_fds);
- if (type == READ)
- FD_SET(socket_, &read_fds);
- else
- FD_SET(socket_, &write_fds);
- for (size_t i = 0; i < events_.size(); ++i)
- FD_SET(events_[i].fd, &read_fds);
- timeval tv = {};
- timeval* tv_ptr = NULL;
- if (timeout_secs > 0) {
- tv.tv_sec = timeout_secs;
- tv.tv_usec = 0;
- tv_ptr = &tv;
- }
- int max_fd = socket_;
- for (size_t i = 0; i < events_.size(); ++i)
- if (events_[i].fd > max_fd)
- max_fd = events_[i].fd;
- if (HANDLE_EINTR(
- select(max_fd + 1, &read_fds, &write_fds, NULL, tv_ptr)) <= 0) {
- return false;
- }
- bool event_was_fired = false;
- for (size_t i = 0; i < events_.size(); ++i) {
- if (FD_ISSET(events_[i].fd, &read_fds)) {
- events_[i].was_fired = true;
- event_was_fired = true;
- }
- }
- return !event_was_fired;
-}
-
-// static
-int Socket::GetHighestFileDescriptor(const Socket& s1, const Socket& s2) {
- return std::max(s1.socket_, s2.socket_);
-}
-
-// static
-pid_t Socket::GetUnixDomainSocketProcessOwner(const std::string& path) {
- Socket socket;
- if (!socket.ConnectUnix(path))
- return -1;
- ucred ucred;
- socklen_t len = sizeof(ucred);
- if (getsockopt(socket.socket_, SOL_SOCKET, SO_PEERCRED, &ucred, &len) == -1) {
- CHECK_NE(ENOPROTOOPT, errno);
- return -1;
- }
- return ucred.pid;
-}
-
-} // namespace forwarder2
diff --git a/tools/android/forwarder2/socket.h b/tools/android/forwarder2/socket.h
deleted file mode 100644
index b86fd9e7aa..0000000000
--- a/tools/android/forwarder2/socket.h
+++ /dev/null
@@ -1,145 +0,0 @@
-// 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.
-
-#ifndef TOOLS_ANDROID_FORWARDER2_SOCKET_H_
-#define TOOLS_ANDROID_FORWARDER2_SOCKET_H_
-
-#include
-#include
-#include
-#include
-
-#include
-#include
-
-#include "base/basictypes.h"
-
-namespace forwarder2 {
-
-// Wrapper class around unix socket api. Can be used to create, bind or
-// connect to both Unix domain sockets and TCP sockets.
-// TODO(pliard): Split this class into TCPSocket and UnixDomainSocket.
-class Socket {
- public:
- Socket();
- ~Socket();
-
- bool BindUnix(const std::string& path);
- bool BindTcp(const std::string& host, int port);
- bool ConnectUnix(const std::string& path);
- bool ConnectTcp(const std::string& host, int port);
-
- // Just a wrapper around unix socket shutdown(), see man 2 shutdown.
- void Shutdown();
-
- // Just a wrapper around unix socket close(), see man 2 close.
- void Close();
- bool IsClosed() const { return socket_ < 0; }
-
- bool Accept(Socket* new_socket);
-
- // Returns the port allocated to this socket or zero on error.
- int GetPort();
-
- bool IsFdInSet(const fd_set& fds) const;
- bool AddFdToSet(fd_set* fds) const;
-
- // Just a wrapper around unix read() function.
- // Reads up to buffer_size, but may read less then buffer_size.
- // Returns the number of bytes read.
- int Read(void* buffer, size_t buffer_size);
-
- // Same as Read(), just a wrapper around write().
- int Write(const void* buffer, size_t count);
-
- // Calls Read() multiple times until num_bytes is written to the provided
- // buffer. No bounds checking is performed.
- // Returns number of bytes read, which can be different from num_bytes in case
- // of errror.
- int ReadNumBytes(void* buffer, size_t num_bytes);
-
- // Calls Write() multiple times until num_bytes is written. No bounds checking
- // is performed. Returns number of bytes written, which can be different from
- // num_bytes in case of errror.
- int WriteNumBytes(const void* buffer, size_t num_bytes);
-
- // Calls WriteNumBytes for the given std::string. Note that the null
- // terminator is not written to the socket.
- int WriteString(const std::string& buffer);
-
- bool has_error() const { return socket_error_; }
-
- // |event_fd| must be a valid pipe file descriptor created from the
- // PipeNotifier and must live (not be closed) at least as long as this socket
- // is alive.
- void AddEventFd(int event_fd);
-
- // Returns whether Accept() or Connect() was interrupted because the socket
- // received an external event fired through the provided fd.
- bool DidReceiveEventOnFd(int fd) const;
-
- bool DidReceiveEvent() const;
-
- static int GetHighestFileDescriptor(const Socket& s1, const Socket& s2);
-
- static pid_t GetUnixDomainSocketProcessOwner(const std::string& path);
-
- private:
- enum EventType {
- READ,
- WRITE
- };
-
- union SockAddr {
- // IPv4 sockaddr
- sockaddr_in addr4;
- // IPv6 sockaddr
- sockaddr_in6 addr6;
- // Unix Domain sockaddr
- sockaddr_un addr_un;
- };
-
- struct Event {
- int fd;
- bool was_fired;
- };
-
- // If |host| is empty, use localhost.
- bool InitTcpSocket(const std::string& host, int port);
- bool InitUnixSocket(const std::string& path);
- bool BindAndListen();
- bool Connect();
-
- bool Resolve(const std::string& host);
- bool InitSocketInternal();
- void SetSocketError();
-
- // Waits until either the Socket or the |exit_notifier_fd_| has received an
- // event.
- bool WaitForEvent(EventType type, int timeout_secs);
-
- int socket_;
- int port_;
- bool socket_error_;
-
- // Family of the socket (PF_INET, PF_INET6 or PF_UNIX).
- int family_;
-
- SockAddr addr_;
-
- // Points to one of the members of the above union depending on the family.
- sockaddr* addr_ptr_;
- // Length of one of the members of the above union depending on the family.
- socklen_t addr_len_;
-
- // Used to listen for external events (e.g. process received a SIGTERM) while
- // blocking on I/O operations.
- std::vector events_;
-
- DISALLOW_COPY_AND_ASSIGN(Socket);
-};
-
-} // namespace forwarder
-
-#endif // TOOLS_ANDROID_FORWARDER2_SOCKET_H_
diff --git a/tools/android/md5sum/md5sum.cc b/tools/android/md5sum/md5sum.cc
deleted file mode 100644
index bc4ca071b8..0000000000
--- a/tools/android/md5sum/md5sum.cc
+++ /dev/null
@@ -1,93 +0,0 @@
-// 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.
-
-// Md5sum implementation for Android. This version handles files as well as
-// directories. Its output is sorted by file path.
-
-#include
-#include
-#include
-#include
-
-#include "base/file_util.h"
-#include "base/files/file_enumerator.h"
-#include "base/files/file_path.h"
-#include "base/logging.h"
-#include "base/md5.h"
-
-namespace {
-
-const int kBufferSize = 1024;
-
-// Returns whether |path|'s MD5 was successfully written to |digest_string|.
-bool MD5Sum(const char* path, std::string* digest_string) {
- std::ifstream stream(path);
- if (!stream.good()) {
- LOG(ERROR) << "Could not open file " << path;
- return false;
- }
- base::MD5Context ctx;
- base::MD5Init(&ctx);
- char buf[kBufferSize];
- while (stream.good()) {
- std::streamsize bytes_read = stream.readsome(buf, sizeof(buf));
- if (bytes_read == 0)
- break;
- base::MD5Update(&ctx, base::StringPiece(buf, bytes_read));
- }
- if (stream.fail()) {
- LOG(ERROR) << "Error reading file " << path;
- return false;
- }
- base::MD5Digest digest;
- base::MD5Final(&digest, &ctx);
- *digest_string = base::MD5DigestToBase16(digest);
- return true;
-}
-
-// Returns the set of all files contained in |files|. This handles directories
-// by walking them recursively. Excludes, .svn directories and file under them.
-std::set MakeFileSet(const char** files) {
- const std::string svn_dir_component = FILE_PATH_LITERAL("/.svn/");
- std::set file_set;
- for (const char** file = files; *file; ++file) {
- base::FilePath file_path(*file);
- if (base::DirectoryExists(file_path)) {
- base::FileEnumerator file_enumerator(
- file_path, true /* recurse */, base::FileEnumerator::FILES);
- for (base::FilePath child, empty;
- (child = file_enumerator.Next()) != empty; ) {
- // If the path contains /.svn/, ignore it.
- if (child.value().find(svn_dir_component) == std::string::npos) {
- child = base::MakeAbsoluteFilePath(child);
- file_set.insert(child.value());
- }
- }
- } else {
- file_set.insert(*file);
- }
- }
- return file_set;
-}
-
-} // namespace
-
-int main(int argc, const char* argv[]) {
- if (argc < 2) {
- LOG(ERROR) << "Usage: md5sum ...";
- return 1;
- }
- const std::set files = MakeFileSet(argv + 1);
- bool failed = false;
- std::string digest;
- for (std::set::const_iterator it = files.begin();
- it != files.end(); ++it) {
- if (!MD5Sum(it->c_str(), &digest))
- failed = true;
- base::FilePath file_path(*it);
- std::cout << digest << " "
- << base::MakeAbsoluteFilePath(file_path).value() << std::endl;
- }
- return failed;
-}
diff --git a/tools/android/md5sum/md5sum.gyp b/tools/android/md5sum/md5sum.gyp
deleted file mode 100644
index 2c4ccc84dd..0000000000
--- a/tools/android/md5sum/md5sum.gyp
+++ /dev/null
@@ -1,77 +0,0 @@
-# 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.
-
-{
- 'targets': [
- {
- 'target_name': 'md5sum',
- 'type': 'none',
- 'dependencies': [
- 'md5sum_stripped_device_bin',
- 'md5sum_bin_host#host',
- ],
- # For the component build, ensure dependent shared libraries are stripped
- # and put alongside md5sum to simplify pushing to the device.
- 'variables': {
- 'output_dir': '<(PRODUCT_DIR)/md5sum_dist/',
- 'native_binary': '<(PRODUCT_DIR)/md5sum_bin',
- },
- 'includes': ['../../../build/android/native_app_dependencies.gypi'],
- },
- {
- 'target_name': 'md5sum_device_bin',
- 'type': 'executable',
- 'dependencies': [
- '../../../base/base.gyp:base',
- ],
- 'include_dirs': [
- '../../..',
- ],
- 'sources': [
- 'md5sum.cc',
- ],
- 'conditions': [
- [ 'order_profiling!=0 and OS=="android"', {
- 'dependencies': [ '../../../tools/cygprofile/cygprofile.gyp:cygprofile', ],
- }],
- ],
- },
- {
- 'target_name': 'md5sum_stripped_device_bin',
- 'type': 'none',
- 'dependencies': [
- 'md5sum_device_bin',
- ],
- 'actions': [
- {
- 'action_name': 'strip_md5sum_device_bin',
- 'inputs': ['<(PRODUCT_DIR)/md5sum_device_bin'],
- 'outputs': ['<(PRODUCT_DIR)/md5sum_bin'],
- 'action': [
- '<(android_strip)',
- '--strip-unneeded',
- '<@(_inputs)',
- '-o',
- '<@(_outputs)',
- ],
- },
- ],
- },
- # Same binary but for the host rather than the device.
- {
- 'target_name': 'md5sum_bin_host',
- 'toolsets': ['host'],
- 'type': 'executable',
- 'dependencies': [
- '../../../base/base.gyp:base',
- ],
- 'include_dirs': [
- '../../..',
- ],
- 'sources': [
- 'md5sum.cc',
- ],
- },
- ],
-}
diff --git a/tools/android/memdump/memdump.cc b/tools/android/memdump/memdump.cc
deleted file mode 100644
index 26035b29b0..0000000000
--- a/tools/android/memdump/memdump.cc
+++ /dev/null
@@ -1,555 +0,0 @@
-// Copyright (c) 2013 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.
-
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "base/base64.h"
-#include "base/basictypes.h"
-#include "base/bind.h"
-#include "base/bind_helpers.h"
-#include "base/containers/hash_tables.h"
-#include "base/file_util.h"
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_piece.h"
-#include "base/strings/string_split.h"
-#include "base/strings/stringprintf.h"
-
-namespace {
-
-class BitSet {
- public:
- void resize(size_t nbits) {
- data_.resize((nbits + 7) / 8);
- }
-
- void set(uint32 bit) {
- const uint32 byte_idx = bit / 8;
- CHECK(byte_idx < data_.size());
- data_[byte_idx] |= (1 << (bit & 7));
- }
-
- std::string AsB64String() const {
- std::string bits(&data_[0], data_.size());
- std::string b64_string;
- base::Base64Encode(bits, &b64_string);
- return b64_string;
- }
-
- private:
- std::vector data_;
-};
-
-// An entry in /proc//pagemap.
-struct PageMapEntry {
- uint64 page_frame_number : 55;
- uint unused : 8;
- uint present : 1;
-};
-
-// Describes a memory page.
-struct PageInfo {
- int64 page_frame_number; // Physical page id, also known as PFN.
- int64 flags;
- int32 times_mapped;
-};
-
-struct MemoryMap {
- std::string name;
- std::string flags;
- uint start_address;
- uint end_address;
- uint offset;
- int private_count;
- int unevictable_private_count;
- int other_shared_count;
- int unevictable_other_shared_count;
- // app_shared_counts[i] contains the number of pages mapped in i+2 processes
- // (only among the processes that are being analyzed).
- std::vector app_shared_counts;
- std::vector committed_pages;
- // committed_pages_bits is a bitset reflecting the present bit for all the
- // virtual pages of the mapping.
- BitSet committed_pages_bits;
-};
-
-struct ProcessMemory {
- pid_t pid;
- std::vector memory_maps;
-};
-
-bool PageIsUnevictable(const PageInfo& page_info) {
- // These constants are taken from kernel-page-flags.h.
- const int KPF_DIRTY = 4; // Note that only file-mapped pages can be DIRTY.
- const int KPF_ANON = 12; // Anonymous pages are dirty per definition.
- const int KPF_UNEVICTABLE = 18;
- const int KPF_MLOCKED = 33;
-
- return (page_info.flags & ((1ll << KPF_DIRTY) |
- (1ll << KPF_ANON) |
- (1ll << KPF_UNEVICTABLE) |
- (1ll << KPF_MLOCKED))) ?
- true : false;
-}
-
-// Number of times a physical page is mapped in a process.
-typedef base::hash_map PFNMap;
-
-// Parses lines from /proc//maps, e.g.:
-// 401e7000-401f5000 r-xp 00000000 103:02 158 /system/bin/linker
-bool ParseMemoryMapLine(const std::string& line,
- std::vector* tokens,
- MemoryMap* memory_map) {
- tokens->clear();
- base::SplitString(line, ' ', tokens);
- if (tokens->size() < 2)
- return false;
- const int addr_len = 8;
- const std::string& addr_range = tokens->at(0);
- if (addr_range.length() != addr_len + 1 + addr_len)
- return false;
- uint64 tmp = 0;
- if (!base::HexStringToUInt64(
- base::StringPiece(
- addr_range.begin(), addr_range.begin() + addr_len),
- &tmp)) {
- return false;
- }
- memory_map->start_address = static_cast(tmp);
- const int end_addr_start_pos = addr_len + 1;
- if (!base::HexStringToUInt64(
- base::StringPiece(
- addr_range.begin() + end_addr_start_pos,
- addr_range.begin() + end_addr_start_pos + addr_len),
- &tmp)) {
- return false;
- }
- memory_map->end_address = static_cast(tmp);
- if (tokens->at(1).size() != strlen("rwxp"))
- return false;
- memory_map->flags.swap(tokens->at(1));
- if (!base::HexStringToUInt64(tokens->at(2), &tmp))
- return false;
- memory_map->offset = static_cast(tmp);
- memory_map->committed_pages_bits.resize(
- (memory_map->end_address - memory_map->start_address) / PAGE_SIZE);
- const int map_name_index = 5;
- if (tokens->size() >= map_name_index + 1) {
- for (std::vector::const_iterator it =
- tokens->begin() + map_name_index; it != tokens->end(); ++it) {
- if (!it->empty()) {
- if (!memory_map->name.empty())
- memory_map->name.append(" ");
- memory_map->name.append(*it);
- }
- }
- }
- return true;
-}
-
-// Reads sizeof(T) bytes from file |fd| at |offset|.
-template
-bool ReadFromFileAtOffset(int fd, off_t offset, T* value) {
- if (lseek64(fd, offset * sizeof(*value), SEEK_SET) < 0) {
- PLOG(ERROR) << "lseek";
- return false;
- }
- ssize_t bytes = read(fd, value, sizeof(*value));
- if (bytes != sizeof(*value) && bytes != 0) {
- PLOG(ERROR) << "read";
- return false;
- }
- return true;
-}
-
-// Fills |process_maps| in with the process memory maps identified by |pid|.
-bool GetProcessMaps(pid_t pid, std::vector* process_maps) {
- std::ifstream maps_file(base::StringPrintf("/proc/%d/maps", pid).c_str());
- if (!maps_file.good()) {
- PLOG(ERROR) << "open";
- return false;
- }
- std::string line;
- std::vector tokens;
- while (std::getline(maps_file, line) && !line.empty()) {
- MemoryMap memory_map = {};
- if (!ParseMemoryMapLine(line, &tokens, &memory_map)) {
- LOG(ERROR) << "Could not parse line: " << line;
- return false;
- }
- process_maps->push_back(memory_map);
- }
- return true;
-}
-
-// Fills |committed_pages| in with the set of committed pages contained in the
-// provided memory map.
-bool GetPagesForMemoryMap(int pagemap_fd,
- const MemoryMap& memory_map,
- std::vector* committed_pages,
- BitSet* committed_pages_bits) {
- for (uint addr = memory_map.start_address, page_index = 0;
- addr < memory_map.end_address;
- addr += PAGE_SIZE, ++page_index) {
- DCHECK_EQ(0, addr % PAGE_SIZE);
- PageMapEntry page_map_entry = {};
- COMPILE_ASSERT(sizeof(PageMapEntry) == sizeof(uint64), unexpected_size);
- const off64_t offset = addr / PAGE_SIZE;
- if (!ReadFromFileAtOffset(pagemap_fd, offset, &page_map_entry))
- return false;
- if (page_map_entry.present) { // Ignore non-committed pages.
- if (page_map_entry.page_frame_number == 0)
- continue;
- PageInfo page_info = {};
- page_info.page_frame_number = page_map_entry.page_frame_number;
- committed_pages->push_back(page_info);
- committed_pages_bits->set(page_index);
- }
- }
- return true;
-}
-
-// Fills |committed_pages| with mapping count and flags information gathered
-// looking-up /proc/kpagecount and /proc/kpageflags.
-bool SetPagesInfo(int pagecount_fd,
- int pageflags_fd,
- std::vector* pages) {
- for (std::vector::iterator it = pages->begin();
- it != pages->end(); ++it) {
- PageInfo* const page_info = &*it;
-
- int64 times_mapped;
- if (!ReadFromFileAtOffset(
- pagecount_fd, page_info->page_frame_number, ×_mapped)) {
- return false;
- }
- DCHECK(times_mapped <= std::numeric_limits::max());
- page_info->times_mapped = static_cast(times_mapped);
-
- int64 page_flags;
- if (!ReadFromFileAtOffset(
- pageflags_fd, page_info->page_frame_number, &page_flags)) {
- return false;
- }
- page_info->flags = page_flags;
- }
- return true;
-}
-
-// Fills in the provided vector of Page Frame Number maps. This lets
-// ClassifyPages() know how many times each page is mapped in the processes.
-void FillPFNMaps(const std::vector& processes_memory,
- std::vector* pfn_maps) {
- int current_process_index = 0;
- for (std::vector::const_iterator it = processes_memory.begin();
- it != processes_memory.end(); ++it, ++current_process_index) {
- const std::vector& memory_maps = it->memory_maps;
- for (std::vector::const_iterator it = memory_maps.begin();
- it != memory_maps.end(); ++it) {
- const std::vector