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

Side by Side Diff: Source/core/dom/Document.cpp

Issue 1180793002: Document attribute charset and its aliases to return UTF-8 (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Updated expectation file with UTF-8 Created 5 years, 6 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r ights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r ights reserved.
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved.
9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved.
(...skipping 1109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 { 1120 {
1121 // TextEncoding::name() returns a char*, no need to allocate a new 1121 // TextEncoding::name() returns a char*, no need to allocate a new
1122 // String for it each time. 1122 // String for it each time.
1123 // FIXME: We should fix TextEncoding to speak AtomicString anyway. 1123 // FIXME: We should fix TextEncoding to speak AtomicString anyway.
1124 return AtomicString(encoding().name()); 1124 return AtomicString(encoding().name());
1125 } 1125 }
1126 1126
1127 String Document::defaultCharset() const 1127 String Document::defaultCharset() const
1128 { 1128 {
1129 if (Settings* settings = this->settings()) 1129 if (Settings* settings = this->settings())
1130 return settings->defaultTextEncodingName(); 1130 return settings->defaultTextEncodingName();
philipj_slow 2015/06/15 15:31:38 Is it possible that defaultTextEncodingName() is a
Habib Virji 2015/06/15 16:14:55 Yes it is null string, with your below code snippe
1131 return String(); 1131 return String("UTF-8");
philipj_slow 2015/06/15 15:31:38 It seems a bit strange return "UTF-8" here if that
Habib Virji 2015/06/15 16:14:55 |document.implementation.createHTMLDocument('').de
philipj_slow 2015/06/16 22:05:57 This case is tricky, I'm unsure what to do. It's s
1132 } 1132 }
1133 1133
1134 void Document::setContentLanguage(const AtomicString& language) 1134 void Document::setContentLanguage(const AtomicString& language)
1135 { 1135 {
1136 if (m_contentLanguage == language) 1136 if (m_contentLanguage == language)
1137 return; 1137 return;
1138 m_contentLanguage = language; 1138 m_contentLanguage = language;
1139 1139
1140 // Document's style depends on the content language. 1140 // Document's style depends on the content language.
1141 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::create( StyleChangeReason::Language)); 1141 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::create( StyleChangeReason::Language));
(...skipping 3067 matching lines...) Expand 10 before | Expand all | Expand 10 after
4209 && encoding() != newData.encoding() 4209 && encoding() != newData.encoding()
4210 && !ElementTraversal::firstWithin(*m_titleElement) 4210 && !ElementTraversal::firstWithin(*m_titleElement)
4211 && encoding() == Latin1Encoding() 4211 && encoding() == Latin1Encoding()
4212 && m_titleElement->textContent().containsOnlyLatin1()) { 4212 && m_titleElement->textContent().containsOnlyLatin1()) {
4213 4213
4214 CString originalBytes = m_titleElement->textContent().latin1(); 4214 CString originalBytes = m_titleElement->textContent().latin1();
4215 OwnPtr<TextCodec> codec = newTextCodec(newData.encoding()); 4215 OwnPtr<TextCodec> codec = newTextCodec(newData.encoding());
4216 String correctlyDecodedTitle = codec->decode(originalBytes.data(), origi nalBytes.length(), DataEOF); 4216 String correctlyDecodedTitle = codec->decode(originalBytes.data(), origi nalBytes.length(), DataEOF);
4217 m_titleElement->setTextContent(correctlyDecodedTitle); 4217 m_titleElement->setTextContent(correctlyDecodedTitle);
4218 } 4218 }
4219 4219 if (!newData.encoding().name()) {
4220 m_encodingData = newData; 4220 m_encodingData = DocumentEncodingData();
philipj_slow 2015/06/15 15:31:38 Is this code path reachable? Is there a test that
Habib Virji 2015/06/15 16:14:55 With the change in DocumentEncoderData it should n
philipj_slow 2015/06/16 22:05:57 OK, so would an ASSERT(newData.encoding().isValid(
4221 } else {
4222 m_encodingData = newData;
4223 }
4221 4224
4222 // FIXME: Should be removed as part of https://code.google.com/p/chromium/is sues/detail?id=319643 4225 // FIXME: Should be removed as part of https://code.google.com/p/chromium/is sues/detail?id=319643
4223 bool shouldUseVisualOrdering = m_encodingData.encoding().usesVisualOrdering( ); 4226 bool shouldUseVisualOrdering = m_encodingData.encoding().usesVisualOrdering( );
4224 if (shouldUseVisualOrdering != m_visuallyOrdered) { 4227 if (shouldUseVisualOrdering != m_visuallyOrdered) {
4225 m_visuallyOrdered = shouldUseVisualOrdering; 4228 m_visuallyOrdered = shouldUseVisualOrdering;
4226 // FIXME: How is possible to not have a layoutObject here? 4229 // FIXME: How is possible to not have a layoutObject here?
4227 if (layoutView()) 4230 if (layoutView())
4228 layoutView()->mutableStyleRef().setRTLOrdering(m_visuallyOrdered ? V isualOrder : LogicalOrder); 4231 layoutView()->mutableStyleRef().setRTLOrdering(m_visuallyOrdered ? V isualOrder : LogicalOrder);
4229 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::cre ate(StyleChangeReason::VisuallyOrdered)); 4232 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::cre ate(StyleChangeReason::VisuallyOrdered));
4230 } 4233 }
(...skipping 1507 matching lines...) Expand 10 before | Expand all | Expand 10 after
5738 #ifndef NDEBUG 5741 #ifndef NDEBUG
5739 using namespace blink; 5742 using namespace blink;
5740 void showLiveDocumentInstances() 5743 void showLiveDocumentInstances()
5741 { 5744 {
5742 WeakDocumentSet& set = liveDocumentSet(); 5745 WeakDocumentSet& set = liveDocumentSet();
5743 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); 5746 fprintf(stderr, "There are %u documents currently alive:\n", set.size());
5744 for (Document* document : set) 5747 for (Document* document : set)
5745 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().str ing().utf8().data()); 5748 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().str ing().utf8().data());
5746 } 5749 }
5747 #endif 5750 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698