void dump() { if (!webView) return; invalidateAnyPreviousWaitToDumpWatchdog(); if (dumpTree) { WebFrame *frame = webView->mainFrame(); string renderDump; bool dumpAsText = gLayoutTestController->dumpAsText(); // FIXME: Also dump text resuls as text. gLayoutTestController->setDumpAsText(dumpAsText); if (gLayoutTestController->dumpAsText()) { renderDump = dumpFramesAsText(frame); } else { renderDump = frame->renderTreeDump(); } if (renderDump.empty()) { const char* errorMessage; if (gLayoutTestController->dumpAsText()) errorMessage = "[documentElement innerText]"; else if (gLayoutTestController->dumpDOMAsWebArchive()) errorMessage = "[[mainFrame DOMDocument] webArchive]"; else if (gLayoutTestController->dumpSourceAsWebArchive()) errorMessage = "[[mainFrame dataSource] webArchive]"; else errorMessage = "[mainFrame renderTreeAsExternalRepresentation]"; printf("ERROR: nil result from %s", errorMessage); } else { printf("%s", renderDump.c_str()); if (!gLayoutTestController->dumpAsText() && !gLayoutTestController->dumpDOMAsWebArchive() && !gLayoutTestController->dumpSourceAsWebArchive()) dumpFrameScrollPosition(frame); } if (gLayoutTestController->dumpBackForwardList()) { // FIXME: not implemented } if (printSeparators) { puts("#EOF"); // terminate the content block fputs("#EOF\n", stderr); fflush(stdout); fflush(stderr); } } if (dumpPixels) { if (!gLayoutTestController->dumpAsText() && !gLayoutTestController->dumpDOMAsWebArchive() && !gLayoutTestController->dumpSourceAsWebArchive()) { // FIXME: Add support for dumping pixels } } // FIXME: call displayWebView here when we support --paint puts("#EOF"); // terminate the (possibly empty) pixels block fflush(stdout); fflush(stderr); stopEventLoop(); done = true; }