Disable window occlusion detection for WebKitTestRunner Web View on Mac
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Mar 2013 05:46:21 +0000 (05:46 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Mar 2013 05:46:21 +0000 (05:46 +0000)
https://bugs.webkit.org/show_bug.cgi?id=111116

Patch by Kiran Muppala <cmuppala@apple.com> on 2013-02-28
Reviewed by Simon Fraser.

Window occlusion notifications were causing WebKitTestRunner's Web View
to be detected as occluded and causing a few JavaScript timer layout
tests to fail.  https://bugs.webkit.org/show_bug.cgi?id=111025, fixed this
by initializing the page visibility to "visible" after creating the view.
But a better solution is to disable window occlusion detection, so that
not only the page but also the view is treated as visible.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::createWebViewWithOptions): Remove call to
setVisibilityState, since it is no longer necessary.
* WebKitTestRunner/mac/PlatformWebViewMac.mm:
(WTR::PlatformWebView::PlatformWebView): Disable window occlusion
detection for the created WKView.

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

Tools/ChangeLog
Tools/WebKitTestRunner/TestController.cpp
Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm

index 242ffd7..80f00a2 100644 (file)
@@ -1,3 +1,24 @@
+2013-02-28  Kiran Muppala  <cmuppala@apple.com>
+
+        Disable window occlusion detection for WebKitTestRunner Web View on Mac
+        https://bugs.webkit.org/show_bug.cgi?id=111116
+
+        Reviewed by Simon Fraser.
+
+        Window occlusion notifications were causing WebKitTestRunner's Web View
+        to be detected as occluded and causing a few JavaScript timer layout
+        tests to fail.  https://bugs.webkit.org/show_bug.cgi?id=111025, fixed this
+        by initializing the page visibility to "visible" after creating the view.
+        But a better solution is to disable window occlusion detection, so that
+        not only the page but also the view is treated as visible.
+
+        * WebKitTestRunner/TestController.cpp:
+        (WTR::TestController::createWebViewWithOptions): Remove call to
+        setVisibilityState, since it is no longer necessary.
+        * WebKitTestRunner/mac/PlatformWebViewMac.mm:
+        (WTR::PlatformWebView::PlatformWebView): Disable window occlusion
+        detection for the created WKView.
+
 2013-02-28  Li Yin  <li.yin@intel.com>
 
         [chromium] Events can't be triggered on MediaStreamTrack
index 9729e9c..a05f1af 100644 (file)
@@ -482,10 +482,6 @@ void TestController::createWebViewWithOptions(WKDictionaryRef options)
         0, // unableToImplementPolicy
     };
     WKPageSetPagePolicyClient(m_mainWebView->page(), &pagePolicyClient);
-
-#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
-    setVisibilityState(kWKPageVisibilityStateVisible, true);
-#endif
 }
 
 void TestController::ensureViewSupportsOptions(WKDictionaryRef options)
index 6facdd4..7dc2655 100644 (file)
@@ -115,6 +115,7 @@ PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGro
 
     NSRect rect = NSMakeRect(0, 0, 800, 600);
     m_view = [[TestRunnerWKView alloc] initWithFrame:rect contextRef:contextRef pageGroupRef:pageGroupRef useTiledDrawing:useTiledDrawing];
+    [m_view setWindowOcclusionDetectionEnabled:NO];
 
     NSRect windowRect = NSOffsetRect(rect, -10000, [(NSScreen *)[[NSScreen screens] objectAtIndex:0] frame].size.height - rect.size.height + 10000);
     m_window = [[WebKitTestRunnerWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];