[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

darin darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 06:55:58 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit ae96c6c864a55d531460dd551b1aef287812b325
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Oct 30 17:51:34 2002 +0000

    	- fixed 3083982 -- Logging into AOL gives null view, crash
    
    	I fixed the crash part. Not the "gives null view" part.
    	The key was to disentangle the references and lifetimes of the transfer job class,
    	and the resource loader object that KWQ uses to connect it with WebKit.
    
            * kwq/KWQKJobClasses.h: Change the job to keep a loader reference, not a
    	handle reference. The job needs to inform the loader when it's being deallocated.
            * kwq/KWQKJobClasses.mm: Use jobWillBeDeallocated instead of cancel when the
    	job is deallocated.
    
            * kwq/KWQLoader.mm: (KWQServeRequest): Use KWQResourceLoader, now with a home in
    	a separate file.
    
            * kwq/KWQResourceLoader.h: Added.
            * kwq/KWQResourceLoader.mm: Added.
            * WebCore.pbproj/project.pbxproj: Added KWQResourceLoader files.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2508 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index cb3861a..b35e485 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,5 +1,25 @@
 2002-10-30  Darin Adler  <darin at apple.com>
 
+	- fixed 3083982 -- Logging into AOL gives null view, crash
+
+	I fixed the crash part. Not the "gives null view" part.
+	The key was to disentangle the references and lifetimes of the transfer job class,
+	and the resource loader object that KWQ uses to connect it with WebKit.
+
+        * kwq/KWQKJobClasses.h: Change the job to keep a loader reference, not a
+	handle reference. The job needs to inform the loader when it's being deallocated.
+        * kwq/KWQKJobClasses.mm: Use jobWillBeDeallocated instead of cancel when the
+	job is deallocated.
+
+        * kwq/KWQLoader.mm: (KWQServeRequest): Use KWQResourceLoader, now with a home in
+	a separate file.
+
+        * kwq/KWQResourceLoader.h: Added.
+        * kwq/KWQResourceLoader.mm: Added.
+        * WebCore.pbproj/project.pbxproj: Added KWQResourceLoader files.
+
+2002-10-30  Darin Adler  <darin at apple.com>
+
 	- fixed 3086564 -- REGRESSION: meta-refresh to the same page doesn't refresh
 
 	The key is to get args.reload passed through to the bridge.
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index cb3861a..b35e485 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,5 +1,25 @@
 2002-10-30  Darin Adler  <darin at apple.com>
 
+	- fixed 3083982 -- Logging into AOL gives null view, crash
+
+	I fixed the crash part. Not the "gives null view" part.
+	The key was to disentangle the references and lifetimes of the transfer job class,
+	and the resource loader object that KWQ uses to connect it with WebKit.
+
+        * kwq/KWQKJobClasses.h: Change the job to keep a loader reference, not a
+	handle reference. The job needs to inform the loader when it's being deallocated.
+        * kwq/KWQKJobClasses.mm: Use jobWillBeDeallocated instead of cancel when the
+	job is deallocated.
+
+        * kwq/KWQLoader.mm: (KWQServeRequest): Use KWQResourceLoader, now with a home in
+	a separate file.
+
+        * kwq/KWQResourceLoader.h: Added.
+        * kwq/KWQResourceLoader.mm: Added.
+        * WebCore.pbproj/project.pbxproj: Added KWQResourceLoader files.
+
+2002-10-30  Darin Adler  <darin at apple.com>
+
 	- fixed 3086564 -- REGRESSION: meta-refresh to the same page doesn't refresh
 
 	The key is to get args.reload passed through to the bridge.
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index cb3861a..b35e485 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,5 +1,25 @@
 2002-10-30  Darin Adler  <darin at apple.com>
 
+	- fixed 3083982 -- Logging into AOL gives null view, crash
+
+	I fixed the crash part. Not the "gives null view" part.
+	The key was to disentangle the references and lifetimes of the transfer job class,
+	and the resource loader object that KWQ uses to connect it with WebKit.
+
+        * kwq/KWQKJobClasses.h: Change the job to keep a loader reference, not a
+	handle reference. The job needs to inform the loader when it's being deallocated.
+        * kwq/KWQKJobClasses.mm: Use jobWillBeDeallocated instead of cancel when the
+	job is deallocated.
+
+        * kwq/KWQLoader.mm: (KWQServeRequest): Use KWQResourceLoader, now with a home in
+	a separate file.
+
+        * kwq/KWQResourceLoader.h: Added.
+        * kwq/KWQResourceLoader.mm: Added.
+        * WebCore.pbproj/project.pbxproj: Added KWQResourceLoader files.
+
+2002-10-30  Darin Adler  <darin at apple.com>
+
 	- fixed 3086564 -- REGRESSION: meta-refresh to the same page doesn't refresh
 
 	The key is to get args.reload passed through to the bridge.
diff --git a/WebCore/WebCore.pbproj/project.pbxproj b/WebCore/WebCore.pbproj/project.pbxproj
index d482bc4..e458a1c 100644
--- a/WebCore/WebCore.pbproj/project.pbxproj
+++ b/WebCore/WebCore.pbproj/project.pbxproj
@@ -470,6 +470,7 @@
 				F5EDAAF7035345D901A80180,
 				F5EDAAF8035345D901A80180,
 				F5EDAAFA035345D901A80180,
+				93386B92037045B3008635CE,
 			);
 			isa = PBXHeadersBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -699,6 +700,7 @@
 				93CCF7D7033BD43C008635CE,
 				F565A2780352643A01A80180,
 				F565A27B0352675C01A80180,
