GWT 2.7.0

com.google.gwt.core.linker
Class CrossSiteIframeLinker

java.lang.Object
  extended by com.google.gwt.core.ext.Linker
      extended by com.google.gwt.core.ext.linker.AbstractLinker
          extended by com.google.gwt.core.ext.linker.impl.SelectionScriptLinker
              extended by com.google.gwt.core.linker.CrossSiteIframeLinker
Direct Known Subclasses:
DirectInstallLinker

@LinkerOrder(value=PRIMARY)
@Shardable
public class CrossSiteIframeLinker
extends com.google.gwt.core.ext.linker.impl.SelectionScriptLinker

This linker uses an iframe to hold the code and a script tag to download the code. It can download code cross-site, because it uses a script tag to download it and because it never uses XHR. The iframe, meanwhile, makes it trivial to install additional code as the app runs.


Field Summary
 
Fields inherited from class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker
COMPUTE_SCRIPT_BASE_JS, FRAGMENT_EXTENSION, FRAGMENT_SUBDIR, permutationsUtil, PROCESS_METAS_JS, USE_SOURCE_MAPS_PROPERTY
 
Constructor Summary
CrossSiteIframeLinker()
           
 
Method Summary
protected  java.lang.String fillSelectionScriptTemplate(java.lang.StringBuffer ss, TreeLogger logger, LinkerContext context, ArtifactSet artifacts, CompilationResult result)
           
protected  boolean getBooleanConfigurationProperty(LinkerContext context, java.lang.String name, boolean def)
           
protected  java.lang.String getCompilationExtension(TreeLogger logger, LinkerContext context)
           
protected  java.lang.String getDeferredFragmentSuffix2(TreeLogger logger, LinkerContext context, int fragment, java.lang.String strongName)
           
 java.lang.String getDescription()
          Returns a human-readable String describing the Linker.
protected  java.lang.String getHostedFilename()
           
protected  java.lang.String getHostedFilenameFull(LinkerContext context)
           
protected  java.lang.String getJsComputeScriptBase(LinkerContext context)
          Returns the name of the ComputeScriptBase script.
protected  java.lang.String getJsComputeUrlForResource(LinkerContext context)
          Returns the name of the UrlForResource script.
protected  java.lang.String getJsDevModeRedirectHook(LinkerContext context)
          Returns a JavaScript fragment that starts Super Dev Mode, if enabled.
protected  java.lang.String getJsDevModeRedirectHookPermitted(LinkerContext context)
          Returns a JavaScript expression that determines whether Super Dev Mode may be turned on for the current page.
protected  java.lang.String getJsDevModeUrlValidation(LinkerContext context)
          Returns a JavaScript fragment that validates "devModeUrl"—the URL that Super Dev Mode's JavaScript is loaded from—before it's used.
protected  java.lang.String getJsInstallLocation(LinkerContext context)
          Returns the name of the JsInstallLocation script.
protected  java.lang.String getJsInstallScript(LinkerContext context)
          Returns the name of the JsInstallScript script.
protected  java.lang.String getJsIsBodyLoaded(LinkerContext context)
          Returns the name of the JsIsBodyLoaded script.
protected  java.lang.String getJsLoadExternalStylesheets(LinkerContext context)
          Returns the name of the JsLoadExternalStylesheets script.
protected  java.lang.String getJsModuleFunctionErrorCatch(LinkerContext context)
          Returns the name of the JsModuleFunctionErrorCatch script.
protected  java.lang.String getJsPermutations(LinkerContext context)
          Returns the name of the JsPermutations script.
protected  java.lang.String getJsProcessMetas(LinkerContext context)
          Returns the name of the JsProcessMetas script.
protected  java.lang.String getJsProperties(LinkerContext context)
          Returns the name of the JsProperties script.
protected  java.lang.String getJsRunAsync(LinkerContext context)
          Returns the name of the JsRunAsync script.
protected  java.lang.String getJsWaitForBodyLoaded(LinkerContext context)
          Returns the name of the JsWaitForBodyLoaded script.
protected  java.lang.String getModulePrefix(TreeLogger logger, LinkerContext context, java.lang.String strongName)
           
