[webkit-changes] cvs commit: WebCore/kwq KWQKJobClasses.h KWQKJobClasses.mm KWQLoader.h KWQLoader.mm KWQResourceLoader.h KWQResourceLoader.mm

Justin justing at opensource.apple.com
Thu Sep 8 14:35:31 PDT 2005


justing     05/09/08 14:35:31

  Modified:    .        ChangeLog
               khtml/misc loader.cpp loader.h
               kwq      KWQKJobClasses.h KWQKJobClasses.mm KWQLoader.h
                        KWQLoader.mm KWQResourceLoader.h
                        KWQResourceLoader.mm
  Log:
          Reviewed by darin
  
          WebCore portion of multipart/x-mixed-replace support
  
          * khtml/misc/loader.cpp:
          (Request::Request):
          (Loader::slotReceivedResponse):
          Only allow a multipart load for images, clear out the old multipart section to prepare for a replace
          (Loader::slotData):
          Multipart sections are delivered to the coreLoader by WebKit all at once, send eof to CachedImage::data
          * khtml/misc/loader.h:
          (khtml::CachedObject::isImage): Added
          (khtml::CachedImage::isImage):
          * kwq/KWQKJobClasses.h:
          * kwq/KWQKJobClasses.mm:
          (KIO::TransferJob::cancel):
          Added a way to cancel a subresource loader from WebCore
          * kwq/KWQLoader.h:
          * kwq/KWQLoader.mm:
          (KWQResponseIsMultipart):
          * kwq/KWQResourceLoader.h:
          * kwq/KWQResourceLoader.mm:
          (-[KWQResourceLoader jobCanceledLoad]):
  
  Revision  Changes    Path
  1.106     +26 -0     WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.105
  retrieving revision 1.106
  diff -u -r1.105 -r1.106
  --- ChangeLog	8 Sep 2005 19:57:27 -0000	1.105
  +++ ChangeLog	8 Sep 2005 21:35:27 -0000	1.106
  @@ -1,3 +1,29 @@
  +2005-09-08  Justin Garcia  <justin.garcia at apple.com>
  +
  +        Reviewed by darin
  +
  +        WebCore portion of multipart/x-mixed-replace support
  +
  +        * khtml/misc/loader.cpp:
  +        (Request::Request):
  +        (Loader::slotReceivedResponse):
  +        Only allow a multipart load for images, clear out the old multipart section to prepare for a replace
  +        (Loader::slotData):
  +        Multipart sections are delivered to the coreLoader by WebKit all at once, send eof to CachedImage::data
  +        * khtml/misc/loader.h:
  +        (khtml::CachedObject::isImage): Added
  +        (khtml::CachedImage::isImage):
  +        * kwq/KWQKJobClasses.h:
  +        * kwq/KWQKJobClasses.mm:
  +        (KIO::TransferJob::cancel): 
  +        Added a way to cancel a subresource loader from WebCore
  +        * kwq/KWQLoader.h:
  +        * kwq/KWQLoader.mm:
  +        (KWQResponseIsMultipart):
  +        * kwq/KWQResourceLoader.h:
  +        * kwq/KWQResourceLoader.mm:
  +        (-[KWQResourceLoader jobCanceledLoad]):
  +
   2005-09-08  Vicki Murley  <vicki at apple.com>
   
           Reviewed by Don Melton.
  
  
  
  1.74      +14 -1     WebCore/khtml/misc/loader.cpp
  
  Index: loader.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/misc/loader.cpp,v
  retrieving revision 1.73
  retrieving revision 1.74
  diff -u -r1.73 -r1.74
  --- loader.cpp	25 Aug 2005 17:47:13 -0000	1.73
  +++ loader.cpp	8 Sep 2005 21:35:29 -0000	1.74
  @@ -1236,6 +1236,7 @@
       object->setRequest(this);
       incremental = _incremental;
       m_docLoader = dl;
  +    multipart = false;
   }
   
   Request::~Request()
  @@ -1660,6 +1661,16 @@
       ASSERT(response);
       r->object->setResponse(response);
       r->object->setExpireDate(KWQCacheObjectExpiresTime(r->m_docLoader, response), false);
  +    
  +    if (r->multipart) {
  +        ASSERT(r->object->isImage());
  +        static_cast<CachedImage *>(r->object)->clear();
  +        r->m_buffer = QBuffer();
  +    } else if (KWQResponseIsMultipart(response)) {
  +        r->multipart = true;
  +        if (!r->object->isImage())
  +            static_cast<KIO::TransferJob*>(job)->cancel();
  +    }
   }
   
   #endif
  @@ -1685,7 +1696,9 @@
       r->m_buffer.writeBlock( data.data(), data.size() );
   #endif
   
  -    if(r->incremental)
  +    if (r->multipart)
  +        r->object->data( r->m_buffer, true ); // the loader delivers the data in a multipart section all at once, send eof
  +    else if(r->incremental)
           r->object->data( r->m_buffer, false );
   }
   
  
  
  
  1.42      +5 -1      WebCore/khtml/misc/loader.h
  
  Index: loader.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/misc/loader.h,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- loader.h	27 Aug 2005 00:14:20 -0000	1.41
  +++ loader.h	8 Sep 2005 21:35:29 -0000	1.42
  @@ -170,6 +170,8 @@
   	int size() const { return m_size; }
   
           bool isLoaded() const { return !m_loading; }
  +        
  +        virtual bool isImage() const { return false; }
   
       int accessCount() const { return m_accessCount; }
       void increaseAccessCount() { m_accessCount++; }
  @@ -359,8 +361,9 @@
           virtual bool schedule() const { return true; }
   
   	void checkNotify();
  +        
  +        virtual bool isImage() const { return true; }
   
  -    protected:
   	void clear();
   
       private slots:
  @@ -524,6 +527,7 @@
   	QBuffer m_buffer;
   	CachedObject *object;
           DocLoader* m_docLoader;
  +        bool multipart;
        };
   
       /**
  
  
  
  1.37      +1 -0      WebCore/kwq/KWQKJobClasses.h
  
  Index: KWQKJobClasses.h
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQKJobClasses.h,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- KWQKJobClasses.h	9 Dec 2004 18:57:20 -0000	1.36
  +++ KWQKJobClasses.h	8 Sep 2005 21:35:29 -0000	1.37
  @@ -72,6 +72,7 @@
       void kill();
   
       void setLoader(KWQResourceLoader *);
  +    void cancel();
       
       KURL url() const;
   
  
  
  
  1.48      +5 -0      WebCore/kwq/KWQKJobClasses.mm
  
  Index: KWQKJobClasses.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQKJobClasses.mm,v
  retrieving revision 1.47
  retrieving revision 1.48
  diff -u -r1.47 -r1.48
  --- KWQKJobClasses.mm	14 Jul 2005 02:32:33 -0000	1.47
  +++ KWQKJobClasses.mm	8 Sep 2005 21:35:30 -0000	1.48
  @@ -207,6 +207,11 @@
       d->loader = loader;
   }
   
  +void TransferJob::cancel()
  +{
  +    [d->loader jobCanceledLoad];
  +}
  +
   KURL TransferJob::url() const
   {
       return d->URL;
  
  
  
  1.23      +1 -0      WebCore/kwq/KWQLoader.h
  
  Index: KWQLoader.h
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQLoader.h,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- KWQLoader.h	4 Dec 2004 18:37:31 -0000	1.22
  +++ KWQLoader.h	8 Sep 2005 21:35:30 -0000	1.23
  @@ -61,6 +61,7 @@
   bool KWQIsResponseURLEqualToURL(NSURLResponse *response, const DOM::DOMString &m_url);
   QString KWQResponseURL(NSURLResponse *response);
   NSString *KWQResponseMIMEType(NSURLResponse *response);
  +bool KWQResponseIsMultipart(NSURLResponse *response);
   int KWQNumberOfPendingOrLoadingRequests(khtml::DocLoader *dl);
   time_t KWQCacheObjectExpiresTime(khtml::DocLoader *docLoader, NSURLResponse *response);
   NSString *KWQHeaderStringFromDictionary(NSDictionary *headers, int statusCode);
  
  
  
  1.122     +9 -0      WebCore/kwq/KWQLoader.mm
  
  Index: KWQLoader.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQLoader.mm,v
  retrieving revision 1.121
  retrieving revision 1.122
  diff -u -r1.121 -r1.122
  --- KWQLoader.mm	25 Aug 2005 17:47:25 -0000	1.121
  +++ KWQLoader.mm	8 Sep 2005 21:35:30 -0000	1.122
  @@ -317,6 +317,15 @@
       return NULL;
   }
   
  +bool KWQResponseIsMultipart(NSURLResponse *response)
  +{
  +    KWQ_BLOCK_EXCEPTIONS;
  +    return [[response MIMEType] isEqualToString:@"multipart/x-mixed-replace"];
  +    KWQ_UNBLOCK_EXCEPTIONS;
  +    
  +    return false;
  +}
  +
   time_t KWQCacheObjectExpiresTime(khtml::DocLoader *docLoader, NSURLResponse *response)
   {
       KWQ_BLOCK_EXCEPTIONS;
  
  
  
  1.4       +1 -0      WebCore/kwq/KWQResourceLoader.h
  
  Index: KWQResourceLoader.h
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQResourceLoader.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- KWQResourceLoader.h	19 Nov 2003 18:55:18 -0000	1.3
  +++ KWQResourceLoader.h	8 Sep 2005 21:35:30 -0000	1.4
  @@ -42,5 +42,6 @@
   - (id)initWithJob:(KIO::TransferJob *)job;
   - (void)setHandle:(id <WebCoreResourceHandle>)handle;
   - (void)jobWillBeDeallocated;
  +- (void)jobCanceledLoad;
   
   @end
  
  
  
  1.15      +5 -0      WebCore/kwq/KWQResourceLoader.mm
  
  Index: KWQResourceLoader.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQResourceLoader.mm,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- KWQResourceLoader.mm	25 Feb 2005 00:00:43 -0000	1.14
  +++ KWQResourceLoader.mm	8 Sep 2005 21:35:30 -0000	1.15
  @@ -97,6 +97,11 @@
       job = 0;
   }
   
  +- (void)jobCanceledLoad
  +{
  +    [_handle cancel];
  +}
  +
   - (void)cancel
   {
       if (_job) {
  
  
  



More information about the webkit-changes mailing list