Title: [166228] trunk/Source/WebKit2
- Revision
- 166228
- Author
- m.pak...@samsung.com
- Date
- 2014-03-25 02:53:26 -0700 (Tue, 25 Mar 2014)
Log Message
[EFL][WK2] Add an API to set process model
https://bugs.webkit.org/show_bug.cgi?id=130133
Reviewed by Gyuyoung Kim.
Implement an API to set and get process model in ewk_context.
By default process model enum value is set to EWK_PROCESS_MODEL_SHARED_SECONDARY
which keeps current behaviour. Setting EWK_PROCESS_MODEL_MULTIPLE_SECONDARY
will make each web view use separate web process, also enables network process.
* UIProcess/API/efl/ewk_context.cpp:
(toWKProcessModel):
(EwkContext::setProcessModel):
(toEwkProcessModel):
(EwkContext::processModel):
(ewk_context_process_model_set):
(ewk_context_process_model_get):
* UIProcess/API/efl/ewk_context.h:
* UIProcess/API/efl/ewk_context_private.h:
* UIProcess/API/efl/tests/test_ewk2_context.cpp:
(TEST_F):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (166227 => 166228)
--- trunk/Source/WebKit2/ChangeLog 2014-03-25 09:10:32 UTC (rev 166227)
+++ trunk/Source/WebKit2/ChangeLog 2014-03-25 09:53:26 UTC (rev 166228)
@@ -1,3 +1,27 @@
+2014-03-24 Michał Pakuła vel Rutka <m.pak...@samsung.com>
+
+ [EFL][WK2] Add an API to set process model
+ https://bugs.webkit.org/show_bug.cgi?id=130133
+
+ Reviewed by Gyuyoung Kim.
+
+ Implement an API to set and get process model in ewk_context.
+ By default process model enum value is set to EWK_PROCESS_MODEL_SHARED_SECONDARY
+ which keeps current behaviour. Setting EWK_PROCESS_MODEL_MULTIPLE_SECONDARY
+ will make each web view use separate web process, also enables network process.
+
+ * UIProcess/API/efl/ewk_context.cpp:
+ (toWKProcessModel):
+ (EwkContext::setProcessModel):
+ (toEwkProcessModel):
+ (EwkContext::processModel):
+ (ewk_context_process_model_set):
+ (ewk_context_process_model_get):
+ * UIProcess/API/efl/ewk_context.h:
+ * UIProcess/API/efl/ewk_context_private.h:
+ * UIProcess/API/efl/tests/test_ewk2_context.cpp:
+ (TEST_F):
+
2014-03-24 Chris Fleizach <cfleiz...@apple.com>
AX: hit-testing doesn't always work correctly with WK2
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_context.cpp (166227 => 166228)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_context.cpp 2014-03-25 09:10:32 UTC (rev 166227)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_context.cpp 2014-03-25 09:53:26 UTC (rev 166228)
@@ -237,6 +237,48 @@
return static_cast<Ewk_Cache_Model>(WKContextGetCacheModel(m_context.get()));
}
+inline WKProcessModel toWKProcessModel(Ewk_Process_Model processModel)
+{
+ switch (processModel) {
+ case EWK_PROCESS_MODEL_SHARED_SECONDARY:
+ return kWKProcessModelSharedSecondaryProcess;
+ case EWK_PROCESS_MODEL_MULTIPLE_SECONDARY:
+ return kWKProcessModelMultipleSecondaryProcesses;
+ }
+ ASSERT_NOT_REACHED();
+
+ return kWKProcessModelSharedSecondaryProcess;
+}
+
+void EwkContext::setProcessModel(Ewk_Process_Model processModel)
+{
+ WKProcessModel newWKProcessModel = toWKProcessModel(processModel);
+
+ if (WKContextGetProcessModel(m_context.get()) == newWKProcessModel)
+ return;
+
+ WKContextSetUsesNetworkProcess(m_context.get(), newWKProcessModel == kWKProcessModelMultipleSecondaryProcesses);
+ WKContextSetProcessModel(m_context.get(), newWKProcessModel);
+}
+
+inline Ewk_Process_Model toEwkProcessModel(WKProcessModel processModel)
+{
+ switch (processModel) {
+ case kWKProcessModelSharedSecondaryProcess:
+ return EWK_PROCESS_MODEL_SHARED_SECONDARY;
+ case kWKProcessModelMultipleSecondaryProcesses:
+ return EWK_PROCESS_MODEL_MULTIPLE_SECONDARY;
+ }
+ ASSERT_NOT_REACHED();
+
+ return EWK_PROCESS_MODEL_SHARED_SECONDARY;
+}
+
+Ewk_Process_Model EwkContext::processModel() const
+{
+ return toEwkProcessModel(WKContextGetProcessModel(m_context.get()));
+}
+
#if ENABLE(NETSCAPE_PLUGIN_API)
void EwkContext::setAdditionalPluginPath(const String& path)
{
@@ -469,3 +511,30 @@
impl->setMessageFromInjectedBundleCallback(callback, userData);
}
+
+Eina_Bool ewk_context_process_model_set(Ewk_Context* ewkContext, Ewk_Process_Model processModel)
+{
+#if ENABLE(NETWORK_PROCESS)
+ EWK_OBJ_GET_IMPL_OR_RETURN(EwkContext, ewkContext, impl, false);
+
+ impl->setProcessModel(processModel);
+
+ return true;
+#else
+ UNUSED_PARAM(ewkContext);
+ UNUSED_PARAM(processModel);
+ return false;
+#endif
+}
+
+Ewk_Process_Model ewk_context_process_model_get(const Ewk_Context* ewkContext)
+{
+#if ENABLE(NETWORK_PROCESS)
+ EWK_OBJ_GET_IMPL_OR_RETURN(const EwkContext, ewkContext, impl, EWK_PROCESS_MODEL_SHARED_SECONDARY);
+
+ return impl->processModel();
+#else
+ UNUSED_PARAM(ewkContext);
+ return EWK_PROCESS_MODEL_SHARED_SECONDARY;
+#endif
+}
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_context.h (166227 => 166228)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_context.h 2014-03-25 09:10:32 UTC (rev 166227)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_context.h 2014-03-25 09:53:26 UTC (rev 166228)
@@ -75,6 +75,19 @@
typedef enum Ewk_Cache_Model Ewk_Cache_Model;
/**
+ * \enum Ewk_Process_Model
+ *
+ * @brief Contains option for process model
+ */
+enum Ewk_Process_Model {
+ EWK_PROCESS_MODEL_SHARED_SECONDARY,
+ EWK_PROCESS_MODEL_MULTIPLE_SECONDARY
+};
+
+/// Creates a type name for the Ewk_Process_Model.
+typedef enum Ewk_Process_Model Ewk_Process_Model;
+
+/**
* @typedef Ewk_Url_Scheme_Request_Cb Ewk_Url_Scheme_Request_Cb
* @brief Callback type for use with ewk_context_url_scheme_register().
*/
@@ -362,6 +375,30 @@
*/
EAPI void ewk_context_message_from_injected_bundle_callback_set(Ewk_Context *context, Ewk_Context_Message_From_Injected_Bundle_Cb callback, void *user_data);
+/**
+ * Sets a process model for @a context.
+ *
+ * Sets a process model for web views, which will be used to decide how
+ * processes should be handled. Default value is
+ * EWK_PROCESS_MODEL_SHARED_SECONDARY which means that there is only one
+ * web process. When EWK_PROCESS_MODEL_MULTIPLE_SECONDARY is set a
+ * network process is introduced and every web view starts new web process.
+ * This function should be used before first web process is spawned.
+ *
+ * @param context context object to set process model
+ * @param process_model a #Ewk_Process_Model
+ */
+EAPI Eina_Bool ewk_context_process_model_set(Ewk_Context *context, Ewk_Process_Model process_model);
+
+/**
+ * Gets the process model for @a context.
+ *
+ * @param context context object to query
+ *
+ * @return the process model for the @a context
+ */
+EAPI Ewk_Process_Model ewk_context_process_model_get(const Ewk_Context *context);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_context_private.h (166227 => 166228)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_context_private.h 2014-03-25 09:10:32 UTC (rev 166227)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_context_private.h 2014-03-25 09:53:26 UTC (rev 166228)
@@ -75,6 +75,10 @@
Ewk_Cache_Model cacheModel() const;
+ void setProcessModel(Ewk_Process_Model);
+
+ Ewk_Process_Model processModel() const;
+
WKContextRef wkContext() const { return m_context.get(); }
WebKit::DownloadManagerEfl* downloadManager() const;
Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp (166227 => 166228)
--- trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp 2014-03-25 09:10:32 UTC (rev 166227)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp 2014-03-25 09:53:26 UTC (rev 166228)
@@ -118,6 +118,13 @@
ASSERT_EQ(EWK_CACHE_MODEL_DOCUMENT_VIEWER, ewk_context_cache_model_get(context));
}
+TEST_F(EWK2ContextTest, ewk_context_process_model)
+{
+ Ewk_Context* context = ewk_view_context_get(webView());
+
+ ASSERT_EQ(EWK_PROCESS_MODEL_SHARED_SECONDARY, ewk_context_process_model_get(context));
+}
+
TEST_F(EWK2ContextTest, ewk_context_new)
{
Ewk_Context* context = ewk_context_new();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes