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

mjs mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 06:24:28 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 22e35a9b01b55a76eb0b09069af7fa97aee95a0b
Author: mjs <mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Jul 15 08:28:51 2002 +0000

    WebFoundation:
    
            Fixed the following bugs by implementing proper dispatching for
    	cookie accept handlers:
    
    	Radar 2896356 - cookie "ask for each site" not implemented yet
    	Radar 2921437 - IFCookieAcceptHandler protocol not suitable for use with a sheet, not cancellable
    	Radar 2921444 - CookieManager C wrappers need to use proper context object
    
    	* AuthenticationManager.subproj/IFAuthenticationHandlerDispatcher.m:
            (-[IFAuthenticationHandlerDispatcher IFAuthenticationRequestAuthenticationHandlerBusy:]):
            * AuthenticationManager.subproj/IFAuthenticationManager.h:
            * CacheLoader.subproj/IFHTTPURLProtocolHandler.h:
            * CacheLoader.subproj/IFHTTPURLProtocolHandler.m:
            (-[IFHTTPURLProtocolHandler initWithURLLoad:]):
            (-[IFHTTPURLProtocolHandler endLoadInBackground]):
            (-[IFHTTPURLProtocolHandler dealloc]):
            (-[IFHTTPURLProtocolHandler didAddCredentials:toRequest:context:]):
            (-[IFHTTPURLProtocolHandler addAuthenticationHeaders:andCall:]):
            (-[IFHTTPURLProtocolHandler pause]):
            (-[IFHTTPURLProtocolHandler processPausedEventQueue]):
            (-[IFHTTPURLProtocolHandler unpause]):
            (-[IFHTTPURLProtocolHandler continueAfterBytesAvailable]):
            (-[IFHTTPURLProtocolHandler continueAfterEndEncountered]):
            (-[IFHTTPURLProtocolHandler handleReadStreamEvent:event:]):
            (-[IFHTTPURLProtocolHandler continueHeaderReadAfter3xxResponseAndCall:]):
            (-[IFHTTPURLProtocolHandler continueHeaderReadAfterFailureResponseAndCall:]):
            (-[IFHTTPURLProtocolHandler performHTTPHeaderRead:andCall:]):
            (-[IFHTTPURLProtocolHandler setResponseHeaders:]):
            (-[IFHTTPURLProtocolHandler IFCookieManager:doneSettingCookies:]):
            (-[IFHTTPURLProtocolHandler setResponseHeadersUsingHTTPResponse:andCall:context:]):
            * CookieManager.subproj/IFCookieAcceptHandler.h:
            * CookieManager.subproj/IFCookieAcceptHandlerC.h: Added.
            * CookieManager.subproj/IFCookieAcceptHandlerC.m: Added.
            (-[IFCallBackCookieAcceptHandler initWithCallBacks:context:]):
            (+[IFCallBackCookieAcceptHandler handlerWithCallBacks:context:]):
            (-[IFCallBackCookieAcceptHandler dealloc]):
            (-[IFCallBackCookieAcceptHandler readyToStartCookieAcceptCheck:]):
            (-[IFCallBackCookieAcceptHandler startCookieAcceptCheck:]):
            (-[IFCallBackCookieAcceptHandler cancelCookieAcceptCheck:]):
            (IFCookieAcceptHandlerCreate):
            * CookieManager.subproj/IFCookieAcceptHandlerDispatcher.h: Added.
            * CookieManager.subproj/IFCookieAcceptHandlerDispatcher.m: Added.
            (-[IFCookieAcceptDispatchState initWithDispatcher:request:]):
            (-[IFCookieAcceptDispatchState dealloc]):
            (dispatchStartCookieAcceptCheck):
            (dispatchCancelCookieAcceptCheck):
            (dispatchCookieAcceptCheckDone):
            (dispatchCookieAcceptHandlerBusy):
            (-[IFCookieAcceptHandlerDispatcher _dispatchStartCookieAcceptCheck:]):
            (-[IFCookieAcceptHandlerDispatcher _IFCookieAcceptRequest:checkDone:]):
            (-[IFCookieAcceptHandlerDispatcher _IFCookieAcceptRequestCookieAcceptHandlerBusy:]):
            (-[IFCookieAcceptHandlerDispatcher _dispatchCancelCookieAcceptCheck:]):
            (-[IFCookieAcceptHandlerDispatcher _dispatchCookieAcceptCheckDone:]):
            (-[IFCookieAcceptHandlerDispatcher _dispatchCookieAcceptHandlerBusy:]):
            (-[IFCookieAcceptHandlerDispatcher initWithCookieAcceptHandler:]):
            (-[IFCookieAcceptHandlerDispatcher dealloc]):
            (-[IFCookieAcceptHandlerDispatcher hasHandler:]):
            (-[IFCookieAcceptHandlerDispatcher startCookieAcceptCheck:]):
            (-[IFCookieAcceptHandlerDispatcher cancelCookieAcceptCheck:]):
            * CookieManager.subproj/IFCookieAcceptRequest.h: Added.
            * CookieManager.subproj/IFCookieAcceptRequest.m: Added.
            (-[IFCookieAcceptRequestPrivate dealloc]):
            (-[IFCookieAcceptRequest _initWithURL:cookies:callback:]):
            (-[IFCookieAcceptRequest _cookieAcceptHandlerBusy]):
            (-[IFCookieAcceptRequest init]):
            (-[IFCookieAcceptRequest dealloc]):
            (-[IFCookieAcceptRequest url]):
            (-[IFCookieAcceptRequest cookies]):
            (-[IFCookieAcceptRequest cookieAcceptCheckDone:]):
            * CookieManager.subproj/IFCookieAcceptRequestC.h: Added.
            * CookieManager.subproj/IFCookieAcceptRequestC.m: Added.
            (IFCookieAcceptRequestCopyURL):
            (IFCookieAcceptRequestCopyCookies):
            (IFCookieAcceptRequestCheckDone):
            * CookieManager.subproj/IFCookieAcceptRequestPrivate.h: Added.
            * CookieManager.subproj/IFCookieConstants.h:
            * CookieManager.subproj/IFCookieManager.h:
            * CookieManager.subproj/IFCookieManager.m:
            (-[IFCookieAcceptRequestState initWithRequest:dispatcher:continuation:context:]):
            (-[IFCookieAcceptRequestState dealloc]):
            (-[IFCookieManagerPrivate init]):
            (-[IFCookieManagerPrivate dealloc]):
            (-[IFCookieManager _IFCookieAcceptRequest:checkDone:]):
            (-[IFCookieManager _IFCookieAcceptRequestCookieAcceptHandlerBusy:]):
            (-[IFCookieManager _invokeAcceptHandlersForCookies:forURL:andCall:context:]):
            (-[IFCookieManager _checkIfCookiesAccepted:forURL:andCall:context:]):
            (-[IFCookieManager _continueSetCookies:context:]):
            (-[IFCookieManager setCookie:]):
            (-[IFCookieManager setCookiesFromResponseHeaders:forURL:]):
            (-[IFCookieManager setCookiesFromResponseHeaders:forURL:setDelegate:context:]):
            (-[IFCookieManager cancelSetCookiesFromResponseHeadersWithContext:]):
            (-[IFCookieManager addAcceptHandler:]):
            (-[IFCookieManager removeAcceptHandler:]):
            * CookieManager.subproj/IFCookieManagerC.h:
            * CookieManager.subproj/IFCookieManagerC.m:
            (IFCookieManagerAddAcceptHandler):
            (IFCookieManagerRemoveAcceptHandler):
            * CookieManager.subproj/IFCookieStorage.h:
            * CookieManager.subproj/IFCookieStorage.m:
            (-[IFCookieStorage _updateDomainsFromServer]):
            (-[IFCookieStorage _establishConnection]):
            (-[IFCookieStorage init]):
            (-[IFCookieStorage addAcceptedDomain:]):
            (-[IFCookieStorage removeAcceptedDomain:]):
            (-[IFCookieStorage acceptedDomains]):
            (-[IFCookieStorage addRejectedDomain:]):
            (-[IFCookieStorage removeRejectedDomain:]):
            (-[IFCookieStorage rejectedDomains]):
            * CookieManager.subproj/IFCookieStorageServer.h:
            * CookieManager.subproj/IFCookieStorageServer.m:
            (-[IFCookieStorageServerPrivate init]):
            (-[IFCookieStorageServerPrivate dealloc]):
            (-[IFCookieStorageServer _saveCookiesIfScheduled]):
            (-[IFCookieStorageServer _scheduleSaveCookies]):
            (-[IFCookieStorageServer _saveDomains]):
            (-[IFCookieStorageServer _saveDomainsIfScheduled]):
            (-[IFCookieStorageServer _scheduleSaveDomains]):
            (-[IFCookieStorageServer _notifyCookiesChanged]):
            (-[IFCookieStorageServer _notifyDomainsChanged]):
            (-[IFCookieStorageServer _setCookiesWithoutSaving:]):
            (-[IFCookieStorageServer setCookies:]):
            (-[IFCookieStorageServer deleteCookies:]):
            (-[IFCookieStorageServer addAcceptedDomain:]):
            (-[IFCookieStorageServer removeAcceptedDomain:]):
            (-[IFCookieStorageServer acceptedDomains]):
            (-[IFCookieStorageServer addRejectedDomain:]):
            (-[IFCookieStorageServer removeRejectedDomain:]):
            (-[IFCookieStorageServer rejectedDomains]):
            (-[IFCookieStorageServer loadCookies]):
            * Misc.subproj/IFNSValueExtensions.h: Added.
            * Misc.subproj/IFNSValueExtensions.m: Added.
            (+[NSValue _IF_valueWithSelector:]):
            (-[NSValue _IF_selectorValue]):
            * Misc.subproj/WebFoundationDebug.h:
            * WebFoundation.exp:
            * WebFoundation.pbproj/project.pbxproj:
    
    WebKit:
    
    	WebKit part of fix for Radar 2896356 - cookie "ask for each site" not implemented yet
    
            * Panels.subproj/IFPanelCookieAcceptHandler.h: Added.
            * Panels.subproj/IFPanelCookieAcceptHandler.m: Added.
            (-[IFPanelCookieAcceptHandler init]):
            (-[IFPanelCookieAcceptHandler dealloc]):
            (-[IFPanelCookieAcceptHandler readyToStartCookieAcceptCheck:]):
            (-[IFPanelCookieAcceptHandler startCookieAcceptCheck:]):
            (-[IFPanelCookieAcceptHandler cancelCookieAcceptCheck:]):
            (-[IFPanelCookieAcceptHandler doneWithCheck:returnCode:contextInfo:]):
            * Panels.subproj/IFStandardPanels.m:
            (-[IFStandardPanels setUseStandardCookieAcceptPanel:]):
            (-[IFStandardPanels useStandardCookieAcceptPanel]):
            * WebKit.pbproj/project.pbxproj:
    
    WebBrowser:
    
    	Fixed Radar 2896356 - cookie "ask for each site" not implemented yet
    
            * AppController.m:
            (-[AppController awakeFromNib]):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@1559 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index c1cff7a..71ab392 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,20 @@
