Modified: trunk/Source/WebKit2/ChangeLog (166354 => 166355)
--- trunk/Source/WebKit2/ChangeLog 2014-03-27 09:45:30 UTC (rev 166354)
+++ trunk/Source/WebKit2/ChangeLog 2014-03-27 11:33:07 UTC (rev 166355)
@@ -1,3 +1,24 @@
+2014-03-27 Maciej Florek <m.flo...@samsung.com>
+
+ [EFL][WK2] Add tests of the set process model API
+ https://bugs.webkit.org/show_bug.cgi?id=130830
+
+ Reviewed by Gyuyoung Kim.
+
+ Implement unit tests to check, if process model API works
+ properly. When process model is set to EWK_PROCESS_MODEL_SHARED_SECONDARY,
+ there should be only one WebProcess. In case of EWK_PROCESS_MODEL_MULTIPLE_SECONDARY
+ setting, each WebView should have own process, as well as the network process
+ should exist.
+
+ * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:
+ (EWK2UnitTest::EWK2UnitTestBase::EWK2UnitTestBase):
+ (EWK2UnitTest::EWK2UnitTestBase::SetUp):
+ * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:
+ * UIProcess/API/efl/tests/test_ewk2_context.cpp:
+ (EWK2ContextTestMultipleProcesses::EWK2ContextTestMultipleProcesses):
+ (TEST_F):
+
2014-03-27 Commit Queue <commit-qu...@webkit.org>
Unreviewed, rolling out r166296 and r166331.
Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp (166354 => 166355)
--- trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp 2014-03-27 09:45:30 UTC (rev 166354)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp 2014-03-27 11:33:07 UTC (rev 166355)
@@ -38,6 +38,7 @@
: m_ecoreEvas(0)
, m_webView(0)
, m_ewkViewClass(ewk2UnitTestBrowserViewSmartClass())
+ , m_multipleProcesses(false)
{
ewk_view_smart_class_set(&m_ewkViewClass);
}
@@ -61,6 +62,9 @@
Evas_Smart* smart = evas_smart_class_new(&m_ewkViewClass.sc);
Ewk_Context* newContext = ewk_context_new();
+ if (m_multipleProcesses)
+ ewk_context_process_model_set(newContext, EWK_PROCESS_MODEL_MULTIPLE_SECONDARY);
+
Ewk_Page_Group* newPageGroup = ewk_page_group_create("UnitTest");
m_webView = ewk_view_smart_add(evas, smart, newContext, newPageGroup);
Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h (166354 => 166355)
--- trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h 2014-03-27 09:45:30 UTC (rev 166354)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h 2014-03-27 11:33:07 UTC (rev 166355)
@@ -45,6 +45,7 @@
virtual void TearDown();
static constexpr double defaultTimeoutSeconds = 10.0;
+ bool m_multipleProcesses;
bool loadUrlSync(const char* url, double timeoutSeconds = defaultTimeoutSeconds);
bool waitUntilLoadFinished(double timeoutSeconds = defaultTimeoutSeconds);
Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp (166354 => 166355)
--- trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp 2014-03-27 09:45:30 UTC (rev 166354)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp 2014-03-27 11:33:07 UTC (rev 166355)
@@ -26,7 +26,10 @@
#include "config.h"
+#include "EwkView.h"
#include "UnitTestUtils/EWK2UnitTestBase.h"
+#include "ewk_context_private.h"
+#include "ewk_view_private.h"
using namespace EWK2UnitTest;
@@ -48,6 +51,14 @@
}
};
+class EWK2ContextTestMultipleProcesses : public EWK2UnitTestBase {
+protected:
+ EWK2ContextTestMultipleProcesses()
+ {
+ m_multipleProcesses = true;
+ }
+};
+
TEST_F(EWK2ContextTest, ewk_context_default_get)
{
Ewk_Context* defaultContext = ewk_context_default_get();
@@ -118,13 +129,90 @@
ASSERT_EQ(EWK_CACHE_MODEL_DOCUMENT_VIEWER, ewk_context_cache_model_get(context));
}
-TEST_F(EWK2ContextTest, ewk_context_process_model)
+TEST_F(EWK2ContextTest, ewk_context_web_process_model)
{
Ewk_Context* context = ewk_view_context_get(webView());
ASSERT_EQ(EWK_PROCESS_MODEL_SHARED_SECONDARY, ewk_context_process_model_get(context));
+
+ Ewk_Page_Group* pageGroup = ewk_view_page_group_get(webView());
+ Evas* evas = ecore_evas_get(backingStore());
+ Evas_Smart* smart = evas_smart_class_new(&(ewkViewClass()->sc));
+
+ Evas_Object* webView1 = ewk_view_smart_add(evas, smart, context, pageGroup);
+ Evas_Object* webView2 = ewk_view_smart_add(evas, smart, context, pageGroup);
+
+ PlatformProcessIdentifier webView1WebProcessID = toImpl(EWKViewGetWKView(webView1))->page()->process().processIdentifier();
+ PlatformProcessIdentifier webView2WebProcessID = toImpl(EWKViewGetWKView(webView2))->page()->process().processIdentifier();
+
+ ASSERT_EQ(webView1WebProcessID, webView2WebProcessID);
}
+TEST_F(EWK2ContextTestMultipleProcesses, ewk_context_web_process_model)
+{
+ Ewk_Context* context = ewk_view_context_get(webView());
+
+ ASSERT_EQ(EWK_PROCESS_MODEL_MULTIPLE_SECONDARY, ewk_context_process_model_get(context));
+
+ Ewk_Page_Group* pageGroup = ewk_view_page_group_get(webView());
+ Evas* evas = ecore_evas_get(backingStore());
+ Evas_Smart* smart = evas_smart_class_new(&(ewkViewClass()->sc));
+
+ Evas_Object* webView1 = ewk_view_smart_add(evas, smart, context, pageGroup);
+ Evas_Object* webView2 = ewk_view_smart_add(evas, smart, context, pageGroup);
+
+ PlatformProcessIdentifier webView1WebProcessID = toImpl(EWKViewGetWKView(webView1))->page()->process().processIdentifier();
+ PlatformProcessIdentifier webView2WebProcessID = toImpl(EWKViewGetWKView(webView2))->page()->process().processIdentifier();
+
+ ASSERT_NE(webView1WebProcessID, webView2WebProcessID);
+}
+
+TEST_F(EWK2ContextTest, ewk_context_network_process_model)
+{
+ Ewk_Context* context = ewk_view_context_get(webView());
+
+ ASSERT_EQ(EWK_PROCESS_MODEL_SHARED_SECONDARY, ewk_context_process_model_get(context));
+
+ Ewk_Page_Group* pageGroup = ewk_view_page_group_get(webView());
+ Evas* evas = ecore_evas_get(backingStore());
+ Evas_Smart* smart = evas_smart_class_new(&(ewkViewClass()->sc));
+
+ Evas_Object* webView1 = ewk_view_smart_add(evas, smart, context, pageGroup);
+ Evas_Object* webView2 = ewk_view_smart_add(evas, smart, context, pageGroup);
+
+ PlatformProcessIdentifier webView1WebProcessID = toImpl(EWKViewGetWKView(webView1))->page()->process().processIdentifier();
+ PlatformProcessIdentifier webView2WebProcessID = toImpl(EWKViewGetWKView(webView2))->page()->process().processIdentifier();
+
+ ASSERT_EQ(webView1WebProcessID, webView2WebProcessID);
+
+ ASSERT_TRUE(toImpl(EWKViewGetWKView(webView1))->page()->process().context().networkProcess() == nullptr);
+ ASSERT_TRUE(toImpl(EWKViewGetWKView(webView2))->page()->process().context().networkProcess() == nullptr);
+}
+
+
+TEST_F(EWK2ContextTestMultipleProcesses, ewk_context_network_process_model)
+{
+ Ewk_Context* context = ewk_view_context_get(webView());
+
+ ASSERT_EQ(EWK_PROCESS_MODEL_MULTIPLE_SECONDARY, ewk_context_process_model_get(context));
+
+ Ewk_Page_Group* pageGroup = ewk_view_page_group_get(webView());
+ Evas* evas = ecore_evas_get(backingStore());
+ Evas_Smart* smart = evas_smart_class_new(&(ewkViewClass()->sc));
+
+ Evas_Object* webView1 = ewk_view_smart_add(evas, smart, context, pageGroup);
+ Evas_Object* webView2 = ewk_view_smart_add(evas, smart, context, pageGroup);
+
+ PlatformProcessIdentifier webView1WebProcessID = toImpl(EWKViewGetWKView(webView1))->page()->process().processIdentifier();
+ PlatformProcessIdentifier webView2WebProcessID = toImpl(EWKViewGetWKView(webView2))->page()->process().processIdentifier();
+ PlatformProcessIdentifier webView1NetworkProcessID = toImpl(EWKViewGetWKView(webView1))->page()->process().context().networkProcess()->processIdentifier();
+ PlatformProcessIdentifier webView2NetworkProcessID = toImpl(EWKViewGetWKView(webView2))->page()->process().context().networkProcess()->processIdentifier();
+
+ ASSERT_NE(webView1WebProcessID, webView2WebProcessID);
+ ASSERT_NE(webView1WebProcessID, webView1NetworkProcessID);
+ ASSERT_NE(webView1WebProcessID, webView2NetworkProcessID);
+}
+
TEST_F(EWK2ContextTest, ewk_context_new)
{
Ewk_Context* context = ewk_context_new();