diff --git a/WebCore/loader/TextDocument.cpp b/WebCore/loader/TextDocument.cpp
index b5124b4..6b06ede 100644
--- a/WebCore/loader/TextDocument.cpp
+++ b/WebCore/loader/TextDocument.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -38,6 +38,38 @@
 
 using namespace HTMLNames;
 
+class TextTokenizer : public Tokenizer {
+public:
+    TextTokenizer(Document*);
+    TextTokenizer(HTMLViewSourceDocument*);
+
+    virtual bool write(const SegmentedString&, bool appendData);
+    virtual void finish();
+    virtual bool isWaitingForScripts() const;
+    
+    inline void checkBuffer(int len = 10)
+    {
+        if ((m_dest - m_buffer) > m_size - len) {
+            // Enlarge buffer
+            int newSize = std::max(m_size * 2, m_size + len);
+            int oldOffset = m_dest - m_buffer;
+            m_buffer = static_cast<UChar*>(fastRealloc(m_buffer, newSize * sizeof(UChar)));
+            m_dest = m_buffer + oldOffset;
+            m_size = newSize;
+        }
+    }
+        
+private:
+    Document* m_doc;
+    Element* m_preElement;
+
+    bool m_skipLF;
+    
+    int m_size;
+    UChar* m_buffer;
+    UChar* m_dest;
+};
+
 TextTokenizer::TextTokenizer(Document* doc)
     : m_doc(doc)
     , m_preElement(0)
@@ -137,8 +169,8 @@
     return false;
 }
 
-TextDocument::TextDocument(DOMImplementation* implementation, Frame* frame)
-    : HTMLDocument(implementation, frame)
+TextDocument::TextDocument(Frame* frame)
+    : HTMLDocument(frame)
 {
 }
 
@@ -147,4 +179,9 @@
     return new TextTokenizer(this);
 }
 
+Tokenizer* createTextTokenizer(HTMLViewSourceDocument* document)
+{
+    return new TextTokenizer(document);
+}
+
 }
