static void createSessionStates(WKContextRef context) { PlatformWebView webView(context); setPageLoaderClient(webView.page()); WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple", "html")).get()); Util::run(&didFinishLoad); didFinishLoad = false; WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple2", "html")).get()); Util::run(&didFinishLoad); didFinishLoad = false; WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple3", "html")).get()); Util::run(&didFinishLoad); didFinishLoad = false; WKPageGoBack(webView.page()); Util::run(&didFinishLoad); didFinishLoad = false; WKPageGoBack(webView.page()); Util::run(&didFinishLoad); didFinishLoad = false; // Should be back on simple.html at this point. sessionStateWithFirstItemRemoved = adoptWK(static_cast<WKSessionStateRef>(WKPageCopySessionState(webView.page(), reinterpret_cast<void*>(1), filterFirstItemCallback))); sessionStateWithAllItemsRemoved = adoptWK(static_cast<WKSessionStateRef>(WKPageCopySessionState(webView.page(), reinterpret_cast<void*>(1), filterAllItemsCallback))); }
TEST(WebKit2, DISABLED_DOMWindowExtensionBasic) { WKRetainPtr<WKPageGroupRef> pageGroup(AdoptWK, WKPageGroupCreateWithIdentifier(WKStringCreateWithUTF8CString("DOMWindowExtensionBasicPageGroup"))); WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextForInjectedBundleTest("DOMWindowExtensionBasic", pageGroup.get())); WKContextInjectedBundleClientV0 injectedBundleClient; memset(&injectedBundleClient, 0, sizeof(injectedBundleClient)); injectedBundleClient.base.version = 0; injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle; WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient.base); // The default cache model has a capacity of 0, so it is necessary to switch to a cache // model that actually allows for a page cache. WKContextSetCacheModel(context.get(), kWKCacheModelDocumentBrowser); PlatformWebView webView(context.get(), pageGroup.get()); // Make sure the extensions for each frame are installed in each world. WKRetainPtr<WKURLRef> url1(AdoptWK, Util::createURLForResource("simple-iframe", "html")); WKPageLoadURL(webView.page(), url1.get()); Util::run(&finished); finished = false; // Make sure those first 4 extensions are disconnected, and 2 new ones are installed. WKRetainPtr<WKURLRef> url2(AdoptWK, Util::createURLForResource("simple", "html")); WKPageLoadURL(webView.page(), url2.get()); Util::run(&finished); finished = false; // Make sure those two are disconnected, and the first four are reconnected. WKPageGoBack(webView.page()); Util::run(&finished); finished = false; // Make sure the 2 disconnected extensions in the page cache and the 4 active extensions are all removed. WKPageClose(webView.page()); Util::run(&finished); const size_t expectedSize = sizeof(expectedMessages) / sizeof(const char*); EXPECT_EQ(expectedSize, messages.size()); if (messages.size() != expectedSize) return; for (size_t i = 0; i < messages.size(); ++i) EXPECT_WK_STREQ(expectedMessages[i], messages[i].get()); }
TEST(WebKit2, DISABLED_DOMWindowExtensionNoCache) { WKRetainPtr<WKPageGroupRef> pageGroup(AdoptWK, WKPageGroupCreateWithIdentifier(WKStringCreateWithUTF8CString("DOMWindowExtensionNoCachePageGroup"))); WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextForInjectedBundleTest("DOMWindowExtensionNoCache", pageGroup.get())); WKContextInjectedBundleClientV1 injectedBundleClient; memset(&injectedBundleClient, 0, sizeof(injectedBundleClient)); injectedBundleClient.base.version = 1; injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle; WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient.base); // Disable the page cache. WKContextSetCacheModel(context.get(), kWKCacheModelDocumentViewer); PlatformWebView webView(context.get(), pageGroup.get()); // Make sure the extensions for each frame are installed in each world. WKRetainPtr<WKURLRef> url1(AdoptWK, Util::createURLForResource("simple-iframe", "html")); WKPageLoadURL(webView.page(), url1.get()); Util::run(&finished); finished = false; // Make sure those first 4 extensions are destroyed, and 2 new ones are installed. WKRetainPtr<WKURLRef> url2(AdoptWK, Util::createURLForResource("simple", "html")); WKPageLoadURL(webView.page(), url2.get()); Util::run(&finished); finished = false; // Make sure those 2 are destroyed, and the first 4 are recreated. WKPageGoBack(webView.page()); Util::run(&finished); finished = false; WKPageClose(webView.page()); Util::run(&finished); const size_t expectedSize = sizeof(expectedMessages) / sizeof(const char*); EXPECT_EQ(expectedSize, messages.size()); if (messages.size() != expectedSize) return; for (size_t i = 0; i < messages.size(); ++i) EXPECT_WK_STREQ(expectedMessages[i], messages[i].get()); }
TEST(WebKit2, ShouldGoToBackForwardListItem) { WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("ShouldGoToBackForwardListItemTest")); // Enable the page cache so we can test the WKBundleBackForwardListItemIsInPageCache API WKContextSetCacheModel(context.get(), kWKCacheModelDocumentBrowser); PlatformWebView webView(context.get()); setPageLoaderClient(webView.page()); WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple", "html")).get()); Util::run(&finished); finished = false; WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple-iframe", "html")).get()); Util::run(&finished); finished = false; WKPageGoBack(webView.page()); Util::run(&finished); EXPECT_EQ(receivedProperBackForwardCallbacks, true); }
void MiniBrowser::handleKeyPressEvent(const XKeyPressedEvent& event) { if (!m_view) return; bool shouldUseUpperCase; KeySym symbol = chooseSymbolForXKeyEvent(event, &shouldUseUpperCase); NavigationCommand command = checkNavigationCommand(symbol, event.state); switch (command) { case BackNavigation: WKPageGoBack(pageRef()); return; case ForwardNavigation: WKPageGoForward(pageRef()); return; case ReloadNavigation: WKPageReload(pageRef()); return; default: NIXKeyEvent nixEvent = convertXKeyEventToNixKeyEvent(event, symbol, shouldUseUpperCase); NIXViewSendKeyEvent(m_view, &nixEvent); } }
void Tab::back() { if (WKPageCanGoBack(m_page)) WKPageGoBack(m_page); }