summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/testing/runner/WebTestProxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/testing/runner/WebTestProxy.cpp')
-rw-r--r--chromium/third_party/WebKit/Source/testing/runner/WebTestProxy.cpp1394
1 files changed, 0 insertions, 1394 deletions
diff --git a/chromium/third_party/WebKit/Source/testing/runner/WebTestProxy.cpp b/chromium/third_party/WebKit/Source/testing/runner/WebTestProxy.cpp
deleted file mode 100644
index 871bcdaefad..00000000000
--- a/chromium/third_party/WebKit/Source/testing/runner/WebTestProxy.cpp
+++ /dev/null
@@ -1,1394 +0,0 @@
-/*
- * Copyright (C) 2012 Google 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:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * 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.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER OR 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 "public/testing/WebTestProxy.h"
-
-#include "AccessibilityController.h"
-#include "EventSender.h"
-#include "MockColorChooser.h"
-#include "MockWebSpeechInputController.h"
-#include "MockWebSpeechRecognizer.h"
-#include "MockWebValidationMessageClient.h"
-#include "SpellCheckClient.h"
-#include "TestCommon.h"
-#include "TestInterfaces.h"
-#include "TestPlugin.h"
-#include "TestRunner.h"
-#include "WebUserMediaClientMock.h"
-#include "public/platform/WebCString.h"
-#include "public/platform/WebURLError.h"
-#include "public/platform/WebURLRequest.h"
-#include "public/platform/WebURLResponse.h"
-#include "public/testing/WebTestDelegate.h"
-#include "public/testing/WebTestInterfaces.h"
-#include "public/testing/WebTestRunner.h"
-#include "public/web/WebAXEnums.h"
-#include "public/web/WebAXObject.h"
-#include "public/web/WebCachedURLRequest.h"
-#include "public/web/WebConsoleMessage.h"
-#include "public/web/WebDataSource.h"
-#include "public/web/WebDocument.h"
-#include "public/web/WebElement.h"
-#include "public/web/WebFrame.h"
-#include "public/web/WebGeolocationClientMock.h"
-#include "public/web/WebHistoryItem.h"
-#include "public/web/WebMIDIClientMock.h"
-#include "public/web/WebNode.h"
-#include "public/web/WebPluginParams.h"
-#include "public/web/WebPrintParams.h"
-#include "public/web/WebRange.h"
-#include "public/web/WebScriptController.h"
-#include "public/web/WebUserGestureIndicator.h"
-#include "public/web/WebView.h"
-
-// FIXME: Including platform_canvas.h here is a layering violation.
-#include <cctype>
-#include "skia/ext/platform_canvas.h"
-
-using namespace blink;
-using namespace std;
-
-namespace WebTestRunner {
-
-namespace {
-
-class HostMethodTask : public WebMethodTask<WebTestProxyBase> {
-public:
- typedef void (WebTestProxyBase::*CallbackMethodType)();
- HostMethodTask(WebTestProxyBase* object, CallbackMethodType callback)
- : WebMethodTask<WebTestProxyBase>(object)
- , m_callback(callback)
- { }
-
- virtual void runIfValid() { (m_object->*m_callback)(); }
-
-private:
- CallbackMethodType m_callback;
-};
-
-void printFrameDescription(WebTestDelegate* delegate, WebFrame* frame)
-{
- string name8 = frame->uniqueName().utf8();
- if (frame == frame->view()->mainFrame()) {
- if (!name8.length()) {
- delegate->printMessage("main frame");
- return;
- }
- delegate->printMessage(string("main frame \"") + name8 + "\"");
- return;
- }
- if (!name8.length()) {
- delegate->printMessage("frame (anonymous)");
- return;
- }
- delegate->printMessage(string("frame \"") + name8 + "\"");
-}
-
-void printFrameUserGestureStatus(WebTestDelegate* delegate, WebFrame* frame, const char* msg)
-{
- bool isUserGesture = WebUserGestureIndicator::isProcessingUserGesture();
- delegate->printMessage(string("Frame with user gesture \"") + (isUserGesture ? "true" : "false") + "\"" + msg);
-}
-
-// Used to write a platform neutral file:/// URL by taking the
-// filename and its directory. (e.g., converts
-// "file:///tmp/foo/bar.txt" to just "bar.txt").
-string descriptionSuitableForTestResult(const string& url)
-{
- if (url.empty() || string::npos == url.find("file://"))
- return url;
-
- size_t pos = url.rfind('/');
- if (pos == string::npos || !pos)
- return "ERROR:" + url;
- pos = url.rfind('/', pos - 1);
- if (pos == string::npos)
- return "ERROR:" + url;
-
- return url.substr(pos + 1);
-}
-
-void printResponseDescription(WebTestDelegate* delegate, const WebURLResponse& response)
-{
- if (response.isNull()) {
- delegate->printMessage("(null)");
- return;
- }
- string url = response.url().spec();
- char data[100];
- snprintf(data, sizeof(data), "%d", response. httpStatusCode());
- delegate->printMessage(string("<NSURLResponse ") + descriptionSuitableForTestResult(url) + ", http status code " + data + ">");
-}
-
-string URLDescription(const GURL& url)
-{
- if (url.SchemeIs("file"))
- return url.ExtractFileName();
- return url.possibly_invalid_spec();
-}
-
-string PriorityDescription(const WebURLRequest::Priority& priority)
-{
- switch (priority) {
- case WebURLRequest::PriorityVeryLow:
- return "VeryLow";
- case WebURLRequest::PriorityLow:
- return "Low";
- case WebURLRequest::PriorityMedium:
- return "Medium";
- case WebURLRequest::PriorityHigh:
- return "High";
- case WebURLRequest::PriorityVeryHigh:
- return "VeryHigh";
- case WebURLRequest::PriorityUnresolved:
- default:
- return "Unresolved";
- }
-}
-
-void blockRequest(WebURLRequest& request)
-{
- request.setURL(GURL("255.255.255.255"));
-}
-
-bool isLocalhost(const string& host)
-{
- return host == "127.0.0.1" || host == "localhost";
-}
-
-bool hostIsUsedBySomeTestsToGenerateError(const string& host)
-{
- return host == "255.255.255.255";
-}
-
-// Used to write a platform neutral file:/// URL by only taking the filename
-// (e.g., converts "file:///tmp/foo.txt" to just "foo.txt").
-string urlSuitableForTestResult(const string& url)
-{
- if (url.empty() || string::npos == url.find("file://"))
- return url;
-
- size_t pos = url.rfind('/');
- if (pos == string::npos) {
-#ifdef WIN32
- pos = url.rfind('\\');
- if (pos == string::npos)
- pos = 0;
-#else
- pos = 0;
-#endif
- }
- string filename = url.substr(pos + 1);
- if (filename.empty())
- return "file:"; // A WebKit test has this in its expected output.
- return filename;
-}
-
-// WebNavigationType debugging strings taken from PolicyDelegate.mm.
-const char* linkClickedString = "link clicked";
-const char* formSubmittedString = "form submitted";
-const char* backForwardString = "back/forward";
-const char* reloadString = "reload";
-const char* formResubmittedString = "form resubmitted";
-const char* otherString = "other";
-const char* illegalString = "illegal value";
-
-// Get a debugging string from a WebNavigationType.
-const char* webNavigationTypeToString(WebNavigationType type)
-{
- switch (type) {
- case blink::WebNavigationTypeLinkClicked:
- return linkClickedString;
- case blink::WebNavigationTypeFormSubmitted:
- return formSubmittedString;
- case blink::WebNavigationTypeBackForward:
- return backForwardString;
- case blink::WebNavigationTypeReload:
- return reloadString;
- case blink::WebNavigationTypeFormResubmitted:
- return formResubmittedString;
- case blink::WebNavigationTypeOther:
- return otherString;
- }
- return illegalString;
-}
-
-string dumpDocumentText(WebFrame* frame)
-{
- // We use the document element's text instead of the body text here because
- // not all documents have a body, such as XML documents.
- WebElement documentElement = frame->document().documentElement();
- if (documentElement.isNull())
- return string();
- return documentElement.innerText().utf8();
-}
-
-string dumpFramesAsText(WebFrame* frame, bool recursive)
-{
- string result;
-
- // Add header for all but the main frame. Skip empty frames.
- if (frame->parent() && !frame->document().documentElement().isNull()) {
- result.append("\n--------\nFrame: '");
- result.append(frame->uniqueName().utf8().data());
- result.append("'\n--------\n");
- }
-
- result.append(dumpDocumentText(frame));
- result.append("\n");
-
- if (recursive) {
- for (WebFrame* child = frame->firstChild(); child; child = child->nextSibling())
- result.append(dumpFramesAsText(child, recursive));
- }
-
- return result;
-}
-
-string dumpFramesAsPrintedText(WebFrame* frame, bool recursive)
-{
- string result;
-
- // Cannot do printed format for anything other than HTML
- if (!frame->document().isHTMLDocument())
- return string();
-
- // Add header for all but the main frame. Skip empty frames.
- if (frame->parent() && !frame->document().documentElement().isNull()) {
- result.append("\n--------\nFrame: '");
- result.append(frame->uniqueName().utf8().data());
- result.append("'\n--------\n");
- }
-
- result.append(frame->renderTreeAsText(WebFrame::RenderAsTextPrinting).utf8());
- result.append("\n");
-
- if (recursive) {
- for (WebFrame* child = frame->firstChild(); child; child = child->nextSibling())
- result.append(dumpFramesAsPrintedText(child, recursive));
- }
-
- return result;
-}
-
-string dumpFrameScrollPosition(WebFrame* frame, bool recursive)
-{
- string result;
- WebSize offset = frame->scrollOffset();
- if (offset.width > 0 || offset.height > 0) {
- if (frame->parent())
- result = string("frame '") + frame->uniqueName().utf8().data() + "' ";
- char data[100];
- snprintf(data, sizeof(data), "scrolled to %d,%d\n", offset.width, offset.height);
- result += data;
- }
-
- if (!recursive)
- return result;
- for (WebFrame* child = frame->firstChild(); child; child = child->nextSibling())
- result += dumpFrameScrollPosition(child, recursive);
- return result;
-}
-
-struct ToLower {
- char16 operator()(char16 c) { return tolower(c); }
-};
-
-// Returns True if item1 < item2.
-bool HistoryItemCompareLess(const WebHistoryItem& item1, const WebHistoryItem& item2)
-{
- string16 target1 = item1.target();
- string16 target2 = item2.target();
- std::transform(target1.begin(), target1.end(), target1.begin(), ToLower());
- std::transform(target2.begin(), target2.end(), target2.begin(), ToLower());
- return target1 < target2;
-}
-
-string dumpHistoryItem(const WebHistoryItem& item, int indent, bool isCurrent)
-{
- string result;
-
- if (isCurrent) {
- result.append("curr->");
- result.append(indent - 6, ' '); // 6 == "curr->".length()
- } else
- result.append(indent, ' ');
-
- string url = normalizeLayoutTestURL(item.urlString().utf8());
- result.append(url);
- if (!item.target().isEmpty()) {
- result.append(" (in frame \"");
- result.append(item.target().utf8());
- result.append("\")");
- }
- result.append("\n");
-
- const WebVector<WebHistoryItem>& children = item.children();
- if (!children.isEmpty()) {
- // Must sort to eliminate arbitrary result ordering which defeats
- // reproducible testing.
- // FIXME: WebVector should probably just be a std::vector!!
- std::vector<WebHistoryItem> sortedChildren;
- for (size_t i = 0; i < children.size(); ++i)
- sortedChildren.push_back(children[i]);
- std::sort(sortedChildren.begin(), sortedChildren.end(), HistoryItemCompareLess);
- for (size_t i = 0; i < sortedChildren.size(); ++i)
- result += dumpHistoryItem(sortedChildren[i], indent + 4, false);
- }
-
- return result;
-}
-
-void dumpBackForwardList(const WebVector<WebHistoryItem>& history, size_t currentEntryIndex, string& result)
-{
- result.append("\n============== Back Forward List ==============\n");
- for (size_t index = 0; index < history.size(); ++index)
- result.append(dumpHistoryItem(history[index], 8, index == currentEntryIndex));
- result.append("===============================================\n");
-}
-
-string dumpAllBackForwardLists(TestInterfaces* interfaces, WebTestDelegate* delegate)
-{
- string result;
- const vector<WebTestProxyBase*>& windowList = interfaces->windowList();
- for (unsigned i = 0; i < windowList.size(); ++i) {
- size_t currentEntryIndex = 0;
- WebVector<WebHistoryItem> history;
- delegate->captureHistoryForWindow(windowList.at(i), &history, &currentEntryIndex);
- dumpBackForwardList(history, currentEntryIndex, result);
- }
- return result;
-}
-
-}
-
-WebTestProxyBase::WebTestProxyBase()
- : m_testInterfaces(0)
- , m_delegate(0)
- , m_webWidget(0)
- , m_spellcheck(new SpellCheckClient(this))
- , m_chooserCount(0)
- , m_validationMessageClient(new MockWebValidationMessageClient())
-{
- reset();
-}
-
-WebTestProxyBase::~WebTestProxyBase()
-{
- m_testInterfaces->windowClosed(this);
-}
-
-void WebTestProxyBase::setInterfaces(WebTestInterfaces* interfaces)
-{
- m_testInterfaces = interfaces->testInterfaces();
- m_testInterfaces->windowOpened(this);
-}
-
-void WebTestProxyBase::setDelegate(WebTestDelegate* delegate)
-{
- m_delegate = delegate;
- m_spellcheck->setDelegate(delegate);
- m_validationMessageClient->setDelegate(delegate);
-#if ENABLE_INPUT_SPEECH
- if (m_speechInputController.get())
- m_speechInputController->setDelegate(delegate);
-#endif
- if (m_speechRecognizer.get())
- m_speechRecognizer->setDelegate(delegate);
-}
-
-void WebTestProxyBase::setWidget(WebWidget* widget)
-{
- m_webWidget = widget;
-}
-
-WebWidget* WebTestProxyBase::webWidget()
-{
- return m_webWidget;
-}
-
-WebView* WebTestProxyBase::webView()
-{
- BLINK_ASSERT(m_webWidget);
- // TestRunner does not support popup widgets. So m_webWidget is always a WebView.
- return static_cast<WebView*>(m_webWidget);
-}
-
-void WebTestProxyBase::didForceResize()
-{
- invalidateAll();
- discardBackingStore();
-}
-
-void WebTestProxyBase::reset()
-{
- m_paintRect = WebRect();
- m_canvas.reset();
- m_isPainting = false;
- m_animateScheduled = false;
- m_resourceIdentifierMap.clear();
- m_logConsoleOutput = true;
- if (m_geolocationClient.get())
- m_geolocationClient->resetMock();
- if (m_midiClient.get())
- m_midiClient->resetMock();
-#if ENABLE_INPUT_SPEECH
- if (m_speechInputController.get())
- m_speechInputController->clearResults();
-#endif
-}
-
-WebSpellCheckClient* WebTestProxyBase::spellCheckClient() const
-{
- return m_spellcheck.get();
-}
-
-WebValidationMessageClient* WebTestProxyBase::validationMessageClient()
-{
- return m_validationMessageClient.get();
-}
-
-WebColorChooser* WebTestProxyBase::createColorChooser(WebColorChooserClient* client, const blink::WebColor& color)
-{
- // This instance is deleted by WebCore::ColorInputType
- return new MockColorChooser(client, m_delegate, this);
-}
-
-WebColorChooser* WebTestProxyBase::createColorChooser(WebColorChooserClient* client, const blink::WebColor& color, const blink::WebVector<blink::WebColorSuggestion>& suggestions)
-{
- // This instance is deleted by WebCore::ColorInputType
- return new MockColorChooser(client, m_delegate, this);
-}
-
-bool WebTestProxyBase::runFileChooser(const blink::WebFileChooserParams&, blink::WebFileChooserCompletion*)
-{
- m_delegate->printMessage("Mock: Opening a file chooser.\n");
- // FIXME: Add ability to set file names to a file upload control.
- return false;
-}
-
-string WebTestProxyBase::captureTree(bool debugRenderTree)
-{
- WebScriptController::flushConsoleMessages();
-
- bool shouldDumpAsText = m_testInterfaces->testRunner()->shouldDumpAsText();
- bool shouldDumpAsMarkup = m_testInterfaces->testRunner()->shouldDumpAsMarkup();
- bool shouldDumpAsPrinted = m_testInterfaces->testRunner()->isPrinting();
- WebFrame* frame = webView()->mainFrame();
- string dataUtf8;
- if (shouldDumpAsText) {
- bool recursive = m_testInterfaces->testRunner()->shouldDumpChildFramesAsText();
- dataUtf8 = shouldDumpAsPrinted ? dumpFramesAsPrintedText(frame, recursive) : dumpFramesAsText(frame, recursive);
- } else if (shouldDumpAsMarkup) {
- // Append a newline for the test driver.
- dataUtf8 = frame->contentAsMarkup().utf8() + "\n";
- } else {
- bool recursive = m_testInterfaces->testRunner()->shouldDumpChildFrameScrollPositions();
- WebFrame::RenderAsTextControls renderTextBehavior = WebFrame::RenderAsTextNormal;
- if (shouldDumpAsPrinted)
- renderTextBehavior |= WebFrame::RenderAsTextPrinting;
- if (debugRenderTree)
- renderTextBehavior |= WebFrame::RenderAsTextDebug;
- dataUtf8 = frame->renderTreeAsText(renderTextBehavior).utf8();
- dataUtf8 += dumpFrameScrollPosition(frame, recursive);
- }
-
- if (m_testInterfaces->testRunner()->shouldDumpBackForwardList())
- dataUtf8 += dumpAllBackForwardLists(m_testInterfaces, m_delegate);
-
- return dataUtf8;
-}
-
-SkCanvas* WebTestProxyBase::capturePixels()
-{
- webWidget()->layout();
- if (m_testInterfaces->testRunner()->testRepaint()) {
- WebSize viewSize = webWidget()->size();
- int width = viewSize.width;
- int height = viewSize.height;
- if (m_testInterfaces->testRunner()->sweepHorizontally()) {
- for (WebRect column(0, 0, 1, height); column.x < width; column.x++)
- paintRect(column);
- } else {
- for (WebRect line(0, 0, width, 1); line.y < height; line.y++)
- paintRect(line);
- }
- } else if (m_testInterfaces->testRunner()->isPrinting())
- paintPagesWithBoundaries();
- else
- paintInvalidatedRegion();
-
- // See if we need to draw the selection bounds rect. Selection bounds
- // rect is the rect enclosing the (possibly transformed) selection.
- // The rect should be drawn after everything is laid out and painted.
- if (m_testInterfaces->testRunner()->shouldDumpSelectionRect()) {
- // If there is a selection rect - draw a red 1px border enclosing rect
- WebRect wr = webView()->mainFrame()->selectionBoundsRect();
- if (!wr.isEmpty()) {
- // Render a red rectangle bounding selection rect
- SkPaint paint;
- paint.setColor(0xFFFF0000); // Fully opaque red
- paint.setStyle(SkPaint::kStroke_Style);
- paint.setFlags(SkPaint::kAntiAlias_Flag);
- paint.setStrokeWidth(1.0f);
- SkIRect rect; // Bounding rect
- rect.set(wr.x, wr.y, wr.x + wr.width, wr.y + wr.height);
- canvas()->drawIRect(rect, paint);
- }
- }
-
- return canvas();
-}
-
-void WebTestProxyBase::setLogConsoleOutput(bool enabled)
-{
- m_logConsoleOutput = enabled;
-}
-
-void WebTestProxyBase::paintRect(const WebRect& rect)
-{
- BLINK_ASSERT(!m_isPainting);
- BLINK_ASSERT(canvas());
- m_isPainting = true;
- float deviceScaleFactor = webView()->deviceScaleFactor();
- int scaledX = static_cast<int>(static_cast<float>(rect.x) * deviceScaleFactor);
- int scaledY = static_cast<int>(static_cast<float>(rect.y) * deviceScaleFactor);
- int scaledWidth = static_cast<int>(ceil(static_cast<float>(rect.width) * deviceScaleFactor));
- int scaledHeight = static_cast<int>(ceil(static_cast<float>(rect.height) * deviceScaleFactor));
- WebRect deviceRect(scaledX, scaledY, scaledWidth, scaledHeight);
- webWidget()->paint(canvas(), deviceRect);
- m_isPainting = false;
-}
-
-void WebTestProxyBase::paintInvalidatedRegion()
-{
- webWidget()->animate(0.0);
- webWidget()->layout();
- WebSize widgetSize = webWidget()->size();
- WebRect clientRect(0, 0, widgetSize.width, widgetSize.height);
-
- // Paint the canvas if necessary. Allow painting to generate extra rects
- // for the first two calls. This is necessary because some WebCore rendering
- // objects update their layout only when painted.
- // Store the total area painted in total_paint. Then tell the gdk window
- // to update that area after we're done painting it.
- for (int i = 0; i < 3; ++i) {
- // rect = intersect(m_paintRect , clientRect)
- WebRect damageRect = m_paintRect;
- int left = max(damageRect.x, clientRect.x);
- int top = max(damageRect.y, clientRect.y);
- int right = min(damageRect.x + damageRect.width, clientRect.x + clientRect.width);
- int bottom = min(damageRect.y + damageRect.height, clientRect.y + clientRect.height);
- WebRect rect;
- if (left < right && top < bottom)
- rect = WebRect(left, top, right - left, bottom - top);
-
- m_paintRect = WebRect();
- if (rect.isEmpty())
- continue;
- paintRect(rect);
- }
- BLINK_ASSERT(m_paintRect.isEmpty());
-}
-
-void WebTestProxyBase::paintPagesWithBoundaries()
-{
- BLINK_ASSERT(!m_isPainting);
- BLINK_ASSERT(canvas());
- m_isPainting = true;
-
- WebSize pageSizeInPixels = webWidget()->size();
- WebFrame* webFrame = webView()->mainFrame();
-
- int pageCount = webFrame->printBegin(pageSizeInPixels);
- int totalHeight = pageCount * (pageSizeInPixels.height + 1) - 1;
-
- SkCanvas* testCanvas = skia::TryCreateBitmapCanvas(pageSizeInPixels.width, totalHeight, true);
- if (testCanvas) {
- discardBackingStore();
- m_canvas.reset(testCanvas);
- } else {
- webFrame->printEnd();
- return;
- }
-
- webFrame->printPagesWithBoundaries(canvas(), pageSizeInPixels);
- webFrame->printEnd();
-
- m_isPainting = false;
-}
-
-SkCanvas* WebTestProxyBase::canvas()
-{
- if (m_canvas.get())
- return m_canvas.get();
- WebSize widgetSize = webWidget()->size();
- float deviceScaleFactor = webView()->deviceScaleFactor();
- int scaledWidth = static_cast<int>(ceil(static_cast<float>(widgetSize.width) * deviceScaleFactor));
- int scaledHeight = static_cast<int>(ceil(static_cast<float>(widgetSize.height) * deviceScaleFactor));
- m_canvas.reset(skia::CreateBitmapCanvas(scaledWidth, scaledHeight, true));
- return m_canvas.get();
-}
-
-// Paints the entire canvas a semi-transparent black (grayish). This is used
-// by the layout tests in fast/repaint. The alpha value matches upstream.
-void WebTestProxyBase::displayRepaintMask()
-{
- canvas()->drawARGB(167, 0, 0, 0);
-}
-
-void WebTestProxyBase::display()
-{
- const blink::WebSize& size = webWidget()->size();
- WebRect rect(0, 0, size.width, size.height);
- m_paintRect = rect;
- paintInvalidatedRegion();
- displayRepaintMask();
-}
-
-void WebTestProxyBase::displayInvalidatedRegion()
-{
- paintInvalidatedRegion();
- displayRepaintMask();
-}
-
-void WebTestProxyBase::discardBackingStore()
-{
- m_canvas.reset();
-}
-
-WebGeolocationClientMock* WebTestProxyBase::geolocationClientMock()
-{
- if (!m_geolocationClient.get())
- m_geolocationClient.reset(WebGeolocationClientMock::create());
- return m_geolocationClient.get();
-}
-
-WebMIDIClientMock* WebTestProxyBase::midiClientMock()
-{
- if (!m_midiClient.get())
- m_midiClient.reset(new WebMIDIClientMock);
- return m_midiClient.get();
-}
-
-#if ENABLE_INPUT_SPEECH
-MockWebSpeechInputController* WebTestProxyBase::speechInputControllerMock()
-{
- BLINK_ASSERT(m_speechInputController.get());
- return m_speechInputController.get();
-}
-#endif
-
-MockWebSpeechRecognizer* WebTestProxyBase::speechRecognizerMock()
-{
- if (!m_speechRecognizer.get()) {
- m_speechRecognizer.reset(new MockWebSpeechRecognizer());
- m_speechRecognizer->setDelegate(m_delegate);
- }
- return m_speechRecognizer.get();
-}
-
-void WebTestProxyBase::didInvalidateRect(const WebRect& rect)
-{
- // m_paintRect = m_paintRect U rect
- if (rect.isEmpty())
- return;
- if (m_paintRect.isEmpty()) {
- m_paintRect = rect;
- return;
- }
- int left = min(m_paintRect.x, rect.x);
- int top = min(m_paintRect.y, rect.y);
- int right = max(m_paintRect.x + m_paintRect.width, rect.x + rect.width);
- int bottom = max(m_paintRect.y + m_paintRect.height, rect.y + rect.height);
- m_paintRect = WebRect(left, top, right - left, bottom - top);
-}
-
-void WebTestProxyBase::didScrollRect(int, int, const WebRect& clipRect)
-{
- didInvalidateRect(clipRect);
-}
-
-void WebTestProxyBase::invalidateAll()
-{
- m_paintRect = WebRect(0, 0, INT_MAX, INT_MAX);
-}
-
-void WebTestProxyBase::scheduleComposite()
-{
- invalidateAll();
-}
-
-void WebTestProxyBase::scheduleAnimation()
-{
- if (!m_testInterfaces->testRunner()->testIsRunning())
- return;
-
- if (!m_animateScheduled) {
- m_animateScheduled = true;
- m_delegate->postDelayedTask(new HostMethodTask(this, &WebTestProxyBase::animateNow), 1);
- }
-}
-
-void WebTestProxyBase::animateNow()
-{
- if (m_animateScheduled) {
- m_animateScheduled = false;
- webWidget()->animate(0.0);
- }
-}
-
-void WebTestProxyBase::show(WebNavigationPolicy)
-{
- invalidateAll();
-}
-
-void WebTestProxyBase::setWindowRect(const WebRect& rect)
-{
- invalidateAll();
- discardBackingStore();
-}
-
-void WebTestProxyBase::didAutoResize(const WebSize&)
-{
- invalidateAll();
-}
-
-void WebTestProxyBase::postAccessibilityEvent(const blink::WebAXObject& obj, blink::WebAXEvent event)
-{
- if (event == blink::WebAXEventFocus)
- m_testInterfaces->accessibilityController()->setFocusedElement(obj);
-
- const char* eventName = 0;
- switch (event) {
- case blink::WebAXEventActiveDescendantChanged:
- eventName = "ActiveDescendantChanged";
- break;
- case blink::WebAXEventAlert:
- eventName = "Alert";
- break;
- case blink::WebAXEventAriaAttributeChanged:
- eventName = "AriaAttributeChanged";
- break;
- case blink::WebAXEventAutocorrectionOccured:
- eventName = "AutocorrectionOccured";
- break;
- case blink::WebAXEventBlur:
- eventName = "Blur";
- break;
- case blink::WebAXEventCheckedStateChanged:
- eventName = "CheckedStateChanged";
- break;
- case blink::WebAXEventChildrenChanged:
- eventName = "ChildrenChanged";
- break;
- case blink::WebAXEventFocus:
- eventName = "Focus";
- break;
- case blink::WebAXEventHide:
- eventName = "Hide";
- break;
- case blink::WebAXEventInvalidStatusChanged:
- eventName = "InvalidStatusChanged";
- break;
- case blink::WebAXEventLayoutComplete:
- eventName = "LayoutComplete";
- break;
- case blink::WebAXEventLiveRegionChanged:
- eventName = "LiveRegionChanged";
- break;
- case blink::WebAXEventLoadComplete:
- eventName = "LoadComplete";
- break;
- case blink::WebAXEventLocationChanged:
- eventName = "LocationChanged";
- break;
- case blink::WebAXEventMenuListItemSelected:
- eventName = "MenuListItemSelected";
- break;
- case blink::WebAXEventMenuListValueChanged:
- eventName = "MenuListValueChanged";
- break;
- case blink::WebAXEventRowCollapsed:
- eventName = "RowCollapsed";
- break;
- case blink::WebAXEventRowCountChanged:
- eventName = "RowCountChanged";
- break;
- case blink::WebAXEventRowExpanded:
- eventName = "RowExpanded";
- break;
- case blink::WebAXEventScrolledToAnchor:
- eventName = "ScrolledToAnchor";
- break;
- case blink::WebAXEventSelectedChildrenChanged:
- eventName = "SelectedChildrenChanged";
- break;
- case blink::WebAXEventSelectedTextChanged:
- eventName = "SelectedTextChanged";
- break;
- case blink::WebAXEventShow:
- eventName = "Show";
- break;
- case blink::WebAXEventTextChanged:
- eventName = "TextChanged";
- break;
- case blink::WebAXEventTextInserted:
- eventName = "TextInserted";
- break;
- case blink::WebAXEventTextRemoved:
- eventName = "TextRemoved";
- break;
- case blink::WebAXEventValueChanged:
- eventName = "ValueChanged";
- break;
- }
-
- m_testInterfaces->accessibilityController()->notificationReceived(obj, eventName);
-
- if (m_testInterfaces->accessibilityController()->shouldLogAccessibilityEvents()) {
- string message("AccessibilityNotification - ");
- message += eventName;
-
- blink::WebNode node = obj.node();
- if (!node.isNull() && node.isElementNode()) {
- blink::WebElement element = node.to<blink::WebElement>();
- if (element.hasAttribute("id")) {
- message += " - id:";
- message += element.getAttribute("id").utf8().data();
- }
- }
-
- m_delegate->printMessage(message + "\n");
- }
-}
-
-void WebTestProxyBase::startDragging(WebFrame*, const WebDragData& data, WebDragOperationsMask mask, const WebImage&, const WebPoint&)
-{
- // When running a test, we need to fake a drag drop operation otherwise
- // Windows waits for real mouse events to know when the drag is over.
- m_testInterfaces->eventSender()->doDragDrop(data, mask);
-}
-
-// The output from these methods in layout test mode should match that
-// expected by the layout tests. See EditingDelegate.m in DumpRenderTree.
-
-void WebTestProxyBase::didChangeSelection(bool isEmptySelection)
-{
- if (m_testInterfaces->testRunner()->shouldDumpEditingCallbacks())
- m_delegate->printMessage("EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification\n");
-}
-
-void WebTestProxyBase::didChangeContents()
-{
- if (m_testInterfaces->testRunner()->shouldDumpEditingCallbacks())
- m_delegate->printMessage("EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification\n");
-}
-
-bool WebTestProxyBase::createView(WebFrame*, const WebURLRequest& request, const WebWindowFeatures&, const WebString&, WebNavigationPolicy, bool)
-{
- if (!m_testInterfaces->testRunner()->canOpenWindows())
- return false;
- if (m_testInterfaces->testRunner()->shouldDumpCreateView())
- m_delegate->printMessage(string("createView(") + URLDescription(request.url()) + ")\n");
- return true;
-}
-
-WebPlugin* WebTestProxyBase::createPlugin(WebFrame* frame, const WebPluginParams& params)
-{
- if (params.mimeType == TestPlugin::mimeType())
- return TestPlugin::create(frame, params, m_delegate);
- return 0;
-}
-
-void WebTestProxyBase::setStatusText(const WebString& text)
-{
- if (!m_testInterfaces->testRunner()->shouldDumpStatusCallbacks())
- return;
- m_delegate->printMessage(string("UI DELEGATE STATUS CALLBACK: setStatusText:") + text.utf8().data() + "\n");
-}
-
-void WebTestProxyBase::didStopLoading()
-{
- if (m_testInterfaces->testRunner()->shouldDumpProgressFinishedCallback())
- m_delegate->printMessage("postProgressFinishedNotification\n");
-}
-
-void WebTestProxyBase::showContextMenu(WebFrame*, const WebContextMenuData& contextMenuData)
-{
- m_testInterfaces->eventSender()->setContextMenuData(contextMenuData);
-}
-
-WebUserMediaClient* WebTestProxyBase::userMediaClient()
-{
- if (!m_userMediaClient.get())
- m_userMediaClient.reset(new WebUserMediaClientMock(m_delegate));
- return m_userMediaClient.get();
-}
-
-// Simulate a print by going into print mode and then exit straight away.
-void WebTestProxyBase::printPage(WebFrame* frame)
-{
- WebSize pageSizeInPixels = webWidget()->size();
- if (pageSizeInPixels.isEmpty())
- return;
- WebPrintParams printParams(pageSizeInPixels);
- frame->printBegin(printParams);
- frame->printEnd();
-}
-
-WebNotificationPresenter* WebTestProxyBase::notificationPresenter()
-{
- return m_testInterfaces->testRunner()->notificationPresenter();
-}
-
-WebGeolocationClient* WebTestProxyBase::geolocationClient()
-{
- return geolocationClientMock();
-}
-
-WebMIDIClient* WebTestProxyBase::webMIDIClient()
-{
- return midiClientMock();
-}
-
-WebSpeechInputController* WebTestProxyBase::speechInputController(WebSpeechInputListener* listener)
-{
-#if ENABLE_INPUT_SPEECH
- if (!m_speechInputController.get()) {
- m_speechInputController.reset(new MockWebSpeechInputController(listener));
- m_speechInputController->setDelegate(m_delegate);
- }
- return m_speechInputController.get();
-#else
- BLINK_ASSERT(listener);
- return 0;
-#endif
-}
-
-WebSpeechRecognizer* WebTestProxyBase::speechRecognizer()
-{
- return speechRecognizerMock();
-}
-
-bool WebTestProxyBase::requestPointerLock()
-{
- return m_testInterfaces->testRunner()->requestPointerLock();
-}
-
-void WebTestProxyBase::requestPointerUnlock()
-{
- m_testInterfaces->testRunner()->requestPointerUnlock();
-}
-
-bool WebTestProxyBase::isPointerLocked()
-{
- return m_testInterfaces->testRunner()->isPointerLocked();
-}
-
-void WebTestProxyBase::didFocus()
-{
- m_delegate->setFocus(this, true);
-}
-
-void WebTestProxyBase::didBlur()
-{
- m_delegate->setFocus(this, false);
-}
-
-void WebTestProxyBase::setToolTipText(const WebString& text, WebTextDirection)
-{
- m_testInterfaces->testRunner()->setToolTipText(text);
-}
-
-void WebTestProxyBase::didOpenChooser()
-{
- m_chooserCount++;
-}
-
-void WebTestProxyBase::didCloseChooser()
-{
- m_chooserCount--;
-}
-
-bool WebTestProxyBase::isChooserShown()
-{
- return 0 < m_chooserCount;
-}
-
-void WebTestProxyBase::didStartProvisionalLoad(WebFrame* frame)
-{
- if (!m_testInterfaces->testRunner()->topLoadingFrame())
- m_testInterfaces->testRunner()->setTopLoadingFrame(frame, false);
-
- if (m_testInterfaces->testRunner()->shouldDumpFrameLoadCallbacks()) {
- printFrameDescription(m_delegate, frame);
- m_delegate->printMessage(" - didStartProvisionalLoadForFrame\n");
- }
-
- if (m_testInterfaces->testRunner()->shouldDumpUserGestureInFrameLoadCallbacks())
- printFrameUserGestureStatus(m_delegate, frame, " - in didStartProvisionalLoadForFrame\n");
-}
-
-void WebTestProxyBase::didReceiveServerRedirectForProvisionalLoad(WebFrame* frame)
-{
- if (m_testInterfaces->testRunner()->shouldDumpFrameLoadCallbacks()) {
- printFrameDescription(m_delegate, frame);
- m_delegate->printMessage(" - didReceiveServerRedirectForProvisionalLoadForFrame\n");
- }
-}
-
-bool WebTestProxyBase::didFailProvisionalLoad(WebFrame* frame, const WebURLError&)
-{
- if (m_testInterfaces->testRunner()->shouldDumpFrameLoadCallbacks()) {
- printFrameDescription(m_delegate, frame);
- m_delegate->printMessage(" - didFailProvisionalLoadWithError\n");
- }
- locationChangeDone(frame);
- return !frame->provisionalDataSource();
-}
-
-void WebTestProxyBase::didCommitProvisionalLoad(WebFrame* frame, bool)
-{
- if (m_testInterfaces->testRunner()->shouldDumpFrameLoadCallbacks()) {
- printFrameDescription(m_delegate, frame);
- m_delegate->printMessage(" - didCommitLoadForFrame\n");
- }
-}
-
-void WebTestProxyBase::didReceiveTitle(WebFrame* frame, const WebString& title, WebTextDirection direction)
-{
- WebCString title8 = title.utf8();
-
- if (m_testInterfaces->testRunner()->shouldDumpFrameLoadCallbacks()) {
- printFrameDescription(m_delegate, frame);
- m_delegate->printMessage(string(" - didReceiveTitle: ") + title8.data() + "\n");
- }
-
- if (m_testInterfaces->testRunner()->shouldDumpTitleChanges())
- m_delegate->printMessage(string("TITLE CHANGED: '") + title8.data() + "'\n");
-}
-
-void WebTestProxyBase::didChangeIcon(WebFrame* frame, WebIconURL::Type)
-{
- if (m_testInterfaces->testRunner()->shouldDumpIconChanges()) {
- printFrameDescription(m_delegate, frame);
- m_delegate->printMessage(string(" - didChangeIcons\n"));
- }
-}
-
-void WebTestProxyBase::didFinishDocumentLoad(WebFrame* frame)
-{
- if (m_testInterfaces->testRunner()->shouldDumpFrameLoadCallbacks()) {
- printFrameDescription(m_delegate, frame);
- m_delegate->printMessage(" - didFinishDocumentLoadForFrame\n");
- } else {
- unsigned pendingUnloadEvents = frame->unloadListenerCount();
- if (pendingUnloadEvents) {
- printFrameDescription(m_delegate, frame);
- char buffer[100];
- snprintf(buffer, sizeof(buffer), " - has %u onunload handler(s)\n", pendingUnloadEvents);
- m_delegate->printMessage(buffer);
- }
- }
-}
-
-void WebTestProxyBase::didHandleOnloadEvents(WebFrame* frame)
-{
- if (m_testInterfaces->testRunner()->shouldDumpFrameLoadCallbacks()) {
- printFrameDescription(m_delegate, frame);
- m_delegate->printMessage(" - didHandleOnloadEventsForFrame\n");
- }
-}
-
-void WebTestProxyBase::didFailLoad(WebFrame* frame, const WebURLError&)
-{
- if (m_testInterfaces->testRunner()->shouldDumpFrameLoadCallbacks()) {
- printFrameDescription(m_delegate, frame);
- m_delegate->printMessage(" - didFailLoadWithError\n");
- }
- locationChangeDone(frame);
-}
-
-void WebTestProxyBase::didFinishLoad(WebFrame* frame)
-{
- if (m_testInterfaces->testRunner()->shouldDumpFrameLoadCallbacks()) {
- printFrameDescription(m_delegate, frame);
- m_delegate->printMessage(" - didFinishLoadForFrame\n");
- }
- locationChangeDone(frame);
-}
-
-void WebTestProxyBase::didDetectXSS(WebFrame*, const WebURL&, bool)
-{
- if (m_testInterfaces->testRunner()->shouldDumpFrameLoadCallbacks())
- m_delegate->printMessage("didDetectXSS\n");
-}
-
-void WebTestProxyBase::didDispatchPingLoader(WebFrame*, const WebURL& url)
-{
- if (m_testInterfaces->testRunner()->shouldDumpPingLoaderCallbacks())
- m_delegate->printMessage(string("PingLoader dispatched to '") + URLDescription(url).c_str() + "'.\n");
-}
-
-void WebTestProxyBase::willRequestResource(WebFrame* frame, const blink::WebCachedURLRequest& request)
-{
- if (m_testInterfaces->testRunner()->shouldDumpResourceRequestCallbacks()) {
- printFrameDescription(m_delegate, frame);
- m_delegate->printMessage(string(" - ") + request.initiatorName().utf8().data());
- m_delegate->printMessage(string(" requested '") + URLDescription(request.urlRequest().url()).c_str() + "'\n");
- }
-}
-
-void WebTestProxyBase::didCreateDataSource(WebFrame*, WebDataSource* ds)
-{
- if (!m_testInterfaces->testRunner()->deferMainResourceDataLoad())
- ds->setDeferMainResourceDataLoad(false);
-}
-
-void WebTestProxyBase::willSendRequest(WebFrame*, unsigned identifier, blink::WebURLRequest& request, const blink::WebURLResponse& redirectResponse)
-{
- // Need to use GURL for host() and SchemeIs()
- GURL url = request.url();
- string requestURL = url.possibly_invalid_spec();
-
- GURL mainDocumentURL = request.firstPartyForCookies();
-
- if (redirectResponse.isNull() && (m_testInterfaces->testRunner()->shouldDumpResourceLoadCallbacks() || m_testInterfaces->testRunner()->shouldDumpResourcePriorities())) {
- BLINK_ASSERT(m_resourceIdentifierMap.find(identifier) == m_resourceIdentifierMap.end());
- m_resourceIdentifierMap[identifier] = descriptionSuitableForTestResult(requestURL);
- }
-
- if (m_testInterfaces->testRunner()->shouldDumpResourceLoadCallbacks()) {
- if (m_resourceIdentifierMap.find(identifier) == m_resourceIdentifierMap.end())
- m_delegate->printMessage("<unknown>");
- else
- m_delegate->printMessage(m_resourceIdentifierMap[identifier]);
- m_delegate->printMessage(" - willSendRequest <NSURLRequest URL ");
- m_delegate->printMessage(descriptionSuitableForTestResult(requestURL).c_str());
- m_delegate->printMessage(", main document URL ");
- m_delegate->printMessage(URLDescription(mainDocumentURL).c_str());
- m_delegate->printMessage(", http method ");
- m_delegate->printMessage(request.httpMethod().utf8().data());
- m_delegate->printMessage("> redirectResponse ");
- printResponseDescription(m_delegate, redirectResponse);
- m_delegate->printMessage("\n");
- }
-
- if (m_testInterfaces->testRunner()->shouldDumpResourcePriorities()) {
- m_delegate->printMessage(descriptionSuitableForTestResult(requestURL).c_str());
- m_delegate->printMessage(" has priority ");
- m_delegate->printMessage(PriorityDescription(request.priority()));
- m_delegate->printMessage("\n");
- }
-
- if (m_testInterfaces->testRunner()->httpHeadersToClear()) {
- const set<string> *clearHeaders = m_testInterfaces->testRunner()->httpHeadersToClear();
- for (set<string>::const_iterator header = clearHeaders->begin(); header != clearHeaders->end(); ++header)
- request.clearHTTPHeaderField(WebString::fromUTF8(*header));
- }
-
- string host = url.host();
- if (!host.empty() && (url.SchemeIs("http") || url.SchemeIs("https"))) {
- if (!isLocalhost(host) && !hostIsUsedBySomeTestsToGenerateError(host)
- && ((!mainDocumentURL.SchemeIs("http") && !mainDocumentURL.SchemeIs("https")) || isLocalhost(mainDocumentURL.host()))
- && !m_delegate->allowExternalPages()) {
- m_delegate->printMessage(string("Blocked access to external URL ") + requestURL + "\n");
- blockRequest(request);
- return;
- }
- }
-
- // Set the new substituted URL.
- request.setURL(m_delegate->rewriteLayoutTestsURL(request.url().spec()));
-}
-
-void WebTestProxyBase::didReceiveResponse(WebFrame*, unsigned identifier, const blink::WebURLResponse& response)
-{
- if (m_testInterfaces->testRunner()->shouldDumpResourceLoadCallbacks()) {
- if (m_resourceIdentifierMap.find(identifier) == m_resourceIdentifierMap.end())
- m_delegate->printMessage("<unknown>");
- else
- m_delegate->printMessage(m_resourceIdentifierMap[identifier]);
- m_delegate->printMessage(" - didReceiveResponse ");
- printResponseDescription(m_delegate, response);
- m_delegate->printMessage("\n");
- }
- if (m_testInterfaces->testRunner()->shouldDumpResourceResponseMIMETypes()) {
- GURL url = response.url();
- WebString mimeType = response.mimeType();
- m_delegate->printMessage(url.ExtractFileName());
- m_delegate->printMessage(" has MIME type ");
- // Simulate NSURLResponse's mapping of empty/unknown MIME types to application/octet-stream
- m_delegate->printMessage(mimeType.isEmpty() ? "application/octet-stream" : mimeType.utf8().data());
- m_delegate->printMessage("\n");
- }
-}
-
-void WebTestProxyBase::didChangeResourcePriority(WebFrame*, unsigned identifier, const blink::WebURLRequest::Priority& priority)
-{
- if (m_testInterfaces->testRunner()->shouldDumpResourcePriorities()) {
- if (m_resourceIdentifierMap.find(identifier) == m_resourceIdentifierMap.end())
- m_delegate->printMessage("<unknown>");
- else
- m_delegate->printMessage(m_resourceIdentifierMap[identifier]);
- m_delegate->printMessage(" changed priority to ");
- m_delegate->printMessage(PriorityDescription(priority));
- m_delegate->printMessage("\n");
- }
-}
-
-void WebTestProxyBase::didFinishResourceLoad(WebFrame*, unsigned identifier)
-{
- if (m_testInterfaces->testRunner()->shouldDumpResourceLoadCallbacks()) {
- if (m_resourceIdentifierMap.find(identifier) == m_resourceIdentifierMap.end())
- m_delegate->printMessage("<unknown>");
- else
- m_delegate->printMessage(m_resourceIdentifierMap[identifier]);
- m_delegate->printMessage(" - didFinishLoading\n");
- }
- m_resourceIdentifierMap.erase(identifier);
-}
-
-void WebTestProxyBase::didAddMessageToConsole(const WebConsoleMessage& message, const WebString& sourceName, unsigned sourceLine)
-{
- // This matches win DumpRenderTree's UIDelegate.cpp.
- if (!m_logConsoleOutput)
- return;
- string level;
- switch (message.level) {
- case WebConsoleMessage::LevelDebug:
- level = "DEBUG";
- break;
- case WebConsoleMessage::LevelLog:
- level = "MESSAGE";
- break;
- case WebConsoleMessage::LevelInfo:
- level = "INFO";
- break;
- case WebConsoleMessage::LevelWarning:
- level = "WARNING";
- break;
- case WebConsoleMessage::LevelError:
- level = "ERROR";
- break;
- }
- m_delegate->printMessage(string("CONSOLE ") + level + ": ");
- if (sourceLine) {
- char buffer[40];
- snprintf(buffer, sizeof(buffer), "line %d: ", sourceLine);
- m_delegate->printMessage(buffer);
- }
- if (!message.text.isEmpty()) {
- string newMessage;
- newMessage = message.text.utf8();
- size_t fileProtocol = newMessage.find("file://");
- if (fileProtocol != string::npos) {
- newMessage = newMessage.substr(0, fileProtocol)
- + urlSuitableForTestResult(newMessage.substr(fileProtocol));
- }
- m_delegate->printMessage(newMessage);
- }
- m_delegate->printMessage(string("\n"));
-}
-
-void WebTestProxyBase::runModalAlertDialog(WebFrame*, const WebString& message)
-{
- m_delegate->printMessage(string("ALERT: ") + message.utf8().data() + "\n");
-}
-
-bool WebTestProxyBase::runModalConfirmDialog(WebFrame*, const WebString& message)
-{
- m_delegate->printMessage(string("CONFIRM: ") + message.utf8().data() + "\n");
- return true;
-}
-
-bool WebTestProxyBase::runModalPromptDialog(WebFrame* frame, const WebString& message, const WebString& defaultValue, WebString*)
-{
- m_delegate->printMessage(string("PROMPT: ") + message.utf8().data() + ", default text: " + defaultValue.utf8().data() + "\n");
- return true;
-}
-
-bool WebTestProxyBase::runModalBeforeUnloadDialog(WebFrame*, const WebString& message)
-{
- m_delegate->printMessage(string("CONFIRM NAVIGATION: ") + message.utf8().data() + "\n");
- return !m_testInterfaces->testRunner()->shouldStayOnPageAfterHandlingBeforeUnload();
-}
-
-void WebTestProxyBase::locationChangeDone(WebFrame* frame)
-{
- if (frame != m_testInterfaces->testRunner()->topLoadingFrame())
- return;
- m_testInterfaces->testRunner()->setTopLoadingFrame(frame, true);
-}
-
-WebNavigationPolicy WebTestProxyBase::decidePolicyForNavigation(WebFrame*, WebDataSource::ExtraData*, const WebURLRequest& request, WebNavigationType type, WebNavigationPolicy defaultPolicy, bool isRedirect)
-{
- WebNavigationPolicy result;
- if (!m_testInterfaces->testRunner()->policyDelegateEnabled())
- return defaultPolicy;
-
- m_delegate->printMessage(string("Policy delegate: attempt to load ") + URLDescription(request.url()) + " with navigation type '" + webNavigationTypeToString(type) + "'\n");
- if (m_testInterfaces->testRunner()->policyDelegateIsPermissive())
- result = blink::WebNavigationPolicyCurrentTab;
- else
- result = blink::WebNavigationPolicyIgnore;
-
- if (m_testInterfaces->testRunner()->policyDelegateShouldNotifyDone())
- m_testInterfaces->testRunner()->policyDelegateDone();
- return result;
-}
-
-bool WebTestProxyBase::willCheckAndDispatchMessageEvent(WebFrame*, WebFrame*, WebSecurityOrigin, WebDOMMessageEvent)
-{
- if (m_testInterfaces->testRunner()->shouldInterceptPostMessage()) {
- m_delegate->printMessage("intercepted postMessage\n");
- return true;
- }
-
- return false;
-}
-
-void WebTestProxyBase::postSpellCheckEvent(const WebString& eventName)
-{
- if (m_testInterfaces->testRunner()->shouldDumpSpellCheckCallbacks()) {
- m_delegate->printMessage(string("SpellCheckEvent: ") + eventName.utf8().data() + "\n");
- }
-}
-
-void WebTestProxyBase::resetInputMethod()
-{
- // If a composition text exists, then we need to let the browser process
- // to cancel the input method's ongoing composition session.
- if (m_webWidget)
- m_webWidget->confirmComposition();
-}
-
-}