+2002-07-15  Maciej Stachowiak  <mjs at apple.com>
+
+	WebKit part of fix for Radar 2896356 - cookie "ask for each site" not implemented yet
+
+        * Panels.subproj/IFPanelCookieAcceptHandler.h: Added.
+        * Panels.subproj/IFPanelCookieAcceptHandler.m: Added.
+        (-[IFPanelCookieAcceptHandler init]):
+        (-[IFPanelCookieAcceptHandler dealloc]):
+        (-[IFPanelCookieAcceptHandler readyToStartCookieAcceptCheck:]):
+        (-[IFPanelCookieAcceptHandler startCookieAcceptCheck:]):
+        (-[IFPanelCookieAcceptHandler cancelCookieAcceptCheck:]):
+        (-[IFPanelCookieAcceptHandler doneWithCheck:returnCode:contextInfo:]):
+        * Panels.subproj/IFStandardPanels.m:
+        (-[IFStandardPanels setUseStandardCookieAcceptPanel:]):
+        (-[IFStandardPanels useStandardCookieAcceptPanel]):
+        * WebKit.pbproj/project.pbxproj:
+
 2002-07-14  Maciej Stachowiak  <mjs at apple.com>
 
         More workarounds for the Objective C++ typecasting bug.
diff --git a/WebKit/ChangeLog-2002-12-03 b/WebKit/ChangeLog-2002-12-03
index c1cff7a..71ab392 100644
--- a/WebKit/ChangeLog-2002-12-03
+++ b/WebKit/ChangeLog-2002-12-03
@@ -1,3 +1,20 @@
+2002-07-15  Maciej Stachowiak  <mjs at apple.com>
+
+	WebKit part of fix for Radar 2896356 - cookie "ask for each site" not implemented yet
+
+        * Panels.subproj/IFPanelCookieAcceptHandler.h: Added.
+        * Panels.subproj/IFPanelCookieAcceptHandler.m: Added.
+        (-[IFPanelCookieAcceptHandler init]):
+        (-[IFPanelCookieAcceptHandler dealloc]):
+        (-[IFPanelCookieAcceptHandler readyToStartCookieAcceptCheck:]):
+        (-[IFPanelCookieAcceptHandler startCookieAcceptCheck:]):
+        (-[IFPanelCookieAcceptHandler cancelCookieAcceptCheck:]):
+        (-[IFPanelCookieAcceptHandler doneWithCheck:returnCode:contextInfo:]):
+        * Panels.subproj/IFStandardPanels.m:
+        (-[IFStandardPanels setUseStandardCookieAcceptPanel:]):
+        (-[IFStandardPanels useStandardCookieAcceptPanel]):
+        * WebKit.pbproj/project.pbxproj:
+
 2002-07-14  Maciej Stachowiak  <mjs at apple.com>
 
         More workarounds for the Objective C++ typecasting bug.
