- Revision
- 200395
- Author
- jiewen_...@apple.com
- Date
- 2016-05-03 18:03:55 -0700 (Tue, 03 May 2016)
Log Message
File Upload: Photo upload name is always generic (image.jpg)
https://bugs.webkit.org/show_bug.cgi?id=157291
<rdar://problem/12353008>
Reviewed by Darin Adler.
Use the original filename as the name of an uploaded image instead of
a generic name, i.e. image.jpg.
* Platform/spi/ios/PhotosSPI.h: Added.
* UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel _uploadItemForImage:withAssetURL:successBlock:failureBlock:]):
* WebKit2.xcodeproj/project.pbxproj:
Modified Paths
Added Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (200394 => 200395)
--- trunk/Source/WebKit2/ChangeLog 2016-05-03 23:26:03 UTC (rev 200394)
+++ trunk/Source/WebKit2/ChangeLog 2016-05-04 01:03:55 UTC (rev 200395)
@@ -1,3 +1,19 @@
+2016-05-03 Jiewen Tan <jiewen_...@apple.com>
+
+ File Upload: Photo upload name is always generic (image.jpg)
+ https://bugs.webkit.org/show_bug.cgi?id=157291
+ <rdar://problem/12353008>
+
+ Reviewed by Darin Adler.
+
+ Use the original filename as the name of an uploaded image instead of
+ a generic name, i.e. image.jpg.
+
+ * Platform/spi/ios/PhotosSPI.h: Added.
+ * UIProcess/ios/forms/WKFileUploadPanel.mm:
+ (-[WKFileUploadPanel _uploadItemForImage:withAssetURL:successBlock:failureBlock:]):
+ * WebKit2.xcodeproj/project.pbxproj:
+
2016-05-03 Chris Dumez <cdu...@apple.com>
[WK2][DiskCache] Store common HTTP header names as strings
Added: trunk/Source/WebKit2/Platform/spi/ios/PhotosSPI.h (0 => 200395)
--- trunk/Source/WebKit2/Platform/spi/ios/PhotosSPI.h (rev 0)
+++ trunk/Source/WebKit2/Platform/spi/ios/PhotosSPI.h 2016-05-04 01:03:55 UTC (rev 200395)
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if PLATFORM(IOS)
+
+#import <Photos/Photos.h>
+
+#if USE(APPLE_INTERNAL_SDK)
+
+#import <Photos/Photos_Private.h>
+
+#else
+
+@interface PHAssetOriginalMetadataProperties
+@property (nonatomic, strong, readonly) NSString *originalFilename;
+@end
+
+@interface PHAsset ()
+- (PHAssetOriginalMetadataProperties *)originalMetadataProperties;
+- (void)fetchPropertySetsIfNeeded;
+@end
+
+#endif
+
+#endif
Modified: trunk/Source/WebKit2/UIProcess/ios/forms/WKFileUploadPanel.mm (200394 => 200395)
--- trunk/Source/WebKit2/UIProcess/ios/forms/WKFileUploadPanel.mm 2016-05-03 23:26:03 UTC (rev 200394)
+++ trunk/Source/WebKit2/UIProcess/ios/forms/WKFileUploadPanel.mm 2016-05-04 01:03:55 UTC (rev 200395)
@@ -32,6 +32,7 @@
#import "APIData.h"
#import "APIOpenPanelParameters.h"
#import "APIString.h"
+#import "PhotosSPI.h"
#import "UIKitSPI.h"
#import "WKContentViewInteraction.h"
#import "WKData.h"
@@ -42,7 +43,6 @@
#import <AVFoundation/AVFoundation.h>
#import <CoreMedia/CoreMedia.h>
#import <MobileCoreServices/MobileCoreServices.h>
-#import <Photos/Photos.h>
#import <WebCore/LocalizedStrings.h>
#import <WebCore/SoftLinking.h>
#import <WebKit/WebNSFileManagerExtras.h>
@@ -734,22 +734,26 @@
return;
}
+ PHAsset *firstAsset = result[0];
+ [firstAsset fetchPropertySetsIfNeeded];
+ NSString *originalFilename = [[firstAsset originalMetadataProperties] originalFilename];
+ ASSERT(originalFilename);
+
RetainPtr<PHImageRequestOptions> options = adoptNS([allocPHImageRequestOptionsInstance() init]);
[options setVersion:PHImageRequestOptionsVersionCurrent];
[options setSynchronous:YES];
[options setResizeMode:PHImageRequestOptionsResizeModeNone];
PHImageManager *manager = (PHImageManager *)[getPHImageManagerClass() defaultManager];
- [manager requestImageDataForAsset:result[0] options:options.get() resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation, NSDictionary *info) {
+ [manager requestImageDataForAsset:firstAsset options:options.get() resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation, NSDictionary *info)
+ {
if (!imageData) {
LOG_ERROR("WKFileUploadPanel: Failed to request image data for asset with URL %@", assetURL);
[self _uploadItemForJPEGRepresentationOfImage:image successBlock:successBlock failureBlock:failureBlock];
return;
}
- RetainPtr<CFStringRef> extension = adoptCF(UTTypeCopyPreferredTagWithClass((CFStringRef)dataUTI, kUTTagClassFilenameExtension));
- NSString *imageName = [@"image." stringByAppendingString:(extension ? (id)extension.get() : @"jpg")];
- [self _uploadItemForImageData:imageData imageName:imageName successBlock:successBlock failureBlock:failureBlock];
+ [self _uploadItemForImageData:imageData imageName:originalFilename successBlock:successBlock failureBlock:failureBlock];
}];
});
}
Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (200394 => 200395)
--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2016-05-03 23:26:03 UTC (rev 200394)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2016-05-04 01:03:55 UTC (rev 200395)
@@ -3049,6 +3049,7 @@
52D5A1B21C5749F200DE34A3 /* WebVideoFullscreenManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebVideoFullscreenManager.h; sourceTree = "<group>"; };
52D5A1B31C5749F200DE34A3 /* WebVideoFullscreenManager.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebVideoFullscreenManager.messages.in; sourceTree = "<group>"; };
52D5A1B41C5749F200DE34A3 /* WebVideoFullscreenManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebVideoFullscreenManager.mm; sourceTree = "<group>"; };
+ 579D18B71CCFE34B00B1974C /* PhotosSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PhotosSPI.h; sourceTree = "<group>"; };
5C052F241C6D3AB60076E919 /* AuthenticationManagerCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AuthenticationManagerCocoa.mm; path = Authentication/cocoa/AuthenticationManagerCocoa.mm; sourceTree = "<group>"; };
5C1426E21C23F80500D41183 /* NetworkProcessCreationParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkProcessCreationParameters.cpp; path = NetworkProcess/NetworkProcessCreationParameters.cpp; sourceTree = "<group>"; };
5C1426E31C23F80500D41183 /* NetworkProcessCreationParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkProcessCreationParameters.h; path = NetworkProcess/NetworkProcessCreationParameters.h; sourceTree = "<group>"; };
@@ -7103,6 +7104,7 @@
CE1A0BCD1A48E6C60054EF74 /* CorePDFSPI.h */,
CE1A0BCE1A48E6C60054EF74 /* DataDetectorsUISPI.h */,
CE1A0BCF1A48E6C60054EF74 /* ManagedConfigurationSPI.h */,
+ 579D18B71CCFE34B00B1974C /* PhotosSPI.h */,
CE1A0BD01A48E6C60054EF74 /* TCCSPI.h */,
CE1A0BD11A48E6C60054EF74 /* TextInputSPI.h */,
CEE4AE2A1A5DCF430002F49B /* UIKitSPI.h */,