Changeset 166228 in webkit


Ignore:
Timestamp:
Mar 25, 2014 2:53:26 AM (10 years ago)
Author:
Michał Pakuła vel Rutka
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):

Location:
trunk/Source/WebKit2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r166224 r166228  
     12014-03-24 Michał Pakuła vel Rutka  <m.pakula@samsung.com>
     2
     3        [EFL][WK2] Add an API to set process model
     4        https://bugs.webkit.org/show_bug.cgi?id=130133
     5
     6        Reviewed by Gyuyoung Kim.
     7
     8        Implement an API to set and get process model in ewk_context.
     9        By default process model enum value is set to EWK_PROCESS_MODEL_SHARED_SECONDARY
     10        which keeps current behaviour. Setting EWK_PROCESS_MODEL_MULTIPLE_SECONDARY
     11        will make each web view use separate web process, also enables network process.
     12
     13        * UIProcess/API/efl/ewk_context.cpp:
     14        (toWKProcessModel):
     15        (EwkContext::setProcessModel):
     16        (toEwkProcessModel):
     17        (EwkContext::processModel):
     18        (ewk_context_process_model_set):
     19        (ewk_context_process_model_get):
     20        * UIProcess/API/efl/ewk_context.h:
     21        * UIProcess/API/efl/ewk_context_private.h:
     22        * UIProcess/API/efl/tests/test_ewk2_context.cpp:
     23        (TEST_F):
     24
    1252014-03-24  Chris Fleizach  <cfleizach@apple.com>
    226
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_context.cpp

    r165718 r166228  
    238238}
    239239
     240inline WKProcessModel toWKProcessModel(Ewk_Process_Model processModel)
     241{
     242    switch (processModel) {
     243    case EWK_PROCESS_MODEL_SHARED_SECONDARY:
     244        return kWKProcessModelSharedSecondaryProcess;
     245    case EWK_PROCESS_MODEL_MULTIPLE_SECONDARY:
     246        return kWKProcessModelMultipleSecondaryProcesses;
     247    }
     248    ASSERT_NOT_REACHED();
     249
     250    return kWKProcessModelSharedSecondaryProcess;
     251}
     252
     253void EwkContext::setProcessModel(Ewk_Process_Model processModel)
     254{
     255    WKProcessModel newWKProcessModel = toWKProcessModel(processModel);
     256
     257    if (WKContextGetProcessModel(m_context.get()) == newWKProcessModel)
     258        return;
     259
     260    WKContextSetUsesNetworkProcess(m_context.get(), newWKProcessModel == kWKProcessModelMultipleSecondaryProcesses);
     261    WKContextSetProcessModel(m_context.get(), newWKProcessModel);
     262}
     263
     264inline Ewk_Process_Model toEwkProcessModel(WKProcessModel processModel)
     265{
     266    switch (processModel) {
     267    case kWKProcessModelSharedSecondaryProcess:
     268        return EWK_PROCESS_MODEL_SHARED_SECONDARY;
     269    case kWKProcessModelMultipleSecondaryProcesses:
     270        return EWK_PROCESS_MODEL_MULTIPLE_SECONDARY;
     271    }
     272    ASSERT_NOT_REACHED();
     273
     274    return EWK_PROCESS_MODEL_SHARED_SECONDARY;
     275}
     276
     277Ewk_Process_Model EwkContext::processModel() const
     278{
     279    return toEwkProcessModel(WKContextGetProcessModel(m_context.get()));
     280}
     281
    240282#if ENABLE(NETSCAPE_PLUGIN_API)
    241283void EwkContext::setAdditionalPluginPath(const String& path)
     
    470512    impl->setMessageFromInjectedBundleCallback(callback, userData);
    471513}
     514
     515Eina_Bool ewk_context_process_model_set(Ewk_Context* ewkContext, Ewk_Process_Model processModel)
     516{
     517#if ENABLE(NETWORK_PROCESS)
     518    EWK_OBJ_GET_IMPL_OR_RETURN(EwkContext, ewkContext, impl, false);
     519
     520    impl->setProcessModel(processModel);
     521
     522    return true;
     523#else
     524    UNUSED_PARAM(ewkContext);
     525    UNUSED_PARAM(processModel);
     526    return false;
     527#endif
     528}
     529
     530Ewk_Process_Model ewk_context_process_model_get(const Ewk_Context* ewkContext)
     531{
     532#if ENABLE(NETWORK_PROCESS)
     533    EWK_OBJ_GET_IMPL_OR_RETURN(const EwkContext, ewkContext, impl, EWK_PROCESS_MODEL_SHARED_SECONDARY);
     534
     535    return impl->processModel();
     536#else
     537    UNUSED_PARAM(ewkContext);
     538    return EWK_PROCESS_MODEL_SHARED_SECONDARY;
     539#endif
     540}
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_context.h

    r165718 r166228  
    7474/// Creates a type name for the Ewk_Cache_Model.
    7575typedef enum Ewk_Cache_Model Ewk_Cache_Model;
     76
     77/**
     78 * \enum    Ewk_Process_Model
     79 *
     80 * @brief   Contains option for process model
     81 */
     82enum Ewk_Process_Model {
     83    EWK_PROCESS_MODEL_SHARED_SECONDARY,
     84    EWK_PROCESS_MODEL_MULTIPLE_SECONDARY
     85};
     86
     87/// Creates a type name for the Ewk_Process_Model.
     88typedef enum Ewk_Process_Model Ewk_Process_Model;
    7689
    7790/**
     
    363376EAPI void ewk_context_message_from_injected_bundle_callback_set(Ewk_Context *context, Ewk_Context_Message_From_Injected_Bundle_Cb callback, void *user_data);
    364377
     378/**
     379 * Sets a process model for @a context.
     380 *
     381 * Sets a process model for web views, which will be used to decide how
     382 * processes should be handled. Default value is
     383 * EWK_PROCESS_MODEL_SHARED_SECONDARY which means that there is only one
     384 * web process. When EWK_PROCESS_MODEL_MULTIPLE_SECONDARY is set a
     385 * network process is introduced and every web view starts new web process.
     386 * This function should be used before first web process is spawned.
     387 *
     388 * @param context context object to set process model
     389 * @param process_model a #Ewk_Process_Model
     390 */
     391EAPI Eina_Bool ewk_context_process_model_set(Ewk_Context *context, Ewk_Process_Model process_model);
     392
     393/**
     394 * Gets the process model for @a context.
     395 *
     396 * @param context context object to query
     397 *
     398 * @return the process model for the @a context
     399 */
     400EAPI Ewk_Process_Model ewk_context_process_model_get(const Ewk_Context *context);
     401
    365402#ifdef __cplusplus
    366403}
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_context_private.h

    r165718 r166228  
    7676    Ewk_Cache_Model cacheModel() const;
    7777
     78    void setProcessModel(Ewk_Process_Model);
     79
     80    Ewk_Process_Model processModel() const;
     81
    7882    WKContextRef wkContext() const { return m_context.get(); }
    7983
  • trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp

    r165718 r166228  
    119119}
    120120
     121TEST_F(EWK2ContextTest, ewk_context_process_model)
     122{
     123    Ewk_Context* context = ewk_view_context_get(webView());
     124
     125    ASSERT_EQ(EWK_PROCESS_MODEL_SHARED_SECONDARY, ewk_context_process_model_get(context));
     126}
     127
    121128TEST_F(EWK2ContextTest, ewk_context_new)
    122129{
Note: See TracChangeset for help on using the changeset viewer.