diff --git a/WebKit/Panels.subproj/IFPanelCookieAcceptHandler.h b/WebKit/Panels.subproj/IFPanelCookieAcceptHandler.h
new file mode 100644
index 0000000..c658d6f
--- /dev/null
+++ b/WebKit/Panels.subproj/IFPanelCookieAcceptHandler.h
@@ -0,0 +1,25 @@
+/*
+ IFPanelAuthenticationHandler.h
+
+ Copyright 2002 Apple, Inc. All rights reserved.
+ */
+
+#import <Foundation/Foundation.h>
+#import <WebFoundation/IFCookieManager.h>
+
+ at class NSWindow;
+
+ at interface IFPanelCookieAcceptHandler : NSObject  <IFCookieAcceptHandler>
+{
+    NSMutableDictionary *windowToPanel;
+    NSMutableDictionary *requestToWindow;
+}
+
+- (void)doneWithCheck:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void  *)contextInfo;
+
+// IFCookieAcceptHandler methods
+-(BOOL)readyToStartCookieAcceptCheck:(IFCookieAcceptRequest *)request;
+-(void)startCookieAcceptCheck:(IFCookieAcceptRequest *)request;
+-(void)cancelCookieAcceptCheck:(IFCookieAcceptRequest *)request;
+
+ at end
diff --git a/WebKit/Panels.subproj/IFPanelCookieAcceptHandler.m b/WebKit/Panels.subproj/IFPanelCookieAcceptHandler.m
new file mode 100644
index 0000000..bbdf5da
--- /dev/null
+++ b/WebKit/Panels.subproj/IFPanelCookieAcceptHandler.m
@@ -0,0 +1,118 @@
+/*
+ IFPanelCookieAcceptHandler.m
+
+ Copyright 2002 Apple, Inc. All rights reserved.
+ */
+
+
+#import <Cocoa/Cocoa.h>
+#import <WebKit/IFPanelCookieAcceptHandler.h>
+#import <WebKit/IFStandardPanels.h>
+#import <WebFoundation/IFNSDictionaryExtensions.h>
+
+static NSString *IFModalDialogPretendWindow = @"IFModalDialogPretendWindow";
+
+ at implementation IFPanelCookieAcceptHandler
+
+-(id)init
+{
+    self = [super init];
+    if (self != nil) {
+        windowToPanel = [[NSMutableDictionary alloc] init];
+        requestToWindow = [[NSMutableDictionary alloc] init];
+    }
+    return self;
+}
+
+-(void)dealloc
+{
+    [windowToPanel release];
+    [requestToWindow release];
+    [super dealloc];
+}
+
+// IFCookieAcceptHandler methods
+-(BOOL)readyToStartCookieAcceptCheck:(IFCookieAcceptRequest *)request
+{
+    id window = [[IFStandardPanels sharedStandardPanels] frontmostWindowLoadingURL:[request url]];
+
+    if (window == nil) {
+        window = IFModalDialogPretendWindow;
+    }
+
+    return [windowToPanel objectForKey:window] == nil;
+}
+
+-(void)startCookieAcceptCheck:(IFCookieAcceptRequest *)request
+{
+    id window = [[IFStandardPanels sharedStandardPanels] frontmostWindowLoadingURL:[request url]];
+
+    if (window == nil) {
+        window = IFModalDialogPretendWindow;
+    }
+
+    if ([windowToPanel objectForKey:window] != nil) {
+        [request cookieAcceptCheckDone:FALSE];
+        return;
+    }
+
+    NSWindow *panel;
+
+    if (window == IFModalDialogPretendWindow) {
+	if ([[request cookies] count] == 1) {
+	    panel = NSGetAlertPanel(@"Accept cookie?",
+				    @"Server \"%@\" has sent 1 cookie.",
+				    @"Accept", @"Reject", nil,
+				    [[request url] host]);
+	} else {
+	    panel = NSGetAlertPanel(@"Accept cookies?",
+				    @"Server \"%@\" has sent %d cookies.",
+				    @"Accept", @"Reject", nil,
+				    [[request url] host], [[request cookies] count]);
+	}
+	
+	[requestToWindow _IF_setObject:window forUncopiedKey:request];
+	[windowToPanel _IF_setObject:panel forUncopiedKey:window];
+	[panel release];
+	
+        [self doneWithCheck:panel returnCode:[NSApp runModalForWindow:panel] contextInfo:request];
+    } else {
+	if ([[request cookies] count] == 1) {
+	    NSBeginAlertSheet(@"Accept cookie?", @"Accept", @"Reject", nil, window, self, @selector(doneWithCheck:returnCode:contextInfo:), nil, request, @"Server \"%@\" has sent 1 cookie.", [[request url] host]);
+	} else {
+	    NSBeginAlertSheet(@"Accept cookies?", @"Accept", @"Reject", nil, window, self, @selector(doneWithCheck:returnCode:contextInfo:), nil, request, @"Server \"%@\" has sent %d cookies.", [[request url] host], [[request cookies] count]);
+	}
+	panel = [window attachedSheet];
+	[requestToWindow _IF_setObject:window forUncopiedKey:request];
+	[windowToPanel _IF_setObject:panel forUncopiedKey:window];
+    }
+}
+
+-(void)cancelCookieAcceptCheck:(IFCookieAcceptRequest *)request
+{
+    id window = [requestToWindow objectForKey:request];
+    if (window != nil) {
+        NSWindow *panel = [windowToPanel objectForKey:window];
+        [panel close];
+        if (window == IFModalDialogPretendWindow) {
+            [NSApp stopModalWithCode:NSAlertAlternateReturn];
+        } else {
+            [NSApp endSheet:panel returnCode:NSAlertAlternateReturn];
+        }
+    }
+}
+
+- (void)doneWithCheck:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void  *)contextInfo
+{
+    IFCookieAcceptRequest *request = (IFCookieAcceptRequest *)contextInfo;
+    
+    id window = [requestToWindow objectForKey:request];
+    if (window != nil) {
+        [windowToPanel removeObjectForKey:window];
+        [requestToWindow removeObjectForKey:request];
+    }
+
+    [request cookieAcceptCheckDone:(returnCode == NSAlertDefaultReturn)];
+}
+
+ at end
diff --git a/WebKit/Panels.subproj/IFStandardPanels.m b/WebKit/Panels.subproj/IFStandardPanels.m
index 668202d..b1f759f 100644
--- a/WebKit/Panels.subproj/IFStandardPanels.m
+++ b/WebKit/Panels.subproj/IFStandardPanels.m
@@ -7,6 +7,7 @@
 #import <WebKit/IFStandardPanels.h>
 #import <WebKit/IFStandardPanelsPrivate.h>
 #import <WebKit/IFPanelAuthenticationHandler.h>
