1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#!/usr/bin/env python
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved.
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)# found in the LICENSE file.
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)"""Embeds standalone JavaScript snippets in C++ code.
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)The script requires the OverridesView file from WebKit that lists the known
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)mobile devices to be passed in as the only argument. The list of known devices
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)will be written to a C-style string to be parsed with JSONReader.
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)"""
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)import optparse
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)import os
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)import sys
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)import cpp_source
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)def main():
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  parser = optparse.OptionParser()
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  parser.add_option(
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      '', '--directory', type='string', default='.',
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      help='Path to directory where the cc/h files should be created')
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  options, args = parser.parse_args()
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  devices = '['
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  file_name = args[0]
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  inside_list = False
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  with open(file_name, 'r') as f:
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    for line in f:
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      if not inside_list:
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch        if 'WebInspector.OverridesUI._phones = [' in line or \
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch           'WebInspector.OverridesUI._tablets = [' in line:
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)          inside_list = True
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      else:
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        if line.strip() == '];':
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)          inside_list = False
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)          continue
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        devices += line.strip()
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  devices += ']'
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  cpp_source.WriteSource('mobile_device_list',
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         'chrome/test/chromedriver/chrome',
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                         options.directory, {'kMobileDevices': devices})
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)if __name__ == '__main__':
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  sys.exit(main())
50