Title: [246395] trunk/Source
Revision
246395
Author
grao...@webkit.org
Date
2019-06-12 22:57:09 -0700 (Wed, 12 Jun 2019)

Log Message

Show the web page URL when sharing an AR model
https://bugs.webkit.org/show_bug.cgi?id=198812
<rdar://problem/48689498>

Reviewed by Dean Jackson.

Source/WebCore/PAL:

* pal/spi/ios/SystemPreviewSPI.h:

Source/WebKit:

* UIProcess/Cocoa/DownloadClient.mm:
(WebKit::DownloadClient::didStart):
* UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
(-[_WKPreviewControllerDataSource initWithMIMEType:originatingPageURL:]):
(-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):
(WebKit::SystemPreviewController::start):
(-[_WKPreviewControllerDataSource initWithMIMEType:]): Deleted.
* UIProcess/SystemPreviewController.h:

Source/WTF:

* wtf/Platform.h:

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (246394 => 246395)


--- trunk/Source/WTF/ChangeLog	2019-06-13 05:38:28 UTC (rev 246394)
+++ trunk/Source/WTF/ChangeLog	2019-06-13 05:57:09 UTC (rev 246395)
@@ -1,3 +1,13 @@
+2019-06-12  Antoine Quint  <grao...@apple.com>
+
+        Show the web page URL when sharing an AR model
+        https://bugs.webkit.org/show_bug.cgi?id=198812
+        <rdar://problem/48689498>
+
+        Reviewed by Dean Jackson.
+
+        * wtf/Platform.h:
+
 2019-06-12  Youenn Fablet  <you...@apple.com>
 
         Use NSURLSession for WebSocket

Modified: trunk/Source/WTF/wtf/Platform.h (246394 => 246395)


--- trunk/Source/WTF/wtf/Platform.h	2019-06-13 05:38:28 UTC (rev 246394)
+++ trunk/Source/WTF/wtf/Platform.h	2019-06-13 05:57:09 UTC (rev 246395)
@@ -1526,6 +1526,10 @@
 #endif
 
 #if PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000
+#define HAVE_ARKIT_QUICK_LOOK_PREVIEW_ITEM 1
+#endif
+
+#if PLATFORM(IOS_FAMILY) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 130000
 #define HAVE_UI_WK_DOCUMENT_CONTEXT 1
 #endif
 

Modified: trunk/Source/WebCore/PAL/ChangeLog (246394 => 246395)


--- trunk/Source/WebCore/PAL/ChangeLog	2019-06-13 05:38:28 UTC (rev 246394)
+++ trunk/Source/WebCore/PAL/ChangeLog	2019-06-13 05:57:09 UTC (rev 246395)
@@ -1,3 +1,13 @@
+2019-06-12  Antoine Quint  <grao...@apple.com>
+
+        Show the web page URL when sharing an AR model
+        https://bugs.webkit.org/show_bug.cgi?id=198812
+        <rdar://problem/48689498>
+
+        Reviewed by Dean Jackson.
+
+        * pal/spi/ios/SystemPreviewSPI.h:
+
 2019-06-10  Sam Weinig  <wei...@apple.com>
 
         Remove Dashboard support

Modified: trunk/Source/WebCore/PAL/pal/spi/ios/SystemPreviewSPI.h (246394 => 246395)


--- trunk/Source/WebCore/PAL/pal/spi/ios/SystemPreviewSPI.h	2019-06-13 05:38:28 UTC (rev 246394)
+++ trunk/Source/WebCore/PAL/pal/spi/ios/SystemPreviewSPI.h	2019-06-13 05:57:09 UTC (rev 246395)
@@ -25,6 +25,10 @@
 
 #if USE(APPLE_INTERNAL_SDK)
 
+#if HAVE(ARKIT_QUICK_LOOK_PREVIEW_ITEM)
+#import <AssetViewer/ARQuickLookWebKitItem.h>
+#endif
+
 #import <AssetViewer/ASVThumbnailView.h>
 
 #else
