[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

rjw rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 06:49:05 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 55202b774b892d3f7dc625ef89fbc3e91812e290
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Oct 12 05:49:13 2002 +0000

            More implementation of snippet viewer to show converted
            attributed string.
    
            * Debug/Snippet.nib:
            * Debug/SnippetController.h:
            * Debug/SnippetController.m:
            (-[SnippetController dealloc]):
            (-[SnippetController awakeFromNib]):
            (-[SnippetController load]):
            (lastNode):
            (-[SnippetController loadComplete]):
            (-[SnippetController convert:]):
            (-[SnippetController show:]):
            (-[SnippetController mainDataSource]):
            (-[SnippetLocationChangeDelegate initWithController:]):
            (-[SnippetLocationChangeDelegate locationChangeDone:forDataSource:]):
            (-[AttributedStringView dealloc]):
            (-[AttributedStringView setAttributedString:]):
            (-[AttributedStringView drawRect:]):
    
            More DOM/attributed string work.
    
            * WebView.subproj/WebHTMLRepresentation.h:
            * WebView.subproj/WebHTMLRepresentation.m:
            (-[WebHTMLRepresentation attributedStringFrom:startOffset:to:endOffset:]):
            * WebView.subproj/WebHTMLRepresentationPrivate.h:
    
            More DOM/attributed string work.  Still need to fix more
            inappropriate casting problems.
    
            * khtml/dom/dom_node.cpp:
            (Node::lastChild):
            * khtml/xml/dom_nodeimpl.cpp:
            (NodeImpl::lastChild):
            (NodeBaseImpl::lastChild):
            * khtml/xml/dom_nodeimpl.h:
            * kwq/KWQKHTMLPartImpl.cpp:
            (KWQKHTMLPartImpl::selectionStartOffset):
            (KWQKHTMLPartImpl::selectionEndOffset):
            (KWQKHTMLPartImpl::selectionStart):
            (KWQKHTMLPartImpl::selectionEnd):
            * kwq/KWQKHTMLPartImpl.h:
            * kwq/WebCoreBridge.h:
            * kwq/WebCoreBridge.mm:
            (-[WebCoreBridge DOMDocument]):
            (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
            (attributedString):
            (-[WebCoreBridge selectedAttributedString]):
            (-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]):
            * kwq/WebCoreDOMDocument.mm:
            (-[WebCoreDOMDocumentType DOM::]):
            (-[WebCoreDOMDocumentType name]):
            (-[WebCoreDOMDocumentType entities]):
            (-[WebCoreDOMDocumentType notations]):
            (-[WebCoreDOMDocumentType publicId]):
            (-[WebCoreDOMDocumentType systemId]):
            (-[WebCoreDOMDocumentType internalSubset]):
            (-[WebCoreDOMImplementation DOM::]):
            (-[WebCoreDOMImplementation hasFeature::]):
            (-[WebCoreDOMImplementation createDocument:::]):
            (+[WebCoreDOMDocument documentWithImpl:DOM::]):
            (-[WebCoreDOMDocument DOM::]):
            (-[WebCoreDOMDocument doctype]):
            (-[WebCoreDOMDocument implementation]):
            (-[WebCoreDOMDocument documentElement]):
            (-[WebCoreDOMDocument createElement:]):
            (-[WebCoreDOMDocument createElementNS::]):
            (-[WebCoreDOMDocument createDocumentFragment]):
            (-[WebCoreDOMDocument createTextNode:]):
            (-[WebCoreDOMDocument createComment:]):
            (-[WebCoreDOMDocument createCDATASection:]):
            (-[WebCoreDOMDocument createProcessingInstruction::]):
            (-[WebCoreDOMDocument createAttribute:]):
            (-[WebCoreDOMDocument createAttributeNS::]):
            (-[WebCoreDOMDocument createEntityReference:]):
            (-[WebCoreDOMDocument getElementById:]):
            (-[WebCoreDOMDocument getElementsByTagName:]):
            (-[WebCoreDOMDocument getElementsByTagNameNS::]):
            (-[WebCoreDOMDocument importNode::]):
            * kwq/WebCoreDOMNode.mm:
            (-[WebCoreDOMNode initWithImpl:DOM::]):
            (-[WebCoreDOMNode firstChild]):
            (-[WebCoreDOMNode lastChild]):
            * kwq/WebCoreDOMPrivate.h:
            * kwq/WebCoreBridge.mm:
            (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
            (recursive_toHTML):
            (attributedString):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2310 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index 193102d..371c459 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,67 @@
+2002-10-11  Richard Williamson   <rjw at apple.com>
+
+        More DOM/attributed string work.  Still need to fix more
+        inappropriate casting problems.
+        
+        * khtml/dom/dom_node.cpp:
+        (Node::lastChild):
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::lastChild):
+        (NodeBaseImpl::lastChild):
+        * khtml/xml/dom_nodeimpl.h:
+        * kwq/KWQKHTMLPartImpl.cpp:
+        (KWQKHTMLPartImpl::selectionStartOffset):
+        (KWQKHTMLPartImpl::selectionEndOffset):
+        (KWQKHTMLPartImpl::selectionStart):
+        (KWQKHTMLPartImpl::selectionEnd):
+        * kwq/KWQKHTMLPartImpl.h:
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge DOMDocument]):
+        (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
+        (attributedString):
+        (-[WebCoreBridge selectedAttributedString]):
+        (-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]):
+        * kwq/WebCoreDOMDocument.mm:
+        (-[WebCoreDOMDocumentType DOM::]):
+        (-[WebCoreDOMDocumentType name]):
+        (-[WebCoreDOMDocumentType entities]):
+        (-[WebCoreDOMDocumentType notations]):
+        (-[WebCoreDOMDocumentType publicId]):
+        (-[WebCoreDOMDocumentType systemId]):
+        (-[WebCoreDOMDocumentType internalSubset]):
+        (-[WebCoreDOMImplementation DOM::]):
+        (-[WebCoreDOMImplementation hasFeature::]):
+        (-[WebCoreDOMImplementation createDocument:::]):
+        (+[WebCoreDOMDocument documentWithImpl:DOM::]):
+        (-[WebCoreDOMDocument DOM::]):
+        (-[WebCoreDOMDocument doctype]):
+        (-[WebCoreDOMDocument implementation]):
+        (-[WebCoreDOMDocument documentElement]):
+        (-[WebCoreDOMDocument createElement:]):
+        (-[WebCoreDOMDocument createElementNS::]):
+        (-[WebCoreDOMDocument createDocumentFragment]):
+        (-[WebCoreDOMDocument createTextNode:]):
+        (-[WebCoreDOMDocument createComment:]):
+        (-[WebCoreDOMDocument createCDATASection:]):
+        (-[WebCoreDOMDocument createProcessingInstruction::]):
+        (-[WebCoreDOMDocument createAttribute:]):
+        (-[WebCoreDOMDocument createAttributeNS::]):
+        (-[WebCoreDOMDocument createEntityReference:]):
+        (-[WebCoreDOMDocument getElementById:]):
+        (-[WebCoreDOMDocument getElementsByTagName:]):
+        (-[WebCoreDOMDocument getElementsByTagNameNS::]):
+        (-[WebCoreDOMDocument importNode::]):
+        * kwq/WebCoreDOMNode.mm:
+        (-[WebCoreDOMNode initWithImpl:DOM::]):
+        (-[WebCoreDOMNode firstChild]):
+        (-[WebCoreDOMNode lastChild]):
+        * kwq/WebCoreDOMPrivate.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
+        (recursive_toHTML):
+        (attributedString):
+
 2002-10-11  David Hyatt  <hyatt at apple.com>
 
 	Fix for 3058829, assertion caused by table cell with
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 193102d..371c459 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,67 @@
+2002-10-11  Richard Williamson   <rjw at apple.com>
+
+        More DOM/attributed string work.  Still need to fix more
+        inappropriate casting problems.
+        
+        * khtml/dom/dom_node.cpp:
+        (Node::lastChild):
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::lastChild):
+        (NodeBaseImpl::lastChild):
+        * khtml/xml/dom_nodeimpl.h:
+        * kwq/KWQKHTMLPartImpl.cpp:
+        (KWQKHTMLPartImpl::selectionStartOffset):
+        (KWQKHTMLPartImpl::selectionEndOffset):
+        (KWQKHTMLPartImpl::selectionStart):
+        (KWQKHTMLPartImpl::selectionEnd):
+        * kwq/KWQKHTMLPartImpl.h:
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge DOMDocument]):
+        (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
+        (attributedString):
+        (-[WebCoreBridge selectedAttributedString]):
+        (-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]):
+        * kwq/WebCoreDOMDocument.mm:
+        (-[WebCoreDOMDocumentType DOM::]):
+        (-[WebCoreDOMDocumentType name]):
+        (-[WebCoreDOMDocumentType entities]):
+        (-[WebCoreDOMDocumentType notations]):
+        (-[WebCoreDOMDocumentType publicId]):
+        (-[WebCoreDOMDocumentType systemId]):
+        (-[WebCoreDOMDocumentType internalSubset]):
+        (-[WebCoreDOMImplementation DOM::]):
+        (-[WebCoreDOMImplementation hasFeature::]):
+        (-[WebCoreDOMImplementation createDocument:::]):
+        (+[WebCoreDOMDocument documentWithImpl:DOM::]):
+        (-[WebCoreDOMDocument DOM::]):
+        (-[WebCoreDOMDocument doctype]):
+        (-[WebCoreDOMDocument implementation]):
+        (-[WebCoreDOMDocument documentElement]):
+        (-[WebCoreDOMDocument createElement:]):
+        (-[WebCoreDOMDocument createElementNS::]):
+        (-[WebCoreDOMDocument createDocumentFragment]):
+        (-[WebCoreDOMDocument createTextNode:]):
+        (-[WebCoreDOMDocument createComment:]):
+        (-[WebCoreDOMDocument createCDATASection:]):
+        (-[WebCoreDOMDocument createProcessingInstruction::]):
+        (-[WebCoreDOMDocument createAttribute:]):
+        (-[WebCoreDOMDocument createAttributeNS::]):
+        (-[WebCoreDOMDocument createEntityReference:]):
+        (-[WebCoreDOMDocument getElementById:]):
+        (-[WebCoreDOMDocument getElementsByTagName:]):
+        (-[WebCoreDOMDocument getElementsByTagNameNS::]):
+        (-[WebCoreDOMDocument importNode::]):
+        * kwq/WebCoreDOMNode.mm:
+        (-[WebCoreDOMNode initWithImpl:DOM::]):
+        (-[WebCoreDOMNode firstChild]):
+        (-[WebCoreDOMNode lastChild]):
+        * kwq/WebCoreDOMPrivate.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
+        (recursive_toHTML):
+        (attributedString):
+
 2002-10-11  David Hyatt  <hyatt at apple.com>
 
 	Fix for 3058829, assertion caused by table cell with
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 193102d..371c459 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,67 @@
+2002-10-11  Richard Williamson   <rjw at apple.com>
+
+        More DOM/attributed string work.  Still need to fix more
+        inappropriate casting problems.
+        
+        * khtml/dom/dom_node.cpp:
+        (Node::lastChild):
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::lastChild):
+        (NodeBaseImpl::lastChild):
+        * khtml/xml/dom_nodeimpl.h:
+        * kwq/KWQKHTMLPartImpl.cpp:
+        (KWQKHTMLPartImpl::selectionStartOffset):
+        (KWQKHTMLPartImpl::selectionEndOffset):
+        (KWQKHTMLPartImpl::selectionStart):
+        (KWQKHTMLPartImpl::selectionEnd):
+        * kwq/KWQKHTMLPartImpl.h:
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge DOMDocument]):
+        (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
+        (attributedString):
+        (-[WebCoreBridge selectedAttributedString]):
+        (-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]):
+        * kwq/WebCoreDOMDocument.mm:
+        (-[WebCoreDOMDocumentType DOM::]):
+        (-[WebCoreDOMDocumentType name]):
+        (-[WebCoreDOMDocumentType entities]):
+        (-[WebCoreDOMDocumentType notations]):
+        (-[WebCoreDOMDocumentType publicId]):
+        (-[WebCoreDOMDocumentType systemId]):
+        (-[WebCoreDOMDocumentType internalSubset]):
+        (-[WebCoreDOMImplementation DOM::]):
+        (-[WebCoreDOMImplementation hasFeature::]):
+        (-[WebCoreDOMImplementation createDocument:::]):
+        (+[WebCoreDOMDocument documentWithImpl:DOM::]):
+        (-[WebCoreDOMDocument DOM::]):
+        (-[WebCoreDOMDocument doctype]):
+        (-[WebCoreDOMDocument implementation]):
+        (-[WebCoreDOMDocument documentElement]):
+        (-[WebCoreDOMDocument createElement:]):
+        (-[WebCoreDOMDocument createElementNS::]):
+        (-[WebCoreDOMDocument createDocumentFragment]):
+        (-[WebCoreDOMDocument createTextNode:]):
+        (-[WebCoreDOMDocument createComment:]):
+        (-[WebCoreDOMDocument createCDATASection:]):
+        (-[WebCoreDOMDocument createProcessingInstruction::]):
+        (-[WebCoreDOMDocument createAttribute:]):
+        (-[WebCoreDOMDocument createAttributeNS::]):
+        (-[WebCoreDOMDocument createEntityReference:]):
+        (-[WebCoreDOMDocument getElementById:]):
+        (-[WebCoreDOMDocument getElementsByTagName:]):
+        (-[WebCoreDOMDocument getElementsByTagNameNS::]):
+        (-[WebCoreDOMDocument importNode::]):
+        * kwq/WebCoreDOMNode.mm:
+        (-[WebCoreDOMNode initWithImpl:DOM::]):
+        (-[WebCoreDOMNode firstChild]):
+        (-[WebCoreDOMNode lastChild]):
+        * kwq/WebCoreDOMPrivate.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
+        (recursive_toHTML):
+        (attributedString):
+
 2002-10-11  David Hyatt  <hyatt at apple.com>
 
 	Fix for 3058829, assertion caused by table cell with
