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

rjw rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:23:22 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 15af8b9156015b29afeb0437b775846a211af4a3
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Feb 3 19:57:53 2003 +0000

    WebKit:
            Support for new canProvideDocumentSource and documentSource API.
            Updated all the representations.  Added support to show for RTF source.
            Moved WebKitInitializeUnicode to to early class.  This was necessary
            because WebCore may use the unicode property functions before WebTextRenderer
            gets initialized.
            Ensured guarantee that identifierForInitialRequest:fromDataSource: is called with
            the first initial request.
    
            Reviewed by maciej.
    
            * Plugins.subproj/WebNetscapePluginRepresentation.m:
            (-[WebNetscapePluginRepresentation canProvideDocumentSource]):
            (-[WebNetscapePluginRepresentation documentSource]):
            * WebCoreSupport.subproj/WebTextRenderer.m:
            * WebView.subproj/WebBaseResourceHandleDelegate.h:
            * WebView.subproj/WebBaseResourceHandleDelegate.m:
            (-[WebBaseResourceHandleDelegate setIdentifier:]):
            * WebView.subproj/WebDataSource.h:
            * WebView.subproj/WebDataSource.m:
            (-[WebDataSource initWithRequest:]):
            (-[WebDataSource controller]):
            (-[WebDataSource initialRequest]):
            * WebView.subproj/WebDataSourcePrivate.h:
            * WebView.subproj/WebDataSourcePrivate.m:
            (-[WebDataSourcePrivate dealloc]):
            (-[WebDataSource _startLoading:]):
            (-[WebDataSource _originalRequest]):
            * WebView.subproj/WebDocument.h:
            * WebView.subproj/WebHTMLRepresentation.h:
            * WebView.subproj/WebHTMLRepresentation.m:
            (-[WebHTMLRepresentation finishedLoadingWithDataSource:]):
            (-[WebHTMLRepresentation canProvideDocumentSource]):
            * WebView.subproj/WebHTMLView.m:
            (+[WebHTMLView initialize]):
            * WebView.subproj/WebImageRepresentation.m:
            (-[WebImageRepresentation canProvideDocumentSource]):
            (-[WebImageRepresentation documentSource]):
            * WebView.subproj/WebTextRepresentation.h:
            * WebView.subproj/WebTextRepresentation.m:
            (-[WebTextRepresentation dealloc]):
            (-[WebTextRepresentation setDataSource:]):
            (-[WebTextRepresentation finishedLoadingWithDataSource:]):
            (-[WebTextRepresentation canProvideDocumentSource]):
            (-[WebTextRepresentation documentSource]):
    
    WebBrowser:
            Make us of new canProvideDocumentSource API, replacing somewhat
            klunky usage of isDocumentHTML.
    
            Reviewed by maciej.
    
            * BrowserDocument.m:
            (-[BrowserDocument validateUserInterfaceItem:]):
            (-[BrowserDocument source]):
            * ContextMenuHandler.m:
            (-[ContextMenuHandler contextMenuItemsForElement:defaultMenuItems:]):
            * HTMLSourceDocument.m:
            (-[HTMLSourceDocument makeWindowControllers]):
            (-[HTMLSourceDocument setDataSource:]):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3546 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 68048bf..d67c6c4 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,50 @@