@@ -45,5 +49,15 @@
 @property (nonatomic) CGSize maxThumbnailSize;
 @end
 
+#if HAVE(ARKIT_QUICK_LOOK_PREVIEW_ITEM)
+#import <ARKit/ARKit.h>
+
+@class ARQuickLookWebKitItem;
+
+@interface ARQuickLookWebKitItem : QLItem
+- (instancetype)initWithPreviewItemProvider:(NSItemProvider *_Nonnull)itemProvider contentType:(NSString *_Nonnull)contentType previewTitle:(NSString *_Nonnull)previewTitle fileSize:(NSNumber *_Nonnull)fileSize previewItem:(ARQuickLookPreviewItem *)previewItem;
+@end
 #endif
 
+#endif
+

Modified: trunk/Source/WebKit/ChangeLog (246394 => 246395)


--- trunk/Source/WebKit/ChangeLog	2019-06-13 05:38:28 UTC (rev 246394)
+++ trunk/Source/WebKit/ChangeLog	2019-06-13 05:57:09 UTC (rev 246395)
@@ -1,3 +1,20 @@
+2019-06-12  Antoine Quint  <grao...@apple.com>
+
+        Show the web page URL when sharing an AR model
+        https://bugs.webkit.org/show_bug.cgi?id=198812
+        <rdar://problem/48689498>
+
+        Reviewed by Dean Jackson.
+
+        * UIProcess/Cocoa/DownloadClient.mm:
+        (WebKit::DownloadClient::didStart):
+        * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm:
+        (-[_WKPreviewControllerDataSource initWithMIMEType:originatingPageURL:]):
+        (-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):
+        (WebKit::SystemPreviewController::start):
+        (-[_WKPreviewControllerDataSource initWithMIMEType:]): Deleted.
+        * UIProcess/SystemPreviewController.h:
+
 2019-06-12  Antti Koivisto  <an...@apple.com>
 
         Try to fix iOS build.

Modified: trunk/Source/WebKit/UIProcess/Cocoa/DownloadClient.mm (246394 => 246395)