diff --git a/WebCore/khtml/xml/dom_nodeimpl.h b/WebCore/khtml/xml/dom_nodeimpl.h
index 9cd4df4..e86e426 100644
--- a/WebCore/khtml/xml/dom_nodeimpl.h
+++ b/WebCore/khtml/xml/dom_nodeimpl.h
@@ -427,7 +427,7 @@ public:
     // check for being (grand-..)father:
     bool checkNoOwner( NodeImpl *other, int &exceptioncode );
 
-protected:
+//protected:
     NodeImpl *_first;
     NodeImpl *_last;
 
diff --git a/WebCore/kwq/KWQKHTMLPart.cpp b/WebCore/kwq/KWQKHTMLPart.cpp
index de6bfa7..34c8754 100644
--- a/WebCore/kwq/KWQKHTMLPart.cpp
+++ b/WebCore/kwq/KWQKHTMLPart.cpp
@@ -42,3 +42,9 @@ bool KWQKHTMLPartImpl::isFrameSet()
     NodeImpl *body = static_cast<HTMLDocumentImpl *>(document)->body();
     return body && body->renderer() && body->id() == ID_FRAMESET;
 }
+
+
+int KWQKHTMLPartImpl::selectionStartOffset() const { return d->m_startOffset; }
+int KWQKHTMLPartImpl::selectionEndOffset() const { return d->m_endOffset; }
+DOM::NodeImpl *KWQKHTMLPartImpl::selectionStart() const { return d->m_selectionStart.handle(); }
+DOM::NodeImpl *KWQKHTMLPartImpl::selectionEnd() const { return d->m_selectionEnd.handle(); }
diff --git a/WebCore/kwq/KWQKHTMLPart.h b/WebCore/kwq/KWQKHTMLPart.h
index 76f73b4..9a18e6b 100644
--- a/WebCore/kwq/KWQKHTMLPart.h
+++ b/WebCore/kwq/KWQKHTMLPart.h
@@ -131,6 +131,11 @@ public:
 
     QString requestedURLString() const;
     
