| #!/usr/bin/env python |
| # Copyright 2014 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Embeds standalone JavaScript snippets in C++ code. |
| |
| The script requires the Source/devtools/front_end/emulated_devices/module.json |
| file from Blink that lists the known mobile devices to be passed in as the only |
| argument. The list of known devices will be written to a C-style string to be |
| parsed with JSONReader. |
| """ |
| |
| import json |
| import optparse |
| import re |
| import subprocess |
| import sys |
| |
| import cpp_source |
| |
| |
| def main(): |
| parser = optparse.OptionParser() |
| parser.add_option( |
| '', '--directory', type='string', default='.', |
| help='Path to directory where the cc/h files should be created') |
| options, args = parser.parse_args() |
| |
| devices = {} |
| file_name = args[0] |
| inside_list = False |
| with open(file_name, 'r') as f: |
| emulated_devices = json.load(f) |
| extensions = emulated_devices['extensions'] |
| for extension in extensions: |
| if extension['type'] == 'emulated-device': |
| device = extension['device'] |
| devices[device['title']] = { |
| 'userAgent': device['user-agent'], |
| 'width': device['screen']['vertical']['width'], |
| 'height': device['screen']['vertical']['height'], |
| 'deviceScaleFactor': device['screen']['device-pixel-ratio'], |
| 'touch': 'touch' in device['capabilities'], |
| 'mobile': 'mobile' in device['capabilities'], |
| } |
| |
| output_dir = 'chrome/test/chromedriver/chrome' |
| cpp_source.WriteSource('mobile_device_list', |
| output_dir, |
| options.directory, |
| {'kMobileDevices': json.dumps(devices)}) |
| |
| clang_format = ['clang-format', '-i'] |
| subprocess.Popen(clang_format + ['%s/mobile_device_list.cc' % output_dir]) |
| subprocess.Popen(clang_format + ['%s/mobile_device_list.h' % output_dir]) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |