summaryrefslogtreecommitdiffstats
path: root/parser/html/javasrc/TreeBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'parser/html/javasrc/TreeBuilder.java')
-rw-r--r--parser/html/javasrc/TreeBuilder.java23
1 files changed, 21 insertions, 2 deletions
diff --git a/parser/html/javasrc/TreeBuilder.java b/parser/html/javasrc/TreeBuilder.java
index f7b70ee0da..c190b7fd20 100644
--- a/parser/html/javasrc/TreeBuilder.java
+++ b/parser/html/javasrc/TreeBuilder.java
@@ -436,6 +436,8 @@ public abstract class TreeBuilder<T> implements TokenHandler,
private boolean allowDeclarativeShadowRoots = false;
+ private boolean keepBuffer = false;
+
// [NOCPP[
private boolean reportingDoctype = true;
@@ -577,6 +579,18 @@ public abstract class TreeBuilder<T> implements TokenHandler,
// ]NOCPP]
+ public void setKeepBuffer(boolean keepBuffer) {
+ this.keepBuffer = keepBuffer;
+ }
+
+ public boolean dropBufferIfLongerThan(int length) {
+ if (charBuffer.length > length) {
+ charBuffer = null;
+ return true;
+ }
+ return false;
+ }
+
@SuppressWarnings("unchecked") public final void startTokenization(Tokenizer self) throws SAXException {
tokenizer = self;
stackNodes = new StackNode[64];
@@ -598,7 +612,9 @@ public abstract class TreeBuilder<T> implements TokenHandler,
// ]NOCPP]
start(fragment);
charBufferLen = 0;
- charBuffer = null;
+ if (!keepBuffer) {
+ charBuffer = null;
+ }
framesetOk = true;
if (fragment) {
T elt;
@@ -1451,7 +1467,10 @@ public abstract class TreeBuilder<T> implements TokenHandler,
// [NOCPP[
idLocations.clear();
// ]NOCPP]
- charBuffer = null;
+
+ if (!keepBuffer) {
+ charBuffer = null;
+ }
end();
}