+#import <WebKit/IFPanelCookieAcceptHandler.h>
 #import <WebKit/IFWebFrame.h>
 #import <WebKit/IFWebView.h>
 #import <WebFoundation/IFAuthenticationManager.h>
@@ -18,6 +19,7 @@
 {
 @public
     IFPanelAuthenticationHandler *panelAuthenticationHandler;
+    IFPanelCookieAcceptHandler *panelCookieAcceptHandler;
     NSMutableDictionary *urlContainers;
 }
 @end
@@ -104,11 +106,23 @@ static void initSharedStandardPanels(void)
 
 -(void)setUseStandardCookieAcceptPanel:(BOOL)use
 {
+    if (use) {
+        if (![self useStandardCookieAcceptPanel]) {
+            _privatePanels->panelCookieAcceptHandler = [[IFPanelCookieAcceptHandler alloc] init];
+            [[IFCookieManager sharedCookieManager] addAcceptHandler:_privatePanels->panelCookieAcceptHandler];
+        }
+    } else {
+        if ([self useStandardCookieAcceptPanel]) {
+            [[IFCookieManager sharedCookieManager] removeAcceptHandler:_privatePanels->panelCookieAcceptHandler];
+            [_privatePanels->panelCookieAcceptHandler release];
+            _privatePanels->panelCookieAcceptHandler = nil;
+        }
+    }
 }
 
 -(BOOL)useStandardCookieAcceptPanel
 {
-    return FALSE;
+    return _privatePanels->panelCookieAcceptHandler != nil;
 }
 
 -(void)didStartLoadingURL:(NSURL *)url inWindow:(NSWindow *)window
