diff options
author | garykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-15 00:14:18 +0000 |
---|---|---|
committer | garykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-02-15 00:14:18 +0000 |
commit | 57d86b9cf1db431837f879c0cb5ad98a74a5e83f (patch) | |
tree | 6ae010ba87eb7ac00277f2d0d2f450315f8c53eb | |
parent | 969c22effa699a772fa970833808639b9d39c371 (diff) | |
download | chromium_src-57d86b9cf1db431837f879c0cb5ad98a74a5e83f.zip chromium_src-57d86b9cf1db431837f879c0cb5ad98a74a5e83f.tar.gz chromium_src-57d86b9cf1db431837f879c0cb5ad98a74a5e83f.tar.bz2 |
[Chromoting] Update jscompile target to use JS files from gypi.
The old version parses the main.html file to get the list of JS files
to verify. Since we're moving to auto-generate this file, we can safely get
the Js files from the same gypi since that's the same source being used
to generate the HTML file.
This also adds the WCS sandbox files to the list of JS files being checked --
they were not being checked as part of the old target because they are not
used in the main.html file.
BUG=
R=jamiewalch@chromium.org
Review URL: https://codereview.chromium.org/163953011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@251446 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | remoting/remoting.gyp | 6 | ||||
-rwxr-xr-x | remoting/tools/htmlcompile.py | 79 | ||||
-rwxr-xr-x | remoting/tools/jscompile.py | 49 | ||||
-rw-r--r-- | remoting/webapp/js_proto/remoting_proto.js | 21 | ||||
-rw-r--r-- | remoting/webapp/wcs_iq_client_proto.js | 29 |
5 files changed, 72 insertions, 112 deletions
diff --git a/remoting/remoting.gyp b/remoting/remoting.gyp index da3a51f..1ac3b84 100644 --- a/remoting/remoting.gyp +++ b/remoting/remoting.gyp @@ -218,15 +218,13 @@ 'inputs': [ '<@(remoting_webapp_js_files)', '<@(remoting_webapp_js_proto_files)', - # Include zip as input so that this action is run after the build. - '<(zip_path)', ], 'outputs': [ '<(success_stamp)', ], 'action': [ - 'python', 'tools/htmlcompile.py', - '<(output_dir)/main.html', + 'python', 'tools/jscompile.py', + '<@(remoting_webapp_js_files)', '<@(remoting_webapp_js_proto_files)', '--success-stamp', '<(success_stamp)' diff --git a/remoting/tools/htmlcompile.py b/remoting/tools/htmlcompile.py deleted file mode 100755 index 9fcb5a7..0000000 --- a/remoting/tools/htmlcompile.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/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. - -import argparse -from HTMLParser import HTMLParser -import subprocess -import sys -import os - -DESCRIPTION = '''Extract the <script> tags from the specified html file and -run them through jscompile, along with any additional JS files specified.''' -FILES_HELP = '''A list of HTML or Javascript files. The Javascript files should -contain definitions of types or functions that are known to Chrome but not to -jscompile; they are added to the list of <script> tags found in each of the -HTML files.''' -STAMP_HELP = 'Timestamp file to update on success.' - -class ScriptTagParser(HTMLParser): - def __init__(self): - HTMLParser.__init__(self) - self.scripts = [] - - def handle_starttag(self, tag, attrs): - if tag == 'script': - for (name, value) in attrs: - if name == 'src': - self.scripts.append(value) - - -def parseHtml(html_file, js_proto_files): - src_dir = os.path.split(html_file)[0] - f = open(html_file, 'r') - html = f.read() - parser = ScriptTagParser(); - parser.feed(html) - scripts = [] - for script in parser.scripts: - # Ignore non-local scripts - if not '://' in script: - scripts.append(os.path.join(src_dir, script)) - - args = ['jscompile'] + scripts + js_proto_files - result = subprocess.call(args) - return result == 0 - - -def main(): - parser = argparse.ArgumentParser(description = DESCRIPTION) - parser.add_argument('files', nargs = '+', help = FILES_HELP) - parser.add_argument('--success-stamp', dest = 'success_stamp', - help = STAMP_HELP) - options = parser.parse_args() - - html = [] - js = [] - for file in options.files: - name, extension = os.path.splitext(file) - if extension == '.html': - html.append(file) - elif extension == '.js': - js.append(file) - else: - print >> sys.stderr, 'Unknown extension (' + extension + ') for ' + file - return 1 - - for html_file in html: - if not parseHtml(html_file, js): - return 1 - - if options.success_stamp: - with open(options.success_stamp, 'w'): - os.utime(options.success_stamp, None) - - return 0 - -if __name__ == '__main__': - sys.exit(main()) diff --git a/remoting/tools/jscompile.py b/remoting/tools/jscompile.py new file mode 100755 index 0000000..0f06964 --- /dev/null +++ b/remoting/tools/jscompile.py @@ -0,0 +1,49 @@ +#!/usr/bin/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. + +import argparse +import subprocess +import sys +import os + +DESCRIPTION = '''Run the given JavaScript files through jscompile.''' +FILES_HELP = '''A list of Javascript files. The Javascript files should include +files that contain definitions of types or functions that are known to Chrome +but not to jscompile.''' +STAMP_HELP = 'Timestamp file to update on success.' + +def checkJavascript(js_files): + args = ['jscompile'] + js_files + result = subprocess.call(args) + return result == 0 + + +def main(): + parser = argparse.ArgumentParser(description = DESCRIPTION) + parser.add_argument('files', nargs = '+', help = FILES_HELP) + parser.add_argument('--success-stamp', dest = 'success_stamp', + help = STAMP_HELP) + options = parser.parse_args() + + js = [] + for file in options.files: + name, extension = os.path.splitext(file) + if extension == '.js': + js.append(file) + else: + print >> sys.stderr, 'Unknown extension (' + extension + ') for ' + file + return 1 + + if not checkJavascript(js): + return 1 + + if options.success_stamp: + with open(options.success_stamp, 'w'): + os.utime(options.success_stamp, None) + + return 0 + +if __name__ == '__main__': + sys.exit(main()) diff --git a/remoting/webapp/js_proto/remoting_proto.js b/remoting/webapp/js_proto/remoting_proto.js index a1092c5..52252e1 100644 --- a/remoting/webapp/js_proto/remoting_proto.js +++ b/remoting/webapp/js_proto/remoting_proto.js @@ -163,3 +163,24 @@ remoting.ViewerPlugin = function() { }; /** @param {string} message The message to send to the host. */ remoting.ViewerPlugin.prototype.postMessage = function(message) {}; + + +/** @constructor + */ +remoting.WcsIqClient = function() {}; + +/** @param {function(Array.<string>): void} onMsg The function called when a + * message is received. + * @return {void} Nothing. */ +remoting.WcsIqClient.prototype.setOnMessage = function(onMsg) {}; + +/** @return {void} Nothing. */ +remoting.WcsIqClient.prototype.connectChannel = function() {}; + +/** @param {string} stanza An IQ stanza. + * @return {void} Nothing. */ +remoting.WcsIqClient.prototype.sendIq = function(stanza) {}; + +/** @param {string} token An OAuth2 access token. + * @return {void} Nothing. */ +remoting.WcsIqClient.prototype.updateAccessToken = function(token) {}; diff --git a/remoting/webapp/wcs_iq_client_proto.js b/remoting/webapp/wcs_iq_client_proto.js deleted file mode 100644 index 3a484260..0000000 --- a/remoting/webapp/wcs_iq_client_proto.js +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (c) 2011 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 file contains type definitions for the WCS IQ client. It is used only -// with JSCompiler to verify the type-correctness of our code. - -/** @suppress {duplicate} */ -var remoting = remoting || {}; - -/** @constructor - */ -remoting.WcsIqClient = function() {}; - -/** @param {function(Array.<string>): void} onMsg The function called when a - * message is received. - * @return {void} Nothing. */ -remoting.WcsIqClient.prototype.setOnMessage = function(onMsg) {}; - -/** @return {void} Nothing. */ -remoting.WcsIqClient.prototype.connectChannel = function() {}; - -/** @param {string} stanza An IQ stanza. - * @return {void} Nothing. */ -remoting.WcsIqClient.prototype.sendIq = function(stanza) {}; - -/** @param {string} token An OAuth2 access token. - * @return {void} Nothing. */ -remoting.WcsIqClient.prototype.updateAccessToken = function(token) {}; |