mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-02-13 10:42:58 +01:00
Minor improvements to unit test framework.
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@92 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
parent
06ceab7447
commit
9ab2eca392
@ -273,7 +273,7 @@ public:
|
|||||||
CefRefPtr<CefFrame> frame)
|
CefRefPtr<CefFrame> frame)
|
||||||
{
|
{
|
||||||
if(!browser->IsPopup() && !frame.get())
|
if(!browser->IsPopup() && !frame.get())
|
||||||
NotifyTestComplete();
|
DestroyTest();
|
||||||
return RV_CONTINUE;
|
return RV_CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -286,7 +286,8 @@ TEST(RequestTest, SendRecv)
|
|||||||
g_RequestSendRecvTestHandlerHandleBeforeBrowseCalled = false;
|
g_RequestSendRecvTestHandlerHandleBeforeBrowseCalled = false;
|
||||||
g_RequestSendRecvTestHandlerHandleBeforeResourceLoadCalled = false;
|
g_RequestSendRecvTestHandlerHandleBeforeResourceLoadCalled = false;
|
||||||
|
|
||||||
RequestSendRecvTestHandler* handler = new RequestSendRecvTestHandler();
|
CefRefPtr<RequestSendRecvTestHandler> handler =
|
||||||
|
new RequestSendRecvTestHandler();
|
||||||
handler->ExecuteTest();
|
handler->ExecuteTest();
|
||||||
|
|
||||||
ASSERT_TRUE(g_RequestSendRecvTestHandlerHandleBeforeBrowseCalled);
|
ASSERT_TRUE(g_RequestSendRecvTestHandlerHandleBeforeBrowseCalled);
|
||||||
@ -393,7 +394,7 @@ public:
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Resource re-load, end the test
|
// Resource re-load, end the test
|
||||||
NotifyTestComplete();
|
DestroyTest();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -416,7 +417,8 @@ TEST(RequestTest, HistoryNav)
|
|||||||
g_RequestHistoryNavTestDidLoadRequest = false;
|
g_RequestHistoryNavTestDidLoadRequest = false;
|
||||||
g_RequestHistoryNavTestDidReloadRequest = false;
|
g_RequestHistoryNavTestDidReloadRequest = false;
|
||||||
|
|
||||||
RequestHistoryNavTestHandler* handler = new RequestHistoryNavTestHandler();
|
CefRefPtr<RequestHistoryNavTestHandler> handler =
|
||||||
|
new RequestHistoryNavTestHandler();
|
||||||
handler->ExecuteTest();
|
handler->ExecuteTest();
|
||||||
|
|
||||||
ASSERT_TRUE(g_RequestHistoryNavTestDidLoadRequest);
|
ASSERT_TRUE(g_RequestHistoryNavTestDidLoadRequest);
|
||||||
|
@ -6,13 +6,14 @@
|
|||||||
#define _TEST_HANDLER_H
|
#define _TEST_HANDLER_H
|
||||||
|
|
||||||
#include "include/cef.h"
|
#include "include/cef.h"
|
||||||
|
#include "base/waitable_event.h"
|
||||||
#include "testing/gtest/include/gtest/gtest.h"
|
#include "testing/gtest/include/gtest/gtest.h"
|
||||||
|
|
||||||
// Base implementation of CefHandler for unit tests.
|
// Base implementation of CefHandler for unit tests.
|
||||||
class TestHandler : public CefThreadSafeBase<CefHandler>
|
class TestHandler : public CefThreadSafeBase<CefHandler>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
TestHandler() : browser_hwnd_(NULL), completion_event_(NULL)
|
TestHandler() : browser_hwnd_(NULL), completion_event_(true, false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,8 +178,8 @@ public:
|
|||||||
browser_ = NULL;
|
browser_ = NULL;
|
||||||
browser_hwnd_ = NULL;
|
browser_hwnd_ = NULL;
|
||||||
|
|
||||||
// Just in case it wasn't called already
|
// Signal that the test is now complete.
|
||||||
NotifyTestComplete();
|
completion_event_.Signal();
|
||||||
}
|
}
|
||||||
Unlock();
|
Unlock();
|
||||||
return RV_CONTINUE;
|
return RV_CONTINUE;
|
||||||
@ -232,47 +233,33 @@ public:
|
|||||||
// returns.
|
// returns.
|
||||||
void ExecuteTest()
|
void ExecuteTest()
|
||||||
{
|
{
|
||||||
// Add a reference
|
|
||||||
AddRef();
|
|
||||||
|
|
||||||
// Create the notification event
|
|
||||||
Lock();
|
|
||||||
completion_event_ = CreateEvent(NULL, TRUE, FALSE, NULL);
|
|
||||||
ASSERT_TRUE(completion_event_ != NULL);
|
|
||||||
Unlock();
|
|
||||||
|
|
||||||
// Run the test
|
// Run the test
|
||||||
RunTest();
|
RunTest();
|
||||||
|
|
||||||
// Wait for the test to complete
|
// Wait for the test to complete
|
||||||
WaitForSingleObject(completion_event_, INFINITE);
|
completion_event_.Wait();
|
||||||
Lock();
|
|
||||||
CloseHandle(completion_event_);
|
|
||||||
completion_event_ = NULL;
|
|
||||||
Unlock();
|
|
||||||
|
|
||||||
// Remove the reference
|
|
||||||
Release();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Called by the implementing class when the test is complete
|
// Destroy the browser window. Once the window is destroyed test completion
|
||||||
void NotifyTestComplete()
|
// will be signaled.
|
||||||
|
void DestroyTest()
|
||||||
{
|
{
|
||||||
// Notify that the test is complete
|
|
||||||
Lock();
|
Lock();
|
||||||
if(completion_event_ != NULL)
|
#if defined(OS_WIN)
|
||||||
SetEvent(completion_event_);
|
|
||||||
if(browser_hwnd_ != NULL)
|
if(browser_hwnd_ != NULL)
|
||||||
PostMessage(browser_hwnd_, WM_CLOSE, 0, 0);
|
PostMessage(browser_hwnd_, WM_CLOSE, 0, 0);
|
||||||
|
#endif
|
||||||
Unlock();
|
Unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreateBrowser(const std::wstring& url)
|
void CreateBrowser(const std::wstring& url)
|
||||||
{
|
{
|
||||||
CefWindowInfo windowInfo;
|
CefWindowInfo windowInfo;
|
||||||
|
#if defined(OS_WIN)
|
||||||
windowInfo.SetAsPopup(NULL, L"CefUnitTest");
|
windowInfo.SetAsPopup(NULL, L"CefUnitTest");
|
||||||
windowInfo.m_dwStyle |= WS_VISIBLE;
|
windowInfo.m_dwStyle |= WS_VISIBLE;
|
||||||
|
#endif
|
||||||
CefBrowser::CreateBrowser(windowInfo, false, this, url);
|
CefBrowser::CreateBrowser(windowInfo, false, this, url);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -292,10 +279,10 @@ private:
|
|||||||
CefRefPtr<CefBrowser> browser_;
|
CefRefPtr<CefBrowser> browser_;
|
||||||
|
|
||||||
// The browser window handle
|
// The browser window handle
|
||||||
HWND browser_hwnd_;
|
CefWindowHandle browser_hwnd_;
|
||||||
|
|
||||||
// Handle used to notify when the test is complete
|
// Handle used to notify when the test is complete
|
||||||
HANDLE completion_event_;
|
base::WaitableEvent completion_event_;
|
||||||
|
|
||||||
// Map of resources that can be automatically loaded
|
// Map of resources that can be automatically loaded
|
||||||
typedef std::map<std::wstring, std::pair<std::string, std::wstring>> ResourceMap;
|
typedef std::map<std::wstring, std::pair<std::string, std::wstring>> ResourceMap;
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#define _CEF_TEST_SUITE_H
|
#define _CEF_TEST_SUITE_H
|
||||||
|
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
|
#include "base/platform_thread.h"
|
||||||
#include "base/test/test_suite.h"
|
#include "base/test/test_suite.h"
|
||||||
#include "include/cef.h"
|
#include "include/cef.h"
|
||||||
|
|
||||||
@ -22,6 +23,10 @@ class CefTestSuite : public TestSuite {
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual void Shutdown() {
|
virtual void Shutdown() {
|
||||||
|
// Delay a bit so that the system has a chance to finish destroying windows
|
||||||
|
// before CefShutdown() checks for memory leaks.
|
||||||
|
PlatformThread::Sleep(500);
|
||||||
|
|
||||||
CefShutdown();
|
CefShutdown();
|
||||||
TestSuite::Shutdown();
|
TestSuite::Shutdown();
|
||||||
}
|
}
|
||||||
|
@ -244,7 +244,7 @@ public:
|
|||||||
CefRefPtr<CefFrame> frame)
|
CefRefPtr<CefFrame> frame)
|
||||||
{
|
{
|
||||||
if(!browser->IsPopup() && !frame.get())
|
if(!browser->IsPopup() && !frame.get())
|
||||||
NotifyTestComplete();
|
DestroyTest();
|
||||||
return RV_CONTINUE;
|
return RV_CONTINUE;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -271,7 +271,7 @@ TEST(V8Test, Extension)
|
|||||||
L"})();";
|
L"})();";
|
||||||
CefRegisterExtension(L"v8/test", extensionCode, new V8TestV8Handler(false));
|
CefRegisterExtension(L"v8/test", extensionCode, new V8TestV8Handler(false));
|
||||||
|
|
||||||
V8TestHandler* handler = new V8TestHandler();
|
CefRefPtr<V8TestHandler> handler = new V8TestHandler();
|
||||||
handler->ExecuteTest();
|
handler->ExecuteTest();
|
||||||
|
|
||||||
ASSERT_TRUE(g_V8TestV8HandlerExecuteCalled);
|
ASSERT_TRUE(g_V8TestV8HandlerExecuteCalled);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user