Asynchronous (or timed-out synchronous) resize flashes white instead of page backgrou...
authortimothy_horton@apple.com <timothy_horton@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 30 Apr 2015 22:16:42 +0000 (22:16 +0000)
committertimothy_horton@apple.com <timothy_horton@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 30 Apr 2015 22:16:42 +0000 (22:16 +0000)
https://bugs.webkit.org/show_bug.cgi?id=144468

Reviewed by Simon Fraser and Dan Bernstein.

* UIProcess/API/mac/WKView.mm:
(-[WKView _viewBackgroundColor]):
(-[WKView updateLayer]):
Use the pageExtendedBackgroundColor for the background color of the WKView,
if we have one (and aren't using a transparent background). This means
during asynchronous resize or other cases where the Web process isn't keeping
up with the UI process during a resize, we'll see background color instead of white.

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

Source/WebKit2/ChangeLog
Source/WebKit2/UIProcess/API/mac/WKView.mm

index febff93..f002b3d 100644 (file)
@@ -1,3 +1,18 @@
+2015-04-30  Tim Horton  <timothy_horton@apple.com>
+
+        Asynchronous (or timed-out synchronous) resize flashes white instead of page background color
+        https://bugs.webkit.org/show_bug.cgi?id=144468
+
+        Reviewed by Simon Fraser and Dan Bernstein.
+
+        * UIProcess/API/mac/WKView.mm:
+        (-[WKView _viewBackgroundColor]):
+        (-[WKView updateLayer]):
+        Use the pageExtendedBackgroundColor for the background color of the WKView,
+        if we have one (and aren't using a transparent background). This means
+        during asynchronous resize or other cases where the Web process isn't keeping
+        up with the UI process during a resize, we'll see background color instead of white.
+
 2015-04-30  Beth Dakin  <bdakin@apple.com>
 
         Should choose UIScrollView indicatorStyle based on the document background color
index 000b971..ebe7258 100644 (file)
@@ -4061,12 +4061,20 @@ static NSString *pathWithUniqueFilenameForPath(NSString *path)
     return YES;
 }
 
+- (CGColorRef)_viewBackgroundColor
+{
+    if (self.drawsBackground && !self.drawsTransparentBackground) {
+        if (NSColor *backgroundColor = self._pageExtendedBackgroundColor)
+            return backgroundColor.CGColor;
+        return CGColorGetConstantColor(kCGColorWhite);
+    }
+
+    return CGColorGetConstantColor(kCGColorClear);
+}
+
 - (void)updateLayer
 {
-    if ([self drawsBackground] && ![self drawsTransparentBackground])
-        self.layer.backgroundColor = CGColorGetConstantColor(kCGColorWhite);
-    else
-        self.layer.backgroundColor = CGColorGetConstantColor(kCGColorClear);
+    self.layer.backgroundColor = self._viewBackgroundColor;
 
     // If asynchronous geometry updates have been sent by forceAsyncDrawingAreaSizeUpdate,
     // then subsequent calls to setFrameSize should not result in us waiting for the did