+    int selectionStartOffset() const;
+    int selectionEndOffset() const;
+    DOM::NodeImpl *selectionStart() const;
+    DOM::NodeImpl *selectionEnd() const;
+    
 private:
     void setPolicyBaseURL(const DOM::DOMString &);
 
diff --git a/WebCore/kwq/KWQKHTMLPartImpl.cpp b/WebCore/kwq/KWQKHTMLPartImpl.cpp
index de6bfa7..34c8754 100644
--- a/WebCore/kwq/KWQKHTMLPartImpl.cpp
+++ b/WebCore/kwq/KWQKHTMLPartImpl.cpp
@@ -42,3 +42,9 @@ bool KWQKHTMLPartImpl::isFrameSet()
     NodeImpl *body = static_cast<HTMLDocumentImpl *>(document)->body();
     return body && body->renderer() && body->id() == ID_FRAMESET;
 }
+
+
+int KWQKHTMLPartImpl::selectionStartOffset() const { return d->m_startOffset; }
+int KWQKHTMLPartImpl::selectionEndOffset() const { return d->m_endOffset; }
+DOM::NodeImpl *KWQKHTMLPartImpl::selectionStart() const { return d->m_selectionStart.handle(); }
+DOM::NodeImpl *KWQKHTMLPartImpl::selectionEnd() const { return d->m_selectionEnd.handle(); }
diff --git a/WebCore/kwq/KWQKHTMLPartImpl.h b/WebCore/kwq/KWQKHTMLPartImpl.h
index 76f73b4..9a18e6b 100644
--- a/WebCore/kwq/KWQKHTMLPartImpl.h
+++ b/WebCore/kwq/KWQKHTMLPartImpl.h
@@ -131,6 +131,11 @@ public:
 
     QString requestedURLString() const;
     
