summaryrefslogtreecommitdiff
path: root/Tools/TestWebKitAPI/Tests/WebKit2/ShouldKeepCurrentBackForwardListItemInList.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/TestWebKitAPI/Tests/WebKit2/ShouldKeepCurrentBackForwardListItemInList.cpp')
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ShouldKeepCurrentBackForwardListItemInList.cpp163
1 files changed, 0 insertions, 163 deletions
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ShouldKeepCurrentBackForwardListItemInList.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ShouldKeepCurrentBackForwardListItemInList.cpp
deleted file mode 100644
index f8098e6f1..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/ShouldKeepCurrentBackForwardListItemInList.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-
-#if WK_HAVE_C_SPI
-
-#include "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include "Test.h"
-
-// This test navigates from simple.html, to simple2.html, to simple3.html
-// When navigating from simple2 to simple3, it disallows the simple2 back/forward list item from staying in the list
-// It then navigates back from simple3, expecting to land at simple.
-
-namespace TestWebKitAPI {
-
-static bool finished = false;
-static bool successfulSoFar = true;
-static int navigationNumber = 0;
-
-static bool itemURLLastComponentIsString(WKBackForwardListItemRef item, const char* string)
-{
- WKRetainPtr<WKURLRef> url = adoptWK(WKBackForwardListItemCopyURL(item));
- WKRetainPtr<WKStringRef> path = adoptWK(WKURLCopyLastPathComponent(url.get()));
-
- return WKStringIsEqualToUTF8CString(path.get(), string);
-}
-
-static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef, const void*)
-{
- // Only mark finished when the main frame loads
- if (!WKFrameIsMainFrame(frame))
- return;
-
- finished = true;
- navigationNumber++;
-
- WKBackForwardListRef list = WKPageGetBackForwardList(page);
- WKBackForwardListItemRef currentItem = WKBackForwardListGetCurrentItem(list);
- WKBackForwardListItemRef backItem = WKBackForwardListGetBackItem(list);
- WKBackForwardListItemRef forwardItem = WKBackForwardListGetForwardItem(list);
- unsigned forwardCount = WKBackForwardListGetForwardListCount(list);
-
- // This test should never have a forward list.
- if (forwardCount)
- successfulSoFar = false;
-
- if (navigationNumber == 1) {
- // We've only performed 1 navigation, we should only have a current item.
- if (!currentItem || !itemURLLastComponentIsString(currentItem, "simple.html"))
- successfulSoFar = false;
- if (backItem || forwardItem)
- successfulSoFar = false;
- } else if (navigationNumber == 2) {
- // On the second navigation, simple2 should be current and simple should be the back item.
- if (!currentItem || !itemURLLastComponentIsString(currentItem, "simple2.html"))
- successfulSoFar = false;
- if (!backItem || !itemURLLastComponentIsString(backItem, "simple.html"))
- successfulSoFar = false;
- if (forwardItem)
- successfulSoFar = false;
- } else if (navigationNumber == 3) {
- // On the third navigation the item for simple2 should have been removed.
- // So simple3 should be current and simple should still be the back item.
- if (!currentItem || !itemURLLastComponentIsString(currentItem, "simple3.html"))
- successfulSoFar = false;
- if (!backItem || !itemURLLastComponentIsString(backItem, "simple.html"))
- successfulSoFar = false;
- if (forwardItem)
- successfulSoFar = false;
- } else if (navigationNumber == 4) {
- // After the fourth navigation (which was a "back" navigation), the item for simple3 should have been removed.
- // So simple should be current and there should be no other items.
- if (!currentItem || !itemURLLastComponentIsString(currentItem, "simple.html"))
- successfulSoFar = false;
- if (backItem || forwardItem)
- successfulSoFar = false;
- }
-}
-
-static void willGoToBackForwardListItem(WKPageRef, WKBackForwardListItemRef item, WKTypeRef userData, const void*)
-{
- if (!itemURLLastComponentIsString(item, "simple.html"))
- successfulSoFar = false;
-}
-
-static bool shouldKeepCurrentBackForwardListItemInList(WKPageRef page, WKBackForwardListItemRef item, const void*)
-{
- // We make sure the item for "simple2.html" is removed when we navigate to "simple3.html"
- // We also want to make sure the item for "simple3.html" is removed when we go back to "simple.html"
- // So we only want to keep "simple.html"
- return itemURLLastComponentIsString(item, "simple.html");
-}
-
-static void setPageLoaderClient(WKPageRef page)
-{
- WKPageLoaderClientV5 loaderClient;
- memset(&loaderClient, 0, sizeof(loaderClient));
-
- loaderClient.base.version = 5;
- loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- loaderClient.shouldKeepCurrentBackForwardListItemInList = shouldKeepCurrentBackForwardListItemInList;
- loaderClient.willGoToBackForwardListItem = willGoToBackForwardListItem;
-
- WKPageSetPageLoaderClient(page, &loaderClient.base);
-}
-
-TEST(WebKit2, ShouldKeepCurrentBackForwardListItemInList)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
-
- PlatformWebView webView(context.get());
- setPageLoaderClient(webView.page());
-
- WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple", "html")).get());
- Util::run(&finished);
- EXPECT_EQ(successfulSoFar, true);
-
- finished = false;
- WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple2", "html")).get());
- Util::run(&finished);
- EXPECT_EQ(successfulSoFar, true);
-
- finished = false;
- WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple3", "html")).get());
- Util::run(&finished);
- EXPECT_EQ(successfulSoFar, true);
-
- finished = false;
- WKPageGoBack(webView.page());
- Util::run(&finished);
-
- EXPECT_EQ(successfulSoFar, true);
- EXPECT_EQ(navigationNumber, 4);
-}
-
-} // namespace TestWebKitAPI
-
-
-#endif