diff --git a/WebKit/Panels.subproj/WebPanelCookieAcceptHandler.h b/WebKit/Panels.subproj/WebPanelCookieAcceptHandler.h
new file mode 100644
index 0000000..c658d6f
--- /dev/null
+++ b/WebKit/Panels.subproj/WebPanelCookieAcceptHandler.h
@@ -0,0 +1,25 @@
+/*
+ IFPanelAuthenticationHandler.h
+
+ Copyright 2002 Apple, Inc. All rights reserved.
+ */
+
+#import <Foundation/Foundation.h>
+#import <WebFoundation/IFCookieManager.h>
+
+ at class NSWindow;
+
+ at interface IFPanelCookieAcceptHandler : NSObject  <IFCookieAcceptHandler>
+{
+    NSMutableDictionary *windowToPanel;
+    NSMutableDictionary *requestToWindow;
+}
+
+- (void)doneWithCheck:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void  *)contextInfo;
+
+// IFCookieAcceptHandler methods
+-(BOOL)readyToStartCookieAcceptCheck:(IFCookieAcceptRequest *)request;
+-(void)startCookieAcceptCheck:(IFCookieAcceptRequest *)request;
+-(void)cancelCookieAcceptCheck:(IFCookieAcceptRequest *)request;
+
+ at end
diff --git a/WebKit/Panels.subproj/WebPanelCookieAcceptHandler.m b/WebKit/Panels.subproj/WebPanelCookieAcceptHandler.m
new file mode 100644
index 0000000..bbdf5da
--- /dev/null
+++ b/WebKit/Panels.subproj/WebPanelCookieAcceptHandler.m
@@ -0,0 +1,118 @@
+/*
+ IFPanelCookieAcceptHandler.m
+
+ Copyright 2002 Apple, Inc. All rights reserved.
+ */
+
+
+#import <Cocoa/Cocoa.h>
+#import <WebKit/IFPanelCookieAcceptHandler.h>
+#import <WebKit/IFStandardPanels.h>
+#import <WebFoundation/IFNSDictionaryExtensions.h>
+
+static NSString *IFModalDialogPretendWindow = @"IFModalDialogPretendWindow";
+
+ at implementation IFPanelCookieAcceptHandler
+
+-(id)init
+{
+    self = [super init];
+    if (self != nil) {
+        windowToPanel = [[NSMutableDictionary alloc] init];
+        requestToWindow = [[NSMutableDictionary alloc] init];
+    }
+    return self;
+}
+
+-(void)dealloc
+{
+    [windowToPanel release];
+    [requestToWindow release];
+    [super dealloc];
+}
+
+// IFCookieAcceptHandler methods
+-(BOOL)readyToStartCookieAcceptCheck:(IFCookieAcceptRequest *)request
+{
+    id window = [[IFStandardPanels sharedStandardPanels] frontmostWindowLoadingURL:[request url]];
+
+    if (window == nil) {
+        window = IFModalDialogPretendWindow;
+    }
+
+    return [windowToPanel objectForKey:window] == nil;
+}
+
+-(void)startCookieAcceptCheck:(IFCookieAcceptRequest *)request
+{
+    id window = [[IFStandardPanels sharedStandardPanels] frontmostWindowLoadingURL:[request url]];
+
+    if (window == nil) {
+        window = IFModalDialogPretendWindow;
+    }
+
+    if ([windowToPanel objectForKey:window] != nil) {
+        [request cookieAcceptCheckDone:FALSE];
+        return;
+    }
+
+    NSWindow *panel;
+
+    if (window == IFModalDialogPretendWindow) {
+	if ([[request cookies] count] == 1) {
+	    panel = NSGetAlertPanel(@"Accept cookie?",
+				    @"Server \"%@\" has sent 1 cookie.",
+				    @"Accept", @"Reject", nil,
+				    [[request url] host]);
+	} else {
+	    panel = NSGetAlertPanel(@"Accept cookies?",
+				    @"Server \"%@\" has sent %d cookies.",
+				    @"Accept", @"Reject", nil,
+				    [[request url] host], [[request cookies] count]);
+	}
+	
+	[requestToWindow _IF_setObject:window forUncopiedKey:request];
+	[windowToPanel _IF_setObject:panel forUncopiedKey:window];
+	[panel release];
+	
+        [self doneWithCheck:panel returnCode:[NSApp runModalForWindow:panel] contextInfo:request];
+    } else {
+	if ([[request cookies] count] == 1) {
+	    NSBeginAlertSheet(@"Accept cookie?", @"Accept", @"Reject", nil, window, self, @selector(doneWithCheck:returnCode:contextInfo:), nil, request, @"Server \"%@\" has sent 1 cookie.", [[request url] host]);
+	} else {
+	    NSBeginAlertSheet(@"Accept cookies?", @"Accept", @"Reject", nil, window, self, @selector(doneWithCheck:returnCode:contextInfo:), nil, request, @"Server \"%@\" has sent %d cookies.", [[request url] host], [[request cookies] count]);
+	}
+	panel = [window attachedSheet];
+	[requestToWindow _IF_setObject:window forUncopiedKey:request];
+	[windowToPanel _IF_setObject:panel forUncopiedKey:window];
+    }
+}
+
+-(void)cancelCookieAcceptCheck:(IFCookieAcceptRequest *)request
+{
+    id window = [requestToWindow objectForKey:request];
+    if (window != nil) {
+        NSWindow *panel = [windowToPanel objectForKey:window];
+        [panel close];
+        if (window == IFModalDialogPretendWindow) {
+            [NSApp stopModalWithCode:NSAlertAlternateReturn];
+        } else {
+            [NSApp endSheet:panel returnCode:NSAlertAlternateReturn];
+        }
+    }
+}
+
+- (void)doneWithCheck:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void  *)contextInfo
+{
+    IFCookieAcceptRequest *request = (IFCookieAcceptRequest *)contextInfo;
+    
+    id window = [requestToWindow objectForKey:request];
+    if (window != nil) {
+        [windowToPanel removeObjectForKey:window];
+        [requestToWindow removeObjectForKey:request];
+    }
+
+    [request cookieAcceptCheckDone:(returnCode == NSAlertDefaultReturn)];
+}
+
+ at end
diff --git a/WebKit/Panels.subproj/WebStandardPanels.m b/WebKit/Panels.subproj/WebStandardPanels.m
index 668202d..b1f759f 100644
--- a/WebKit/Panels.subproj/WebStandardPanels.m
+++ b/WebKit/Panels.subproj/WebStandardPanels.m
@@ -7,6 +7,7 @@
 #import <WebKit/IFStandardPanels.h>
 #import <WebKit/IFStandardPanelsPrivate.h>
 #import <WebKit/IFPanelAuthenticationHandler.h>
