Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(476)

Unified Diff: create_standalone_js.py

Issue 762563003: Roll gwt to 2.7.0 (from 2.5.1) (Closed) Base URL: https://code.google.com/p/dom-distiller/@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build.xml ('k') | extension/extract.js » ('j') | src/DomDistiller.gwt.xml » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: create_standalone_js.py
diff --git a/create_standalone_js.py b/create_standalone_js.py
index 3a18a8118232ecebf5f85a22b4458dde1eb30a9d..301bde7d0ad8614bb36a94e59ee4ae17336f769b 100644
--- a/create_standalone_js.py
+++ b/create_standalone_js.py
@@ -4,12 +4,15 @@
"""Converts gwt-compiled javascript to standalone javascript
-gwt-compiled javascript is in the form of an html file that is expected to be
-loaded into its own iframe (with some extra work done in the embedding page).
-This reads such a compiled file and converts it to standalone javascript that
-can be loaded in the main frame of a page.
+gwt-compiled javascript is in the form of an js file that is expected to be
+loaded into its own script tag. This reads such a compiled file and converts it
+to standalone javascript that can be loaded as Chrome does.
"""
+# TODO(cjhopman): The proper way to do this is to write a gwt Linker
+# (gwt.core.ext.Linker) and use that for compilation. See
+# http://crbug.com/437113
+
import glob
import optparse
import os
@@ -18,36 +21,27 @@ import sys
def ExtractJavascript(content):
""" Extracts javascript from within <script> tags in content. """
- scriptre = re.compile('<script>(<!--)?(?P<inner>.*?)(-->)?</script>',
- re.MULTILINE | re.DOTALL)
- result = ''
- for match in scriptre.finditer(content):
- result += match.group('inner')
- return result
-
-def FindInputPath(indir):
- """ Finds the path to a file of the form
- in/dir/DC2C3039DDCBB4AD9B63A9D3E25A0BDF.cache.html
-
- There should only be one such file in indir.
- """
- files = glob.glob(os.path.join(indir, '*.cache.html'))
- if len(files) != 1:
- print 'Unable to find input path: ', files
- return None
- return files[0]
+ lines = content.split('\n');
+ for i, l in enumerate(lines):
+ marker = 'domdistiller();'
nyquist 2014/12/02 06:31:03 Any reason why |marker| is defined inside the loop
cjhopman 2014/12/02 20:10:35 Done.
+ if l.startswith(marker):
+ return '\n'.join(
+ [l[len(marker):]] +
nyquist 2014/12/02 06:31:03 Maybe add a tiny comment about including everythin
cjhopman 2014/12/02 20:10:35 Done.
+ lines[i + 1:-1] +
+ [lines[-1].replace(
+ 'if (domdistiller) domdistiller.onScriptLoad(gwtOnLoad);',
+ 'gwtOnLoad(undefined, \'domdistiller\', \'\', 0);')
+ ])
+ raise Exception('Failed to find marker line')
def main(argv):
parser = optparse.OptionParser()
- parser.add_option('-i', '--indir')
+ parser.add_option('-i', '--infile')
parser.add_option('-o', '--outfile')
options, _ = parser.parse_args(argv)
- if options.indir:
- inpath = FindInputPath(options.indir)
- if not inpath:
- return 1
- infile = open(inpath, 'r')
+ if options.infile:
+ infile = open(options.infile, 'r')
else:
print 'Reading input from stdin'
infile = sys.stdin
@@ -62,7 +56,6 @@ def main(argv):
# case for the standalone js.
compiledJs = compiledJs.replace('var $wnd = parent', 'var $wnd = window')
outfile.write(ExtractJavascript(compiledJs))
- outfile.write('gwtOnLoad(undefined,"domdistiller","",0);\n')
return 0
« no previous file with comments | « build.xml ('k') | extension/extract.js » ('j') | src/DomDistiller.gwt.xml » ('J')

Powered by Google App Engine
This is Rietveld 408576698