[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