protected  java.lang.String getModuleSuffix2(TreeLogger logger, LinkerContext context, java.lang.String strongName)
           
protected  java.lang.String getScriptChunkSeparator(TreeLogger logger, LinkerContext context)
           
protected  java.lang.String getSelectionScriptTemplate(TreeLogger logger, LinkerContext context)
           
protected  java.lang.String getSourceMapUrl(LinkerContext context, java.lang.String strongName, int fragmentId)
          Returns the sourcemap URL that will be put in the comment at the end of a JavaScript fragment, or null if the comment should be omitted.
protected  java.lang.String getStringConfigurationProperty(LinkerContext context, java.lang.String name, java.lang.String def)
           
protected  void includeJs(java.lang.StringBuffer selectionScript, TreeLogger logger, java.lang.String jsSource, java.lang.String templateVar)
           
protected  void maybeAddHostedModeFile(TreeLogger logger, LinkerContext context, ArtifactSet artifacts, CompilationResult result)
           
protected  void maybeOutputPropertyMap(TreeLogger logger, LinkerContext context, ArtifactSet toReturn)
           
protected  boolean shouldIncludeBootstrapInPrimaryFragment(LinkerContext context)
           
protected  boolean shouldInstallCode(LinkerContext context)
          Determines the strategy for installing JavaScript code into the iframe.
protected  boolean shouldUseSelfForWindowAndDocument(LinkerContext context)
          Returns whether to use "self" for $wnd and $doc references.
protected  java.lang.String wrapDeferredFragment(TreeLogger logger, LinkerContext context, int fragment, java.lang.String js, ArtifactSet artifacts)
           
protected  java.lang.String wrapPrimaryFragment(TreeLogger logger, LinkerContext context, java.lang.String script, ArtifactSet artifacts, CompilationResult result)
           
 
Methods inherited from class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker
charsPerChunk, doEmitCompilation, emitSelectionInformation, emitSelectionScript, generateDeferredFragment, generatePrimaryFragment, generatePrimaryFragmentString, generateSelectionScript, generateSelectionScript, getDeferredFragmentPrefix, getDeferredFragmentSuffix, getFragmentSubdir, getModulePrefix, getModuleSuffix, link, link, readFileToStringBuffer, replaceAll, splitPrimaryJavaScript, supportsDevModeInJunit
 
Methods inherited from class com.google.gwt.core.ext.linker.AbstractLinker
emitBytes, emitBytes, emitInputStream, emitInputStream, emitString, emitString, emitWithStrongName, emitWithStrongName
 
Methods inherited from class com.google.gwt.core.ext.Linker
isShardable, relink
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CrossSiteIframeLinker

public CrossSiteIframeLinker()
Method Detail

getDescription

public java.lang.String getDescription()
Description copied from class: Linker
Returns a human-readable String describing the Linker.

Specified by:
getDescription in class Linker

fillSelectionScriptTemplate

protected java.lang.String fillSelectionScriptTemplate(java.lang.StringBuffer ss,
                                                       TreeLogger logger,
                                                       LinkerContext context,
                                                       ArtifactSet artifacts,
                                                       CompilationResult result)
                                                throws UnableToCompleteException
Overrides:
fillSelectionScriptTemplate in class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker
Throws:
UnableToCompleteException

getBooleanConfigurationProperty

protected boolean getBooleanConfigurationProperty(LinkerContext context,
                                                  java.lang.String name,
                                                  boolean def)

getCompilationExtension

protected java.lang.String getCompilationExtension(TreeLogger logger,
                                                   LinkerContext context)
Specified by:
getCompilationExtension in class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker

getDeferredFragmentSuffix2

protected java.lang.String getDeferredFragmentSuffix2(TreeLogger logger,
                                                      LinkerContext context,
                                                      int fragment,
                                                      java.lang.String strongName)
Overrides:
getDeferredFragmentSuffix2 in class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker

getHostedFilename

protected java.lang.String getHostedFilename()
Overrides:
getHostedFilename in class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker

getHostedFilenameFull

protected java.lang.String getHostedFilenameFull(LinkerContext context)

getJsComputeScriptBase

