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

Reply via email to