From d83ac11a52c1b6d4acae932a8495daf1e9129fdf Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Sat, 19 Dec 2009 19:41:20 -0800 Subject: [PATCH] Move prettify to be loaded as part of our patch split point This way we don't download its JavaScript or CSS as part of the initial download. It saves 2 round-trips during bootstrap. Change-Id: I430dcd5832ecaa8eafb79ab92a2c24be85608a78 Signed-off-by: Shawn O. Pearce --- .../com/google/gerrit/httpd/UrlModule.java | 2 - .../gerrit/httpd/raw/PrettifyServlet.java | 91 ------------------- .../com/google/gerrit/httpd/raw/HostPage.html | 1 - .../gwtexpui/safehtml/PrettyFormatter.gwt.xml | 2 +- .../safehtml/client/PrettyFormatter.java | 29 +++++- .../safehtml/client/prettify/Resources.java | 57 ++++++++++++ .../prettify}/lang-css.js | 0 .../prettify}/lang-hs.js | 0 .../prettify}/lang-lisp.js | 0 .../prettify}/lang-lua.js | 0 .../prettify}/lang-ml.js | 0 .../prettify}/lang-proto.js | 0 .../prettify}/lang-sql.js | 0 .../prettify}/lang-vb.js | 0 .../prettify}/lang-wiki.js | 0 .../prettify}/prettify.css | 13 +++ .../prettify}/prettify.js | 0 17 files changed, 98 insertions(+), 97 deletions(-) delete mode 100644 gerrit-httpd/src/main/java/com/google/gerrit/httpd/raw/PrettifyServlet.java create mode 100644 gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/Resources.java rename gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/{public/prettify20090521 => client/prettify}/lang-css.js (100%) rename gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/{public/prettify20090521 => client/prettify}/lang-hs.js (100%) rename gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/{public/prettify20090521 => client/prettify}/lang-lisp.js (100%) rename gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/{public/prettify20090521 => client/prettify}/lang-lua.js (100%) rename gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/{public/prettify20090521 => client/prettify}/lang-ml.js (100%) rename gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/{public/prettify20090521 => client/prettify}/lang-proto.js (100%) rename gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/{public/prettify20090521 => client/prettify}/lang-sql.js (100%) rename gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/{public/prettify20090521 => client/prettify}/lang-vb.js (100%) rename gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/{public/prettify20090521 => client/prettify}/lang-wiki.js (100%) rename gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/{public/prettify20090521 => client/prettify}/prettify.css (77%) rename gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/{public/prettify20090521 => client/prettify}/prettify.js (100%) diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/UrlModule.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/UrlModule.java index 0467d8690a..30e9972a22 100644 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/UrlModule.java +++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/UrlModule.java @@ -20,7 +20,6 @@ import com.google.gerrit.common.PageLinks; import com.google.gerrit.httpd.raw.CatServlet; import com.google.gerrit.httpd.raw.HostPageServlet; import com.google.gerrit.httpd.raw.LegacyGerritServlet; -import com.google.gerrit.httpd.raw.PrettifyServlet; import com.google.gerrit.httpd.raw.SshInfoServlet; import com.google.gerrit.httpd.raw.StaticServlet; import com.google.gerrit.reviewdb.RevId; @@ -47,7 +46,6 @@ class UrlModule extends ServletModule { serve("/Gerrit/*").with(legacyGerritScreen()); serve("/cat/*").with(CatServlet.class); serve("/logout").with(HttpLogoutServlet.class); - serve("/prettify/*").with(PrettifyServlet.class); serve("/signout").with(HttpLogoutServlet.class); serve("/ssh_info").with(SshInfoServlet.class); serve("/static/*").with(StaticServlet.class); diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/raw/PrettifyServlet.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/raw/PrettifyServlet.java deleted file mode 100644 index 203e864d48..0000000000 --- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/raw/PrettifyServlet.java +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (C) 2009 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.gerrit.httpd.raw; - -import com.google.inject.Inject; -import com.google.inject.Singleton; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import javax.servlet.ServletContext; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -@Singleton -public class PrettifyServlet extends HttpServlet { - private static final long serialVersionUID = 1L; - private static final String VERSION = "20090521"; - - private final byte[] content; - - @Inject - PrettifyServlet(final ServletContext servletContext) throws IOException { - final String myDir = "/gerrit/prettify" + VERSION + "/"; - final ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - load(buffer, servletContext, myDir + "prettify.js"); - for (Object p : servletContext.getResourcePaths(myDir)) { - String name = (String) p; - if (name.startsWith(myDir + "lang-") && name.endsWith(".js")) { - load(buffer, servletContext, name); - } - } - content = buffer.toByteArray(); - } - - private void load(final OutputStream buffer, - final ServletContext servletContext, final String path) - throws IOException { - final InputStream in = servletContext.getResourceAsStream(path); - if (in != null) { - try { - final byte[] tmp = new byte[4096]; - int cnt; - while ((cnt = in.read(tmp)) > 0) { - buffer.write(tmp, 0, cnt); - } - buffer.write(';'); - buffer.write('\n'); - in.close(); - } catch (IOException e) { - throw new IOException("Cannot read " + path, e); - } - } - } - - @Override - protected void doGet(final HttpServletRequest req, - final HttpServletResponse rsp) throws IOException { - final String want = req.getPathInfo(); - if (want.equals("/" + VERSION + ".js")) { - final long now = System.currentTimeMillis(); - rsp.setHeader("Cache-Control", "max-age=31536000,public"); - rsp.setDateHeader("Expires", now + 31536000000L); - rsp.setDateHeader("Date", now); - rsp.setContentType("application/x-javascript"); - rsp.setContentLength(content.length); - rsp.getOutputStream().write(content); - } else { - rsp.setHeader("Expires", "Fri, 01 Jan 1980 00:00:00 GMT"); - rsp.setHeader("Pragma", "no-cache"); - rsp.setHeader("Cache-Control", "no-cache, must-revalidate"); - rsp.setDateHeader("Date", System.currentTimeMillis()); - rsp.sendError(HttpServletResponse.SC_NOT_FOUND); - } - } -} diff --git a/gerrit-httpd/src/main/resources/com/google/gerrit/httpd/raw/HostPage.html b/gerrit-httpd/src/main/resources/com/google/gerrit/httpd/raw/HostPage.html index 306824d801..7a53987c1f 100644 --- a/gerrit-httpd/src/main/resources/com/google/gerrit/httpd/raw/HostPage.html +++ b/gerrit-httpd/src/main/resources/com/google/gerrit/httpd/raw/HostPage.html @@ -32,7 +32,6 @@ - diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/PrettyFormatter.gwt.xml b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/PrettyFormatter.gwt.xml index b0679c3285..7c8a85aae3 100644 --- a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/PrettyFormatter.gwt.xml +++ b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/PrettyFormatter.gwt.xml @@ -14,6 +14,6 @@ limitations under the License. --> - + diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/PrettyFormatter.java b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/PrettyFormatter.java index c026e4a6ee..ad9106bc37 100644 --- a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/PrettyFormatter.java +++ b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/PrettyFormatter.java @@ -14,6 +14,9 @@ package com.google.gwtexpui.safehtml.client; +import com.google.gwt.resources.client.TextResource; +import com.google.gwtexpui.safehtml.client.prettify.Resources; + import java.util.HashMap; import java.util.Map; @@ -122,10 +125,32 @@ public abstract class PrettyFormatter { } private static class Pretty extends PrettyFormatter { + static { + Resources.I.css().ensureInjected(); + + eval(Resources.I.core()); + eval(Resources.I.lang_css()); + eval(Resources.I.lang_hs()); + eval(Resources.I.lang_lisp()); + eval(Resources.I.lang_lua()); + eval(Resources.I.lang_ml()); + eval(Resources.I.lang_proto()); + eval(Resources.I.lang_sql()); + eval(Resources.I.lang_vb()); + eval(Resources.I.lang_wiki()); + } + static final boolean loaded = isLoaded(); private static native boolean isLoaded() - /*-{ return $wnd['prettyPrintOne'] != null }-*/; + /*-{ return window.prettyPrintOne != null }-*/; + + private static void eval(final TextResource core) { + eval(core.getText()); + } + + private static native void eval(String js) + /*-{ eval(js); }-*/; private final String srcType; private final MultiLineStyle commentStyle; @@ -170,6 +195,6 @@ public abstract class PrettyFormatter { } private static native String prettifyNative(String srcText, String srcType) - /*-{ return $wnd.prettyPrintOne(srcText, srcType); }-*/; + /*-{ return prettyPrintOne(srcText, srcType); }-*/; } } diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/Resources.java b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/Resources.java new file mode 100644 index 0000000000..9e3f38c1ad --- /dev/null +++ b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/Resources.java @@ -0,0 +1,57 @@ +// Copyright (C) 2009 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.gwtexpui.safehtml.client.prettify; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.resources.client.ClientBundle; +import com.google.gwt.resources.client.CssResource; +import com.google.gwt.resources.client.TextResource; + +public interface Resources extends ClientBundle { + public static final Resources I = GWT.create(Resources.class); + + @Source("prettify.css") + CssResource css(); + + @Source("prettify.js") + TextResource core(); + + @Source("lang-css.js") + TextResource lang_css(); + + @Source("lang-hs.js") + TextResource lang_hs(); + + @Source("lang-lisp.js") + TextResource lang_lisp(); + + @Source("lang-lua.js") + TextResource lang_lua(); + + @Source("lang-ml.js") + TextResource lang_ml(); + + @Source("lang-proto.js") + TextResource lang_proto(); + + @Source("lang-sql.js") + TextResource lang_sql(); + + @Source("lang-vb.js") + TextResource lang_vb(); + + @Source("lang-wiki.js") + TextResource lang_wiki(); +} diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-css.js b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-css.js similarity index 100% rename from gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-css.js rename to gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-css.js diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-hs.js b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-hs.js similarity index 100% rename from gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-hs.js rename to gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-hs.js diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-lisp.js b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-lisp.js similarity index 100% rename from gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-lisp.js rename to gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-lisp.js diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-lua.js b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-lua.js similarity index 100% rename from gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-lua.js rename to gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-lua.js diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-ml.js b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-ml.js similarity index 100% rename from gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-ml.js rename to gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-ml.js diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-proto.js b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-proto.js similarity index 100% rename from gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-proto.js rename to gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-proto.js diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-sql.js b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-sql.js similarity index 100% rename from gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-sql.js rename to gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-sql.js diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-vb.js b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-vb.js similarity index 100% rename from gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-vb.js rename to gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-vb.js diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-wiki.js b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-wiki.js similarity index 100% rename from gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/lang-wiki.js rename to gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/lang-wiki.js diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/prettify.css b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/prettify.css similarity index 77% rename from gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/prettify.css rename to gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/prettify.css index 351152b82d..26e3e263fa 100644 --- a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/prettify.css +++ b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/prettify.css @@ -1,5 +1,18 @@ /* Pretty printing styles. Used with prettify.js. */ +@external .str; +@external .kwd; +@external .com; +@external .typ; +@external .lit; +@external .pun; +@external .pln; +@external .tag; +@external .atn; +@external .atv; +@external .dec; +@external .prettyprint; + .str { color: #080; } .kwd { color: #008; } .com { color: #800; } diff --git a/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/prettify.js b/gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/prettify.js similarity index 100% rename from gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/public/prettify20090521/prettify.js rename to gerrit-patch-gwtexpui/src/main/java/com/google/gwtexpui/safehtml/client/prettify/prettify.js