protected java.lang.String getJsComputeScriptBase(LinkerContext context)
Returns the name of the ComputeScriptBase script. By default, returns "com/google/gwt/core/ext/linker/impl/computeScriptBase.js".

Parameters:
context - a LinkerContext

getJsComputeUrlForResource

protected java.lang.String getJsComputeUrlForResource(LinkerContext context)
Returns the name of the UrlForResource script. By default, returns "com/google/gwt/core/ext/linker/impl/computeUrlForResource.js".

Parameters:
context - a LinkerContext

getJsDevModeRedirectHook

protected java.lang.String getJsDevModeRedirectHook(LinkerContext context)
Returns a JavaScript fragment that starts Super Dev Mode, if enabled. (May return either the JavaScript itself or the name of a Java resource ending with ".js".)


getJsDevModeUrlValidation

protected java.lang.String getJsDevModeUrlValidation(LinkerContext context)
Returns a JavaScript fragment that validates "devModeUrl"—the URL that Super Dev Mode's JavaScript is loaded from—before it's used. The variable may be modified to change what what URL is loaded, or it maybe be set to "" to disable completely. (May return either the JavaScript itself or the name of a Java resource ending with ".js".)


getJsDevModeRedirectHookPermitted

protected java.lang.String getJsDevModeRedirectHookPermitted(LinkerContext context)
Returns a JavaScript expression that determines whether Super Dev Mode may be turned on for the current page. (May return either the JavaScript itself or the name of a Java resource ending with ".js".)

The default implementation allows Super Dev Mode only on http: and file: pages. It could be overridden to implement a blacklist or whitelist of hostnames where Super Dev Mode may run. As a safety precaution, it's recommended to return false for https and for the hostnames in URL's visited by end users.

If you override this method to allow https, it probably won't work anyway because browsers often disallow loading JavaScript from http URL's into https pages. To make it work, you will also have to find a way to run the code server using https.


getJsInstallLocation

protected java.lang.String getJsInstallLocation(LinkerContext context)
Returns the name of the JsInstallLocation script. By default, returns "com/google/gwt/core/ext/linker/impl/installLocationIframe.js".

Parameters:
context - a LinkerContext

getJsInstallScript

protected java.lang.String getJsInstallScript(LinkerContext context)
Returns the name of the JsInstallScript script. The default is chosen based on the value of shouldInstallCode(com.google.gwt.core.ext.LinkerContext).

If you override this, verify that shouldInstallCode(com.google.gwt.core.ext.LinkerContext) is set consistently or fragment loading won't work.


getJsIsBodyLoaded

protected java.lang.String getJsIsBodyLoaded(LinkerContext context)
Returns the name of the JsIsBodyLoaded script. By default, returns "com/google/gwt/core/ext/linker/impl/isBodyLoaded.js".

Parameters:
context - a LinkerContext

getJsLoadExternalStylesheets

protected java.lang.String getJsLoadExternalStylesheets(LinkerContext context)
Returns the name of the JsLoadExternalStylesheets script. By default, returns "com/google/gwt/core/ext/linker/impl/loadExternalStylesheets.js".

Parameters:
context - a LinkerContext

getJsModuleFunctionErrorCatch

protected java.lang.String getJsModuleFunctionErrorCatch(LinkerContext context)
Returns the name of the JsModuleFunctionErrorCatch script. By default returns null. This script executes if there's an error loading the module function or executing it. The error will be available under a local variable named "moduleError". If non-null, the module function and the call to the module function will be placed in a try/catch block.

Parameters:
context - a LinkerContext

getJsPermutations

protected java.lang.String getJsPermutations(LinkerContext context)
Returns the name of the JsPermutations script. By default, returns "com/google/gwt/core/ext/linker/impl/permutations.js".

Parameters:
context - a LinkerContext

getJsProcessMetas

protected java.lang.String getJsProcessMetas(LinkerContext context)
Returns the name of the JsProcessMetas script. By default, returns "com/google/gwt/core/ext/linker/impl/processMetas.js".

Parameters:
context - a LinkerContext

getJsProperties

protected java.lang.String getJsProperties(LinkerContext context)
Returns the name of the JsProperties script. By default, returns "com/google/gwt/core/ext/linker/impl/properties.js".

Parameters:
context - a LinkerContext