+2003-02-03  Richard Williamson   <rjw at apple.com>
+
+        Support for new canProvideDocumentSource and documentSource API.
+        Updated all the representations.  Added support to show for RTF source.  
+        Moved WebKitInitializeUnicode to to early class.  This was necessary
+        because WebCore may use the unicode property functions before WebTextRenderer
+        gets initialized.
+        Ensured guarantee that identifierForInitialRequest:fromDataSource: is called with
+        the first initial request.
+        
+        Reviewed by maciej.
+
+        * Plugins.subproj/WebNetscapePluginRepresentation.m:
+        (-[WebNetscapePluginRepresentation canProvideDocumentSource]):
+        (-[WebNetscapePluginRepresentation documentSource]):
+        * WebCoreSupport.subproj/WebTextRenderer.m:
+        * WebView.subproj/WebBaseResourceHandleDelegate.h:
+        * WebView.subproj/WebBaseResourceHandleDelegate.m:
+        (-[WebBaseResourceHandleDelegate setIdentifier:]):
+        * WebView.subproj/WebDataSource.h:
+        * WebView.subproj/WebDataSource.m:
+        (-[WebDataSource initWithRequest:]):
+        (-[WebDataSource controller]):
+        (-[WebDataSource initialRequest]):
+        * WebView.subproj/WebDataSourcePrivate.h:
+        * WebView.subproj/WebDataSourcePrivate.m:
+        (-[WebDataSourcePrivate dealloc]):
+        (-[WebDataSource _startLoading:]):
+        (-[WebDataSource _originalRequest]):
+        * WebView.subproj/WebDocument.h:
+        * WebView.subproj/WebHTMLRepresentation.h:
+        * WebView.subproj/WebHTMLRepresentation.m:
+        (-[WebHTMLRepresentation finishedLoadingWithDataSource:]):
+        (-[WebHTMLRepresentation canProvideDocumentSource]):
+        * WebView.subproj/WebHTMLView.m:
+        (+[WebHTMLView initialize]):
+        * WebView.subproj/WebImageRepresentation.m:
+        (-[WebImageRepresentation canProvideDocumentSource]):
+        (-[WebImageRepresentation documentSource]):
+        * WebView.subproj/WebTextRepresentation.h:
+        * WebView.subproj/WebTextRepresentation.m:
+        (-[WebTextRepresentation dealloc]):
+        (-[WebTextRepresentation setDataSource:]):
+        (-[WebTextRepresentation finishedLoadingWithDataSource:]):
+        (-[WebTextRepresentation canProvideDocumentSource]):
+        (-[WebTextRepresentation documentSource]):
+
 2003-02-03  Chris Blumenberg  <cblu at apple.com>
 
 	Fixed: 3163073 - SECURITY: Need to check if filename in encoded download is safe
diff --git a/WebKit/Plugins.subproj/WebNetscapePluginRepresentation.m b/WebKit/Plugins.subproj/WebNetscapePluginRepresentation.m
index c5d6dce..95f09b4 100644
--- a/WebKit/Plugins.subproj/WebNetscapePluginRepresentation.m
+++ b/WebKit/Plugins.subproj/WebNetscapePluginRepresentation.m
@@ -45,4 +45,14 @@
     [self finishedLoadingWithData:[ds data]];
 }
 
+- (BOOL)canProvideDocumentSource
+{
+    return NO;
+}
+
+- (NSString *)documentSource
+{
+    return nil;
+}
+
 @end
diff --git a/WebKit/WebCoreSupport.subproj/WebTextRenderer.m b/WebKit/WebCoreSupport.subproj/WebTextRenderer.m
index abc9c53..dac4d7f 100644
--- a/WebKit/WebCoreSupport.subproj/WebTextRenderer.m
+++ b/WebKit/WebCoreSupport.subproj/WebTextRenderer.m
@@ -297,7 +297,6 @@ static BOOL bufferTextDrawing = NO;
 
 + (void)initialize
 {
-    WebKitInitializeUnicode();
     nonBaseChars = CFCharacterSetGetPredefined(kCFCharacterSetNonBase);
     bufferTextDrawing = [[[NSUserDefaults standardUserDefaults] stringForKey:@"BufferTextDrawing"] isEqual: @"YES"];
 }
diff --git a/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.h b/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.h
index 18d3bed..500b5f9 100644
--- a/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.h
+++ b/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.h
@@ -55,4 +55,6 @@
 
 - (void)notifyDelegatesOfInterruptionByPolicyChange;
 
+- (void)setIdentifier: ident;
+
 @end
diff --git a/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.m b/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.m
index b716f15..763f7f1 100644
--- a/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.m
+++ b/WebKit/WebView.subproj/WebBaseResourceHandleDelegate.m
@@ -283,4 +283,12 @@
                            fromDataSource:dataSource];
 }
 
+- (void)setIdentifier: ident
+{
+    if (identifier != ident){
+        [identifier release];
+        identifier = [ident retain];
+    }
+}
+
 @end
