diff options
20 files changed, 54 insertions, 45 deletions
diff --git a/Source/WebCore/dom/Document.cpp b/Source/WebCore/dom/Document.cpp index ec7ca673e..279db2040 100644 --- a/Source/WebCore/dom/Document.cpp +++ b/Source/WebCore/dom/Document.cpp @@ -1615,7 +1615,7 @@ void Document::removeTitle(Element* titleElement) } #if ENABLE(PAGE_VISIBILITY_API) -PageVisibilityState Document::visibilityState() const +PageVisibilityState Document::pageVisibilityState() const { // The visibility of the document is inherited from the visibility of the // page. If there is no page associated with the document, we will assume @@ -1626,19 +1626,19 @@ PageVisibilityState Document::visibilityState() const return m_frame->page()->visibilityState(); } -String Document::webkitVisibilityState() const +String Document::visibilityState() const { - return pageVisibilityStateString(visibilityState()); + return pageVisibilityStateString(pageVisibilityState()); } -bool Document::webkitHidden() const +bool Document::hidden() const { - return visibilityState() != PageVisibilityStateVisible; + return pageVisibilityState() != PageVisibilityStateVisible; } void Document::dispatchVisibilityStateChangeEvent() { - dispatchEvent(Event::create(eventNames().webkitvisibilitychangeEvent, false, false)); + dispatchEvent(Event::create(eventNames().visibilitychangeEvent, false, false)); } #endif diff --git a/Source/WebCore/dom/Document.h b/Source/WebCore/dom/Document.h index 4e2671611..622b1c6da 100644 --- a/Source/WebCore/dom/Document.h +++ b/Source/WebCore/dom/Document.h @@ -319,7 +319,7 @@ public: DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitpointerlockerror); #endif #if ENABLE(PAGE_VISIBILITY_API) - DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitvisibilitychange); + DEFINE_ATTRIBUTE_EVENT_LISTENER(visibilitychange); #endif void setViewportArguments(const ViewportArguments& viewportArguments) { m_viewportArguments = viewportArguments; } @@ -421,8 +421,8 @@ public: virtual KURL baseURI() const; #if ENABLE(PAGE_VISIBILITY_API) - String webkitVisibilityState() const; - bool webkitHidden() const; + String visibilityState() const; + bool hidden() const; void dispatchVisibilityStateChangeEvent(); #endif @@ -1232,7 +1232,7 @@ private: void displayBufferModifiedByEncodingInternal(CharacterType*, unsigned) const; #if ENABLE(PAGE_VISIBILITY_API) - PageVisibilityState visibilityState() const; + PageVisibilityState pageVisibilityState() const; #endif PassRefPtr<HTMLCollection> ensureCachedCollection(CollectionType); diff --git a/Source/WebCore/dom/Document.idl b/Source/WebCore/dom/Document.idl index 10cfefa07..443f4a568 100644 --- a/Source/WebCore/dom/Document.idl +++ b/Source/WebCore/dom/Document.idl @@ -362,8 +362,8 @@ #endif // Page visibility API. - [Conditional=PAGE_VISIBILITY_API] readonly attribute DOMString webkitVisibilityState; - [Conditional=PAGE_VISIBILITY_API] readonly attribute boolean webkitHidden; + [Conditional=PAGE_VISIBILITY_API] readonly attribute DOMString visibilityState; + [Conditional=PAGE_VISIBILITY_API] readonly attribute boolean hidden; // Security Policy API: http://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#script-interfaces [Conditional=CSP_NEXT] readonly attribute DOMSecurityPolicy securityPolicy; diff --git a/Source/WebCore/dom/EventNames.h b/Source/WebCore/dom/EventNames.h index 720fb414b..7fcebccc1 100644 --- a/Source/WebCore/dom/EventNames.h +++ b/Source/WebCore/dom/EventNames.h @@ -117,7 +117,7 @@ namespace WebCore { macro(updateready) \ macro(upgradeneeded) \ macro(versionchange) \ - macro(webkitvisibilitychange) \ + macro(visibilitychange) \ macro(write) \ macro(writeend) \ macro(writestart) \ diff --git a/Source/WebCore/history/CachedFrame.cpp b/Source/WebCore/history/CachedFrame.cpp index 9badc91da..b273e304c 100644 --- a/Source/WebCore/history/CachedFrame.cpp +++ b/Source/WebCore/history/CachedFrame.cpp @@ -128,6 +128,9 @@ void CachedFrameBase::restore() for (unsigned i = 0; i < m_childFrames.size(); ++i) m_childFrames[i]->open(); + // FIXME: update Page Visibility state here. + // https://bugs.webkit.org/show_bug.cgi?id=116770 + m_document->enqueuePageshowEvent(PageshowEventPersisted); HistoryItem* historyItem = frame->loader()->history()->currentItem(); diff --git a/Source/WebCore/loader/FrameLoader.cpp b/Source/WebCore/loader/FrameLoader.cpp index 7fc354d16..1dc633e64 100644 --- a/Source/WebCore/loader/FrameLoader.cpp +++ b/Source/WebCore/loader/FrameLoader.cpp @@ -398,6 +398,10 @@ void FrameLoader::stopLoading(UnloadEventPolicy unloadEventPolicy) m_pageDismissalEventBeingDispatched = PageHideDismissal; m_frame->document()->domWindow()->dispatchEvent(PageTransitionEvent::create(eventNames().pagehideEvent, m_frame->document()->inPageCache()), m_frame->document()); } + + // FIXME: update Page Visibility state here. + // https://bugs.webkit.org/show_bug.cgi?id=116770 + if (!m_frame->document()->inPageCache()) { RefPtr<Event> unloadEvent(Event::create(eventNames().unloadEvent, false, false)); // The DocumentLoader (and thus its DocumentLoadTiming) might get destroyed diff --git a/Source/WebCore/page/Page.cpp b/Source/WebCore/page/Page.cpp index 459386c79..5d62e0e96 100644 --- a/Source/WebCore/page/Page.cpp +++ b/Source/WebCore/page/Page.cpp @@ -1118,6 +1118,8 @@ void Page::checkSubframeCountConsistency() const #if ENABLE(PAGE_VISIBILITY_API) || ENABLE(HIDDEN_PAGE_DOM_TIMER_THROTTLING) void Page::setVisibilityState(PageVisibilityState visibilityState, bool isInitialState) { + // FIXME: the visibility state needs to be stored on the top-level document + // https://bugs.webkit.org/show_bug.cgi?id=116769 #if ENABLE(PAGE_VISIBILITY_API) if (m_visibilityState == visibilityState) return; diff --git a/Source/WebCore/page/PageVisibilityState.cpp b/Source/WebCore/page/PageVisibilityState.cpp index d9f774e79..a1bf7ce21 100644 --- a/Source/WebCore/page/PageVisibilityState.cpp +++ b/Source/WebCore/page/PageVisibilityState.cpp @@ -40,7 +40,7 @@ String pageVisibilityStateString(PageVisibilityState state) DEFINE_STATIC_LOCAL(const String, visible, (ASCIILiteral("visible"))); DEFINE_STATIC_LOCAL(const String, hidden, (ASCIILiteral("hidden"))); DEFINE_STATIC_LOCAL(const String, prerender, (ASCIILiteral("prerender"))); - DEFINE_STATIC_LOCAL(const String, preview, (ASCIILiteral("preview"))); + DEFINE_STATIC_LOCAL(const String, unloaded, (ASCIILiteral("unloaded"))); switch (state) { case PageVisibilityStateVisible: @@ -49,8 +49,8 @@ String pageVisibilityStateString(PageVisibilityState state) return hidden; case PageVisibilityStatePrerender: return prerender; - case PageVisibilityStatePreview: - return preview; + case PageVisibilityStateUnloaded: + return unloaded; } ASSERT_NOT_REACHED(); diff --git a/Source/WebCore/page/PageVisibilityState.h b/Source/WebCore/page/PageVisibilityState.h index 510554040..6680012aa 100644 --- a/Source/WebCore/page/PageVisibilityState.h +++ b/Source/WebCore/page/PageVisibilityState.h @@ -41,7 +41,7 @@ enum PageVisibilityState { PageVisibilityStateVisible, PageVisibilityStateHidden, PageVisibilityStatePrerender, - PageVisibilityStatePreview + PageVisibilityStateUnloaded }; #if ENABLE(PAGE_VISIBILITY_API) diff --git a/Source/WebKit/efl/WebCoreSupport/AssertMatchingEnums.cpp b/Source/WebKit/efl/WebCoreSupport/AssertMatchingEnums.cpp index 3f23604c7..3a84c6b35 100644 --- a/Source/WebKit/efl/WebCoreSupport/AssertMatchingEnums.cpp +++ b/Source/WebKit/efl/WebCoreSupport/AssertMatchingEnums.cpp @@ -52,7 +52,7 @@ using ::RightToLeftWritingDirection; COMPILE_ASSERT_MATCHING_ENUM(EWK_PAGE_VISIBILITY_STATE_VISIBLE, PageVisibilityStateVisible); COMPILE_ASSERT_MATCHING_ENUM(EWK_PAGE_VISIBILITY_STATE_HIDDEN, PageVisibilityStateHidden); COMPILE_ASSERT_MATCHING_ENUM(EWK_PAGE_VISIBILITY_STATE_PRERENDER, PageVisibilityStatePrerender); -COMPILE_ASSERT_MATCHING_ENUM(EWK_PAGE_VISIBILITY_STATE_PREVIEW, PageVisibilityStatePreview); +COMPILE_ASSERT_MATCHING_ENUM(EWK_PAGE_VISIBILITY_STATE_UNLOADED, PageVisibilityStateUnloaded); #endif COMPILE_ASSERT_MATCHING_ENUM(EWK_TEXT_SELECTION_NONE, VisibleSelection::NoSelection); diff --git a/Source/WebKit/efl/ewk/ewk_view.h b/Source/WebKit/efl/ewk/ewk_view.h index 65dc55eb9..2abe1ce1b 100644 --- a/Source/WebKit/efl/ewk/ewk_view.h +++ b/Source/WebKit/efl/ewk/ewk_view.h @@ -2486,7 +2486,7 @@ enum _Ewk_Page_Visibility_State { EWK_PAGE_VISIBILITY_STATE_VISIBLE, EWK_PAGE_VISIBILITY_STATE_HIDDEN, EWK_PAGE_VISIBILITY_STATE_PRERENDER, - EWK_PAGE_VISIBILITY_STATE_PREVIEW + EWK_PAGE_VISIBILITY_STATE_UNLOADED }; /// Creates a type name for @a _Ewk_Page_Visibility_State. typedef enum _Ewk_Page_Visibility_State Ewk_Page_Visibility_State; diff --git a/Source/WebKit/mac/WebView/WebView.mm b/Source/WebKit/mac/WebView/WebView.mm index fe445618f..0ed8115ec 100644 --- a/Source/WebKit/mac/WebView/WebView.mm +++ b/Source/WebKit/mac/WebView/WebView.mm @@ -417,8 +417,8 @@ static PageVisibilityState core(WebPageVisibilityState visibilityState) return PageVisibilityStateHidden; case WebPageVisibilityStatePrerender: return PageVisibilityStatePrerender; - case WebPageVisibilityStatePreview: - return PageVisibilityStatePreview; + case WebPageVisibilityStateUnloaded: + return PageVisibilityStateUnloaded; } ASSERT_NOT_REACHED(); diff --git a/Source/WebKit/mac/WebView/WebViewPrivate.h b/Source/WebKit/mac/WebView/WebViewPrivate.h index a4c85f943..2f4612846 100644 --- a/Source/WebKit/mac/WebView/WebViewPrivate.h +++ b/Source/WebKit/mac/WebView/WebViewPrivate.h @@ -119,7 +119,7 @@ typedef enum { WebPageVisibilityStateVisible, WebPageVisibilityStateHidden, WebPageVisibilityStatePrerender, - WebPageVisibilityStatePreview + WebPageVisibilityStateUnloaded } WebPageVisibilityState; typedef enum { diff --git a/Source/WebKit2/Shared/API/c/WKPageVisibilityTypes.h b/Source/WebKit2/Shared/API/c/WKPageVisibilityTypes.h index 8bc4cedd7..a64a3951c 100644 --- a/Source/WebKit2/Shared/API/c/WKPageVisibilityTypes.h +++ b/Source/WebKit2/Shared/API/c/WKPageVisibilityTypes.h @@ -34,7 +34,7 @@ enum { kWKPageVisibilityStateVisible, kWKPageVisibilityStateHidden, kWKPageVisibilityStatePrerender, - kWKPageVisibilityStatePreview + kWKPageVisibilityStateUnloaded }; typedef uint32_t WKPageVisibilityState; diff --git a/Source/WebKit2/Shared/API/c/WKSharedAPICast.h b/Source/WebKit2/Shared/API/c/WKSharedAPICast.h index f7b40b67b..6eae49bca 100644 --- a/Source/WebKit2/Shared/API/c/WKSharedAPICast.h +++ b/Source/WebKit2/Shared/API/c/WKSharedAPICast.h @@ -799,8 +799,8 @@ inline WebCore::PageVisibilityState toPageVisibilityState(WKPageVisibilityState return WebCore::PageVisibilityStateHidden; case kWKPageVisibilityStatePrerender: return WebCore::PageVisibilityStatePrerender; - case kWKPageVisibilityStatePreview: - return WebCore::PageVisibilityStatePreview; + case kWKPageVisibilityStateUnloaded: + return WebCore::PageVisibilityStateUnloaded; } ASSERT_NOT_REACHED(); diff --git a/Tools/DumpRenderTree/mac/TestRunnerMac.mm b/Tools/DumpRenderTree/mac/TestRunnerMac.mm index c6a2f4a37..22f5c2898 100644 --- a/Tools/DumpRenderTree/mac/TestRunnerMac.mm +++ b/Tools/DumpRenderTree/mac/TestRunnerMac.mm @@ -1171,8 +1171,8 @@ void TestRunner::setPageVisibility(const char* newVisibility) [webView _setVisibilityState:WebPageVisibilityStateHidden isInitialState:NO]; else if (!strcmp(newVisibility, "prerender")) [webView _setVisibilityState:WebPageVisibilityStatePrerender isInitialState:NO]; - else if (!strcmp(newVisibility, "preview")) - [webView _setVisibilityState:WebPageVisibilityStatePreview isInitialState:NO]; + else if (!strcmp(newVisibility, "unloaded")) + [webView _setVisibilityState:WebPageVisibilityStateUnloaded isInitialState:NO]; } void TestRunner::sendWebIntentResponse(JSStringRef) diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/PageVisibilityState.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/PageVisibilityState.cpp index 8aa7495b5..8907b92e5 100644 --- a/Tools/TestWebKitAPI/Tests/WebKit2/PageVisibilityState.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKit2/PageVisibilityState.cpp @@ -37,13 +37,13 @@ static bool testDone; static void didRunStep1StateChangeVisibleToHidden(WKSerializedScriptValueRef, WKErrorRef, void*); static void didRunStep2StateChangeHiddenToPrerender(WKSerializedScriptValueRef, WKErrorRef, void*); -static void didRunStep3StateChangePrerenderToPreview(WKSerializedScriptValueRef, WKErrorRef, void*); -static void didRunStep4InStatePreview(WKSerializedScriptValueRef, WKErrorRef, void*); +static void didRunStep3StateChangePrerenderToUnloaded(WKSerializedScriptValueRef, WKErrorRef, void*); +static void didRunStep4InStateUnloaded(WKSerializedScriptValueRef, WKErrorRef, void*); static void setPageVisibilityStateWithEvalContinuation(PlatformWebView* webView, WKPageVisibilityState visibilityState, WKPageRunJavaScriptFunction callback) { WKPageSetVisibilityState(webView->page(), visibilityState, false); - WKRetainPtr<WKStringRef> javaScriptString(AdoptWK, WKStringCreateWithUTF8CString("document.webkitVisibilityState")); + WKRetainPtr<WKStringRef> javaScriptString(AdoptWK, WKStringCreateWithUTF8CString("document.visibilityState")); WKPageRunJavaScriptInMainFrame(webView->page(), javaScriptString.get(), static_cast<void*>(webView), callback); } @@ -80,18 +80,18 @@ static void didRunStep1StateChangeVisibleToHidden(WKSerializedScriptValueRef res static void didRunStep2StateChangeHiddenToPrerender(WKSerializedScriptValueRef resultSerializedScriptValue, WKErrorRef error, void* context) { assertSerializedScriptValueIsStringValue(resultSerializedScriptValue, error, "hidden"); - setPageVisibilityStateWithEvalContinuation(static_cast<PlatformWebView*>(context), kWKPageVisibilityStatePrerender, didRunStep3StateChangePrerenderToPreview); + setPageVisibilityStateWithEvalContinuation(static_cast<PlatformWebView*>(context), kWKPageVisibilityStatePrerender, didRunStep3StateChangePrerenderToUnloaded); } -static void didRunStep3StateChangePrerenderToPreview(WKSerializedScriptValueRef resultSerializedScriptValue, WKErrorRef error, void* context) +static void didRunStep3StateChangePrerenderToUnloaded(WKSerializedScriptValueRef resultSerializedScriptValue, WKErrorRef error, void* context) { assertSerializedScriptValueIsStringValue(resultSerializedScriptValue, error, "prerender"); - setPageVisibilityStateWithEvalContinuation(static_cast<PlatformWebView*>(context), kWKPageVisibilityStatePreview, didRunStep4InStatePreview); + setPageVisibilityStateWithEvalContinuation(static_cast<PlatformWebView*>(context), kWKPageVisibilityStateUnloaded, didRunStep4InStateUnloaded); } -static void didRunStep4InStatePreview(WKSerializedScriptValueRef resultSerializedScriptValue, WKErrorRef error, void* context) +static void didRunStep4InStateUnloaded(WKSerializedScriptValueRef resultSerializedScriptValue, WKErrorRef error, void* context) { - assertSerializedScriptValueIsStringValue(resultSerializedScriptValue, error, "preview"); + assertSerializedScriptValueIsStringValue(resultSerializedScriptValue, error, "unloaded"); testDone = true; } diff --git a/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.html b/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.html index 8a2bdc6a2..bded58089 100644 --- a/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.html +++ b/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.html @@ -1,6 +1,6 @@ <script> -document.addEventListener("webkitvisibilitychange", function(event) { +document.addEventListener("visibilitychange", function(event) { // Send a signal to the test controller via alert. - alert('webkitvisibilitychange'); + alert('visibilitychange'); }); </script> diff --git a/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm b/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm index cec138cb7..9254ffb60 100644 --- a/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm +++ b/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm @@ -108,7 +108,7 @@ void PageVisibilityStateWithWindowChanges::runTest(View view) // This WebView does not have a window and superview. PageVisibility should be "hidden". EXPECT_NULL([view window]); EXPECT_NULL([view superview]); - EXPECT_JS_EQ(view, "document.webkitVisibilityState", "hidden"); + EXPECT_JS_EQ(view, "document.visibilityState", "hidden"); // Add it to a non-visible window. PageVisibility should still be "hidden". RetainPtr<NSWindow> window(AdoptNS, [[NSWindow alloc] initWithContentRect:view.frame styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]); @@ -116,26 +116,26 @@ void PageVisibilityStateWithWindowChanges::runTest(View view) EXPECT_NOT_NULL([view window]); EXPECT_NOT_NULL([view superview]); EXPECT_FALSE([window.get() isVisible]); - EXPECT_JS_EQ(view, "document.webkitVisibilityState", "hidden"); + EXPECT_JS_EQ(view, "document.visibilityState", "hidden"); // Make the window visible. PageVisibility should become "visible". didGetPageSignalToContinue = false; [window.get() makeKeyAndOrderFront:nil]; EXPECT_TRUE([window.get() isVisible]); Util::run(&didGetPageSignalToContinue); - EXPECT_JS_EQ(view, "document.webkitVisibilityState", "visible"); + EXPECT_JS_EQ(view, "document.visibilityState", "visible"); // Minimize the window. PageVisibility should become "hidden". didGetPageSignalToContinue = false; [window.get() miniaturize:nil]; Util::run(&didGetPageSignalToContinue); - EXPECT_JS_EQ(view, "document.webkitVisibilityState", "hidden"); + EXPECT_JS_EQ(view, "document.visibilityState", "hidden"); // Deminimize the window. PageVisibility should become "visible". didGetPageSignalToContinue = false; [window.get() deminiaturize:nil]; Util::run(&didGetPageSignalToContinue); - EXPECT_JS_EQ(view, "document.webkitVisibilityState", "visible"); + EXPECT_JS_EQ(view, "document.visibilityState", "visible"); // Remove the WebView from its superview. PageVisibility should become "hidden". didGetPageSignalToContinue = false; @@ -144,7 +144,7 @@ void PageVisibilityStateWithWindowChanges::runTest(View view) EXPECT_NULL([view superview]); EXPECT_TRUE([window.get() isVisible]); Util::run(&didGetPageSignalToContinue); - EXPECT_JS_EQ(view, "document.webkitVisibilityState", "hidden"); + EXPECT_JS_EQ(view, "document.visibilityState", "hidden"); } TEST_F(PageVisibilityStateWithWindowChanges, WebKit) diff --git a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp index 602e600f0..2c7b25046 100644 --- a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp +++ b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp @@ -546,8 +546,8 @@ void TestRunner::setPageVisibility(JSStringRef state) visibilityState = kWKPageVisibilityStateHidden; else if (JSStringIsEqualToUTF8CString(state, "prerender")) visibilityState = kWKPageVisibilityStatePrerender; - else if (JSStringIsEqualToUTF8CString(state, "preview")) - visibilityState = kWKPageVisibilityStatePreview; + else if (JSStringIsEqualToUTF8CString(state, "unloaded")) + visibilityState = kWKPageVisibilityStateUnloaded; InjectedBundle::shared().setVisibilityState(visibilityState, false); } |