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

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

Issue 22909053: Store the Document's encoding on the Document (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Set document encoding in DecodedDataDocumentParser instead of DocumentWriter Created 7 years, 3 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
« no previous file with comments | « Source/core/dom/Document.h ('k') | Source/core/html/HTMLBaseElement.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 // generally keep at least one reference to an Element which would in turn 529 // generally keep at least one reference to an Element which would in turn
530 // has a reference to the Document. If you hit this ASSERT, then that 530 // has a reference to the Document. If you hit this ASSERT, then that
531 // assumption is wrong. DocumentParser::detach() should ensure that even 531 // assumption is wrong. DocumentParser::detach() should ensure that even
532 // if the DocumentParser outlives the Document it won't cause badness. 532 // if the DocumentParser outlives the Document it won't cause badness.
533 ASSERT(!m_parser || m_parser->refCount() == 1); 533 ASSERT(!m_parser || m_parser->refCount() == 1);
534 detachParser(); 534 detachParser();
535 535
536 if (this == topDocument()) 536 if (this == topDocument())
537 clearAXObjectCache(); 537 clearAXObjectCache();
538 538
539 m_decoder = 0; 539 setDecoder(PassRefPtr<TextResourceDecoder>());
540 540
541 if (m_styleSheetList) 541 if (m_styleSheetList)
542 m_styleSheetList->detachFromDocument(); 542 m_styleSheetList->detachFromDocument();
543 543
544 if (m_import) { 544 if (m_import) {
545 m_import->wasDetachedFromDocument(); 545 m_import->wasDetachedFromDocument();
546 m_import = 0; 546 m_import = 0;
547 } 547 }
548 548
549 m_styleSheetCollection.clear(); 549 m_styleSheetCollection.clear();
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
1102 case Complete: 1102 case Complete:
1103 if (!m_documentTiming.domComplete) 1103 if (!m_documentTiming.domComplete)
1104 m_documentTiming.domComplete = monotonicallyIncreasingTime(); 1104 m_documentTiming.domComplete = monotonicallyIncreasingTime();
1105 break; 1105 break;
1106 } 1106 }
1107 1107
1108 m_readyState = readyState; 1108 m_readyState = readyState;
1109 dispatchEvent(Event::create(eventNames().readystatechangeEvent, false, false )); 1109 dispatchEvent(Event::create(eventNames().readystatechangeEvent, false, false ));
1110 } 1110 }
1111 1111
1112 String Document::encoding() const 1112 String Document::encodingName() const
1113 { 1113 {
1114 // TextEncoding::domName() returns a char*, no need to allocate a new 1114 // TextEncoding::domName() returns a char*, no need to allocate a new
1115 // String for it each time. 1115 // String for it each time.
1116 // FIXME: We should fix TextEncoding to speak AtomicString anyway. 1116 // FIXME: We should fix TextEncoding to speak AtomicString anyway.
1117 if (TextResourceDecoder* d = decoder()) 1117 return AtomicString(m_encoding.domName());
1118 return AtomicString(d->encoding().domName());
1119 return String();
1120 } 1118 }
1121 1119
1122 String Document::defaultCharset() const 1120 String Document::defaultCharset() const
1123 { 1121 {
1124 if (Settings* settings = this->settings()) 1122 if (Settings* settings = this->settings())
1125 return settings->defaultTextEncodingName(); 1123 return settings->defaultTextEncodingName();
1126 return String(); 1124 return String();
1127 } 1125 }
1128 1126
1129 void Document::setCharset(const String& charset) 1127 void Document::setCharset(const String& charset)
1130 { 1128 {
1131 if (!decoder()) 1129 if (!decoder())
1132 return; 1130 return;
1133 decoder()->setEncoding(charset, TextResourceDecoder::UserChosenEncoding); 1131 decoder()->setEncoding(charset, TextResourceDecoder::UserChosenEncoding);
1132 setEncoding(m_decoder->encoding());
1134 } 1133 }
1135 1134
1136 void Document::setContentLanguage(const String& language) 1135 void Document::setContentLanguage(const String& language)
1137 { 1136 {
1138 if (m_contentLanguage == language) 1137 if (m_contentLanguage == language)
1139 return; 1138 return;
1140 m_contentLanguage = language; 1139 m_contentLanguage = language;
1141 1140
1142 // Document's style depends on the content language. 1141 // Document's style depends on the content language.
1143 setNeedsStyleRecalc(); 1142 setNeedsStyleRecalc();
(...skipping 2790 matching lines...) Expand 10 before | Expand all | Expand 10 after
3934 } 3933 }
3935 3934
3936 if (qualifiedName.is8Bit()) 3935 if (qualifiedName.is8Bit())
3937 return parseQualifiedNameInternal(qualifiedName, qualifiedName.character s8(), length, prefix, localName, es); 3936 return parseQualifiedNameInternal(qualifiedName, qualifiedName.character s8(), length, prefix, localName, es);
3938 return parseQualifiedNameInternal(qualifiedName, qualifiedName.characters16( ), length, prefix, localName, es); 3937 return parseQualifiedNameInternal(qualifiedName, qualifiedName.characters16( ), length, prefix, localName, es);
3939 } 3938 }
3940 3939
3941 void Document::setDecoder(PassRefPtr<TextResourceDecoder> decoder) 3940 void Document::setDecoder(PassRefPtr<TextResourceDecoder> decoder)
3942 { 3941 {
3943 m_decoder = decoder; 3942 m_decoder = decoder;
3943 setEncoding(m_decoder ? m_decoder->encoding() : WTF::TextEncoding());
3944 }
3945
3946 void Document::setEncoding(const WTF::TextEncoding& encoding)
3947 {
3948 m_encoding = encoding;
3944 } 3949 }
3945 3950
3946 KURL Document::completeURL(const String& url, const KURL& baseURLOverride) const 3951 KURL Document::completeURL(const String& url, const KURL& baseURLOverride) const
3947 { 3952 {
3948 // Always return a null URL when passed a null string. 3953 // Always return a null URL when passed a null string.
3949 // FIXME: Should we change the KURL constructor to have this behavior? 3954 // FIXME: Should we change the KURL constructor to have this behavior?
3950 // See also [CSS]StyleSheet::completeURL(const String&) 3955 // See also [CSS]StyleSheet::completeURL(const String&)
3951 if (url.isNull()) 3956 if (url.isNull())
3952 return KURL(); 3957 return KURL();
3953 const KURL& baseURL = ((baseURLOverride.isEmpty() || baseURLOverride == blan kURL()) && parentDocument()) ? parentDocument()->baseURL() : baseURLOverride; 3958 const KURL& baseURL = ((baseURLOverride.isEmpty() || baseURLOverride == blan kURL()) && parentDocument()) ? parentDocument()->baseURL() : baseURLOverride;
(...skipping 1291 matching lines...) Expand 10 before | Expand all | Expand 10 after
5245 { 5250 {
5246 return DocumentLifecycleNotifier::create(this); 5251 return DocumentLifecycleNotifier::create(this);
5247 } 5252 }
5248 5253
5249 DocumentLifecycleNotifier* Document::lifecycleNotifier() 5254 DocumentLifecycleNotifier* Document::lifecycleNotifier()
5250 { 5255 {
5251 return static_cast<DocumentLifecycleNotifier*>(ScriptExecutionContext::lifec ycleNotifier()); 5256 return static_cast<DocumentLifecycleNotifier*>(ScriptExecutionContext::lifec ycleNotifier());
5252 } 5257 }
5253 5258
5254 } // namespace WebCore 5259 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/dom/Document.h ('k') | Source/core/html/HTMLBaseElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698