--- trunk/Source/WebKit/UIProcess/Cocoa/DownloadClient.mm	2019-06-13 05:38:28 UTC (rev 246394)
+++ trunk/Source/WebKit/UIProcess/Cocoa/DownloadClient.mm	2019-06-13 05:57:09 UTC (rev 246395)
@@ -71,7 +71,7 @@
     if (downloadProxy.isSystemPreviewDownload()) {
         if (auto* webPage = downloadProxy.originatingPage()) {
             // FIXME: Update the MIME-type once it is known in the ResourceResponse.
-            webPage->systemPreviewController()->start("application/octet-stream"_s, downloadProxy.systemPreviewDownloadRect());
+            webPage->systemPreviewController()->start(URL(URL(), webPage->currentURL()), "application/octet-stream"_s, downloadProxy.systemPreviewDownloadRect());
         }
         takeActivityToken(downloadProxy);
         return;

Modified: trunk/Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm (246394 => 246395)


--- trunk/Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm	2019-06-13 05:38:28 UTC (rev 246394)
+++ trunk/Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm	2019-06-13 05:57:09 UTC (rev 246395)
@@ -39,9 +39,22 @@
 #import <pal/spi/ios/QuickLookSPI.h>
 #import <wtf/WeakObjCPtr.h>
 
+#if HAVE(ARKIT_QUICK_LOOK_PREVIEW_ITEM)
+#import <pal/spi/ios/SystemPreviewSPI.h>
+SOFT_LINK_PRIVATE_FRAMEWORK(ARKit);
+SOFT_LINK_CLASS(ARKit, ARQuickLookPreviewItem);
+SOFT_LINK_PRIVATE_FRAMEWORK(AssetViewer);
+SOFT_LINK_CLASS(AssetViewer, ARQuickLookWebKitItem);
+#endif
+
 @interface _WKPreviewControllerDataSource : NSObject <QLPreviewControllerDataSource> {
     RetainPtr<NSItemProvider> _itemProvider;
+#if HAVE(ARKIT_QUICK_LOOK_PREVIEW_ITEM)
+    RetainPtr<ARQuickLookWebKitItem> _item;
+#else
     RetainPtr<QLItem> _item;
+#endif
+    URL _originatingPageURL;
     URL _downloadedURL;
 };
 
@@ -52,11 +65,12 @@
 
 @implementation _WKPreviewControllerDataSource
 
-- (instancetype)initWithMIMEType:(NSString*)mimeType
+- (instancetype)initWithMIMEType:(NSString*)mimeType originatingPageURL:(URL)url
 {
     if (!(self = [super init]))
         return nil;
 
+    _originatingPageURL = url;
     _mimeType = [mimeType copy];
 
     return self;
@@ -84,7 +98,14 @@
     // means we don't actually know the real MIME type yet.
     NSString *contentType = WebCore::UTIFromMIMEType("model/vnd.usdz+zip"_s);
 
+#if HAVE(ARKIT_QUICK_LOOK_PREVIEW_ITEM)
+    ARQuickLookPreviewItem *previewItem = [allocARQuickLookPreviewItemInstance() initWithFileAtURL:_downloadedURL];
+    previewItem.canonicalWebPageURL = _originatingPageURL;
+
+    _item = [allocARQuickLookWebKitItemInstance() initWithPreviewItemProvider:_itemProvider.get() contentType:contentType previewTitle:@"Preview" fileSize:@(0) previewItem:previewItem];
+#else
     _item = adoptNS([PAL::allocQLItemInstance() initWithPreviewItemProvider:_itemProvider.get() contentType:contentType previewTitle:@"Preview" fileSize:@(0)]);
+#endif
     [_item setUseLoadingTimeout:NO];
 
     WeakObjCPtr<_WKPreviewControllerDataSource> weakSelf { self };
@@ -197,7 +218,7 @@
 
 namespace WebKit {
 
-void SystemPreviewController::start(const String& mimeType, const WebCore::IntRect& fromRect)
+void SystemPreviewController::start(URL originatingPageURL, const String& mimeType, const WebCore::IntRect& fromRect)
 {
     ASSERT(!m_qlPreviewController);
     if (m_qlPreviewController)
@@ -213,7 +234,7 @@
     m_qlPreviewControllerDelegate = adoptNS([[_WKPreviewControllerDelegate alloc] initWithSystemPreviewController:this fromRect:fromRect]);
     [m_qlPreviewController setDelegate:m_qlPreviewControllerDelegate.get()];
 
-    m_qlPreviewControllerDataSource = adoptNS([[_WKPreviewControllerDataSource alloc] initWithMIMEType:mimeType]);
+    m_qlPreviewControllerDataSource = adoptNS([[_WKPreviewControllerDataSource alloc] initWithMIMEType:mimeType originatingPageURL:originatingPageURL]);
     [m_qlPreviewController setDataSource:m_qlPreviewControllerDataSource.get()];
 
     [presentingViewController presentViewController:m_qlPreviewController.get() animated:YES completion:nullptr];

Modified: trunk/Source/WebKit/UIProcess/SystemPreviewController.h (246394 => 246395)


--- trunk/Source/WebKit/UIProcess/SystemPreviewController.h	2019-06-13 05:38:28 UTC (rev 246394)
+++ trunk/Source/WebKit/UIProcess/SystemPreviewController.h	2019-06-13 05:57:09 UTC (rev 246395)
@@ -48,7 +48,7 @@
 
     bool canPreview(const String& mimeType) const;
 
-    void start(const String& mimeType, const WebCore::IntRect&);
+    void start(URL originatingPageURL, const String& mimeType, const WebCore::IntRect&);
     void updateProgress(float);
     void finish(URL);
     void cancel();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to