diff options
Diffstat (limited to 'Source/web/tests/FrameTestHelpers.cpp')
-rw-r--r-- | Source/web/tests/FrameTestHelpers.cpp | 99 |
1 files changed, 64 insertions, 35 deletions
diff --git a/Source/web/tests/FrameTestHelpers.cpp b/Source/web/tests/FrameTestHelpers.cpp index 97fa4a87c..90872adfb 100644 --- a/Source/web/tests/FrameTestHelpers.cpp +++ b/Source/web/tests/FrameTestHelpers.cpp @@ -33,11 +33,11 @@ #include "URLTestHelpers.h" #include "wtf/StdLibExtras.h" -#include "WebFrame.h" #include "WebFrameClient.h" +#include "WebFrameImpl.h" #include "WebSettings.h" -#include "WebView.h" #include "WebViewClient.h" +#include "WebViewImpl.h" #include "public/platform/Platform.h" #include "public/platform/WebString.h" #include "public/platform/WebThread.h" @@ -48,6 +48,30 @@ namespace WebKit { namespace FrameTestHelpers { +namespace { + +class QuitTask : public WebThread::Task { +public: + virtual void run() + { + Platform::current()->currentThread()->exitRunLoop(); + } +}; + +WebFrameClient* defaultWebFrameClient() +{ + DEFINE_STATIC_LOCAL(WebFrameClient, client, ()); + return &client; +} + +WebViewClient* defaultWebViewClient() +{ + DEFINE_STATIC_LOCAL(WebViewClient, client, ()); + return &client; +} + +} // namespace + void loadFrame(WebFrame* frame, const std::string& url) { WebURLRequest urlRequest; @@ -56,61 +80,66 @@ void loadFrame(WebFrame* frame, const std::string& url) frame->loadRequest(urlRequest); } -class TestWebFrameClient : public WebFrameClient { -}; - -static WebFrameClient* defaultWebFrameClient() +void runPendingTasks() { - DEFINE_STATIC_LOCAL(TestWebFrameClient, client, ()); - return &client; + Platform::current()->currentThread()->postTask(new QuitTask); + Platform::current()->currentThread()->enterRunLoop(); } -class TestWebViewClient : public WebViewClient { -}; +WebViewHelper::WebViewHelper() + : m_mainFrame(0) + , m_webView(0) +{ +} -static WebViewClient* defaultWebViewClient() +WebViewHelper::~WebViewHelper() { - DEFINE_STATIC_LOCAL(TestWebViewClient, client, ()); - return &client; + reset(); } -WebView* createWebView(bool enableJavascript, WebFrameClient* webFrameClient, WebViewClient* webViewClient) +WebViewImpl* WebViewHelper::initialize(bool enableJavascript, WebFrameClient* webFrameClient, WebViewClient* webViewClient, void (*updateSettingsFunc)(WebSettings*)) { + reset(); + if (!webFrameClient) webFrameClient = defaultWebFrameClient(); if (!webViewClient) webViewClient = defaultWebViewClient(); - WebView* webView = WebView::create(webViewClient); - webView->settings()->setJavaScriptEnabled(enableJavascript); - webView->settings()->setDeviceSupportsMouse(false); - webView->settings()->setForceCompositingMode(true); - webView->initializeMainFrame(webFrameClient); + m_webView = WebViewImpl::create(webViewClient); + m_webView->settings()->setJavaScriptEnabled(enableJavascript); + if (updateSettingsFunc) { + updateSettingsFunc(m_webView->settings()); + } else { + m_webView->settings()->setDeviceSupportsMouse(false); + m_webView->settings()->setForceCompositingMode(true); + } + + m_mainFrame = WebFrameImpl::create(webFrameClient); + m_webView->setMainFrame(m_mainFrame); - return webView; + return m_webView; } -WebView* createWebViewAndLoad(const std::string& url, bool enableJavascript, WebFrameClient* webFrameClient, WebViewClient* webViewClient) +WebViewImpl* WebViewHelper::initializeAndLoad(const std::string& url, bool enableJavascript, WebFrameClient* webFrameClient, WebViewClient* webViewClient, void (*updateSettingsFunc)(WebSettings*)) { - WebView* webView = createWebView(enableJavascript, webFrameClient, webViewClient); + initialize(enableJavascript, webFrameClient, webViewClient, updateSettingsFunc); - loadFrame(webView->mainFrame(), url); + loadFrame(webView()->mainFrame(), url); Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); - return webView; + return webViewImpl(); } -class QuitTask : public WebThread::Task { -public: - virtual void run() - { - Platform::current()->currentThread()->exitRunLoop(); - } -}; - -void runPendingTasks() +void WebViewHelper::reset() { - Platform::current()->currentThread()->postTask(new QuitTask); - Platform::current()->currentThread()->enterRunLoop(); + if (m_webView) { + m_webView->close(); + m_webView = 0; + } + if (m_mainFrame) { + m_mainFrame->close(); + m_mainFrame = 0; + } } } // namespace FrameTestHelpers |