OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. |
3 * Copyright (C) 2008, 2009, 2010, 2011 Google Inc. All rights reserved. | 3 * Copyright (C) 2008, 2009, 2010, 2011 Google Inc. All rights reserved. |
4 * Copyright (C) 2011 Igalia S.L. | 4 * Copyright (C) 2011 Igalia S.L. |
5 * Copyright (C) 2011 Motorola Mobility. All rights reserved. | 5 * Copyright (C) 2011 Motorola Mobility. All rights reserved. |
6 * | 6 * |
7 * Redistribution and use in source and binary forms, with or without | 7 * Redistribution and use in source and binary forms, with or without |
8 * modification, are permitted provided that the following conditions | 8 * modification, are permitted provided that the following conditions |
9 * are met: | 9 * are met: |
10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
(...skipping 951 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
962 RefPtr<DocumentFragment> fragment = outputDoc.createDocumentFragment(); | 962 RefPtr<DocumentFragment> fragment = outputDoc.createDocumentFragment(); |
963 | 963 |
964 if (sourceMIMEType == "text/html") { | 964 if (sourceMIMEType == "text/html") { |
965 // As far as I can tell, there isn't a spec for how transformToFragment
is supposed to work. | 965 // As far as I can tell, there isn't a spec for how transformToFragment
is supposed to work. |
966 // Based on the documentation I can find, it looks like we want to start
parsing the fragment in the InBody insertion mode. | 966 // Based on the documentation I can find, it looks like we want to start
parsing the fragment in the InBody insertion mode. |
967 // Unfortunately, that's an implementation detail of the parser. | 967 // Unfortunately, that's an implementation detail of the parser. |
968 // We achieve that effect here by passing in a fake body element as cont
ext for the fragment. | 968 // We achieve that effect here by passing in a fake body element as cont
ext for the fragment. |
969 RefPtr<HTMLBodyElement> fakeBody = HTMLBodyElement::create(outputDoc); | 969 RefPtr<HTMLBodyElement> fakeBody = HTMLBodyElement::create(outputDoc); |
970 fragment->parseHTML(sourceString, fakeBody.get()); | 970 fragment->parseHTML(sourceString, fakeBody.get()); |
971 } else if (sourceMIMEType == "text/plain") { | 971 } else if (sourceMIMEType == "text/plain") { |
972 fragment->parserAppendChild(Text::create(&outputDoc, sourceString)); | 972 fragment->parserAppendChild(Text::create(outputDoc, sourceString)); |
973 } else { | 973 } else { |
974 bool successfulParse = fragment->parseXML(sourceString, 0); | 974 bool successfulParse = fragment->parseXML(sourceString, 0); |
975 if (!successfulParse) | 975 if (!successfulParse) |
976 return 0; | 976 return 0; |
977 } | 977 } |
978 | 978 |
979 // FIXME: Do we need to mess with URLs here? | 979 // FIXME: Do we need to mess with URLs here? |
980 | 980 |
981 return fragment.release(); | 981 return fragment.release(); |
982 } | 982 } |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1056 { | 1056 { |
1057 RefPtr<ContainerNode> containerNode(container); | 1057 RefPtr<ContainerNode> containerNode(container); |
1058 | 1058 |
1059 ChildListMutationScope mutation(containerNode.get()); | 1059 ChildListMutationScope mutation(containerNode.get()); |
1060 | 1060 |
1061 if (containerNode->hasOneTextChild()) { | 1061 if (containerNode->hasOneTextChild()) { |
1062 toText(containerNode->firstChild())->setData(text); | 1062 toText(containerNode->firstChild())->setData(text); |
1063 return; | 1063 return; |
1064 } | 1064 } |
1065 | 1065 |
1066 RefPtr<Text> textNode = Text::create(&containerNode->document(), text); | 1066 RefPtr<Text> textNode = Text::create(containerNode->document(), text); |
1067 | 1067 |
1068 if (containerNode->hasOneChild()) { | 1068 if (containerNode->hasOneChild()) { |
1069 containerNode->replaceChild(textNode.release(), containerNode->firstChil
d(), es); | 1069 containerNode->replaceChild(textNode.release(), containerNode->firstChil
d(), es); |
1070 return; | 1070 return; |
1071 } | 1071 } |
1072 | 1072 |
1073 containerNode->removeChildren(); | 1073 containerNode->removeChildren(); |
1074 containerNode->appendChild(textNode.release(), es); | 1074 containerNode->appendChild(textNode.release(), es); |
1075 } | 1075 } |
1076 | 1076 |
1077 } | 1077 } |
OLD | NEW |