+    int selectionStartOffset() const;
+    int selectionEndOffset() const;
+    DOM::NodeImpl *selectionStart() const;
+    DOM::NodeImpl *selectionEnd() const;
+    
 private:
     void setPolicyBaseURL(const DOM::DOMString &);
 
diff --git a/WebCore/kwq/WebCoreBridge.h b/WebCore/kwq/WebCoreBridge.h
index 983991e..779c500 100644
--- a/WebCore/kwq/WebCoreBridge.h
+++ b/WebCore/kwq/WebCoreBridge.h
@@ -140,6 +140,8 @@ typedef khtml::RenderPart KHTMLRenderPart;
 
 - (void)setSelectionFrom:(id<WebDOMNode>)start startOffset:(int)startOffset to:(id<WebDOMNode>)end endOffset:(int) endOffset;
 
+- (NSAttributedString *)attributedStringFrom: (id<WebDOMNode>)startNode startOffset: (int)startOffset to: (id<WebDOMNode>)endNode endOffset: (int)endOffset;
+
 @end
 
 // The WebCoreBridge protocol contains methods for use by the WebCore side of the bridge.
diff --git a/WebCore/kwq/WebCoreBridge.mm b/WebCore/kwq/WebCoreBridge.mm
index fa30150..beedc2a 100644
--- a/WebCore/kwq/WebCoreBridge.mm
+++ b/WebCore/kwq/WebCoreBridge.mm
@@ -25,13 +25,19 @@
 
 #import <WebCoreBridge.h>
 
+#import <dom_node.h>
+#import <dom_docimpl.h>
+#import <dom_nodeimpl.h>
 #import <khtml_part.h>
 #import <khtmlview.h>
-#import <dom_docimpl.h>
+#import <render_frames.h>
 #import <render_image.h>
 #import <render_object.h>
 #import <render_root.h>
-#import <render_frames.h>
+#import <render_style.h>
+
+#import <qfont.h>
+
 #import <KWQAssertions.h>
 #import <html/html_documentimpl.h>
 #import <xml/dom_nodeimpl.h>
@@ -544,6 +550,7 @@ using khtml::RenderPart;
 - (id<WebDOMDocument>)DOMDocument
 {
     DocumentImpl *doc = part->impl->document();
+    printf ("(id<WebDOMDocument>)DOMDocument doc = %p, lastChild = %p\n", doc, doc->lastChild());
     return [WebCoreDOMDocument documentWithImpl:doc];
 }
 
@@ -554,4 +561,169 @@ using khtml::RenderPart;
     doc->setSelection ([(WebCoreDOMNode *)start impl], startOffset, [(WebCoreDOMNode *)end impl], endOffset);
 }
 
+
+static NSAttributedString *attributedString(DOM::NodeImpl *_startNode, int startOffset, DOM::NodeImpl *endNode, int endOffset)
+{
+    bool hasNewLine = true;
+    DOM::Node n = _startNode;
+    khtml::RenderObject *renderer;
+    khtml::RenderStyle *style;
+    NSFont *font;
+    NSMutableAttributedString *result = [[[NSMutableAttributedString alloc] init] autorelease];
+    NSAttributedString *partialString;
+    
+    while(!n.isNull()) {
+        if(n.nodeType() == DOM::Node::TEXT_NODE) {
+            QString text;
+            QString str = n.nodeValue().string();
+            
+            renderer = n.handle()->renderer();
+            font = nil;
+            if (renderer){
+                style = renderer->style();
+                if (style)
+                    font = style->font().getNSFont();
+            }
+            
+            hasNewLine = false;            
+            if(n == _startNode && n == endNode && startOffset >=0 && endOffset >= 0)
+                text = str.mid(startOffset, endOffset - startOffset);
+            else if(n == _startNode && startOffset >= 0)
+                text = str.mid(startOffset);
+            else if(n == endNode && endOffset >= 0)
+                text = str.left(endOffset);
+            else
+                text = str;
+                
+            if (font)
+                partialString = [[NSAttributedString alloc] initWithString: text.getNSString() attributes: [NSDictionary dictionaryWithObjectsAndKeys: font, NSFontAttributeName, 0]];
+            else
+                partialString = [[NSAttributedString alloc] initWithString: text.getNSString() attributes: nil];
+                
+            [result appendAttributedString: partialString];
+            [partialString release];
+        }
+        else {
+            // This is our simple HTML -> ASCII transformation:
+            QString text;
+            unsigned short _id = n.elementId();
+            switch(_id) {
+                case ID_BR:
+                    text += "\n";
+                    hasNewLine = true;
+                break;
+        
+                case ID_TD:
+                case ID_TH:
+                case ID_HR:
+                case ID_OL:
+                case ID_UL:
+                case ID_LI:
+                case ID_DD:
+                case ID_DL:
+                case ID_DT:
+                case ID_PRE:
+                case ID_BLOCKQUOTE:
+                case ID_DIV:
+                    if (!hasNewLine)
+                        text += "\n";
+                    hasNewLine = true;
+                break;
+                case ID_P:
+                case ID_TR:
+                case ID_H1:
+                case ID_H2:
+                case ID_H3:
+                case ID_H4:
+                case ID_H5:
+                case ID_H6:
+                    if (!hasNewLine)
+                        text += "\n";
+                    text += "\n";
+                    hasNewLine = true;
+                break;
+            }
+            partialString = [[NSAttributedString alloc] initWithString: text.getNSString() attributes: nil];
+            [result appendAttributedString: partialString];
+            [partialString release];
+        }
+        
+        if(n == endNode)
+            break;
+        
+        DOM::Node next = n.firstChild();
+        if(next.isNull())
+            next = n.nextSibling();
+        while( next.isNull() && !n.parentNode().isNull() ) {
+            QString text;
+            n = n.parentNode();
+            next = n.nextSibling();
+            
+            unsigned short _id = n.elementId();
+            switch(_id) {
+                case ID_TD:
+                case ID_TH:
+                case ID_HR:
+                case ID_OL:
+                case ID_UL:
+                case ID_LI:
+                case ID_DD:
+                case ID_DL:
+                case ID_DT:
+                case ID_PRE:
+                case ID_BLOCKQUOTE:
+                case ID_DIV:
+                if (!hasNewLine)
+                    text += "\n";
+                hasNewLine = true;
+                break;
+                case ID_P:
+                case ID_TR:
+                case ID_H1:
+                case ID_H2:
+                case ID_H3:
+                case ID_H4:
+                case ID_H5:
+                case ID_H6:
+                if (!hasNewLine)
+                    text += "\n";
+                // An extra newline is needed at the start, not the end, of these types of tags,
+                // so don't add another here.
+                hasNewLine = true;
+                break;
+            }
+            partialString = [[NSAttributedString alloc] initWithString: text.getNSString() attributes: nil];
+            [result appendAttributedString: partialString];
+            [partialString release];
+        }
+    
+        n = next;
+    }
+/*    
+    int start = 0;
+    int end = text.length();
+    
+    // Strip leading LFs
+    while ((start < end) && (text[start] == '\n'))
+        start++;
+    
+    // Strip excessive trailing LFs
+    while ((start < (end-1)) && (text[end-1] == '\n') && (text[end-2] == '\n'))
+        end--;
+        
+    text.mid(start, end-start);
+*/    
+    return result;
+}
+
+- (NSAttributedString *)selectedAttributedString
+{
+    return attributedString (part->impl->selectionStart(), part->impl->selectionStartOffset(), part->impl->selectionEnd(), part->impl->selectionEndOffset());
+}
+
+- (NSAttributedString *)attributedStringFrom: (id<WebDOMNode>)startNode startOffset: (int)startOffset to: (id<WebDOMNode>)endNode endOffset: (int)endOffset
+{
+    return attributedString ([(WebCoreDOMNode *)startNode impl], startOffset, [(WebCoreDOMNode *)endNode impl], endOffset);
+}
+
 @end
