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

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


The following commit has been merged in the debian/unstable branch:
commit 1ed3f1b34c18d6d3956e35a596c4ce20eddbe002
Author: cblu <cblu at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Apr 8 21:08:48 2002 +0000

            * src/kwq/KWQKHTMLPart.mm: (KHTMLPart::requestObject):
            * src/kwq/WCPluginWidget.h:
            * src/kwq/WCPluginWidget.mm: (WCPluginWidget::WCPluginWidget):
    
            * Plugins.subproj/IFPluginView.h:
            * Plugins.subproj/IFPluginView.mm: (-[IFPluginView
            initWithFrame:plugin:url:mime:arguments:mode:]), (-[IFPluginView drawRect:]),
            (-[IFPluginView newStream:mimeType:notifyData:]), (-[IFPluginView
            getURLNotify:target:notifyData:]):
    
            Support new stream requests from plug-ins that are relative URL's.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@985 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index d090175..943cd0e 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,11 @@
+2002-04-08  Chris Blumenberg  <cblu at apple.com>
+
+	* src/kwq/KWQKHTMLPart.mm: (KHTMLPart::requestObject):
+	* src/kwq/WCPluginWidget.h:
+	* src/kwq/WCPluginWidget.mm: (WCPluginWidget::WCPluginWidget):
+
+        Support new stream requests from plug-ins that are relative URL's.
+
 2002-04-05  Chris Blumenberg  <cblu at apple.com>
 
 	* src/libwebcore.exp:
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index d090175..943cd0e 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,11 @@
+2002-04-08  Chris Blumenberg  <cblu at apple.com>
+
+	* src/kwq/KWQKHTMLPart.mm: (KHTMLPart::requestObject):
+	* src/kwq/WCPluginWidget.h:
+	* src/kwq/WCPluginWidget.mm: (WCPluginWidget::WCPluginWidget):
+
+        Support new stream requests from plug-ins that are relative URL's.
+
 2002-04-05  Chris Blumenberg  <cblu at apple.com>
 
 	* src/libwebcore.exp:
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index d090175..943cd0e 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,11 @@
+2002-04-08  Chris Blumenberg  <cblu at apple.com>
+
+	* src/kwq/KWQKHTMLPart.mm: (KHTMLPart::requestObject):
+	* src/kwq/WCPluginWidget.h:
+	* src/kwq/WCPluginWidget.mm: (WCPluginWidget::WCPluginWidget):
+
+        Support new stream requests from plug-ins that are relative URL's.
+
 2002-04-05  Chris Blumenberg  <cblu at apple.com>
 
 	* src/libwebcore.exp:
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index a7adead..1c579d5 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -975,7 +975,7 @@ bool KHTMLPart::requestObject( khtml::RenderPart *frame, const QString &url, con
   // The plugins array is an attempt to avoid multiple creations of the same plug-in.
   // FIXME: Can't have multiple plug-ins with the same URL on a page
   if(!plugins.contains(url)) {
-    WCPluginWidget *pluginWidget = new WCPluginWidget(completeURL(url).url(), serviceType, args);
+    WCPluginWidget *pluginWidget = new WCPluginWidget(completeURL(url).url(), serviceType, args, d->m_baseURL.url());
     frame->setWidget(pluginWidget);
     plugins.append(url);
   }
diff --git a/WebCore/kwq/KWQKHTMLPartImpl.mm b/WebCore/kwq/KWQKHTMLPartImpl.mm
index a7adead..1c579d5 100644
--- a/WebCore/kwq/KWQKHTMLPartImpl.mm
+++ b/WebCore/kwq/KWQKHTMLPartImpl.mm
@@ -975,7 +975,7 @@ bool KHTMLPart::requestObject( khtml::RenderPart *frame, const QString &url, con
   // The plugins array is an attempt to avoid multiple creations of the same plug-in.
   // FIXME: Can't have multiple plug-ins with the same URL on a page
   if(!plugins.contains(url)) {
-    WCPluginWidget *pluginWidget = new WCPluginWidget(completeURL(url).url(), serviceType, args);
+    WCPluginWidget *pluginWidget = new WCPluginWidget(completeURL(url).url(), serviceType, args, d->m_baseURL.url());
     frame->setWidget(pluginWidget);
     plugins.append(url);
   }
diff --git a/WebCore/kwq/WCPluginWidget.h b/WebCore/kwq/WCPluginWidget.h
index dad8df5..43b2e79 100644
--- a/WebCore/kwq/WCPluginWidget.h
+++ b/WebCore/kwq/WCPluginWidget.h
@@ -52,7 +52,7 @@ public:
     
     // constructors, copy constructors, and destructors ------------------------
 
-    WCPluginWidget(const QString &url=0, const QString &serviceType=0, const QStringList &args=QStringList());
+    WCPluginWidget(const QString &url=0, const QString &serviceType=0, const QStringList &args=QStringList(), const QString &baseURL=0);
     ~WCPluginWidget();
 
     // member functions --------------------------------------------------------
diff --git a/WebCore/kwq/WCPluginWidget.mm b/WebCore/kwq/WCPluginWidget.mm
index e040c0e..b1edd89 100644
--- a/WebCore/kwq/WCPluginWidget.mm
+++ b/WebCore/kwq/WCPluginWidget.mm
@@ -53,7 +53,7 @@ void WCSetIFNullPluginMakeFunc(WCIFNullPluginMakeFunc func)
 
 
 
-WCPluginWidget::WCPluginWidget(const QString &url, const QString &serviceType, const QStringList &args)
+WCPluginWidget::WCPluginWidget(const QString &url, const QString &serviceType, const QStringList &args, const QString &baseURL)
 {
     NSMutableDictionary *arguments;
     NSString *arg, *mime=nil, *URL;
@@ -73,7 +73,9 @@ WCPluginWidget::WCPluginWidget(const QString &url, const QString &serviceType, c
             [arguments setObject:[arg substringWithRange:r3] forKey:[arg substringToIndex:r1.location]];
         }
     }
-    
+    if(baseURL)
+        [arguments setObject:QSTRING_TO_NSSTRING(baseURL) forKey:@"WebKitBaseURL"];
+        
     if(serviceType.isNull()){
         plugin = [[WCPluginDatabase installedPlugins] getPluginForExtension:[URL pathExtension]];
         if(plugin != nil){
diff --git a/WebCore/src/kwq/KWQKHTMLPart.mm b/WebCore/src/kwq/KWQKHTMLPart.mm
index a7adead..1c579d5 100644
--- a/WebCore/src/kwq/KWQKHTMLPart.mm
+++ b/WebCore/src/kwq/KWQKHTMLPart.mm
@@ -975,7 +975,7 @@ bool KHTMLPart::requestObject( khtml::RenderPart *frame, const QString &url, con
   // The plugins array is an attempt to avoid multiple creations of the same plug-in.
   // FIXME: Can't have multiple plug-ins with the same URL on a page
   if(!plugins.contains(url)) {
-    WCPluginWidget *pluginWidget = new WCPluginWidget(completeURL(url).url(), serviceType, args);
+    WCPluginWidget *pluginWidget = new WCPluginWidget(completeURL(url).url(), serviceType, args, d->m_baseURL.url());
     frame->setWidget(pluginWidget);
     plugins.append(url);
   }
diff --git a/WebCore/src/kwq/WCPluginWidget.h b/WebCore/src/kwq/WCPluginWidget.h
index dad8df5..43b2e79 100644
--- a/WebCore/src/kwq/WCPluginWidget.h
+++ b/WebCore/src/kwq/WCPluginWidget.h
@@ -52,7 +52,7 @@ public:
     
     // constructors, copy constructors, and destructors ------------------------
 
-    WCPluginWidget(const QString &url=0, const QString &serviceType=0, const QStringList &args=QStringList());
+    WCPluginWidget(const QString &url=0, const QString &serviceType=0, const QStringList &args=QStringList(), const QString &baseURL=0);
     ~WCPluginWidget();
 
     // member functions --------------------------------------------------------
diff --git a/WebCore/src/kwq/WCPluginWidget.mm b/WebCore/src/kwq/WCPluginWidget.mm
index e040c0e..b1edd89 100644
--- a/WebCore/src/kwq/WCPluginWidget.mm
+++ b/WebCore/src/kwq/WCPluginWidget.mm
@@ -53,7 +53,7 @@ void WCSetIFNullPluginMakeFunc(WCIFNullPluginMakeFunc func)
 
 
 
-WCPluginWidget::WCPluginWidget(const QString &url, const QString &serviceType, const QStringList &args)
+WCPluginWidget::WCPluginWidget(const QString &url, const QString &serviceType, const QStringList &args, const QString &baseURL)
 {
     NSMutableDictionary *arguments;
     NSString *arg, *mime=nil, *URL;
@@ -73,7 +73,9 @@ WCPluginWidget::WCPluginWidget(const QString &url, const QString &serviceType, c
             [arguments setObject:[arg substringWithRange:r3] forKey:[arg substringToIndex:r1.location]];
         }
     }
-    
+    if(baseURL)
+        [arguments setObject:QSTRING_TO_NSSTRING(baseURL) forKey:@"WebKitBaseURL"];
+        
     if(serviceType.isNull()){
         plugin = [[WCPluginDatabase installedPlugins] getPluginForExtension:[URL pathExtension]];
         if(plugin != nil){
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index c83c463..3475d16 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,13 @@
+2002-04-08  Chris Blumenberg  <cblu at apple.com>
+
+	* Plugins.subproj/IFPluginView.h:
+	* Plugins.subproj/IFPluginView.mm: (-[IFPluginView
+	initWithFrame:plugin:url:mime:arguments:mode:]), (-[IFPluginView drawRect:]),
+	(-[IFPluginView newStream:mimeType:notifyData:]), (-[IFPluginView
+	getURLNotify:target:notifyData:]):
+
+	Support new stream requests from plug-ins that are relative URL's.
+
 2002-04-08  Darin Adler  <darin at apple.com>
 
 	* WebKit.pbproj/project.pbxproj: Re-added -Wno-format-y2k.
diff --git a/WebKit/ChangeLog-2002-12-03 b/WebKit/ChangeLog-2002-12-03
index c83c463..3475d16 100644
--- a/WebKit/ChangeLog-2002-12-03
+++ b/WebKit/ChangeLog-2002-12-03
@@ -1,3 +1,13 @@
+2002-04-08  Chris Blumenberg  <cblu at apple.com>
+
+	* Plugins.subproj/IFPluginView.h:
+	* Plugins.subproj/IFPluginView.mm: (-[IFPluginView
+	initWithFrame:plugin:url:mime:arguments:mode:]), (-[IFPluginView drawRect:]),
+	(-[IFPluginView newStream:mimeType:notifyData:]), (-[IFPluginView
+	getURLNotify:target:notifyData:]):
+
+	Support new stream requests from plug-ins that are relative URL's.
+
 2002-04-08  Darin Adler  <darin at apple.com>
 
 	* WebKit.pbproj/project.pbxproj: Re-added -Wno-format-y2k.
diff --git a/WebKit/Plugins.subproj/IFPluginView.h b/WebKit/Plugins.subproj/IFPluginView.h
index 0abfeb7..715e085 100644
--- a/WebKit/Plugins.subproj/IFPluginView.h
+++ b/WebKit/Plugins.subproj/IFPluginView.h
@@ -47,6 +47,7 @@ typedef struct _StreamData{
     bool isFlipped, transferred, hidden, stopped;
             
     NSString *URL, *mime;
+    NSURL *baseURL;
     NSTrackingRectTag trackingTag;
     NSMutableArray *filesToErase, *activeURLHandles;
 
@@ -71,7 +72,7 @@ typedef struct _StreamData{
 -(void)viewHasMoved:(NSNotification *)notification;
 -(NSView *)findSuperview:(NSString *) viewName;
 - (void) windowWillClose:(NSNotification *)notification;
--(void)newStream:(NSString *)streamURL mimeType:(NSString *)mimeType notifyData:(void *)notifyData;
+-(void)newStream:(NSURL *)streamURL mimeType:(NSString *)mimeType notifyData:(void *)notifyData;
 -(BOOL)acceptsFirstResponder;
 -(BOOL)becomeFirstResponder;
 -(BOOL)resignFirstResponder;
diff --git a/WebKit/Plugins.subproj/IFPluginView.mm b/WebKit/Plugins.subproj/IFPluginView.mm
index c28567a..2522007 100644
--- a/WebKit/Plugins.subproj/IFPluginView.mm
+++ b/WebKit/Plugins.subproj/IFPluginView.mm
@@ -71,7 +71,7 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
     char *cMime, *s;
     NPSavedData saved;
     NSArray *attributes, *values;
-    NSString *attributeString;
+    NSString *attributeString, *baseURLString;
     uint i;
         
     [super initWithFrame: r];
@@ -106,6 +106,11 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
     [mime getCString:cMime];
     
     if(arguments){
+    
+        baseURLString = [arguments objectForKey:@"WebKitBaseURL"];
+        if(baseURLString)
+            baseURL = [[NSURL URLWithString:baseURLString] retain];
+            
         attributes = [arguments allKeys];
         values = [arguments allValues];
         cAttributes = malloc(sizeof(char *) * [arguments count]);
@@ -160,7 +165,7 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
         [notificationCenter addObserver:self selector:@selector(windowResignedKey:) name:@"NSWindowDidResignKeyNotification" object:theWindow];
         [self sendActivateEvent:[theWindow isKeyWindow]];
         if(URL)
-            [self newStream:URL mimeType:mime notifyData:NULL];
+            [self newStream:[NSURL URLWithString:URL] mimeType:mime notifyData:NULL];
         eventSender = [[IFPluginViewNullEventSender alloc] initializeWithNPP:instance functionPointer:NPP_HandleEvent];
         [eventSender sendNullEvents];
         transferred = TRUE;
@@ -249,7 +254,7 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
 }
 
 
-- (void) newStream:(NSString *)streamURL mimeType:(NSString *)mimeType notifyData:(void *)notifyData
+- (void) newStream:(NSURL *)streamURL mimeType:(NSString *)mimeType notifyData:(void *)notifyData
 {
     char *cURL, *cMime;
     StreamData *streamData;
@@ -258,11 +263,13 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
     uint16 transferMode;
     IFURLHandle *urlHandle;
     NSDictionary *attributes;
+    NSString *streamURLString;
     
+    streamURLString = [streamURL absoluteString];
     stream = malloc(sizeof(NPStream));
-    cURL   = malloc([streamURL length]+1);
+    cURL   = malloc([streamURLString length]+1);
     cMime  = malloc([mimeType length]+1);
-    [streamURL getCString:cURL];
+    [streamURLString getCString:cURL];
     [mimeType getCString:cMime];
     stream->url = cURL;
     stream->end = 0;
@@ -281,19 +288,19 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
     if(transferMode == NP_NORMAL){
         WEBKITDEBUG("Stream type: NP_NORMAL\n");
         attributes = [NSDictionary dictionaryWithObject:[NSValue valueWithPointer:streamData] forKey:IFURLHandleUserData];
-        urlHandle = [[IFURLHandle alloc] initWithURL:[NSURL URLWithString:streamURL] attributes:attributes flags:0];
+        urlHandle = [[IFURLHandle alloc] initWithURL:streamURL attributes:attributes flags:0];
         [urlHandle addClient:self];
         [activeURLHandles addObject:urlHandle];
         [urlHandle loadInBackground];
     }else if(transferMode == NP_ASFILEONLY || transferMode == NP_ASFILE){
         if(transferMode == NP_ASFILEONLY) WEBKITDEBUG("Stream type: NP_ASFILEONLY\n");
         if(transferMode == NP_ASFILE) WEBKITDEBUG("Stream type: NP_ASFILE\n");
-        streamData->filename  = [NSString stringWithString:[streamURL lastPathComponent]];
+        streamData->filename  = [NSString stringWithString:[streamURLString lastPathComponent]];
         [streamData->filename retain];
         streamData->data = [NSMutableData dataWithCapacity:0];
         [streamData->data retain];
         attributes = [NSDictionary dictionaryWithObject:[NSValue valueWithPointer:streamData] forKey:IFURLHandleUserData];
-        urlHandle = [[IFURLHandle alloc] initWithURL:[NSURL URLWithString:streamURL] attributes:attributes flags:0];
+        urlHandle = [[IFURLHandle alloc] initWithURL:streamURL attributes:attributes flags:0];
         [urlHandle addClient:self];
         if(urlHandle!=nil){
             [activeURLHandles addObject:urlHandle];
@@ -535,14 +542,20 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
 {
     NSURL *newURL;
     IFWebDataSource *dataSource;
+    NSURL *requestedURL;
     
     WEBKITDEBUG("NPN_GetURLNotify: %s target: %s\n", url, target);
  
     if(!strcmp(url, "")){
         return NPERR_INVALID_URL;
+    }else if(strstr(url, "://")){ //check if this is an absolute URL
+        requestedURL = [NSURL URLWithString:[NSString stringWithCString:url]];
+    }else{
+        requestedURL = [NSURL URLWithString:[NSString stringWithCString:url] relativeToURL:baseURL];
     }
+    
     if(target == NULL){ // send data to plug-in if target is null
-        [self newStream:[NSString stringWithCString:url] mimeType:[plugin mimeTypeForURL:[NSString stringWithCString:url]] notifyData:(void *)notifyData];
+        [self newStream:requestedURL mimeType:[plugin mimeTypeForURL:[NSString stringWithCString:url]] notifyData:(void *)notifyData];
     }else if(!strcmp(target, "_self") || !strcmp(target, "_current") || !strcmp(target, "_parent") || !strcmp(target, "_top")){
         if(webController){
             newURL = [NSURL URLWithString:[NSString stringWithCString:url]];
diff --git a/WebKit/Plugins.subproj/WebPluginView.h b/WebKit/Plugins.subproj/WebPluginView.h
index 0abfeb7..715e085 100644
--- a/WebKit/Plugins.subproj/WebPluginView.h
+++ b/WebKit/Plugins.subproj/WebPluginView.h
@@ -47,6 +47,7 @@ typedef struct _StreamData{
     bool isFlipped, transferred, hidden, stopped;
             
     NSString *URL, *mime;
+    NSURL *baseURL;
     NSTrackingRectTag trackingTag;
     NSMutableArray *filesToErase, *activeURLHandles;
 
@@ -71,7 +72,7 @@ typedef struct _StreamData{
 -(void)viewHasMoved:(NSNotification *)notification;
 -(NSView *)findSuperview:(NSString *) viewName;
 - (void) windowWillClose:(NSNotification *)notification;
--(void)newStream:(NSString *)streamURL mimeType:(NSString *)mimeType notifyData:(void *)notifyData;
+-(void)newStream:(NSURL *)streamURL mimeType:(NSString *)mimeType notifyData:(void *)notifyData;
 -(BOOL)acceptsFirstResponder;
 -(BOOL)becomeFirstResponder;
 -(BOOL)resignFirstResponder;
diff --git a/WebKit/Plugins.subproj/WebPluginView.m b/WebKit/Plugins.subproj/WebPluginView.m
index c28567a..2522007 100644
--- a/WebKit/Plugins.subproj/WebPluginView.m
+++ b/WebKit/Plugins.subproj/WebPluginView.m
@@ -71,7 +71,7 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
     char *cMime, *s;
     NPSavedData saved;
     NSArray *attributes, *values;
-    NSString *attributeString;
+    NSString *attributeString, *baseURLString;
     uint i;
         
     [super initWithFrame: r];
@@ -106,6 +106,11 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
     [mime getCString:cMime];
     
     if(arguments){
+    
+        baseURLString = [arguments objectForKey:@"WebKitBaseURL"];
+        if(baseURLString)
+            baseURL = [[NSURL URLWithString:baseURLString] retain];
+            
         attributes = [arguments allKeys];
         values = [arguments allValues];
         cAttributes = malloc(sizeof(char *) * [arguments count]);
@@ -160,7 +165,7 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
         [notificationCenter addObserver:self selector:@selector(windowResignedKey:) name:@"NSWindowDidResignKeyNotification" object:theWindow];
         [self sendActivateEvent:[theWindow isKeyWindow]];
         if(URL)
-            [self newStream:URL mimeType:mime notifyData:NULL];
+            [self newStream:[NSURL URLWithString:URL] mimeType:mime notifyData:NULL];
         eventSender = [[IFPluginViewNullEventSender alloc] initializeWithNPP:instance functionPointer:NPP_HandleEvent];
         [eventSender sendNullEvents];
         transferred = TRUE;
@@ -249,7 +254,7 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
 }
 
 
-- (void) newStream:(NSString *)streamURL mimeType:(NSString *)mimeType notifyData:(void *)notifyData
+- (void) newStream:(NSURL *)streamURL mimeType:(NSString *)mimeType notifyData:(void *)notifyData
 {
     char *cURL, *cMime;
     StreamData *streamData;
@@ -258,11 +263,13 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
     uint16 transferMode;
     IFURLHandle *urlHandle;
     NSDictionary *attributes;
+    NSString *streamURLString;
     
+    streamURLString = [streamURL absoluteString];
     stream = malloc(sizeof(NPStream));
-    cURL   = malloc([streamURL length]+1);
+    cURL   = malloc([streamURLString length]+1);
     cMime  = malloc([mimeType length]+1);
-    [streamURL getCString:cURL];
+    [streamURLString getCString:cURL];
     [mimeType getCString:cMime];
     stream->url = cURL;
     stream->end = 0;
@@ -281,19 +288,19 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
     if(transferMode == NP_NORMAL){
         WEBKITDEBUG("Stream type: NP_NORMAL\n");
         attributes = [NSDictionary dictionaryWithObject:[NSValue valueWithPointer:streamData] forKey:IFURLHandleUserData];
-        urlHandle = [[IFURLHandle alloc] initWithURL:[NSURL URLWithString:streamURL] attributes:attributes flags:0];
+        urlHandle = [[IFURLHandle alloc] initWithURL:streamURL attributes:attributes flags:0];
         [urlHandle addClient:self];
         [activeURLHandles addObject:urlHandle];
         [urlHandle loadInBackground];
     }else if(transferMode == NP_ASFILEONLY || transferMode == NP_ASFILE){
         if(transferMode == NP_ASFILEONLY) WEBKITDEBUG("Stream type: NP_ASFILEONLY\n");
         if(transferMode == NP_ASFILE) WEBKITDEBUG("Stream type: NP_ASFILE\n");
-        streamData->filename  = [NSString stringWithString:[streamURL lastPathComponent]];
+        streamData->filename  = [NSString stringWithString:[streamURLString lastPathComponent]];
         [streamData->filename retain];
         streamData->data = [NSMutableData dataWithCapacity:0];
         [streamData->data retain];
         attributes = [NSDictionary dictionaryWithObject:[NSValue valueWithPointer:streamData] forKey:IFURLHandleUserData];
-        urlHandle = [[IFURLHandle alloc] initWithURL:[NSURL URLWithString:streamURL] attributes:attributes flags:0];
+        urlHandle = [[IFURLHandle alloc] initWithURL:streamURL attributes:attributes flags:0];
         [urlHandle addClient:self];
         if(urlHandle!=nil){
             [activeURLHandles addObject:urlHandle];
@@ -535,14 +542,20 @@ static id IFPluginMake(NSRect rect, WCPlugin *plugin, NSString *url, NSString *m
 {
     NSURL *newURL;
     IFWebDataSource *dataSource;
+    NSURL *requestedURL;
     
     WEBKITDEBUG("NPN_GetURLNotify: %s target: %s\n", url, target);
  
     if(!strcmp(url, "")){
         return NPERR_INVALID_URL;
+    }else if(strstr(url, "://")){ //check if this is an absolute URL
+        requestedURL = [NSURL URLWithString:[NSString stringWithCString:url]];
+    }else{
+        requestedURL = [NSURL URLWithString:[NSString stringWithCString:url] relativeToURL:baseURL];
     }
+    
     if(target == NULL){ // send data to plug-in if target is null
-        [self newStream:[NSString stringWithCString:url] mimeType:[plugin mimeTypeForURL:[NSString stringWithCString:url]] notifyData:(void *)notifyData];
+        [self newStream:requestedURL mimeType:[plugin mimeTypeForURL:[NSString stringWithCString:url]] notifyData:(void *)notifyData];
     }else if(!strcmp(target, "_self") || !strcmp(target, "_current") || !strcmp(target, "_parent") || !strcmp(target, "_top")){
         if(webController){
             newURL = [NSURL URLWithString:[NSString stringWithCString:url]];

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list