Chromium Code Reviews| Index: Source/web/tests/FrameTestHelpers.cpp |
| diff --git a/Source/web/tests/FrameTestHelpers.cpp b/Source/web/tests/FrameTestHelpers.cpp |
| index 97fa4a87cdc1b5d7691fa659048d8edb43169ea3..0aebe3d6cbca8d1b4b51542674c1e38a6fbdac53 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,69 +48,104 @@ |
| namespace WebKit { |
| namespace FrameTestHelpers { |
| -void loadFrame(WebFrame* frame, const std::string& url) |
| -{ |
| - WebURLRequest urlRequest; |
| - urlRequest.initialize(); |
| - urlRequest.setURL(URLTestHelpers::toKURL(url)); |
| - frame->loadRequest(urlRequest); |
| -} |
| +namespace { |
| + |
| +class QuitTask : public WebThread::Task { |
| +public: |
| + virtual void run() |
| + { |
| + Platform::current()->currentThread()->exitRunLoop(); |
| + } |
| +}; |
| class TestWebFrameClient : public WebFrameClient { |
|
dcheng
2013/09/20 02:29:59
Any reason we can't just use WebFrameClient and We
awong
2013/09/20 23:57:14
Good point. Was just cut and paste, but it does se
|
| }; |
| -static WebFrameClient* defaultWebFrameClient() |
| +WebFrameClient* defaultWebFrameClient() |
| { |
| DEFINE_STATIC_LOCAL(TestWebFrameClient, client, ()); |
| return &client; |
| } |
| -class TestWebViewClient : public WebViewClient { |
| +class WebViewHelperClient : public WebViewClient { |
| }; |
| -static WebViewClient* defaultWebViewClient() |
| +WebViewClient* defaultWebViewClient() |
| { |
| - DEFINE_STATIC_LOCAL(TestWebViewClient, client, ()); |
| + DEFINE_STATIC_LOCAL(WebViewHelperClient, client, ()); |
| return &client; |
| } |
| -WebView* createWebView(bool enableJavascript, WebFrameClient* webFrameClient, WebViewClient* webViewClient) |
| +} // namespace |
| + |
| +void loadFrame(WebFrame* frame, const std::string& url) |
| +{ |
| + WebURLRequest urlRequest; |
| + urlRequest.initialize(); |
| + urlRequest.setURL(URLTestHelpers::toKURL(url)); |
| + frame->loadRequest(urlRequest); |
| +} |
| + |
| +void runPendingTasks() |
| +{ |
| + Platform::current()->currentThread()->postTask(new QuitTask); |
| + Platform::current()->currentThread()->enterRunLoop(); |
| +} |
| + |
| +WebViewHelper::WebViewHelper() |
| + : m_mainFrame(0) |
| + , m_webView(0) |
| +{ |
| +} |
| + |
| +WebViewHelper::~WebViewHelper() |
| { |
| + reset(); |
| +} |
| + |
| +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 |