Reviewed by Darin.
authorkdecker@apple.com <kdecker@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 3 Jan 2008 22:45:13 +0000 (22:45 +0000)
committerkdecker@apple.com <kdecker@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 3 Jan 2008 22:45:13 +0000 (22:45 +0000)
        Fixed: <rdar://problem/4106190> Include "Where from" metadata in drag-and-dropped images

        * Misc/WebNSFileManagerExtras.h:
        * Misc/WebNSFileManagerExtras.m:
        (-[NSFileManager _webkit_setMetadataURL:referrer:atPath:]): Added new method. Uses WebKitSystemInterface to set
        "Where from:" metadata information.
        * WebView/WebHTMLView.mm:
        (-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]): Added "Where from:" metadata for drag and dropped images.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@29135 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/mac/ChangeLog
WebKit/mac/Misc/WebNSFileManagerExtras.h
WebKit/mac/Misc/WebNSFileManagerExtras.m
WebKit/mac/WebView/WebHTMLView.mm

index c755d843ea371ac63056b482521502b19e20d235..60b321ed5a205bbd124e67a5f151ddd24cc97102 100644 (file)
@@ -1,3 +1,16 @@
+2008-01-03  Kevin Decker  <kdecker@apple.com>
+
+        Reviewed by Darin.
+
+        Fixed: <rdar://problem/4106190> Include "Where from" metadata in drag-and-dropped images
+        
+        * Misc/WebNSFileManagerExtras.h:
+        * Misc/WebNSFileManagerExtras.m:
+        (-[NSFileManager _webkit_setMetadataURL:referrer:atPath:]): Added new method. Uses WebKitSystemInterface to set
+        "Where from:" metadata information.
+        * WebView/WebHTMLView.mm:
+        (-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]): Added "Where from:" metadata for drag and dropped images.
+        
 2008-01-03  Alice Liu  <alice.liu@apple.com>
 
         Reviewed by Darin.
index 6220fe35a2a732a7e04d8a5bb5fa2a6ef2884c6c..aaaf0a7e6c2fb694ce6b936ecd3e468705c59aa5 100644 (file)
@@ -39,6 +39,7 @@
 - (void)_webkit_backgroundRemoveFileAtPath:(NSString *)path;
 - (void)_webkit_backgroundRemoveLeftoverFiles:(NSString *)path;
 - (BOOL)_webkit_removeFileOnlyAtPath:(NSString *)path;
+- (void)_webkit_setMetadataURL:(NSString *)URLString referrer:(NSString *)referrer atPath:(NSString *)path;
 - (NSString *)_webkit_startupVolumeName;
 - (NSString *)_webkit_pathWithUniqueFilenameForPath:(NSString *)path;
 
index 94823d881cbe5ab04118874ffc6ac50ab87bff2b..ae45afec6af757ca8c059e61ca94bc0978026c37 100644 (file)
@@ -30,6 +30,7 @@
 
 #import <JavaScriptCore/Assertions.h>
 #import <WebKit/WebKitNSStringExtras.h>
+#import <WebKitSystemInterface.h>
 
 #import <sys/mount.h>
 
     return [carbonPathPieces componentsJoinedByString:@":"];
 }
 
+- (void)_webkit_setMetadataURL:(NSString *)URLString referrer:(NSString *)referrer atPath:(NSString *)path
+{
+    ASSERT(URLString);
+    ASSERT(path);
+    WKSetMetadataURL(URLString, referrer, path);
+}
+
 - (NSString *)_webkit_startupVolumeName
 {
     NSString *path = [self _webkit_carbonPathForPath:@"/"];
index 7b9c23aa30efab6ebd604bcf43b52a504f6fd8dd..3084e47eb950d06b3bb6091ac598e1b11584a31b 100644 (file)
@@ -3073,6 +3073,7 @@ done:
 - (NSArray *)namesOfPromisedFilesDroppedAtDestination:(NSURL *)dropDestination
 {
     NSFileWrapper *wrapper = nil;
+    NSURL *draggingImageURL = nil;
     
     if (WebCore::CachedResource* tiffResource = [self promisedDragTIFFDataSource]) {
         
@@ -3082,7 +3083,7 @@ done:
         
         NSData *data = buffer->createNSData();
         NSURLResponse *response = tiffResource->response().nsURLResponse();
-        
+        draggingImageURL = [response URL];
         wrapper = [[[NSFileWrapper alloc] initRegularFileWithContents:data] autorelease];
         [wrapper setPreferredFilename:[response suggestedFilename]];
     }
@@ -3101,8 +3102,9 @@ noPromisedData:
         
         KURL imageURL = page->dragController()->draggingImageURL();
         ASSERT(!imageURL.isEmpty());
-        
-        wrapper = [[self _dataSource] _fileWrapperForURL:imageURL.getNSURL()];
+        draggingImageURL = imageURL.getNSURL();
+
+        wrapper = [[self _dataSource] _fileWrapperForURL:draggingImageURL];
     }
     
     if (wrapper == nil) {
@@ -3115,7 +3117,10 @@ noPromisedData:
     path = [[NSFileManager defaultManager] _webkit_pathWithUniqueFilenameForPath:path];
     if (![wrapper writeToFile:path atomically:NO updateFilenames:YES])
         LOG_ERROR("Failed to create image file via -[NSFileWrapper writeToFile:atomically:updateFilenames:]");
-
+    
+    if (draggingImageURL)
+        [[NSFileManager defaultManager] _webkit_setMetadataURL:[draggingImageURL absoluteString] referrer:nil atPath:path];
+    
     return [NSArray arrayWithObject:[path lastPathComponent]];
 }