From 5ba47eb42be2c49b78c6b0492021ce8e78387d3f Mon Sep 17 00:00:00 2001 From: Shawn Pearce Date: Fri, 2 Jan 2015 19:26:21 -0500 Subject: [PATCH] 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 --- .../java/com/google/gerrit/client/change/ChangeScreen2.java | 3 +++ .../src/main/java/net/codemirror/lib/CodeMirror.java | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.java index 45194e2637..5d6fa380bc 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeScreen2.java @@ -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)); diff --git a/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java b/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java index 8255cbb50f..c6e106338c 100644 --- a/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java +++ b/gerrit-gwtui/src/main/java/net/codemirror/lib/CodeMirror.java @@ -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 CodeMirror API */ public class CodeMirror extends JavaScriptObject { + public static void preload() { + initLibrary(CallbackGroup. emptyCallback()); + } + public static void initLibrary(AsyncCallback cb) { Loader.initLibrary(cb); }