diff options
author | 2015-10-29 14:55:00 -0700 | |
---|---|---|
committer | 2015-11-03 11:11:57 -0800 | |
commit | 1af86f17dc9a47faf1c6cd7ccd23d248fdc615ab (patch) | |
tree | 22796622e72c8381bbb26d15c3f7dd35584dbdb2 /tools/ahat/src/AhatHttpHandler.java | |
parent | 530dcc8b74a0f4e5f54e2b2c326580d58594a2f7 (diff) |
ahat: limit default number of results shown.
Previously, ahat had performance issues rendering large pages. This
change causes ahat to limit the number results shown in large pages by
default, requiring the user to explicitly request more information if
they care about it.
Bug: 25114227
Change-Id: Ief67396be254be4c84e6971f5b903a701206e17b
Diffstat (limited to 'tools/ahat/src/AhatHttpHandler.java')
-rw-r--r-- | tools/ahat/src/AhatHttpHandler.java | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/tools/ahat/src/AhatHttpHandler.java b/tools/ahat/src/AhatHttpHandler.java new file mode 100644 index 0000000000..0553713702 --- /dev/null +++ b/tools/ahat/src/AhatHttpHandler.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2015 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.android.ahat; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import java.io.IOException; +import java.io.PrintStream; + +/** + * AhatHttpHandler. + * + * HttpHandler for AhatHandlers. + */ +class AhatHttpHandler implements HttpHandler { + + private AhatHandler mAhatHandler; + + public AhatHttpHandler(AhatHandler handler) { + mAhatHandler = handler; + } + + @Override + public void handle(HttpExchange exchange) throws IOException { + exchange.getResponseHeaders().add("Content-Type", "text/html;charset=utf-8"); + exchange.sendResponseHeaders(200, 0); + PrintStream ps = new PrintStream(exchange.getResponseBody()); + try { + HtmlDoc doc = new HtmlDoc(ps, DocString.text("ahat"), DocString.uri("style.css")); + DocString menu = new DocString(); + menu.appendLink(DocString.uri("/"), DocString.text("overview")); + menu.append(" - "); + menu.appendLink(DocString.uri("roots"), DocString.text("roots")); + menu.append(" - "); + menu.appendLink(DocString.uri("sites"), DocString.text("allocations")); + menu.append(" - "); + menu.appendLink(DocString.uri("help"), DocString.text("help")); + doc.menu(menu); + mAhatHandler.handle(doc, new Query(exchange.getRequestURI())); + doc.close(); + } catch (RuntimeException e) { + // Print runtime exceptions to standard error for debugging purposes, + // because otherwise they are swallowed and not reported. + System.err.println("Exception when handling " + exchange.getRequestURI() + ": "); + e.printStackTrace(); + throw e; + } + ps.close(); + } +} |