diff --git a/WebCore/kwq/WebCoreDOMDocument.mm b/WebCore/kwq/WebCoreDOMDocument.mm
index 6660879..31e42a7 100644
--- a/WebCore/kwq/WebCoreDOMDocument.mm
+++ b/WebCore/kwq/WebCoreDOMDocument.mm
@@ -41,48 +41,42 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
     return [[(WebCoreDOMDocumentType *)[[self class] alloc] initWithImpl: _impl] autorelease];
 }
 
-- initWithImpl: (DOM::DocumentTypeImpl *)coreImpl
+- (DOM::DocumentTypeImpl *)documentTypeImpl
 {
-    [super initWithImpl:coreImpl];
-    return self;
-}
-
-- (DOM::DocumentTypeImpl *)impl
-{
-    return (DOM::DocumentTypeImpl *)impl;
+    return static_cast<DOM::DocumentTypeImpl *>(impl);
 }
 
 - (NSString *)name
 {
-    DOM::DOMString name = [self impl]->name();
+    DOM::DOMString name = [self documentTypeImpl]->name();
     return domStringToNSString(name);
 }
 
 - (id<WebDOMNamedNodeMap>)entities
 {
-    return [WebCoreDOMNamedNodeMap namedNodeMapWithImpl:[self impl]->entities()];
+    return [WebCoreDOMNamedNodeMap namedNodeMapWithImpl:[self documentTypeImpl]->entities()];
 }
 
 - (id<WebDOMNamedNodeMap>)notations
 {
-    return [WebCoreDOMNamedNodeMap namedNodeMapWithImpl:[self impl]->entities()];
+    return [WebCoreDOMNamedNodeMap namedNodeMapWithImpl:[self documentTypeImpl]->entities()];
 }
 
 - (NSString *)publicId
 {
-    DOM::DOMString publicId = [self impl]->publicId();
+    DOM::DOMString publicId = [self documentTypeImpl]->publicId();
     return domStringToNSString(publicId);
 }
 
 - (NSString *)systemId
 {
-    DOM::DOMString systemId = [self impl]->systemId();
+    DOM::DOMString systemId = [self documentTypeImpl]->systemId();
     return domStringToNSString(systemId);
 }
 
 - (NSString *)internalSubset
 {
-    DOM::DOMString internalSubset = [self impl]->internalSubset();
+    DOM::DOMString internalSubset = [self documentTypeImpl]->internalSubset();
     return domStringToNSString(internalSubset);
 }
 @end
@@ -95,28 +89,20 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
     return [[(WebCoreDOMImplementation *)[[self class] alloc] initWithImpl: _impl] autorelease];
 }
 
-- initWithImpl: (DOM::DOMImplementationImpl *)coreImpl
-{
-    [super init];
-    impl = coreImpl;
-    impl->ref();
-    return self;
-}
-
 - (void)dealloc
 {
     impl->deref();
     [super dealloc];
 }
 
-- (DOM::DOMImplementationImpl *)impl
+- (DOM::DOMImplementationImpl *)DOMImplementationImpl
 {
-    return (DOM::DOMImplementationImpl *)impl;
+    return static_cast<DOM::DOMImplementationImpl *>(impl);
 }
 
 - (BOOL)hasFeature: (NSString *)feature : (NSString *)version
 {
-    return [self impl]->hasFeature(NSStringToDOMString(feature),NSStringToDOMString(version));
+    return [self DOMImplementationImpl]->hasFeature(NSStringToDOMString(feature),NSStringToDOMString(version));
 }
 
 - (id<WebDOMDocumentType>)createDocumentType: (NSString *)qualifiedName :(NSString *)publicId :(NSString *)systemId;
