Author: j...@google.com Date: Fri Jun 12 16:53:06 2009 New Revision: 5556 Modified: branches/snapshot-2009.06.02-r5498/branch-info.txt branches/snapshot-2009.06.02-r5498/dev/core/src/com/google/gwt/core/ext/linker/CompilationResult.java branches/snapshot-2009.06.02-r5498/dev/core/src/com/google/gwt/core/linker/IFrameLinker.java branches/snapshot-2009.06.02-r5498/dev/core/test/com/google/gwt/core/linker/ScriptChunkingTest.java
Log: Merge trunk r5554 into 6/2 snapshot branch. This fixes a breaking API change by providing default behavior. ------------------------------------------------------------------------ r5554 | sp...@google.com | 2009-06-12 18:49:54 -0400 (Fri, 12 Jun 2009) | 5 lines Allow CompilationResult.getStatementRanges() to return null, and have it do so by default. Review by: jat ------------------------------------------------------------------------ svn merge -c5554 https://google-web-toolkit.googlecode.com/svn/trunk . Modified: branches/snapshot-2009.06.02-r5498/branch-info.txt ============================================================================== --- branches/snapshot-2009.06.02-r5498/branch-info.txt (original) +++ branches/snapshot-2009.06.02-r5498/branch-info.txt Fri Jun 12 16:53:06 2009 @@ -26,3 +26,5 @@ svn merge -c5532 https://google-web-toolkit.googlecode.com/svn/trunk . /trunk 5538 was merged into this branch (final(?) fix from 5523) svn merge -c5538 https://google-web-toolkit.googlecode.com/svn/trunk . +/trunk 5554 was merged into this branch (fix breaking API change) + svn merge -c5554 https://google-web-toolkit.googlecode.com/svn/trunk . Modified: branches/snapshot-2009.06.02-r5498/dev/core/src/com/google/gwt/core/ext/linker/CompilationResult.java ============================================================================== --- branches/snapshot-2009.06.02-r5498/dev/core/src/com/google/gwt/core/ext/linker/CompilationResult.java (original) +++ branches/snapshot-2009.06.02-r5498/dev/core/src/com/google/gwt/core/ext/linker/CompilationResult.java Fri Jun 12 16:53:06 2009 @@ -51,9 +51,12 @@ /** * Returns the statement ranges for the JavaScript returned by - * {...@link #getJavaScript()}. + * {...@link #getJavaScript()}. Some subclasses return <code>null</code>, in + * which case there is no statement range information available. */ - public abstract StatementRanges[] getStatementRanges(); + public StatementRanges[] getStatementRanges() { + return null; + } /** * Return a string that uniquely identifies this compilation result. Typically Modified: branches/snapshot-2009.06.02-r5498/dev/core/src/com/google/gwt/core/linker/IFrameLinker.java ============================================================================== --- branches/snapshot-2009.06.02-r5498/dev/core/src/com/google/gwt/core/linker/IFrameLinker.java (original) +++ branches/snapshot-2009.06.02-r5498/dev/core/src/com/google/gwt/core/linker/IFrameLinker.java Fri Jun 12 16:53:06 2009 @@ -58,10 +58,16 @@ * Split a JavaScript string into multiple chunks, at statement boundaries. * Insert and end-script tag and a start-script tag in between each chunk. * This method is made default access for testing. + * + * @param ranges Describes where the statements are located within the + * JavaScript code. If <code>null</code>, then return <code>js</code> + * unchanged. + * @param js The JavaScript code to be split up. + * @param charsPerChunk The number of characters to be put in each script tag */ static String splitPrimaryJavaScript(StatementRanges ranges, String js, int charsPerChunk) { - if (charsPerChunk < 0) { + if (charsPerChunk < 0 || ranges == null) { return js; } @@ -72,8 +78,7 @@ int start = ranges.start(i); int end = ranges.end(i); int length = end - start; - if (bytesInCurrentTag > 0 - && bytesInCurrentTag + length > charsPerChunk) { + if (bytesInCurrentTag > 0 && bytesInCurrentTag + length > charsPerChunk) { if (lastChar(sb) != '\n') { sb.append('\n'); } Modified: branches/snapshot-2009.06.02-r5498/dev/core/test/com/google/gwt/core/linker/ScriptChunkingTest.java ============================================================================== --- branches/snapshot-2009.06.02-r5498/dev/core/test/com/google/gwt/core/linker/ScriptChunkingTest.java (original) +++ branches/snapshot-2009.06.02-r5498/dev/core/test/com/google/gwt/core/linker/ScriptChunkingTest.java Fri Jun 12 16:53:06 2009 @@ -118,4 +118,23 @@ builder.getJavaScript(), -1); assertEquals(builder.getJavaScript(), split); } + + /** + * Test with statement ranges not present, which should disable the chunking. + */ + public void testNullStatementRanges() { + ScriptWithRangesBuilder builder = new ScriptWithRangesBuilder(); + builder.addNonStatement("{"); + builder.addNonStatement("{"); + builder.addStatement("x=1;"); + builder.addStatement("function x(){x = 2}\n"); + builder.addStatement("x=3"); + builder.addNonStatement("}\n{"); + builder.addStatement("x=5"); + builder.addNonStatement("}"); + + String split = IFrameLinker.splitPrimaryJavaScript(null, + builder.getJavaScript(), 5); + assertEquals(builder.getJavaScript(), split); + } } --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---