Bug 286549
| Summary: | [UnifiedPDF] Incremental PDF Loading should be used on iOS family | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Abrar Rahman Protyasha <a_protyasha> |
| Component: | Assignee: | Abrar Rahman Protyasha <a_protyasha> | |
| Status: | NEW | ||
| Severity: | Normal | CC: | a_protyasha, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Bug Depends on: | 286569 | ||
| Bug Blocks: | |||
Abrar Rahman Protyasha
Currently, with UnifiedPDF enabled, we do not use incremental PDF loading on iOS family. This is because said loading path is gated behind HAVE(INCREMENTAL_PDF_APIS) platform availability. However, all of the following SPI (which the platform availability macro guards against) are available on the iOS family platforms.
```
// CoreGraphics
extern const off_t kCGDataProviderIndeterminateSize;
extern const CFStringRef kCGDataProviderHasHighLatency;
typedef void (*CGDataProviderGetByteRangesCallback)(void *info,
CFMutableArrayRef buffers, const CFRange *ranges, size_t count);
struct CGDataProviderDirectAccessRangesCallbacks {
unsigned version;
CGDataProviderGetBytesAtPositionCallback getBytesAtPosition;
CGDataProviderGetByteRangesCallback getBytesInRanges;
CGDataProviderReleaseInfoCallback releaseInfo;
};
typedef struct CGDataProviderDirectAccessRangesCallbacks CGDataProviderDirectAccessRangesCallbacks;
extern void CGDataProviderSetProperty(CGDataProviderRef, CFStringRef key, CFTypeRef value);
extern CGDataProviderRef CGDataProviderCreateMultiRangeDirectAccess(
void *info, off_t size,
const CGDataProviderDirectAccessRangesCallbacks *);
```
```
// PDFKit
@interface PDFDocument ()
-(instancetype)initWithProvider:(CGDataProviderRef)dataProvider;
-(void)preloadDataOfPagesInRange:(NSRange)range onQueue:(dispatch_queue_t)queue completion:(void (^)(NSIndexSet* loadedPageIndexes))completionBlock;
-(void)resetFormFields:(PDFActionResetForm *) action;
@property (readwrite, nonatomic) BOOL hasHighLatencyDataProvider;
@end
```
As such, we should try flipping incremental PDF loading for that platform family.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/143648895>
Abrar Rahman Protyasha
Pull request: https://github.com/WebKit/WebKit/pull/54893