getJsRunAsync

protected java.lang.String getJsRunAsync(LinkerContext context)
Returns the name of the JsRunAsync script. By default, returns "com/google/gwt/core/ext/linker/impl/runAsync.js".

Parameters:
context - a LinkerContext

getJsWaitForBodyLoaded

protected java.lang.String getJsWaitForBodyLoaded(LinkerContext context)
Returns the name of the JsWaitForBodyLoaded script. By default, returns "com/google/gwt/core/ext/linker/impl/waitForBodyLoaded.js".

Parameters:
context - a LinkerContext

getModulePrefix

protected java.lang.String getModulePrefix(TreeLogger logger,
                                           LinkerContext context,
                                           java.lang.String strongName)
                                    throws UnableToCompleteException
Specified by:
getModulePrefix in class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker
Throws:
UnableToCompleteException

getModuleSuffix2

protected java.lang.String getModuleSuffix2(TreeLogger logger,
                                            LinkerContext context,
                                            java.lang.String strongName)
Overrides:
getModuleSuffix2 in class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker

getScriptChunkSeparator

protected java.lang.String getScriptChunkSeparator(TreeLogger logger,
                                                   LinkerContext context)
Overrides:
getScriptChunkSeparator in class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker

getSelectionScriptTemplate

protected java.lang.String getSelectionScriptTemplate(TreeLogger logger,
                                                      LinkerContext context)
Specified by:
getSelectionScriptTemplate in class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker

getSourceMapUrl

protected java.lang.String getSourceMapUrl(LinkerContext context,
                                           java.lang.String strongName,
                                           int fragmentId)
Returns the sourcemap URL that will be put in the comment at the end of a JavaScript fragment, or null if the comment should be omitted. The default implementation uses the includeSourceMapUrl config property.


getStringConfigurationProperty

protected java.lang.String getStringConfigurationProperty(LinkerContext context,
                                                          java.lang.String name,
                                                          java.lang.String def)

includeJs

protected void includeJs(java.lang.StringBuffer selectionScript,
                         TreeLogger logger,
                         java.lang.String jsSource,
                         java.lang.String templateVar)
                  throws UnableToCompleteException
Throws:
UnableToCompleteException

maybeAddHostedModeFile

protected void maybeAddHostedModeFile(TreeLogger logger,
                                      LinkerContext context,
                                      ArtifactSet artifacts,
                                      CompilationResult result)
                               throws UnableToCompleteException
Overrides:
maybeAddHostedModeFile in class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker
Throws:
UnableToCompleteException

maybeOutputPropertyMap

protected void maybeOutputPropertyMap(TreeLogger logger,
                                      LinkerContext context,
                                      ArtifactSet toReturn)
Overrides:
maybeOutputPropertyMap in class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker

shouldIncludeBootstrapInPrimaryFragment

protected boolean shouldIncludeBootstrapInPrimaryFragment(LinkerContext context)

shouldInstallCode

protected boolean shouldInstallCode(LinkerContext context)
Determines the strategy for installing JavaScript code into the iframe. If set to false, a <script> tag pointing to the js file is added directly to the iframe. Otherwise, GWT downloads the JavaScript code as a list of strings and then adds it to the iframe.


shouldUseSelfForWindowAndDocument

protected boolean shouldUseSelfForWindowAndDocument(LinkerContext context)
Returns whether to use "self" for $wnd and $doc references. Defaults to false. Useful for worker threads.


wrapDeferredFragment

protected java.lang.String wrapDeferredFragment(TreeLogger logger,
                                                LinkerContext context,
                                                int fragment,
                                                java.lang.String js,
                                                ArtifactSet artifacts)
Overrides:
wrapDeferredFragment in class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker

wrapPrimaryFragment

protected java.lang.String wrapPrimaryFragment(TreeLogger logger,
                                               LinkerContext context,
                                               java.lang.String script,
                                               ArtifactSet artifacts,
                                               CompilationResult result)
                                        throws UnableToCompleteException
Overrides:
wrapPrimaryFragment in class com.google.gwt.core.ext.linker.impl.SelectionScriptLinker
Throws:
UnableToCompleteException

GWT 2.7.0