Home | History | Annotate | Download | only in xml
      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 "core/xml/DOMParser.h"
     21 
     22 #include "core/dom/DOMImplementation.h"
     23 #include "core/dom/ExceptionCode.h"
     24 #include "wtf/text/WTFString.h"
     25 
     26 namespace WebCore {
     27 
     28 PassRefPtrWillBeRawPtr<Document> DOMParser::parseFromString(const String& str, const String& contentType, ExceptionState& exceptionState)
     29 {
     30     // HTML5 is very explicit about which types we're allowed to support here:
     31     // http://domparsing.spec.whatwg.org/#the-domparser-interface
     32     if (contentType != "text/html"
     33         && contentType != "text/xml"
     34         && contentType != "application/xml"
     35         && contentType != "application/xhtml+xml"
     36         && contentType != "image/svg+xml") {
     37         exceptionState.throwTypeError("Unsupported mime-type specified.");
     38         return nullptr;
     39     }
     40 
     41     RefPtrWillBeRawPtr<Document> doc = DOMImplementation::createDocument(contentType, 0, KURL(), false);
     42     doc->setContent(str);
     43     return doc.release();
     44 }
     45 
     46 } // namespace WebCore
     47