diff --git a/WebKit/WebView.subproj/WebDataSource.h b/WebKit/WebView.subproj/WebDataSource.h
index a1c088a..5943284 100644
--- a/WebKit/WebView.subproj/WebDataSource.h
+++ b/WebKit/WebView.subproj/WebDataSource.h
@@ -79,8 +79,17 @@
 - (WebController *)controller;
     
 /*!
+    @method initialRequest
+    @result Returns a reference to the original request that created the
+    datasource.  This request will be unmodified by WebKit. 
+*/
+- (WebResourceRequest *)initialRequest;
+
+/*!
     @method request
-    @result Returns the request that was used to create this datasource.
+    @result Returns the request that is used for this datasource.  This
+    request may have changed from the original request because of canonicalization
+    of the URL, addition of headers, and/or redirects.
 */
 -(WebResourceRequest *)request;
 
diff --git a/WebKit/WebView.subproj/WebDataSource.m b/WebKit/WebView.subproj/WebDataSource.m
index f3e7fed..ce5afbf 100644
--- a/WebKit/WebView.subproj/WebDataSource.m
+++ b/WebKit/WebView.subproj/WebDataSource.m
@@ -48,7 +48,8 @@
     }
     
     _private = [[WebDataSourcePrivate alloc] init];
-    _private->originalRequest = [request copy];
+    _private->originalRequest = [request retain];
+    _private->originalRequestCopy = [request copy];
     _private->request = [_private->originalRequest retain];
 
     ++WebDataSourceCount;
@@ -99,6 +100,11 @@
     return _private->controller;
 }
 