+				93386B93037045B3008635CE,
 			);
 			isa = PBXSourcesBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -813,6 +815,30 @@
 //932
 //933
 //934
+		93386B90037045B3008635CE = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = KWQResourceLoader.h;
+			refType = 4;
+		};
+		93386B91037045B3008635CE = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = KWQResourceLoader.mm;
+			refType = 4;
+		};
+		93386B92037045B3008635CE = {
+			fileRef = 93386B90037045B3008635CE;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		93386B93037045B3008635CE = {
+			fileRef = 93386B91037045B3008635CE;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
 		9377FB55032C235C008635CE = {
 			fileEncoding = 30;
 			isa = PBXFileReference;
@@ -974,6 +1000,8 @@
 				F587850302DE375901EA4122,
 				93861DDF032C2E52008635CE,
 				93861DE0032C2E52008635CE,
+				93386B90037045B3008635CE,
+				93386B91037045B3008635CE,
 				F587851B02DE375901EA4122,
 				F587851C02DE375901EA4122,
 				F587852A02DE375901EA4122,
diff --git a/WebCore/kwq/KWQKJobClasses.h b/WebCore/kwq/KWQKJobClasses.h
index 1352b18..8c788e2 100644
--- a/WebCore/kwq/KWQKJobClasses.h
+++ b/WebCore/kwq/KWQKJobClasses.h
@@ -33,11 +33,9 @@
 #include "KWQKURL.h"
 
 #ifdef __OBJC__
- at protocol WebCoreResourceHandle;
-typedef id <WebCoreResourceHandle> WebCoreResourceHandlePtr;
+ at class KWQResourceLoader;
 #else
-class WebCoreResourceHandle;
-typedef WebCoreResourceHandle *WebCoreResourceHandlePtr;
+class KWQResourceLoader;
 #endif
 
 namespace KIO {
@@ -66,8 +64,7 @@ public:
     void addMetaData(const QMap<QString, QString> &value);
     void kill();
 
-    void setHandle(WebCoreResourceHandlePtr);
-    WebCoreResourceHandlePtr handle() const;
+    void setLoader(KWQResourceLoader *);
     
     KURL url() const;
 
diff --git a/WebCore/kwq/KWQKJobClasses.mm b/WebCore/kwq/KWQKJobClasses.mm
index f245b84..c02df6e 100644
--- a/WebCore/kwq/KWQKJobClasses.mm
+++ b/WebCore/kwq/KWQKJobClasses.mm
@@ -25,13 +25,10 @@
 
 #import "KWQLogging.h"
 
+#import "KWQResourceLoader.h"
 #import "KWQString.h"
 #import "KWQKJobClasses.h"
 
-#import <Foundation/Foundation.h>
-
-#import "WebCoreResourceLoader.h"
-
 namespace KIO {
 
 class TransferJobPrivate
@@ -41,20 +38,20 @@ public:
         : status(0)
         , metaData([[NSMutableDictionary alloc] initWithCapacity:17])
         , URL(kurl)
-        , handle(nil)
+        , loader(nil)
     {
     }
 
     ~TransferJobPrivate()
     {
         [metaData release];
-        [handle release];
+        [loader release];
     }
 
     int status;
     NSMutableDictionary *metaData;
     KURL URL;
-    id <WebCoreResourceHandle> handle;
+    KWQResourceLoader *loader;
 };
 
 TransferJob::TransferJob(const KURL &url, bool reload, bool showProgressInfo)
@@ -69,7 +66,7 @@ TransferJob::TransferJob(const KURL &url, const QByteArray &postData, bool showP
 
 TransferJob::~TransferJob()
 {
-    [d->handle cancel];
+    [d->loader jobWillBeDeallocated];
     delete d;
 }
 
@@ -99,7 +96,7 @@ QString TransferJob::queryMetaData(const QString &key) const
     NSString *value = [d->metaData objectForKey:key.getNSString()]; 
     return value ? QString::fromNSString(value) : QString::null;
 }
- 
+
 void TransferJob::addMetaData(const QString &key, const QString &value)
 {
     [d->metaData setObject:value.getNSString() forKey:key.getNSString()];
@@ -120,16 +117,11 @@ void TransferJob::kill()
     delete this;
 }
 
-void TransferJob::setHandle(id <WebCoreResourceHandle> handle)
-{
-    [handle retain];
-    [d->handle release];
-    d->handle = handle;
-}
-
-id <WebCoreResourceHandle> TransferJob::handle() const
+void TransferJob::setLoader(KWQResourceLoader *loader)
 {
-    return d->handle;
+    [loader retain];
+    [d->loader release];
+    d->loader = loader;
 }
 
 KURL TransferJob::url() const
diff --git a/WebCore/kwq/KWQLoader.mm b/WebCore/kwq/KWQLoader.mm
index a30563c..2cd74a2 100644
--- a/WebCore/kwq/KWQLoader.mm
+++ b/WebCore/kwq/KWQLoader.mm
@@ -25,15 +25,12 @@
 
 #import "KWQLoader.h"
 
+#import "khtml_part.h"
 #import "KWQKJobClasses.h"
+#import "KWQLogging.h"
+#import "KWQResourceLoader.h"
 #import "loader.h"
-
-#import "khtml_part.h"
-
 #import "WebCoreBridge.h"
-#import "WebCoreResourceLoader.h"
-
-#import "KWQLogging.h"
 
 using khtml::CachedObject;
 using khtml::CachedImage;
@@ -42,60 +39,6 @@ using khtml::Loader;
 using khtml::Request;
 using KIO::TransferJob;
 
- at interface WebCoreResourceLoader : NSObject <WebCoreResourceLoader>
-{
-    Loader *loader;
-    TransferJob *job;
-}
-
--(id)initWithLoader:(Loader *)loader job:(TransferJob *)job;
-
- at end
-
- at implementation WebCoreResourceLoader
-
--(id)initWithLoader:(Loader *)l job:(TransferJob *)j;
-{
-    [super init];
-    
-    loader = l;
-    job = j;
-    
-    return self;
-}
-
-- (void)dealloc
-{
-    delete job;
-    [super dealloc];
-}
-
-- (void)receivedResponse:(id)response
-{
-    ASSERT(response);
-    loader->receivedResponse(job, response);
-}
-
-- (void)addData:(NSData *)data
-{
-    loader->slotData(job, (const char *)[data bytes], [data length]);
-}
-
-- (void)cancel
-{
-    job->setError(1);
-    job->setHandle(0);
-    job = 0;
-}
-
-- (void)finish
-{
-    loader->slotFinished(job);
-    job->setHandle(0);
-}
-
- at end
-
 bool KWQServeRequest(Loader *loader, Request *request, TransferJob *job)
 {
     LOG(Loading, "Serving request for base %s, url %s", 
@@ -111,17 +54,12 @@ bool KWQServeRequest(Loader *loader, Request *request, TransferJob *job)
         return false;
     }
     
-    WebCoreResourceLoader *resourceLoader = [[WebCoreResourceLoader alloc] initWithLoader:loader job:job];
+    KWQResourceLoader *resourceLoader = [[KWQResourceLoader alloc] initWithLoader:loader job:job];
     id <WebCoreResourceHandle> handle = [bridge startLoadingResource:resourceLoader withURL:URL];
+    [resourceLoader setHandle:handle];
     [resourceLoader release];
 
-    if (handle == nil) {
-        delete job;
-        return false;
-    }
-    
-    job->setHandle(handle);
-    return true;
+    return handle != nil;
 }
 
 bool KWQCheckIfReloading(DocLoader *loader)
diff --git a/WebCore/kwq/WebCoreViewFactory.m b/WebCore/kwq/KWQResourceLoader.h
similarity index 76%
copy from WebCore/kwq/WebCoreViewFactory.m
copy to WebCore/kwq/KWQResourceLoader.h
index affbdfc..7061f03 100644
--- a/WebCore/kwq/WebCoreViewFactory.m
+++ b/WebCore/kwq/KWQResourceLoader.h
@@ -23,28 +23,25 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#import "WebCoreViewFactory.h"
-#import "KWQAssertions.h"
+#import "WebCoreResourceLoader.h"
 
-NSString *WebCoreFileButtonFilenameChanged = @"WebCoreFileButtonFilenameChanged";
-
- at implementation WebCoreViewFactory
-
-static WebCoreViewFactory *sharedFactory;
+namespace khtml {
+    class Loader;
+}
 
-+ (WebCoreViewFactory *)sharedFactory
-{
-    return sharedFactory;
+namespace KIO {
+    class TransferJob;
 }
 
-- init
+ at interface KWQResourceLoader : NSObject <WebCoreResourceLoader>
 {
-    [super init];
-    
-    ASSERT(!sharedFactory);
-    sharedFactory = [self retain];
-    
-    return self;
+    khtml::Loader *_loader;
+    KIO::TransferJob *_job;
+    id <WebCoreResourceHandle> _handle;
 }
 
+- (id)initWithLoader:(khtml::Loader *)loader job:(KIO::TransferJob *)job;
+- (void)setHandle:(id <WebCoreResourceHandle>)handle;
+- (void)jobWillBeDeallocated;
+
 @end
diff --git a/WebCore/kwq/WebCoreImageRendererFactory.m b/WebCore/kwq/KWQResourceLoader.mm
similarity index 52%
copy from WebCore/kwq/WebCoreImageRendererFactory.m
copy to WebCore/kwq/KWQResourceLoader.mm
index f49c61c..8e97c9c 100644
--- a/WebCore/kwq/WebCoreImageRendererFactory.m
+++ b/WebCore/kwq/KWQResourceLoader.mm
@@ -23,41 +23,89 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#import "WebCoreImageRendererFactory.h"
+#import "KWQResourceLoader.h"
+
 #import "KWQAssertions.h"
+#import "KWQKJobClasses.h"
+#import "loader.h"
 
- at implementation WebCoreImageRendererFactory
+using khtml::Loader;
+using KIO::TransferJob;
 
-static WebCoreImageRendererFactory *sharedFactory;
+ at implementation KWQResourceLoader
 
-+ (WebCoreImageRendererFactory *)sharedFactory
+- (id)initWithLoader:(Loader *)loader job:(TransferJob *)job;
 {
-    return sharedFactory;
+    [super init];
+
+    _loader = loader;
+    _job = job;
+
+    job->setLoader(self);
+
+    return self;
 }
 
-- init
+- (void)setHandle:(id <WebCoreResourceHandle>)handle
 {
-    [super init];
-    
-    ASSERT(!sharedFactory);
-    sharedFactory = [self retain];
-    
-    return self;
+    ASSERT(_handle == nil);
+    _handle = [handle retain];
 }
 
-- (id <WebCoreImageRenderer>)imageRendererWithBytes: (const void *)bytes length:(unsigned)length
+- (void)receivedResponse:(id)response
 {
-    return nil;
+    ASSERT(response);
+    ASSERT(_loader);
+    ASSERT(_job);
+    _loader->receivedResponse(_job, response);
 }
 
-- (id <WebCoreImageRenderer>)imageRendererWithSize: (NSSize)s
+- (void)addData:(NSData *)data
 {
-    return nil;
+    ASSERT(data);
+    ASSERT(_loader);
+    ASSERT(_job);
+    _loader->slotData(_job, (const char *)[data bytes], [data length]);
 }
 
-- (id <WebCoreImageRenderer>)imageRenderer
+- (void)jobWillBeDeallocated
 {
-    return nil;
+    id <WebCoreResourceHandle> handle = _handle;
+    _job = 0;
+    _handle = nil;
+
+    [handle cancel];
+    [handle release];
+}
+
+- (void)cancel
+{
+    ASSERT(_job);
+    ASSERT(_handle);
+
+    TransferJob *job = _job;
+    id <WebCoreResourceHandle> handle = _handle;
+    _job = 0;
+    _handle = nil;
+
+    job->setError(1);
+    job->setLoader(nil);
+    [handle release];
+}
+
+- (void)finish
+{
+    ASSERT(_job);
+    ASSERT(_handle);
+
+    TransferJob *job = _job;
+    id <WebCoreResourceHandle> handle = _handle;
+    _job = 0;
+    _handle = nil;
+
+    _loader->slotFinished(job);
+    delete job;
+    [handle release];
 }
 
 @end

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list