@@ -124,7 +110,7 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
     DOM::DOMString _qualifiedName = NSStringToDOMString(qualifiedName);
     DOM::DOMString _publicId = NSStringToDOMString(publicId);
     DOM::DOMString _systemId = NSStringToDOMString(systemId);
-    DOM::DOMImplementation instance = DOM::DOMImplementationImpl::createInstance([self impl]);
+    DOM::DOMImplementation instance = DOM::DOMImplementationImpl::createInstance([self DOMImplementationImpl]);
     DOM::DocumentType ret;
     
     ret = instance.createDocumentType (_qualifiedName, _publicId, _systemId);
@@ -136,8 +122,8 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
 {
     DOM::DOMString _namespaceURI = NSStringToDOMString(namespaceURI);
     DOM::DOMString _qualifiedName = NSStringToDOMString(qualifiedName);
-    DOM::DOMImplementation instance = DOM::DOMImplementationImpl::createInstance([self impl]);
-    DOM::DocumentType docTypeInstance = DOM::DocumentTypeImpl::createInstance([(WebCoreDOMDocumentType *)doctype impl]);
+    DOM::DOMImplementation instance = DOM::DOMImplementationImpl::createInstance([self DOMImplementationImpl]);
+    DOM::DocumentType docTypeInstance = DOM::DocumentTypeImpl::createInstance([(WebCoreDOMDocumentType *)doctype documentTypeImpl]);
     DOM::Document ret;
     
     ret = instance.createDocument (_namespaceURI, _qualifiedName, docTypeInstance);
@@ -152,76 +138,72 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
 
 + (WebCoreDOMDocument *)documentWithImpl: (DOM::DocumentImpl *)_impl
 {
-    return [[(WebCoreDOMDocument *)[[self class] alloc] initWithImpl: _impl] autorelease];
+    printf ("documentWithImpl:  _impl = %p, lastChild = %p\n", _impl, _impl->lastChild());
+    return [[(WebCoreDOMDocument *)[WebCoreDOMDocument alloc] initWithImpl: _impl] autorelease];
 }
 
-- initWithImpl: (DOM::DocumentImpl *)coreImpl
+- (DOM::DocumentImpl *)documentImpl
 {
-    [super initWithImpl:coreImpl];
-    return self;
+    return static_cast<DOM::DocumentImpl *>(impl);
 }
 
-- (DOM::DocumentImpl *)impl
-{
-    return (DOM::DocumentImpl *)impl;
-}
 
 - (id<WebDOMDocumentType>)doctype
 {
-    return [WebCoreDOMDocumentType documentTypeWithImpl: [self impl]->doctype()];
+    return [WebCoreDOMDocumentType documentTypeWithImpl: [self documentImpl]->doctype()];
 }
 
 - (id<WebDOMImplementation>)implementation
 {
-    return [WebCoreDOMImplementation implementationWithImpl: [self impl]->implementation()];
+    return [WebCoreDOMImplementation implementationWithImpl: [self documentImpl]->implementation()];
 }
 
 - (id<WebDOMElement>)documentElement
 {
-    return [WebCoreDOMElement elementWithImpl: [self impl]->documentElement()];
+    return [WebCoreDOMElement elementWithImpl: [self documentImpl]->documentElement()];
 }
 
 - (id<WebDOMElement>)createElement:(NSString *)tagName
 {
-    return [WebCoreDOMElement elementWithImpl: [self impl]->createElement(NSStringToDOMString(tagName))];
+    return [WebCoreDOMElement elementWithImpl: [self documentImpl]->createElement(NSStringToDOMString(tagName))];
 }
 
 - (id<WebDOMElement>)createElementNS:(NSString *)namespaceURI :(NSString *)qualifiedName
 {
-    return [WebCoreDOMElement elementWithImpl: [self impl]->createElementNS(NSStringToDOMString(namespaceURI),NSStringToDOMString(qualifiedName))];
+    return [WebCoreDOMElement elementWithImpl: [self documentImpl]->createElementNS(NSStringToDOMString(namespaceURI),NSStringToDOMString(qualifiedName))];
 }
 
 - (id<WebDOMDocumentFragment>)createDocumentFragment
 {
-    return [WebCoreDOMDocumentFragment documentFragmentWithImpl: [self impl]->createDocumentFragment()];
+    return [WebCoreDOMDocumentFragment documentFragmentWithImpl: [self documentImpl]->createDocumentFragment()];
 }
 
 - (id<WebDOMText>)createTextNode:(NSString *)data
 {
-    return [WebCoreDOMText textWithImpl: [self impl]->createTextNode(NSStringToDOMString(data))];
+    return [WebCoreDOMText textWithImpl: [self documentImpl]->createTextNode(NSStringToDOMString(data))];
 }
 
 - (id<WebDOMComment>)createComment:(NSString *)data
 {
-    return [WebCoreDOMComment commentWithImpl: [self impl]->createComment(NSStringToDOMString(data))];
+    return [WebCoreDOMComment commentWithImpl: [self documentImpl]->createComment(NSStringToDOMString(data))];
 }
 
 - (id<WebDOMCDATASection>)createCDATASection:(NSString *)data
 {
-    return [WebCoreDOMCDATASection CDATASectionWithImpl: [self impl]->createCDATASection(NSStringToDOMString(data))];
+    return [WebCoreDOMCDATASection CDATASectionWithImpl: [self documentImpl]->createCDATASection(NSStringToDOMString(data))];
 }
 
 - (id<WebDOMProcessingInstruction>)createProcessingInstruction:(NSString *)target :(NSString *)data
 {
     DOM::DOMString _target = NSStringToDOMString(target);
     DOM::DOMString _data = NSStringToDOMString(data);
-    return [WebCoreDOMProcessingInstruction processingInstructionWithImpl: [self impl]->createProcessingInstruction(_target,_data)];
+    return [WebCoreDOMProcessingInstruction processingInstructionWithImpl: [self documentImpl]->createProcessingInstruction(_target,_data)];
 }
 
 - (id<WebDOMAttr>)createAttribute:(NSString *)name
 {
     DOM::DOMString _name = NSStringToDOMString(name);
-    DOM::Document instance = DOM::DocumentImpl::createInstance([self impl]);
+    DOM::Document instance = DOM::DocumentImpl::createInstance([self documentImpl]);
     DOM::AttrImpl *attr = (DOM::AttrImpl *)instance.createAttribute(_name).handle();
     return [WebCoreDOMAttr attrWithImpl: attr];
 }
@@ -230,7 +212,7 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
 {
     DOM::DOMString _namespaceURI = NSStringToDOMString(namespaceURI);
     DOM::DOMString _qualifiedName = NSStringToDOMString(qualifiedName);
-    DOM::Document instance = DOM::DocumentImpl::createInstance([self impl]);
+    DOM::Document instance = DOM::DocumentImpl::createInstance([self documentImpl]);
     DOM::Attr ret;
     
     ret= instance.createAttributeNS (_namespaceURI,_qualifiedName);
@@ -240,19 +222,19 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
 
 - (id<WebDOMEntityReference>)createEntityReference:(NSString *)name
 {
-    return [WebCoreDOMEntityReference entityReferenceWithImpl: [self impl]->createEntityReference(NSStringToDOMString(name))];
+    return [WebCoreDOMEntityReference entityReferenceWithImpl: [self documentImpl]->createEntityReference(NSStringToDOMString(name))];
 }
 
 - (id<WebDOMElement>)getElementById:(NSString *)elementId
 {
     DOM::DOMString _elementId = NSStringToDOMString(elementId);
-    return [WebCoreDOMElement elementWithImpl: [self impl]->getElementById(_elementId)];
+    return [WebCoreDOMElement elementWithImpl: [self documentImpl]->getElementById(_elementId)];
 }
 
 - (id<WebDOMNodeList>)getElementsByTagName:(NSString *)tagname
 {
     DOM::DOMString _tagname = NSStringToDOMString(tagname);
-    DOM::Document instance = DOM::DocumentImpl::createInstance([self impl]);
+    DOM::Document instance = DOM::DocumentImpl::createInstance([self documentImpl]);
     DOM::NodeListImpl *nodeList = (DOM::NodeListImpl *)instance.getElementsByTagName(_tagname).handle();
     return [WebCoreDOMNodeList nodeListWithImpl: nodeList];
 }
@@ -261,7 +243,7 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
 {
     DOM::DOMString _namespaceURI = NSStringToDOMString(namespaceURI);
     DOM::DOMString _localName = NSStringToDOMString(localName);
-    DOM::Document instance = DOM::DocumentImpl::createInstance([self impl]);
+    DOM::Document instance = DOM::DocumentImpl::createInstance([self documentImpl]);
     DOM::NodeList ret;
     
     ret = instance.getElementsByTagNameNS(_namespaceURI,_localName);
@@ -272,7 +254,7 @@ DOM::DOMString NSStringToDOMString(NSString *aString)
 - (id<WebDOMNode>)importNode:importedNode :(BOOL)deep
 {
     DOM::Node importNode([(WebCoreDOMNode *)importedNode impl]);
-    DOM::Document instance = DOM::DocumentImpl::createInstance([self impl]);
+    DOM::Document instance = DOM::DocumentImpl::createInstance([self documentImpl]);
     DOM::Node ret;
     
     ret = instance.importNode(importNode,deep);
diff --git a/WebCore/kwq/WebCoreDOMNode.mm b/WebCore/kwq/WebCoreDOMNode.mm
index d70d9c6..dac9fa5 100644
--- a/WebCore/kwq/WebCoreDOMNode.mm
+++ b/WebCore/kwq/WebCoreDOMNode.mm
@@ -50,7 +50,7 @@ DOM::ProcessingInstruction DOM::ProcessingInstructionImpl::createInstance(Proces
 {
     [super init];
     impl = coreImpl;
-    impl->ref();
+    impl->ref();        
     return self;
 }
 
@@ -101,12 +101,25 @@ DOM::ProcessingInstruction DOM::ProcessingInstructionImpl::createInstance(Proces
 
 - (id<WebDOMNode>)firstChild
 {
-    return [WebCoreDOMNode nodeWithImpl: [self impl]->firstChild()];
+    DOM::Node instance([self impl]);
+    DOM::NodeImpl *firstChild = instance.firstChild().handle();
+    
+    if (firstChild)
+        return [WebCoreDOMNode nodeWithImpl: firstChild];
+    return nil;
 }
 
 - (id<WebDOMNode>)lastChild
 {
-    return [WebCoreDOMNode nodeWithImpl: [self impl]->lastChild()];
+    DOM::Node instance([self impl]);
+    DOM::NodeImpl *lastChild = instance.lastChild().handle();
+    
+    printf ("lastChild = %p\n", lastChild);
+    
+    if (lastChild)
+        return [WebCoreDOMNode nodeWithImpl: lastChild];
+
+    return nil;
 }
 
 - (id<WebDOMNode>) previousSibling
diff --git a/WebCore/kwq/WebCoreDOMPrivate.h b/WebCore/kwq/WebCoreDOMPrivate.h
index b25cc0c..a823ce0 100644
--- a/WebCore/kwq/WebCoreDOMPrivate.h
+++ b/WebCore/kwq/WebCoreDOMPrivate.h
@@ -3,6 +3,7 @@
     Copyright 2002, Apple, Inc. All rights reserved.
 */
 #include <dom/dom_element.h>
+#include <dom/dom_node.h>
 #include <dom/dom_string.h>
 #include <dom/dom_text.h>
 #include <dom/dom_xml.h>
@@ -12,6 +13,7 @@
 #include <xml/dom2_eventsimpl.h>
 #include <xml/xml_tokenizer.h>
 #include <xml/dom_docimpl.h>
+#include <xml/dom_nodeimpl.h>
 
 #import "WebCoreDOM.h"
 
@@ -20,20 +22,18 @@ extern DOM::DOMString NSStringToDOMString(NSString *aString);
 
 @interface WebCoreDOMDocumentType (CorePrivate)
 + (WebCoreDOMDocumentType *)documentTypeWithImpl: (DOM::DocumentTypeImpl *)impl;
-- initWithImpl: (DOM::DocumentTypeImpl *)coreImpl;
-- (DOM::DocumentTypeImpl *)impl;
+- (DOM::DocumentTypeImpl *)documentTypeImpl;
 @end
 
 @interface WebCoreDOMImplementation (CorePrivate)
 + (WebCoreDOMImplementation *)implementationWithImpl: (DOM::DOMImplementationImpl *)impl;
 - initWithImpl: (DOM::DOMImplementationImpl *)coreImpl;
-- (DOM::DOMImplementationImpl *)impl;
+- (DOM::DOMImplementationImpl *)DOMImplementationImpl;
 @end
 
 @interface WebCoreDOMDocument (CorePrivate)
 + (WebCoreDOMDocument *)documentWithImpl: (DOM::DocumentImpl *)impl;
-- initWithImpl: (DOM::DocumentImpl *)coreImpl;
-- (DOM::DocumentImpl *)impl;
+- (DOM::DocumentImpl *)documentImpl;
 @end
 
 @interface WebCoreDOMNamedNodeMap (CorePrivate)
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index cf9837b..cd9f0ca 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,17 @@
+2002-10-11  Richard Williamson   <rjw at apple.com>
+
+        More DOM/attributed string work.
+        
+        * WebView.subproj/WebHTMLRepresentation.h:
+        * WebView.subproj/WebHTMLRepresentation.m:
+        (-[WebHTMLRepresentation attributedStringFrom:startOffset:to:endOffset:]):
+        * WebView.subproj/WebHTMLRepresentationPrivate.h:
+
+2002-10-11  Richard Williamson   <rjw at apple.com>
+
+        * WebView.subproj/WebHTMLRepresentation.m:
+        * WebView.subproj/WebHTMLRepresentationPrivate.h:
+
 2002-10-11  Ken Kocienda  <kocienda at apple.com>
 
 	Fixed uninitialized variable build breaker I got when
diff --git a/WebKit/ChangeLog-2002-12-03 b/WebKit/ChangeLog-2002-12-03
index cf9837b..cd9f0ca 100644
--- a/WebKit/ChangeLog-2002-12-03
+++ b/WebKit/ChangeLog-2002-12-03
@@ -1,3 +1,17 @@
+2002-10-11  Richard Williamson   <rjw at apple.com>
+
+        More DOM/attributed string work.
+        
+        * WebView.subproj/WebHTMLRepresentation.h:
+        * WebView.subproj/WebHTMLRepresentation.m:
+        (-[WebHTMLRepresentation attributedStringFrom:startOffset:to:endOffset:]):
+        * WebView.subproj/WebHTMLRepresentationPrivate.h:
+
+2002-10-11  Richard Williamson   <rjw at apple.com>
+
+        * WebView.subproj/WebHTMLRepresentation.m:
+        * WebView.subproj/WebHTMLRepresentationPrivate.h:
+
 2002-10-11  Ken Kocienda  <kocienda at apple.com>
 
 	Fixed uninitialized variable build breaker I got when
diff --git a/WebKit/WebView.subproj/WebHTMLRepresentation.h b/WebKit/WebView.subproj/WebHTMLRepresentation.h
index 2d1dd92..1143efa 100644
--- a/WebKit/WebView.subproj/WebHTMLRepresentation.h
+++ b/WebKit/WebView.subproj/WebHTMLRepresentation.h
@@ -43,6 +43,8 @@
 */
 - (void)setSelectionFrom:(id<WebDOMNode>)start startOffset:(int)startOffset to:(id<WebDOMNode>)end endOffset:(int) endOffset;
 
+//- (NSAttributedString *)selectedAttributedString;
+
 /*!
     @method documentSource
     @abstract Get the current HTML reconstructed from the current state of the DOM.
@@ -50,10 +52,6 @@
 - (NSString *)reconstructedDocumentSource;
 
 
-/*!
-    @method attributedText
-    @discussion Return the document source as an attributed string.
-*/
-- (NSAttributedString *)attributedText;
+- (NSAttributedString *)attributedStringFrom: (id<WebDOMNode>)startNode startOffset: (int)startOffset to: (id<WebDOMNode>)endNode endOffset: (int)endOffset;
 
 @end
diff --git a/WebKit/WebView.subproj/WebHTMLRepresentation.m b/WebKit/WebView.subproj/WebHTMLRepresentation.m
index 2e32eb4..c0bacaf 100644
--- a/WebKit/WebView.subproj/WebHTMLRepresentation.m
+++ b/WebKit/WebView.subproj/WebHTMLRepresentation.m
@@ -95,5 +95,9 @@
     return nil;
 }
 
+- (NSAttributedString *)attributedStringFrom: (id<WebDOMNode>)startNode startOffset: (int)startOffset to: (id<WebDOMNode>)endNode endOffset: (int)endOffset
+{
+    return [_private->bridge attributedStringFrom: startNode startOffset: startOffset to: endNode endOffset: endOffset];
+}
 
 @end
diff --git a/WebKit/WebView.subproj/WebHTMLRepresentationPrivate.h b/WebKit/WebView.subproj/WebHTMLRepresentationPrivate.h
index f3bf1bb..c4ff384 100644
--- a/WebKit/WebView.subproj/WebHTMLRepresentationPrivate.h
+++ b/WebKit/WebView.subproj/WebHTMLRepresentationPrivate.h
@@ -9,4 +9,5 @@
 
 @interface WebHTMLRepresentation (WebPrivate)
 - (WebBridge *)_bridge;
+- (void)printDOMTree;
 @end

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list