b714796218960e33331a67278957339324e766eb
[WebKit-https.git] / Source / WebCore / xml / DOMParser.cpp
1 /*
2  *  Copyright (C) 2003, 2006, 2008 Apple Inc. All rights reserved.
3  *
4  *  This library is free software; you can redistribute it and/or
5  *  modify it under the terms of the GNU Lesser General Public
6  *  License as published by the Free Software Foundation; either
7  *  version 2 of the License, or (at your option) any later version.
8  *
9  *  This library is distributed in the hope that it will be useful,
10  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  *  Lesser General Public License for more details.
13  *
14  *  You should have received a copy of the GNU Lesser General Public
15  *  License along with this library; if not, write to the Free Software
16  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17  */
18
19 #include "config.h"
20 #include "DOMParser.h"
21
22 #include "DOMImplementation.h"
23 #include "SecurityOriginPolicy.h"
24
25 namespace WebCore {
26
27 inline DOMParser::DOMParser(Document& contextDocument)
28     : m_contextDocument(makeWeakPtr(contextDocument))
29 {
30 }
31
32 Ref<DOMParser> DOMParser::create(Document& contextDocument)
33 {
34     return adoptRef(*new DOMParser(contextDocument));
35 }
36
37 ExceptionOr<Ref<Document>> DOMParser::parseFromString(Document& callingDocument, const String& string, const String& contentType)
38 {
39     if (contentType != "text/html" && contentType != "text/xml" && contentType != "application/xml" && contentType != "application/xhtml+xml" && contentType != "image/svg+xml")
40         return Exception { TypeError };
41     auto document = DOMImplementation::createDocument(callingDocument.sessionID(), contentType, nullptr, URL { });
42     if (m_contextDocument)
43         document->setContextDocument(*m_contextDocument.get());
44     document->setContent(string);
45     if (m_contextDocument) {
46         document->setURL(m_contextDocument->url());
47         document->setSecurityOriginPolicy(m_contextDocument->securityOriginPolicy());
48     }
49     return document;
50 }
51
52 } // namespace WebCore