+-(WebResourceRequest *)initialRequest
+{
+    return _private->originalRequest;
+}
+
 -(WebResourceRequest *)request
 {
     return _private->request;
diff --git a/WebKit/WebView.subproj/WebDataSourcePrivate.h b/WebKit/WebView.subproj/WebDataSourcePrivate.h
index 2928c56..ec83448 100644
--- a/WebKit/WebView.subproj/WebDataSourcePrivate.h
+++ b/WebKit/WebView.subproj/WebDataSourcePrivate.h
@@ -27,8 +27,21 @@
     
     WebController *controller;
     
+    // A reference to actual request used to create the data source.
+    // This should only be used by the resourceLoadDelegate's
+    // identifierForInitialRequest:fromDatasource: method.  It is
+    // not guaranteed to remain unchanged, as requests are mutable.
     WebResourceRequest *originalRequest;
+    
+    // A copy of the original request used to create the data source.
+    // We have to copy the request because requests are mutable.
+    WebResourceRequest *originalRequestCopy;
+    
+    // The 'working' request for this datasource.  It may be mutated
+    // several times from the original request to include additional
+    // headers, cookie information, canonicalization and redirects.
     WebResourceRequest *request;
+    
     WebResourceResponse *response;
 
     // Client for main resource.
diff --git a/WebKit/WebView.subproj/WebDataSourcePrivate.m b/WebKit/WebView.subproj/WebDataSourcePrivate.m
index b337278..5f60453 100644
--- a/WebKit/WebView.subproj/WebDataSourcePrivate.m
+++ b/WebKit/WebView.subproj/WebDataSourcePrivate.m
@@ -23,6 +23,7 @@
 #import <WebKit/WebKitLogging.h>
 #import <WebKit/WebLocationChangeDelegate.h>
 #import <WebKit/WebMainResourceClient.h>
+#import <WebKit/WebResourceLoadDelegate.h>
 #import <WebKit/WebSubresourceClient.h>
 #import <WebKit/WebTextRepresentation.h>
 #import <WebKit/WebViewPrivate.h>
@@ -52,6 +53,7 @@
     [representation release];
     [request release];
     [originalRequest release];
+    [originalRequestCopy release];
     [mainClient release];
     [subresourceClients release];
     [pageTitle release];
@@ -168,8 +170,11 @@
         [self _commitIfReady: pageCache];
     } else if (!_private->mainClient) {
         _private->loadingFromPageCache = NO;
-        [[self webFrame] _addExtraFieldsToRequest:_private->request alwaysFromRequest: NO];
         _private->mainClient = [[WebMainResourceClient alloc] initWithDataSource:self];
+        id identifier;
+        identifier = [[_private->controller resourceLoadDelegate] identifierForInitialRequest:_private->originalRequest fromDataSource:self];
+        [_private->mainClient setIdentifier: identifier];
+        [[self webFrame] _addExtraFieldsToRequest:_private->request alwaysFromRequest: NO];
         if (![_private->mainClient loadWithRequest:_private->request]) {
             ERROR("could not create WebResourceHandle for URL %@ -- should be caught by policy handler level",
                 [_private->request URL]);
@@ -605,7 +610,7 @@
 
 - (WebResourceRequest *)_originalRequest
 {
-    return _private->originalRequest;
+    return _private->originalRequestCopy;
 }
 
 - (void)_setTriggeringAction:(NSDictionary *)action
diff --git a/WebKit/WebView.subproj/WebDocument.h b/WebKit/WebView.subproj/WebDocument.h
index 1385903..61e9565 100644
--- a/WebKit/WebView.subproj/WebDocument.h
+++ b/WebKit/WebView.subproj/WebDocument.h
@@ -181,4 +181,17 @@
     @param dataSource The datasource that has finished loading.
 */
 - (void)finishedLoadingWithDataSource: (WebDataSource *)dataSource;
+
+/*!
+    @method canProvideDocumentSource
+    @return Returns true if the representation can provide document source.
+*/
+- (BOOL)canProvideDocumentSource;
+
+/*!
+    @method documentSource
+    @return Returns the textual source representation of the document.  For HTML documents
+    this is the original HTML source.
+*/
+- (NSString *)documentSource;
 @end
diff --git a/WebKit/WebView.subproj/WebHTMLRepresentation.h b/WebKit/WebView.subproj/WebHTMLRepresentation.h
index 1143efa..16d49b6 100644
--- a/WebKit/WebView.subproj/WebHTMLRepresentation.h
+++ b/WebKit/WebView.subproj/WebHTMLRepresentation.h
@@ -10,6 +10,7 @@
 @class WebHTMLRepresentationPrivate;
 
 @protocol WebDocumentRepresentation;
+ at protocol WebDocumentSourceRepresentation;
 @protocol WebDOMDocument;
 @protocol WebDOMNode;
 
@@ -22,12 +23,6 @@
 }
 
 /*!
-    @method documentSource
-    @abstract Get the actual source of the document.
-*/
-- (NSString *)documentSource;
-
-/*!
     @method DOMDocument
     @abstract return the DOM document for this data source.
 */
diff --git a/WebKit/WebView.subproj/WebHTMLRepresentation.m b/WebKit/WebView.subproj/WebHTMLRepresentation.m
index 479ee93..0df911e 100644
--- a/WebKit/WebView.subproj/WebHTMLRepresentation.m
+++ b/WebKit/WebView.subproj/WebHTMLRepresentation.m
@@ -9,6 +9,7 @@
 #import <WebKit/WebBridge.h>
 #import <WebKit/WebKitStatisticsPrivate.h>
 #import <WebKit/WebFramePrivate.h>
+#import <WebKit/WebDocument.h>
 #import <WebFoundation/WebResourceResponse.h>
 
 @interface WebHTMLRepresentationPrivate : NSObject
@@ -74,6 +75,11 @@
         [_private->bridge receivedData:nil withDataSource:dataSource];
 }
 
