Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2303)

Unified Diff: Source/web/tests/FrameTestHelpers.cpp

Issue 23506013: Make the embedder responsible for creating the WebFrame (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add WebViewHelper for unittests. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/web/tests/FrameTestHelpers.cpp
diff --git a/Source/web/tests/FrameTestHelpers.cpp b/Source/web/tests/FrameTestHelpers.cpp
index 97fa4a87cdc1b5d7691fa659048d8edb43169ea3..4923c2090b3d3a44e9d2a63660d4c3e152a60be5 100644
--- a/Source/web/tests/FrameTestHelpers.cpp
+++ b/Source/web/tests/FrameTestHelpers.cpp
@@ -48,69 +48,98 @@
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 {
};
-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();
+}
+
+WebView* WebViewHelper::initialize(bool enableJavascript, WebFrameClient* webFrameClient, WebViewClient* webViewClient)
+{
+ ASSERT(!m_webView);
+ ASSERT(!m_mainFrame);
+
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);
-
- return webView;
+ m_mainFrame = WebFrame::create(webFrameClient);
darin (slow to review) 2013/09/13 04:02:47 nit: allocate m_mainFrame closer to where it is fi
awong 2013/09/18 22:04:47 Done.
+ m_webView = WebView::create(webViewClient);
+ m_webView->settings()->setJavaScriptEnabled(enableJavascript);
+ m_webView->settings()->setDeviceSupportsMouse(false);
+ m_webView->settings()->setForceCompositingMode(true);
+ m_webView->initializeMainFrame(m_mainFrame);
+
+ return m_webView;
}
-WebView* createWebViewAndLoad(const std::string& url, bool enableJavascript, WebFrameClient* webFrameClient, WebViewClient* webViewClient)
+WebView* WebViewHelper::initializeAndLoad(const std::string& url, bool enableJavascript, WebFrameClient* webFrameClient, WebViewClient* webViewClient)
{
- WebView* webView = createWebView(enableJavascript, webFrameClient, webViewClient);
+ ASSERT(!m_webView);
+ ASSERT(!m_mainFrame);
+
+ initialize(enableJavascript, webFrameClient, webViewClient);
- loadFrame(webView->mainFrame(), url);
+ loadFrame(webView()->mainFrame(), url);
Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
- return webView;
+ return webView();
}
-class QuitTask : public WebThread::Task {
-public:
- virtual void run()
- {
- Platform::current()->currentThread()->exitRunLoop();
- }
-};
-
-void runPendingTasks()
-{
- Platform::current()->currentThread()->postTask(new QuitTask);
- Platform::current()->currentThread()->enterRunLoop();
+void WebViewHelper::reset() {
+ if (m_webView)
+ m_webView->close();
+ if (m_mainFrame)
+ m_mainFrame->close();
}
} // namespace FrameTestHelpers

Powered by Google App Engine
This is Rietveld 408576698