Support multiple webkit context on wrt-core
authorYunchan Cho <yunchan.cho@samsung.com>
Wed, 6 Feb 2013 07:54:19 +0000 (16:54 +0900)
committerYunchan Cho <yunchan.cho@samsung.com>
Wed, 13 Feb 2013 08:41:49 +0000 (17:41 +0900)
commitf377db17bc6d7791fb5d1a5b32bc5973afa6e696
tree7d163a2c95c502ec79f4afbb57e856180f5d19b8
parent82d057ba336ecfac7a8b9a57930952652c8af62a
Support multiple webkit context on wrt-core

Existing wrt-core considered only one webkit context on one UI process.
In case of webapp, this was enough to handle webapp, but not other usage of wrt-core like web-provider.
Web-provider that handles web-liveboxes can have one UI process and multiple Web Processes.

From now on, CoreModule handle special jobs that are processed process-widely once like attaching database.
So CoreModule continues to be used as singleton instance.
But created RunnableWidgetObject instance has one Ewk Context, that is matched to specific Web Process.
One Ewk Context may be shared with several RunnableWidgetObject instances.
But in this case, the Ewk Context's setting includeing callbacks can be overwritten due to internal webkit implementation.
Web-provider with multiple Ewk Contextes should consider this.

If an executable(like wrt-client) linking libwrt-core create one Ewk_Context itself, the executable should remove the Ewk_Context explicitly on termination.
Because libwrt-core doesn't remove Ewk_Context passed from executable, and remove only Ewk_Context created internally by RunnableWidgetObject.

[Issue#]       N/A
[Problem]      Existing libwrt-core considers only one webkit context on one UI process
[Cause]        In webapp case, this was enough to existing implementation.
               But wrt-provider that links libwrt-core and may have multiple Ewk Context couldn't support livebox requirements
[Solution]     WRT code is modified to support multiple webkit context

Change-Id: Ibc70f882e317d2cb07650aa9dc028fcb605d03b5
13 files changed:
src/api_new/CMakeLists.txt
src/api_new/core_module.cpp
src/api_new/core_module.h
src/api_new/ewk_context_manager.cpp [new file with mode: 0644]
src/api_new/ewk_context_manager.h [new file with mode: 0644]
src/api_new/i_runnable_widget_object.h
src/api_new/runnable_widget_object.cpp
src/api_new/runnable_widget_object.h
src/view/i_view_module.h
src/view/webkit/view_logic.cpp
src/view/webkit/view_logic.h
src/wrt-client/wrt-client.cpp
src/wrt-client/wrt-client.h