static void didCrash(WKPageRef page, const void*) { // Test if first load actually worked. EXPECT_TRUE(loadBeforeCrash); // Reload should re-spawn webprocess. WKPageReload(page); }
static void didCrash(WKPageRef page, const void* clientInfo) { TestStatesData* states = const_cast<TestStatesData*>(static_cast<const TestStatesData*>(clientInfo)); EXPECT_TRUE(states->firstLoad); // Resize should work after WebProcess was terminated, unless // the port's View is accessing nulled WebProcess related data, // which would cause a crash. states->webView.resizeTo(100, 200); states->webView.resizeTo(300, 400); WKPageReload(page); }
TEST(WebKit2, WKViewClientWebProcessCallbacks) { WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate()); WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple", "html")); PlatformWebView view(context.get()); TestStatesData states = TestStatesData(view.platformView(), url.get()); setPageLoaderClient(view.page(), &states); setViewClient(view.platformView(), &states); WKPageLoadURL(view.page(), url.get()); Util::run(&states.didFinishLoad); WKPageTerminate(view.page()); Util::run(&states.didCrash); WKPageReload(view.page()); Util::run(&states.didRelaunch); }
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); } }
TEST(WebKit2, MouseMoveAfterCrash) #endif { WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("MouseMoveAfterCrashTest")); PlatformWebView webView(context.get()); setPageLoaderClient(webView.page()); WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("mouse-move-listener", "html")); WKPageLoadURL(webView.page(), url.get()); Util::run(&didFinishLoad); didFinishLoad = false; WKContextPostMessageToInjectedBundle(context.get(), Util::toWK("Pause").get(), 0); webView.simulateSpacebarKeyPress(); // Move the mouse once we are hung. webView.simulateMouseMove(10, 10); webView.simulateMouseMove(20, 20); // After moving the mouse (while the web process was hung on the Pause message), kill the web process. It is restarted by reloading the page. WKPageTerminate(webView.page()); WKPageReload(webView.page()); // Wait until we load the page a second time. Util::run(&didFinishLoad); EXPECT_JS_FALSE(webView.page(), "didMoveMouse()"); // Once the page has reloaded, try moving the mouse to verify that we get mouse move events. webView.simulateMouseMove(10, 10); webView.simulateMouseMove(20, 20); EXPECT_JS_TRUE(webView.page(), "didMoveMouse()"); }
void Tab::reload() { WKPageReload(m_page); }
TEST(WebKit2, PendingAPIRequestURL) { WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate()); PlatformWebView webView(context.get()); WKPageLoaderClientV0 loaderClient; memset(&loaderClient, 0, sizeof(loaderClient)); loaderClient.base.version = 0; loaderClient.didFinishLoadForFrame = [](WKPageRef, WKFrameRef, WKTypeRef, const void*) { done = true; }; WKPageSetPageLoaderClient(webView.page(), &loaderClient.base); WKRetainPtr<WKURLRef> activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); EXPECT_NULL(activeURL.get()); WKRetainPtr<WKURLRef> url = adoptWK(Util::createURLForResource("simple", "html")); WKPageLoadURL(webView.page(), url.get()); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get())); Util::run(&done); done = false; WKPageReload(webView.page()); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get())); Util::run(&done); done = false; WKRetainPtr<WKStringRef> htmlString = Util::toWK("<body>Hello, World</body>"); WKRetainPtr<WKURLRef> blankURL = adoptWK(WKURLCreateWithUTF8CString("about:blank")); WKPageLoadHTMLString(webView.page(), htmlString.get(), nullptr); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get())); Util::run(&done); done = false; WKPageReload(webView.page()); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get())); Util::run(&done); done = false; url = adoptWK(Util::createURLForResource("simple2", "html")); WKPageLoadHTMLString(webView.page(), htmlString.get(), url.get()); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get())); Util::run(&done); done = false; WKPageReload(webView.page()); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get())); Util::run(&done); done = false; WKRetainPtr<WKDataRef> data = adoptWK(WKDataCreate(nullptr, 0)); WKPageLoadData(webView.page(), data.get(), nullptr, nullptr, nullptr); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get())); Util::run(&done); done = false; WKPageReload(webView.page()); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get())); Util::run(&done); done = false; WKPageLoadData(webView.page(), data.get(), nullptr, nullptr, url.get()); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get())); Util::run(&done); done = false; WKPageReload(webView.page()); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get())); Util::run(&done); done = false; WKPageLoadAlternateHTMLString(webView.page(), htmlString.get(), nullptr, url.get()); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get())); Util::run(&done); done = false; WKPageReload(webView.page()); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get())); Util::run(&done); done = false; WKRetainPtr<WKStringRef> plainTextString = Util::toWK("Hello, World"); WKPageLoadPlainTextString(webView.page(), plainTextString.get()); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get())); Util::run(&done); done = false; WKPageReload(webView.page()); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get())); Util::run(&done); done = false; url = adoptWK(WKURLCreateWithUTF8CString("file:///tmp/index.html")); WKPageLoadFile(webView.page(), url.get(), nullptr); activeURL = adoptWK(WKPageCopyActiveURL(webView.page())); ASSERT_NOT_NULL(activeURL.get()); EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get())); WKPageStopLoading(webView.page()); }
WorkQueueItem::Type invoke() const { WKPageReload(mainPage()); return WorkQueueItem::Loading; }