Diff
Modified: trunk/LayoutTests/ChangeLog (114789 => 114790)
--- trunk/LayoutTests/ChangeLog 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/LayoutTests/ChangeLog 2012-04-20 22:33:46 UTC (rev 114790)
@@ -1,3 +1,14 @@
+2012-04-04 Jer Noble <jer.no...@apple.com>
+
+ apple.com top navigation bar appears inside video during full screen exit animation
+ https://bugs.webkit.org/show_bug.cgi?id=83095
+
+ Reviewed by Eric Carlson.
+
+ * fullscreen/full-screen-exit-animation-stacking-context-expected.txt: Added.
+ * fullscreen/full-screen-exit-animation-stacking-context.html: Added.
+ * platform/mac/fullscreen/full-screen-exit-animation-stacking-context-expected.png: Added.
+
2012-04-20 Dan Bernstein <m...@apple.com>
Selection highlights of lines in adjoining blocks can overlap
Modified: trunk/Source/WebCore/ChangeLog (114789 => 114790)
--- trunk/Source/WebCore/ChangeLog 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Source/WebCore/ChangeLog 2012-04-20 22:33:46 UTC (rev 114790)
@@ -1,3 +1,28 @@
+2012-04-04 Jer Noble <jer.no...@apple.com>
+
+ apple.com top navigation bar appears inside video during full screen exit animation
+ https://bugs.webkit.org/show_bug.cgi?id=83095
+
+ Reviewed by Eric Carlson.
+
+ Test: fullscreen/full-screen-exit-animation-stacking-context.html
+
+ Only tell ancestors of the full screen element that they are no longer ancestors once
+ the full screen animation is complete:
+ * dom/Document.cpp:
+ (WebCore::Document::webkitWillExitFullScreenForElement):
+ (WebCore::Document::webkitDidExitFullScreenForElement):
+
+ To facilitate writing reproducible LayoutTests, expose webkitWill/Did/Enter/ExitFullScreen
+ from the Internals object, so scripts can call them explicitly:
+ * testing/Internals.cpp:
+ (WebCore::Internals::webkitWillEnterFullScreenForElement): Call the Document equivalent.
+ (WebCore::Internals::webkitDidEnterFullScreenForElement): Ditto.
+ (WebCore::Internals::webkitWillExitFullScreenForElement): Ditto.
+ (WebCore::Internals::webkitDidExitFullScreenForElement): Ditto.
+ * testing/Internals.h:
+ * testing/Internals.idl:
+
2012-04-17 Jer Noble <jer.no...@apple.com>
media-exit-fullscreen-button (and related enums) is unnecessary and should be removed.
Modified: trunk/Source/WebCore/dom/Document.cpp (114789 => 114790)
--- trunk/Source/WebCore/dom/Document.cpp 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Source/WebCore/dom/Document.cpp 2012-04-20 22:33:46 UTC (rev 114790)
@@ -5483,16 +5483,19 @@
if (!attached() || inPageCache())
return;
- m_fullScreenElement->setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(false);
-
m_fullScreenElement->willStopBeingFullscreenElement();
}
void Document::webkitDidExitFullScreenForElement(Element*)
{
+ if (!m_fullScreenElement)
+ return;
+
if (!attached() || inPageCache())
return;
+ m_fullScreenElement->setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(false);
+
m_areKeysEnabledInFullScreen = false;
if (m_fullScreenRenderer)
Modified: trunk/Source/WebCore/testing/Internals.cpp (114789 => 114790)
--- trunk/Source/WebCore/testing/Internals.cpp 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Source/WebCore/testing/Internals.cpp 2012-04-20 22:33:46 UTC (rev 114790)
@@ -971,4 +971,33 @@
return count;
}
+#if ENABLE(FULLSCREEN_API)
+void Internals::webkitWillEnterFullScreenForElement(Document* document, Element* element)
+{
+ if (!document)
+ return;
+ document->webkitWillEnterFullScreenForElement(element);
}
+
+void Internals::webkitDidEnterFullScreenForElement(Document* document, Element* element)
+{
+ if (!document)
+ return;
+ document->webkitDidEnterFullScreenForElement(element);
+}
+
+void Internals::webkitWillExitFullScreenForElement(Document* document, Element* element)
+{
+ if (!document)
+ return;
+ document->webkitWillExitFullScreenForElement(element);
+}
+
+void Internals::webkitDidExitFullScreenForElement(Document* document, Element* element)
+{
+ if (!document)
+ return;
+ document->webkitDidExitFullScreenForElement(element);
+}
+#endif
+}
Modified: trunk/Source/WebCore/testing/Internals.h (114789 => 114790)
--- trunk/Source/WebCore/testing/Internals.h 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Source/WebCore/testing/Internals.h 2012-04-20 22:33:46 UTC (rev 114790)
@@ -165,6 +165,13 @@
unsigned numberOfLiveDocuments() const;
#endif
+#if ENABLE(FULLSCREEN_API)
+ void webkitWillEnterFullScreenForElement(Document*, Element*);
+ void webkitDidEnterFullScreenForElement(Document*, Element*);
+ void webkitWillExitFullScreenForElement(Document*, Element*);
+ void webkitDidExitFullScreenForElement(Document*, Element*);
+#endif
+
private:
explicit Internals(Document*);
DocumentMarker* markerAt(Node*, const String& markerType, unsigned index, ExceptionCode&);
Modified: trunk/Source/WebCore/testing/Internals.idl (114789 => 114790)
--- trunk/Source/WebCore/testing/Internals.idl 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Source/WebCore/testing/Internals.idl 2012-04-20 22:33:46 UTC (rev 114790)
@@ -139,6 +139,13 @@
[Conditional=INSPECTOR] unsigned long numberOfLiveNodes();
[Conditional=INSPECTOR] unsigned long numberOfLiveDocuments();
+
+#if defined(ENABLE_FULLSCREEN_API) && ENABLE_FULLSCREEN_API
+ void webkitWillEnterFullScreenForElement(in Document document, in Element element);
+ void webkitDidEnterFullScreenForElement(in Document document, in Element element);
+ void webkitWillExitFullScreenForElement(in Document document, in Element element);
+ void webkitDidExitFullScreenForElement(in Document document, in Element element);
+#endif
};
}
Modified: trunk/Source/WebKit2/ChangeLog (114789 => 114790)
--- trunk/Source/WebKit2/ChangeLog 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Source/WebKit2/ChangeLog 2012-04-20 22:33:46 UTC (rev 114790)
@@ -1,3 +1,15 @@
+2012-04-06 Jer Noble <jer.no...@apple.com>
+
+ apple.com top navigation bar appears inside video during full screen exit animation
+ https://bugs.webkit.org/show_bug.cgi?id=83095
+
+ Reviewed by Eric Carlson.
+
+ Add new WebCore symbols needed by DumpRenderTree to exported symbol list.
+
+ * win/WebKit2.def:
+ * win/WebKit2CFLite.def:
+
2012-04-19 Carlos Garcia Campos <cgar...@igalia.com>
[GTK] Ignore resources while replacing content in WebKit2 GTK+ API
Modified: trunk/Source/WebKit2/win/WebKit2.def (114789 => 114790)
--- trunk/Source/WebKit2/win/WebKit2.def 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Source/WebKit2/win/WebKit2.def 2012-04-20 22:33:46 UTC (rev 114790)
@@ -244,3 +244,7 @@
?willDetachPage@FrameDestructionObserver@WebCore@@UAEXXZ
?nodesFromRect@Document@WebCore@@QBE?AV?$PassRefPtr@VNodeList@WebCore@@@WTF@@HHIIII_N0@Z
?selectionStartHasMarkerFor@Editor@WebCore@@QBE_NW4MarkerType@DocumentMarker@2@HH@Z
+ ?webkitWillEnterFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z
+ ?webkitDidEnterFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z
+ ?webkitWillExitFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z
+ ?webkitDidExitFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z
Modified: trunk/Source/WebKit2/win/WebKit2CFLite.def (114789 => 114790)
--- trunk/Source/WebKit2/win/WebKit2CFLite.def 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Source/WebKit2/win/WebKit2CFLite.def 2012-04-20 22:33:46 UTC (rev 114790)
@@ -237,3 +237,7 @@
?willDetachPage@FrameDestructionObserver@WebCore@@UAEXXZ
?nodesFromRect@Document@WebCore@@QBE?AV?$PassRefPtr@VNodeList@WebCore@@@WTF@@HHIIII_N0@Z
?selectionStartHasMarkerFor@Editor@WebCore@@QBE_NW4MarkerType@DocumentMarker@2@HH@Z
+ ?webkitWillEnterFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z
+ ?webkitDidEnterFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z
+ ?webkitWillExitFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z
+ ?webkitDidExitFullScreenForElement@Document@WebCore@@QAEXPAVElement@2@@Z
Modified: trunk/Source/autotools/symbols.filter (114789 => 114790)
--- trunk/Source/autotools/symbols.filter 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Source/autotools/symbols.filter 2012-04-20 22:33:46 UTC (rev 114790)
@@ -133,6 +133,10 @@
_ZNK7WebCore8Document13nodesFromRectEiijjjjbb;
_ZN7WebCore4toJSEPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectEPNS_8NodeListE;
_ZNK7WebCore6Editor26selectionStartHasMarkerForENS_14DocumentMarker10MarkerTypeEii;
+_ZN7WebCore8Document33webkitDidExitFullScreenForElementEPNS_7ElementE;
+_ZN7WebCore8Document34webkitDidEnterFullScreenForElementEPNS_7ElementE;
+_ZN7WebCore8Document34webkitWillExitFullScreenForElementEPNS_7ElementE;
+_ZN7WebCore8Document35webkitWillEnterFullScreenForElementEPNS_7ElementE;
_ZN7WebCore17JSDOMGlobalObject6s_infoE;
local:
_Z*;
Modified: trunk/Tools/ChangeLog (114789 => 114790)
--- trunk/Tools/ChangeLog 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Tools/ChangeLog 2012-04-20 22:33:46 UTC (rev 114790)
@@ -1,3 +1,45 @@
+2012-04-04 Jer Noble <jer.no...@apple.com>
+
+ apple.com top navigation bar appears inside video during full screen exit animation
+ https://bugs.webkit.org/show_bug.cgi?id=83095
+
+ Reviewed by Eric Carlson.
+
+ Add a new LayoutTestController function, setHasCustomFullScreenBehavior(), which allows scripts to
+ disable the standard full screen behavior, and replace it with explicit callbacks to the relevant
+ Document methods from within the script. This allows subtle timing bugs to be consistently reproduced
+ from within LayoutTests.
+
+ Add the new methods, hasCustomFullScreenBehavior() and setHasCustomFullScreenBehavior():
+ * DumpRenderTree/LayoutTestController.cpp:
+ (setHasCustomFullScreenBehaviorCallback):
+ (LayoutTestController::staticFunctions):
+ * DumpRenderTree/LayoutTestController.h:
+ (LayoutTestController::setHasCustomFullScreenBehavior):
+ (LayoutTestController::hasCustomFullScreenBehavior):
+ * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
+ (WTR::InjectedBundlePage::enterFullScreenForElement):
+ (WTR::InjectedBundlePage::exitFullScreenForElement):
+ * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
+ * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
+ * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
+ (WTR::LayoutTestController::setHasCustomFullScreenBehavior):
+ (WTR::LayoutTestController::hasCustomFullScreenBehavior):
+ * DumpRenderTree/chromium/LayoutTestController.cpp:
+ (LayoutTestController::LayoutTestController):
+ (LayoutTestController::reset):
+ * DumpRenderTree/chromium/LayoutTestController.h:
+ (LayoutTestController::setHasCustomFullScreenBehavior):
+ (LayoutTestController::hasCustomFullScreenBehavior):
+
+ Query the new methods before calling will/did/Enter/ExitFullScreen:
+ * DumpRenderTree/chromium/WebViewHost.cpp:
+ (WebViewHost::enterFullScreenNow):
+ (WebViewHost::exitFullScreenNow):
+ * DumpRenderTree/mac/UIDelegate.mm:
+ (-[UIDelegate webView:enterFullScreenForElement:listener:]):
+ (-[UIDelegate webView:exitFullScreenForElement:listener:]):
+
2012-04-20 Nandor Huszka <hnan...@inf.u-szeged.hu>
NRWT: option --skip-pixel-test-if-no-baseline support on DRT
Modified: trunk/Tools/DumpRenderTree/LayoutTestController.cpp (114789 => 114790)
--- trunk/Tools/DumpRenderTree/LayoutTestController.cpp 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Tools/DumpRenderTree/LayoutTestController.cpp 2012-04-20 22:33:46 UTC (rev 114790)
@@ -92,6 +92,7 @@
, m_shouldPaintBrokenImage(true)
, m_shouldStayOnPageAfterHandlingBeforeUnload(false)
, m_areDesktopNotificationPermissionRequestsIgnored(false)
+ , m_customFullScreenBehavior(false)
, m_testPathOrURL(testPathOrURL)
, m_expectedPixelHash(expectedPixelHash)
{
@@ -2242,8 +2243,20 @@
}
return JSValueMakeUndefined(context);
+
}
+static JSValueRef setHasCustomFullScreenBehaviorCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ if (argumentCount == 1) {
+ bool hasCustomBehavior = JSValueToBoolean(context, arguments[0]);
+ LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(thisObject));
+ controller->setHasCustomFullScreenBehavior(hasCustomBehavior);
+ }
+
+ return JSValueMakeUndefined(context);
+}
+
static void layoutTestControllerObjectFinalize(JSObjectRef object)
{
LayoutTestController* controller = static_cast<LayoutTestController*>(JSObjectGetPrivate(object));
@@ -2461,6 +2474,7 @@
{ "focusWebView", focusWebViewCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setBackingScaleFactor", setBackingScaleFactorCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "preciseTime", preciseTimeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "setHasCustomFullScreenBehavior", setHasCustomFullScreenBehaviorCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ 0, 0, 0 }
};
Modified: trunk/Tools/DumpRenderTree/LayoutTestController.h (114789 => 114790)
--- trunk/Tools/DumpRenderTree/LayoutTestController.h 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Tools/DumpRenderTree/LayoutTestController.h 2012-04-20 22:33:46 UTC (rev 114790)
@@ -361,6 +361,10 @@
void setTextDirection(JSStringRef);
+ // Custom full screen behavior.
+ void setHasCustomFullScreenBehavior(bool value) { m_customFullScreenBehavior = value; }
+ bool hasCustomFullScreenBehavior() const { return m_customFullScreenBehavior; }
+
private:
LayoutTestController(const std::string& testPathOrURL, const std::string& expectedPixelHash);
@@ -413,6 +417,7 @@
bool m_shouldPaintBrokenImage;
bool m_shouldStayOnPageAfterHandlingBeforeUnload;
bool m_areDesktopNotificationPermissionRequestsIgnored;
+ bool m_customFullScreenBehavior;
std::string m_authenticationUsername;
std::string m_authenticationPassword;
Modified: trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp (114789 => 114790)
--- trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Tools/DumpRenderTree/chromium/LayoutTestController.cpp 2012-04-20 22:33:46 UTC (rev 114790)
@@ -251,6 +251,7 @@
bindMethod("enableFixedLayoutMode", &LayoutTestController::enableFixedLayoutMode);
bindMethod("setFixedLayoutSize", &LayoutTestController::setFixedLayoutSize);
bindMethod("selectionAsMarkup", &LayoutTestController::selectionAsMarkup);
+ bindMethod("setHasCustomFullScreenBehavior", &LayoutTestController::setHasCustomFullScreenBehavior);
// The fallback method is called when an unknown method is invoked.
bindFallbackMethod(&LayoutTestController::fallbackMethod);
@@ -674,6 +675,7 @@
m_workQueue.reset();
m_taskList.revokeAll();
m_shouldStayOnPageAfterHandlingBeforeUnload = false;
+ m_hasCustomFullScreenBehavior = false;
}
void LayoutTestController::locationChangeDone()
@@ -2230,6 +2232,14 @@
setShouldDumpAsAudio(true);
}
+void LayoutTestController::setHasCustomFullScreenBehavior(const CppArgumentList& arguments, CppVariant* result)
+{
+ result->setNull();
+ if (arguments.size() < 1 || !arguments[0].isBool())
+ return;
+ m_hasCustomFullScreenBehavior = arguments[0].toBoolean();
+}
+
#if ENABLE(POINTER_LOCK)
void LayoutTestController::didLosePointerLock(const CppArgumentList&, CppVariant* result)
{
Modified: trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h (114789 => 114790)
--- trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Tools/DumpRenderTree/chromium/LayoutTestController.h 2012-04-20 22:33:46 UTC (rev 114790)
@@ -491,6 +491,9 @@
bool testRepaint() const { return m_testRepaint; }
bool sweepHorizontally() const { return m_sweepHorizontally; }
+ void setHasCustomFullScreenBehavior(const CppArgumentList&, CppVariant*);
+ bool hasCustomFullScreenBehavior() const { return m_hasCustomFullScreenBehavior; }
+
// Called by the webview delegate when the toplevel frame load is done.
void locationChangeDone();
@@ -705,6 +708,10 @@
WebKit::WebArrayBufferView m_audioData;
bool m_shouldStayOnPageAfterHandlingBeforeUnload;
+
+ // If true, calls to WebViewHost::enter/exitFullScreenNow will not result in
+ // calls to Document::will/did/Enter/ExitFullScreen.
+ bool m_hasCustomFullScreenBehavior;
};
#endif // LayoutTestController_h
Modified: trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp (114789 => 114790)
--- trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Tools/DumpRenderTree/chromium/WebViewHost.cpp 2012-04-20 22:33:46 UTC (rev 114790)
@@ -1669,12 +1669,18 @@
void WebViewHost::enterFullScreenNow()
{
+ if (layoutTestController()->hasCustomFullScreenBehavior())
+ return;
+
webView()->willEnterFullScreen();
webView()->didEnterFullScreen();
}
void WebViewHost::exitFullScreenNow()
{
+ if (layoutTestController()->hasCustomFullScreenBehavior())
+ return;
+
webView()->willExitFullScreen();
webView()->didExitFullScreen();
}
Modified: trunk/Tools/DumpRenderTree/mac/UIDelegate.mm (114789 => 114790)
--- trunk/Tools/DumpRenderTree/mac/UIDelegate.mm 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Tools/DumpRenderTree/mac/UIDelegate.mm 2012-04-20 22:33:46 UTC (rev 114790)
@@ -260,7 +260,8 @@
- (void)webView:(WebView *)webView enterFullScreenForElement:(DOMElement*)element listener:(NSObject<WebKitFullScreenListener>*)listener
{
- [self performSelector:@selector(enterFullScreenWithListener:) withObject:listener afterDelay:0];
+ if (!gLayoutTestController->hasCustomFullScreenBehavior())
+ [self performSelector:@selector(enterFullScreenWithListener:) withObject:listener afterDelay:0];
}
- (void)exitFullScreenWithListener:(NSObject<WebKitFullScreenListener>*)listener
@@ -271,7 +272,8 @@
- (void)webView:(WebView *)webView exitFullScreenForElement:(DOMElement*)element listener:(NSObject<WebKitFullScreenListener>*)listener
{
- [self performSelector:@selector(exitFullScreenWithListener:) withObject:listener afterDelay:0];
+ if (!gLayoutTestController->hasCustomFullScreenBehavior())
+ [self performSelector:@selector(exitFullScreenWithListener:) withObject:listener afterDelay:0];
}
- (BOOL)webView:(WebView *)webView didPressMissingPluginButton:(DOMElement *)element
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl (114789 => 114790)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl 2012-04-20 22:33:46 UTC (rev 114790)
@@ -144,6 +144,9 @@
void resetPageVisibility();
readonly attribute DOMString platformName;
+
+ // Control full screen behavior.
+ void setHasCustomFullScreenBehavior(in boolean value);
};
}
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp (114789 => 114790)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp 2012-04-20 22:33:46 UTC (rev 114790)
@@ -1210,16 +1210,22 @@
{
if (InjectedBundle::shared().layoutTestController()->shouldDumpFullScreenCallbacks())
InjectedBundle::shared().stringBuilder()->append("enterFullScreenForElement()\n");
- WKBundlePageWillEnterFullScreen(pageRef);
- WKBundlePageDidEnterFullScreen(pageRef);
+
+ if (!InjectedBundle::shared().layoutTestController()->hasCustomFullScreenBehavior()) {
+ WKBundlePageWillEnterFullScreen(pageRef);
+ WKBundlePageDidEnterFullScreen(pageRef);
+ }
}
void InjectedBundlePage::exitFullScreenForElement(WKBundlePageRef pageRef, WKBundleNodeHandleRef elementRef)
{
if (InjectedBundle::shared().layoutTestController()->shouldDumpFullScreenCallbacks())
InjectedBundle::shared().stringBuilder()->append("exitFullScreenForElement()\n");
- WKBundlePageWillExitFullScreen(pageRef);
- WKBundlePageDidExitFullScreen(pageRef);
+
+ if (!InjectedBundle::shared().layoutTestController()->hasCustomFullScreenBehavior()) {
+ WKBundlePageWillExitFullScreen(pageRef);
+ WKBundlePageDidExitFullScreen(pageRef);
+ }
}
void InjectedBundlePage::beganEnterFullScreen(WKBundlePageRef, WKRect, WKRect)
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h (114789 => 114790)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h 2012-04-20 22:33:46 UTC (rev 114790)
@@ -121,6 +121,7 @@
#if ENABLE(FULLSCREEN_API)
// Full Screen client
static bool supportsFullScreen(WKBundlePageRef, WKFullScreenKeyboardRequestType);
+ static void setHasCustomFullScreenBehavior(WKBundlePageRef, bool value);
static void enterFullScreenForElement(WKBundlePageRef, WKBundleNodeHandleRef element);
static void exitFullScreenForElement(WKBundlePageRef, WKBundleNodeHandleRef element);
static void beganEnterFullScreen(WKBundlePageRef, WKRect initialFrame, WKRect finalFrame);
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.cpp (114789 => 114790)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.cpp 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.cpp 2012-04-20 22:33:46 UTC (rev 114790)
@@ -109,6 +109,7 @@
, m_policyDelegateEnabled(false)
, m_policyDelegatePermissive(false)
, m_globalFlag(false)
+ , m_customFullScreenBehavior(false)
{
platformInitialize();
}
Modified: trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.h (114789 => 114790)
--- trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.h 2012-04-20 22:33:35 UTC (rev 114789)
+++ trunk/Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.h 2012-04-20 22:33:46 UTC (rev 114790)
@@ -196,6 +196,10 @@
void overridePreference(JSStringRef preference, bool value);
+ // Custom full screen behavior.
+ void setHasCustomFullScreenBehavior(bool value) { m_customFullScreenBehavior = value; }
+ bool hasCustomFullScreenBehavior() const { return m_customFullScreenBehavior; }
+
JSRetainPtr<JSStringRef> platformName();
void setPageVisibility(JSStringRef state);
@@ -231,6 +235,7 @@
bool m_policyDelegatePermissive;
bool m_globalFlag;
+ bool m_customFullScreenBehavior;
PlatformTimerRef m_waitToDumpWatchdogTimer;
};