Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(328)

Side by Side Diff: third_party/WebKit/WebCore/loader/TextResourceDecoder.cpp

Issue 39293: WebKit merge 41447:41498 [third_party/WebKit] (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: remove CRLF Created 11 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 Copyright (C) 1999 Lars Knoll (knoll@mpi-hd.mpg.de) 2 Copyright (C) 1999 Lars Knoll (knoll@mpi-hd.mpg.de)
3 Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reser ved. 3 Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reser ved.
4 Copyright (C) 2005, 2006, 2007 Alexey Proskuryakov (ap@nypop.com) 4 Copyright (C) 2005, 2006, 2007 Alexey Proskuryakov (ap@nypop.com)
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 } 324 }
325 325
326 TextResourceDecoder::TextResourceDecoder(const String& mimeType, const TextEncod ing& specifiedDefaultEncoding, bool usesEncodingDetector, const TextResourceDeco der* hintDecoder) 326 TextResourceDecoder::TextResourceDecoder(const String& mimeType, const TextEncod ing& specifiedDefaultEncoding, bool usesEncodingDetector, const TextResourceDeco der* hintDecoder)
327 : m_contentType(determineContentType(mimeType)) 327 : m_contentType(determineContentType(mimeType))
328 , m_decoder(defaultEncoding(m_contentType, specifiedDefaultEncoding)) 328 , m_decoder(defaultEncoding(m_contentType, specifiedDefaultEncoding))
329 , m_hintDecoder(hintDecoder) 329 , m_hintDecoder(hintDecoder)
330 , m_source(DefaultEncoding) 330 , m_source(DefaultEncoding)
331 , m_checkedForBOM(false) 331 , m_checkedForBOM(false)
332 , m_checkedForCSSCharset(false) 332 , m_checkedForCSSCharset(false)
333 , m_checkedForHeadCharset(false) 333 , m_checkedForHeadCharset(false)
334 , m_useLenientXMLDecoding(false)
334 , m_sawError(false) 335 , m_sawError(false)
335 , m_usesEncodingDetector(usesEncodingDetector) 336 , m_usesEncodingDetector(usesEncodingDetector)
336 { 337 {
337 } 338 }
338 339
339 TextResourceDecoder::~TextResourceDecoder() 340 TextResourceDecoder::~TextResourceDecoder()
340 { 341 {
341 } 342 }
342 343
343 void TextResourceDecoder::setEncoding(const TextEncoding& encoding, EncodingSour ce source) 344 void TextResourceDecoder::setEncoding(const TextEncoding& encoding, EncodingSour ce source)
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
867 868
868 if (m_buffer.isEmpty()) 869 if (m_buffer.isEmpty())
869 return m_decoder.decode(data, len, false, m_contentType == XML, m_sawErr or); 870 return m_decoder.decode(data, len, false, m_contentType == XML, m_sawErr or);
870 871
871 if (!movedDataToBuffer) { 872 if (!movedDataToBuffer) {
872 size_t oldSize = m_buffer.size(); 873 size_t oldSize = m_buffer.size();
873 m_buffer.grow(oldSize + len); 874 m_buffer.grow(oldSize + len);
874 memcpy(m_buffer.data() + oldSize, data, len); 875 memcpy(m_buffer.data() + oldSize, data, len);
875 } 876 }
876 877
877 String result = m_decoder.decode(m_buffer.data(), m_buffer.size(), false, m_ contentType == XML, m_sawError); 878 String result = m_decoder.decode(m_buffer.data(), m_buffer.size(), false, m_ contentType == XML && !m_useLenientXMLDecoding, m_sawError);
878 m_buffer.clear(); 879 m_buffer.clear();
879 return result; 880 return result;
880 } 881 }
881 882
882 String TextResourceDecoder::flush() 883 String TextResourceDecoder::flush()
883 { 884 {
884 // For HTML and XML document, if we can not find proper encoding even 885 String result = m_decoder.decode(m_buffer.data(), m_buffer.size(), true, m_c ontentType == XML && !m_useLenientXMLDecoding, m_sawError);
885 // document is completely loaded, we need to use automatically detect 886 // document is completely loaded, we need to use automatically detect
886 // the encoding of document if user has enabled this option. 887 // the encoding of document if user has enabled this option.
887 if (m_buffer.size() && !m_checkedForHeadCharset && 888 if (m_buffer.size() && !m_checkedForHeadCharset &&
888 (m_contentType == HTML || m_contentType == XML) && 889 (m_contentType == HTML || m_contentType == XML) &&
889 ((m_usesEncodingDetector && m_source == DefaultEncoding) || 890 ((m_usesEncodingDetector && m_source == DefaultEncoding) ||
890 (m_source == EncodingFromParentFrame && m_hintDecoder && 891 (m_source == EncodingFromParentFrame && m_hintDecoder &&
891 m_hintDecoder->source() == AutoDetectedEncoding))) 892 m_hintDecoder->source() == AutoDetectedEncoding)))
892 detectEncoding(m_buffer.data(), m_buffer.size()); 893 detectEncoding(m_buffer.data(), m_buffer.size());
893 894
894 String result = m_decoder.decode(m_buffer.data(), m_buffer.size(), true, m_c ontentType == XML, m_sawError);
895 m_buffer.clear(); 895 m_buffer.clear();
896 m_decoder.reset(m_decoder.encoding()); 896 m_decoder.reset(m_decoder.encoding());
897 return result; 897 return result;
898 } 898 }
899 899
900 } 900 }
901 901
OLDNEW
« no previous file with comments | « third_party/WebKit/WebCore/loader/TextResourceDecoder.h ('k') | third_party/WebKit/WebCore/page/EditorClient.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698