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