Show
Ignore:
Timestamp:
06/15/08 14:53:29 (5 months ago)
Author:
weinig@apple.com
Message:

WebCore:

2008-06-15 Darin Adler <darin@apple.com>

Reviewed and tweaked by Sam Weinig.

Fix for <rdar://problem/5908591>
https://bugs.webkit.org/show_bug.cgi?id=18743

Makes DOMImplementation per-document.

Test: http/tests/security/cross-frame-access-DOMImplementation.html

  • bindings/objc/DOMImplementationFront.cpp: (WebCore::DOMImplementationFront::getInterface):
  • bindings/objc/DOMImplementationFront.h:
  • dom/DOMImplementation.cpp: (WebCore::DOMImplementation::hasFeature): (WebCore::DOMImplementation::createDocumentType): (WebCore::DOMImplementation::getInterface): (WebCore::DOMImplementation::createDocument): (WebCore::DOMImplementation::createHTMLDocument):
  • dom/DOMImplementation.h: (WebCore::DOMImplementation::create):
  • dom/Document.cpp: (WebCore::Document::Document): (WebCore::Document::implementation):
  • dom/Document.h: (WebCore::Document::create): (WebCore::Document::createXHTML):
  • dom/DocumentType.cpp:
  • dom/DocumentType.h: (WebCore::DocumentType::create): (WebCore::DocumentType::entities): (WebCore::DocumentType::notations): (WebCore::DocumentType::name): (WebCore::DocumentType::publicId): (WebCore::DocumentType::systemId): (WebCore::DocumentType::internalSubset):
  • dom/Node.cpp: (WebCore::Node::isSupported):
  • dom/XMLTokenizer.cpp: (WebCore::XMLTokenizer::internalSubset):
  • html/HTMLDocument.cpp: (WebCore::HTMLDocument::HTMLDocument):
  • html/HTMLDocument.h: (WebCore::HTMLDocument::create): (WebCore::HTMLDocument::isHTMLDocument):
  • html/HTMLParser.cpp: (WebCore::HTMLParser::parseDoctypeToken):
  • html/HTMLViewSourceDocument.cpp: (WebCore::HTMLViewSourceDocument::HTMLViewSourceDocument): (WebCore::HTMLViewSourceDocument::createTokenizer):
  • html/HTMLViewSourceDocument.h: (WebCore::HTMLViewSourceDocument::create):
  • loader/CachedFont.cpp: (WebCore::CachedFont::ensureSVGFontData):
  • loader/FTPDirectoryDocument.cpp: (WebCore::FTPDirectoryDocument::FTPDirectoryDocument):
  • loader/FTPDirectoryDocument.h: (WebCore::FTPDirectoryDocument::create):
  • loader/FrameLoader.cpp: (WebCore::FrameLoader::begin):
  • loader/ImageDocument.cpp: (WebCore::ImageDocument::ImageDocument):
  • loader/ImageDocument.h: (WebCore::ImageDocument::create): (WebCore::ImageDocument::isImageDocument):
  • loader/PluginDocument.cpp: (WebCore::PluginDocument::PluginDocument):
  • loader/PluginDocument.h: (WebCore::PluginDocument::create): (WebCore::PluginDocument::isPluginDocument):
  • loader/TextDocument.cpp: (WebCore::TextTokenizer::checkBuffer): (WebCore::TextDocument::TextDocument): (WebCore::createTextTokenizer):
  • loader/TextDocument.h: (WebCore::TextDocument::create):
  • svg/SVGDocument.cpp: (WebCore::SVGDocument::SVGDocument):
  • svg/SVGDocument.h: (WebCore::SVGDocument::create):
  • svg/SVGElement.cpp: (WebCore::SVGElement::isSupported):
  • svg/SVGTests.cpp: (WebCore::SVGTests::isValid):
  • xml/DOMParser.cpp: (WebCore::DOMParser::parseFromString):

LayoutTests:

2008-06-15 Darin Adler <darin@apple.com>

Reviewed and tweaked by Sam Weinig.

Test for <rdar://problem/5908591>
https://bugs.webkit.org/show_bug.cgi?id=18743

  • http/tests/security/cross-frame-access-DOMImplementation-expected.txt: Added.
  • http/tests/security/cross-frame-access-DOMImplementation.html: Added.
  • http/tests/security/resources/cross-frame-iframe-for-DOMImplementation-test.html: Added.
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/html/HTMLDocument.h

    r31439 r34574  
    3434class HTMLDocument : public Document, public CachedResourceClient { 
    3535public: 
    36     HTMLDocument(DOMImplementation*, Frame*); 
     36    static PassRefPtr<HTMLDocument> create(Frame* frame) 
     37    { 
     38        return new HTMLDocument(frame); 
     39    } 
    3740    virtual ~HTMLDocument(); 
    38  
    39     virtual bool isHTMLDocument() const { return true; } 
    4041 
    4142    int width(); 
     
    6970    void releaseEvents(); 
    7071 
    71     virtual Tokenizer* createTokenizer(); 
    72  
    7372    virtual bool childAllowed(Node*); 
    7473 
     
    8584    typedef HashMap<AtomicStringImpl*, int> NameCountMap; 
    8685 
     86protected: 
     87    HTMLDocument(Frame*); 
     88 
    8789private: 
     90    virtual bool isHTMLDocument() const { return true; } 
     91    virtual Tokenizer* createTokenizer(); 
    8892    virtual void determineParseMode(); 
    8993 
    90 private: 
    9194    NameCountMap m_namedItemCounts; 
    9295    NameCountMap m_extraNamedItemCounts;