+#import <WebKit/IFPanelCookieAcceptHandler.h>
 #import <WebKit/IFWebFrame.h>
 #import <WebKit/IFWebView.h>
 #import <WebFoundation/IFAuthenticationManager.h>
@@ -18,6 +19,7 @@
 {
 @public
     IFPanelAuthenticationHandler *panelAuthenticationHandler;
+    IFPanelCookieAcceptHandler *panelCookieAcceptHandler;
     NSMutableDictionary *urlContainers;
 }
 @end
@@ -104,11 +106,23 @@ static void initSharedStandardPanels(void)
 
 -(void)setUseStandardCookieAcceptPanel:(BOOL)use
 {
+    if (use) {
+        if (![self useStandardCookieAcceptPanel]) {
+            _privatePanels->panelCookieAcceptHandler = [[IFPanelCookieAcceptHandler alloc] init];
+            [[IFCookieManager sharedCookieManager] addAcceptHandler:_privatePanels->panelCookieAcceptHandler];
+        }
+    } else {
+        if ([self useStandardCookieAcceptPanel]) {
+            [[IFCookieManager sharedCookieManager] removeAcceptHandler:_privatePanels->panelCookieAcceptHandler];
+            [_privatePanels->panelCookieAcceptHandler release];
+            _privatePanels->panelCookieAcceptHandler = nil;
+        }
+    }
 }
 
 -(BOOL)useStandardCookieAcceptPanel
 {
-    return FALSE;
+    return _privatePanels->panelCookieAcceptHandler != nil;
 }
 
 -(void)didStartLoadingURL:(NSURL *)url inWindow:(NSWindow *)window
