[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