[webkit-changes] cvs commit: WebCore/khtml/misc loader.cpp loader.h
Vicki
vicki at opensource.apple.com
Mon Oct 24 11:58:52 PDT 2005
vicki 05/10/24 11:58:52
Modified: . ChangeLog
khtml/misc loader.cpp loader.h
Log:
Changes by Alexey Proskuryakov, reviewed by Maciej.
- fix http://bugzilla.opendarwin.org/show_bug.cgi?id=5140 (CachedObject loading
ignores charset from HTTP headers)
* khtml/misc/loader.cpp:
(CachedCSSStyleSheet::setCharset):
(CachedScript::setCharset):
(CachedXSLStyleSheet::setCharset):
(CachedXSLStyleSheet::data):
(CachedXBLDocument::CachedXBLDocument):
(CachedXBLDocument::setCharset):
(CachedXBLDocument::data):
(Loader::slotReceivedResponse):
* khtml/misc/loader.h:
Revision Changes Path
1.270 +18 -0 WebCore/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/root/WebCore/ChangeLog,v
retrieving revision 1.269
retrieving revision 1.270
diff -u -r1.269 -r1.270
--- ChangeLog 24 Oct 2005 17:47:22 -0000 1.269
+++ ChangeLog 24 Oct 2005 18:58:48 -0000 1.270
@@ -1,3 +1,21 @@
+2005-10-24 Vicki Murley <vicki at apple.com>
+
+ Changes by Alexey Proskuryakov, reviewed by Maciej.
+
+ - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=5140 (CachedObject loading
+ ignores charset from HTTP headers)
+
+ * khtml/misc/loader.cpp:
+ (CachedCSSStyleSheet::setCharset):
+ (CachedScript::setCharset):
+ (CachedXSLStyleSheet::setCharset):
+ (CachedXSLStyleSheet::data):
+ (CachedXBLDocument::CachedXBLDocument):
+ (CachedXBLDocument::setCharset):
+ (CachedXBLDocument::data):
+ (Loader::slotReceivedResponse):
+ * khtml/misc/loader.h:
+
2005-10-24 Antti Koivisto <koivisto at iki.fi>
Reviewed by Hyatt, landed by beth.
1.79 +41 -3 WebCore/khtml/misc/loader.cpp
Index: loader.cpp
===================================================================
RCS file: /cvs/root/WebCore/khtml/misc/loader.cpp,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -r1.78 -r1.79
--- loader.cpp 11 Oct 2005 20:33:00 -0000 1.78
+++ loader.cpp 24 Oct 2005 18:58:51 -0000 1.79
@@ -222,6 +222,17 @@
delete this;
}
+void CachedCSSStyleSheet::setCharset( const QString &chs )
+{
+ if (!chs.isEmpty()) {
+ QTextCodec *codec = QTextCodec::codecForName(chs.latin1());
+ if (codec) {
+ delete m_codec;
+ m_codec = codec;
+ }
+ }
+}
+
void CachedCSSStyleSheet::data( QBuffer &buffer, bool eof )
{
if(!eof) return;
@@ -305,6 +316,17 @@
delete this;
}
+void CachedScript::setCharset( const QString &chs )
+{
+ if (!chs.isEmpty()) {
+ QTextCodec *codec = QTextCodec::codecForName(chs.latin1());
+ if (codec) {
+ delete m_codec;
+ m_codec = codec;
+ }
+ }
+}
+
void CachedScript::data( QBuffer &buffer, bool eof )
{
if(!eof) return;
@@ -1119,12 +1141,18 @@
delete this;
}
+void CachedXSLStyleSheet::setCharset( const QString &chs )
+{
+ if (!chs.isEmpty())
+ m_decoder->setEncoding(chs.latin1(), Decoder::EncodingFromHTTPHeader);
+}
+
void CachedXSLStyleSheet::data(QBuffer &buffer, bool eof)
{
if(!eof) return;
buffer.close();
setSize(buffer.buffer().size());
- QString data = m_decoder->decode( buffer.buffer().data(), size() );
+ QString data = m_decoder->decode(buffer.buffer().data(), size());
m_sheet = DOMString(data);
m_loading = false;
@@ -1164,7 +1192,7 @@
// Load the file
Cache::loader()->load(dl, this, false);
m_loading = true;
- m_codec = QTextCodec::codecForName("iso8859-1");
+ m_decoder = new Decoder;
}
CachedXBLDocument::~CachedXBLDocument()
@@ -1188,6 +1216,12 @@
delete this;
}
+void CachedXBLDocument::setCharset( const QString &chs )
+{
+ if (!chs.isEmpty())
+ m_decoder->setEncoding(chs.latin1(), Decoder::EncodingFromHTTPHeader);
+}
+
void CachedXBLDocument::data( QBuffer &buffer, bool eof )
{
if (!eof) return;
@@ -1198,7 +1232,7 @@
m_document->ref();
m_document->open();
- QString data = m_codec->toUnicode(buffer.buffer().data(), buffer.buffer().size());
+ QString data = m_decoder->decode(buffer.buffer().data(), buffer.buffer().size());
m_document->write(data);
setSize(buffer.buffer().size());
buffer.close();
@@ -1664,6 +1698,10 @@
r->object->setResponse(response);
r->object->setExpireDate(KWQCacheObjectExpiresTime(r->m_docLoader, response), false);
+ QString chs = static_cast<KIO::TransferJob*>(job)->queryMetaData("charset");
+ if (!chs.isNull())
+ r->object->setCharset(chs);
+
if (r->multipart) {
ASSERT(r->object->isImage());
static_cast<CachedImage *>(r->object)->clear();
1.45 +7 -2 WebCore/khtml/misc/loader.h
Index: loader.h
===================================================================
RCS file: /cvs/root/WebCore/khtml/misc/loader.h,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- loader.h 21 Sep 2005 21:05:53 -0000 1.44
+++ loader.h 24 Oct 2005 18:58:51 -0000 1.45
@@ -155,6 +155,7 @@
}
virtual ~CachedObject();
+ virtual void setCharset( const QString &chs ) {}
virtual void data( QBuffer &buffer, bool eof) = 0;
virtual void error( int err, const char *text ) = 0;
@@ -267,7 +268,8 @@
virtual void ref(CachedObjectClient *consumer);
virtual void deref(CachedObjectClient *consumer);
- virtual void data( QBuffer &buffer, bool eof );
+ virtual void setCharset( const QString &chs );
+ virtual void data( QBuffer &buffer, bool eof );
virtual void error( int err, const char *text );
virtual bool schedule() const { return true; }
@@ -294,6 +296,7 @@
virtual void ref(CachedObjectClient *consumer);
virtual void deref(CachedObjectClient *consumer);
+ virtual void setCharset( const QString &chs );
virtual void data( QBuffer &buffer, bool eof );
virtual void error( int err, const char *text );
@@ -423,6 +426,7 @@
virtual void ref(CachedObjectClient *consumer);
virtual void deref(CachedObjectClient *consumer);
+ virtual void setCharset(const QString &chs);
virtual void data(QBuffer &buffer, bool eof);
virtual void error(int err, const char *text);
@@ -448,6 +452,7 @@
virtual void ref(CachedObjectClient *consumer);
virtual void deref(CachedObjectClient *consumer);
+ virtual void setCharset( const QString &chs );
virtual void data( QBuffer &buffer, bool eof );
virtual void error( int err, const char *text );
@@ -457,7 +462,7 @@
protected:
XBL::XBLDocumentImpl* m_document;
- QTextCodec* m_codec;
+ Decoder* m_decoder;
};
#endif
More information about the webkit-changes
mailing list