ChangeScreen2: Preload CodeMirror CSS and JS

The JavaScript library for CodeMirror is several hundred KiBs.
Although it does not change often and can be cached by browsers
preloading while the user is looking at a change helps to hide
any latency.

Change-Id: I43fecd297983e26472030a412fde5c9d98491adb
This commit is contained in:
Shawn Pearce
2015-01-02 19:26:21 -05:00
parent c0388cff71
commit 5ba47eb42b
2 changed files with 8 additions and 0 deletions

View File

@@ -91,6 +91,8 @@ import com.google.gwtexpui.globalkey.client.KeyCommandSet;
import com.google.gwtexpui.safehtml.client.SafeHtmlBuilder;
import com.google.gwtorm.client.KeyUtil;
import net.codemirror.lib.CodeMirror;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.EnumSet;
@@ -511,6 +513,7 @@ public class ChangeScreen2 extends Screen {
}
ChangeGlue.fireShowChange(changeInfo, changeInfo.revision(revision));
CodeMirror.preload();
startPoller();
if (NewChangeScreenBar.show()) {
add(new NewChangeScreenBar(changeId));

View File

@@ -15,6 +15,7 @@
package net.codemirror.lib;
import com.google.gerrit.client.diff.DisplaySide;
import com.google.gerrit.client.rpc.CallbackGroup;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
@@ -28,6 +29,10 @@ import net.codemirror.lib.TextMarker.FromTo;
* @see <a href="http://codemirror.net/doc/manual.html#api">CodeMirror API</a>
*/
public class CodeMirror extends JavaScriptObject {
public static void preload() {
initLibrary(CallbackGroup.<Void> emptyCallback());
}
public static void initLibrary(AsyncCallback<Void> cb) {
Loader.initLibrary(cb);
}