diff --git a/WebKit/WebKit.pbproj/project.pbxproj b/WebKit/WebKit.pbproj/project.pbxproj
index ee6b562..0bf2852 100644
--- a/WebKit/WebKit.pbproj/project.pbxproj
+++ b/WebKit/WebKit.pbproj/project.pbxproj
@@ -259,6 +259,7 @@
 				F5488CF602CB04EE01FF6274,
 				F5927D4B02D253C401CA2DBB,
 				F5927D4F02D26C5E01CA2DBB,
+				F508472402DED36E01257167,
 			);
 			isa = PBXHeadersBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -336,6 +337,7 @@
 				F5E0E10B02BC45F8018635CA,
 				F5A7B11C02BC8413018635CA,
 				F5488CF702CB04EE01FF6274,
+				F508472502DED36E01257167,
 			);
 			isa = PBXSourcesBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -1316,6 +1318,30 @@
 			settings = {
 			};
 		};
+		F508472202DED36E01257167 = {
+			isa = PBXFileReference;
+			name = IFPanelCookieAcceptHandler.h;
+			path = Panels.subproj/IFPanelCookieAcceptHandler.h;
+			refType = 4;
+		};
+		F508472302DED36E01257167 = {
+			isa = PBXFileReference;
+			name = IFPanelCookieAcceptHandler.m;
+			path = Panels.subproj/IFPanelCookieAcceptHandler.m;
+			refType = 4;
+		};
+		F508472402DED36E01257167 = {
+			fileRef = F508472202DED36E01257167;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F508472502DED36E01257167 = {
+			fileRef = F508472302DED36E01257167;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
 		F508946902B71D59018A9CD4 = {
 			isa = PBXFileReference;
 			name = IFNSViewExtras.h;
@@ -2317,7 +2343,12 @@
 			children = (
 				F8CA15B5029A39D901000122,
 				F8CA15B6029A39D901000122,
+				F83DCC71029D09F301000131,
+				F83DCC72029D09F301000131,
+				F508472202DED36E01257167,
+				F508472302DED36E01257167,
 				F8CA15B7029A39D901000122,
+				F8CA15C1029A3E0D01000122,
 				F8CA15B8029A39D901000122,
 				F8CA15C1029A3E0D01000122,
 				F83DCC71029D09F301000131,

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list