com.google.gwt.core.client.impl
Class AsyncFragmentLoader

java.lang.Object
  extended by com.google.gwt.core.client.impl.AsyncFragmentLoader

public class AsyncFragmentLoader
extends java.lang.Object

Low-level support to download an extra fragment of code. This should not be invoked directly by user code.

The fragments are numbered as follows, assuming there are m split points:

Since the precise way to load code depends on the linker, linkers should specify a rebind of AsyncFragmentLoader.LoadingStrategy. The default rebind is XhrLoadingStrategy.


Nested Class Summary
static interface AsyncFragmentLoader.LoadingStrategy
          A strategy for loading code fragments.
static interface AsyncFragmentLoader.LoadTerminatedHandler
          An interface for handlers of load completion.
static interface AsyncFragmentLoader.Logger
          A strategy for logging progress.
static class AsyncFragmentLoader.LwmLabels
          Labels used for runAsync lightweight metrics.
static class AsyncFragmentLoader.StandardLogger
          The standard logger used in a web browser.
 
Field Summary
static AsyncFragmentLoader BROWSER_LOADER
          The standard instance of AsyncFragmentLoader used in a web browser.
 
Constructor Summary
AsyncFragmentLoader(int numEntries, int[] initialLoadSequence, AsyncFragmentLoader.LoadingStrategy loadingStrategy, AsyncFragmentLoader.Logger logger)
           
 
Method Summary
static void browserLoaderLeftoversFragmentHasLoaded()
          A helper static method that invokes BROWSER_LOADER.leftoversFragmentHasLoaded().
 void fragmentHasLoaded(int fragment)
          Inform the loader that a fragment has now finished loading.
 void inject(int splitPoint, AsyncFragmentLoader.LoadTerminatedHandler loadErrorHandler)
          Requests a load of the code for the specified split point.
 boolean isAlreadyLoaded(int splitPoint)
           
 boolean isLoading(int splitPoint)
           
 void leftoversFragmentHasLoaded()
           
 void logEventProgress(java.lang.String eventGroup, java.lang.String type)
          Log an event with the this instance was provided.
 void setPrefetchQueue(int... runAsyncSplitPoints)
          Request that a sequence of split points be prefetched.
 void startPrefetching()
           
 void stopPrefetching()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

BROWSER_LOADER

public static AsyncFragmentLoader BROWSER_LOADER
The standard instance of AsyncFragmentLoader used in a web browser. If not in GWT (i.e our vanilla JUnit tests, or if referenced in a server context), this filed is null. In GWT, the parameters to this call are rewritten by com.google.gwt.dev.jjs.impl.ReplaceRunAsyncs. So this must be a method call of exactly two arguments, or that magic fails.

Constructor Detail

AsyncFragmentLoader

public AsyncFragmentLoader(int numEntries,
                           int[] initialLoadSequence,
                           AsyncFragmentLoader.LoadingStrategy loadingStrategy,
                           AsyncFragmentLoader.Logger logger)
Method Detail

browserLoaderLeftoversFragmentHasLoaded

public static void browserLoaderLeftoversFragmentHasLoaded()
A helper static method that invokes BROWSER_LOADER.leftoversFragmentHasLoaded(). Such a call is generated by the compiler, as it is much simpler if there is a static method to wrap up the call.


fragmentHasLoaded

public void fragmentHasLoaded(int fragment)
Inform the loader that a fragment has now finished loading.


inject

public void inject(int splitPoint,
                   AsyncFragmentLoader.LoadTerminatedHandler loadErrorHandler)
Requests a load of the code for the specified split point. If the load fails, loadErrorHandler will be invoked. If it succeeds, then the code will be installed, and the code is expected to invoke its own on-success hooks, including a call to either leftoversFragmentHasLoaded() or fragmentHasLoaded(int).

Parameters:
splitPoint - the split point whose code needs to be loaded

isAlreadyLoaded

public boolean isAlreadyLoaded(int splitPoint)

isLoading

public boolean isLoading(int splitPoint)

leftoversFragmentHasLoaded

public void leftoversFragmentHasLoaded()

logEventProgress

public void logEventProgress(java.lang.String eventGroup,
                             java.lang.String type)
Log an event with the this instance was provided.


setPrefetchQueue

public void setPrefetchQueue(int... runAsyncSplitPoints)
Request that a sequence of split points be prefetched. Code for the split points in splitPoints will be downloaded and installed whenever there is nothing else to download. Each call to this method overwrites the entire prefetch queue with the newly specified one.


startPrefetching

public void startPrefetching()

stopPrefetching

public void stopPrefetching()