+- (BOOL)canProvideDocumentSource
+{
+    return YES;
+}
+
 - (NSString *)documentSource
 {
     return [WebBridge stringWithData:[_private->dataSource data] textEncoding:[_private->bridge textEncoding]];
diff --git a/WebKit/WebView.subproj/WebHTMLView.m b/WebKit/WebView.subproj/WebHTMLView.m
index f635178..20fff20 100644
--- a/WebKit/WebView.subproj/WebHTMLView.m
+++ b/WebKit/WebView.subproj/WebHTMLView.m
@@ -27,6 +27,7 @@
 #import <WebKit/WebTextRenderer.h>
 #import <WebKit/WebTextRendererFactory.h>
 #import <WebKit/WebViewPrivate.h>
+#import <WebKit/WebUnicode.h>
 
 #import <AppKit/NSResponder_Private.h>
 #import <CoreGraphics/CGContextGState.h>
@@ -35,6 +36,7 @@
 
 +(void)initialize
 {
+    WebKitInitializeUnicode();
     [NSApp registerServicesMenuSendTypes:[[self class] _pasteboardTypes] returnTypes:nil];
 }
 
diff --git a/WebKit/WebView.subproj/WebImageRepresentation.m b/WebKit/WebView.subproj/WebImageRepresentation.m
index d3dd7c8..53b4406 100644
--- a/WebKit/WebView.subproj/WebImageRepresentation.m
+++ b/WebKit/WebView.subproj/WebImageRepresentation.m
@@ -61,4 +61,15 @@
                 length:[resourceData length]] retain];
 }
 
+- (BOOL)canProvideDocumentSource
+{
+    return NO;
+}
+
+- (NSString *)documentSource
+{
+    return nil;
+}
+
+
 @end
diff --git a/WebKit/WebView.subproj/WebLoader.h b/WebKit/WebView.subproj/WebLoader.h
index 18d3bed..500b5f9 100644
--- a/WebKit/WebView.subproj/WebLoader.h
+++ b/WebKit/WebView.subproj/WebLoader.h
@@ -55,4 +55,6 @@
 
 - (void)notifyDelegatesOfInterruptionByPolicyChange;
 
+- (void)setIdentifier: ident;
+
 @end
diff --git a/WebKit/WebView.subproj/WebLoader.m b/WebKit/WebView.subproj/WebLoader.m
index b716f15..763f7f1 100644
--- a/WebKit/WebView.subproj/WebLoader.m
+++ b/WebKit/WebView.subproj/WebLoader.m
@@ -283,4 +283,12 @@
                            fromDataSource:dataSource];
 }
 
+- (void)setIdentifier: ident
+{
+    if (identifier != ident){
+        [identifier release];
+        identifier = [ident retain];
+    }
+}
+
 @end
diff --git a/WebKit/WebView.subproj/WebTextRepresentation.h b/WebKit/WebView.subproj/WebTextRepresentation.h
index 4ce6225..45919ce 100644
--- a/WebKit/WebView.subproj/WebTextRepresentation.h
+++ b/WebKit/WebView.subproj/WebTextRepresentation.h
@@ -9,5 +9,7 @@
 
 @interface WebTextRepresentation : NSObject <WebDocumentRepresentation>
 {
+    NSString *RTFSource;
+    BOOL hasRTFSource;
 }
 @end
diff --git a/WebKit/WebView.subproj/WebTextRepresentation.m b/WebKit/WebView.subproj/WebTextRepresentation.m
index 3ebafa4..3e04d95 100644
--- a/WebKit/WebView.subproj/WebTextRepresentation.m
+++ b/WebKit/WebView.subproj/WebTextRepresentation.m
@@ -6,11 +6,22 @@
 #import "WebTextRepresentation.h"
 
 #import <WebKit/WebDataSource.h>
+#import <WebFoundation/WebResourceResponse.h>
 
 @implementation WebTextRepresentation
 
+- (void)dealloc
+{
+    [RTFSource release];
+    [super dealloc];
+}
+
 - (void)setDataSource:(WebDataSource *)dataSource
 {
+    hasRTFSource = [[[dataSource response] contentType] isEqualToString:@"text/rtf"];
+    if (hasRTFSource){
+        RTFSource = [[dataSource stringWithData: [dataSource data]] retain];
+    }
 }
 
 - (void)receivedData:(NSData *)data withDataSource:(WebDataSource *)dataSource
@@ -28,4 +39,14 @@
 
 }
 
+- (BOOL)canProvideDocumentSource
+{
+    return hasRTFSource;
+}
+
+- (NSString *)documentSource
+{
+    return RTFSource;
+}
+
 @end

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list