Bug 198107 - WKWebView takeSnapshotWithConfiguration does not take a snapshot of html5 video (youtube.com) and WebGL (i.e. hardware accelerated)
Summary: WKWebView takeSnapshotWithConfiguration does not take a snapshot of html5 vid...
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit API (show other bugs)
Version: WebKit Local Build
Hardware: iPhone / iPad iOS 12
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2019-05-22 04:46 PDT by Vladymyr
Modified: 2019-05-22 16:37 PDT (History)
9 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladymyr 2019-05-22 04:46:11 PDT
When the snapshot of WKWebView (not fullscreen mode) is taken with takeSnapshotWithConfiguration on iOS 12.2 (iPhone XR) (and any other supported version) instead of html5 video content (hardware accelerated - any youtube.com video) and any WebGL content - there is a black portion of the screen, other content around is shown normally. I suspect the issues is related to the fact some html5 videos and WebGL content is hardware accelerated and rendered differently.

Exact WebKit version: AppleWebKit/605.1.15

Steps to reproduce:
Take a snapshot of WKWebView (not fullscreen mode) on iOS 12.2 (iPhone XR) with takeSnapshotWithConfiguration of any playing youtube.com video (e.g. https://www.youtube.com/watch?v=CF2BfWYRZoc ) or a page with WebGL content (e.g. https://threejs.org/examples/#webgl_marchingcubes )

Result:
Black part of the screen in the snapshot (image) instead of a content, other web-page content around is visible 

Expected result:
As a user I can take a snapshot of hardware accelerated html5 videos and WebGL content, so they are present on the final snapshot image

Code sample:
  WKSnapshotConfiguration *configuration = [WKSnapshotConfiguration new];
  configuration.rect = CGRectMake(0, 0, boundsWidth, contentHeight);
  configuration.snapshotWidth = @(boundsWidth);
  //webView is WKWebView*
  [webView takeSnapshotWithConfiguration: configuration completionHandler:
      ^(UIImage * _Nullable snapshotImage, NSError * _Nullable error)
      {
        //Here is the code to deal with the image 
      }];
Comment 1 Radar WebKit Bug Importer 2019-05-22 16:25:01 PDT
<rdar://problem/51047322>