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);
}
示例#4
0
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()");
}
示例#6
0
文件: Tab.cpp 项目: setanta/drowser
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());
}
示例#8
0
 WorkQueueItem::Type invoke() const
 {
     WKPageReload(mainPage());
     return WorkQueueItem::Loading;
 }