SlideShare a Scribd company logo
1 of 22
Download to read offline
ewebkit
intro, internal and ewebkit extension
ryuan.choi (최병운)
content
● Introduction of ewebkit
● Tutorials
● Internals
● ewebkit extension
● Information, links
ewebkit
webkit based rendering engine for EFL.
TIZEN(2.x) uses ewebkit.
current version of ewebkit : 1.11
WebKit2
multi process architecture.
ewebkit - features
- Many HTML5 features
- INDEXED DATABASE(X)
- Accelerated compositing
- Viewport meta tag
- Fixed Layout
- Touch event
- UI Side compositing
● Source code
○ Latest : git://git.webkit.org/WebKit.git
○ Stable : git@github.com:ewebkit/webkit.git
http://download.enlightenment.org/rel/libs/webkit-efl/
● Document : http://ewebkit.github.io/ewebkit-doc
● Samples : git@github.com:ewebkit/samples.git
● IRC(FreeNode) : #webkit-efl , #webkit-kr
● Mailing list : webkit-efl@lists.webkit.org
○ https://lists.webkit.org/mailman/listinfo/webkit-efl
● Wiki : http://trac.webkit.org/wiki/EFLWebKit
ewebkit
EFL(evas, ecore, …)
ewebkit vs elm_web
Elementary
ewebkit
● elm_web is optional winset of Elementary
○ ./autogen.sh --with-elementary-web-backend=ewebkit2
● TIZEN does not use elm_web yet.
elm_web
use
EFL(evas, ecore, …)
Elementary
ewebkit
use
<open source> <TIZEN>
How to build/install ewebkit
# Download source code
wget http://download.enlightenment.org/rel/libs/webkit-efl/ewebkit-1.11.0.tar.xz
tar xvJf ewebkit-1.11.0.tar.xz # extract from archieve
cd ewebkit # move to the root directory of souce code.
mkdir build && cd build
cmake .. -DPORT=Efl -DENABLE_BATTERY_STATUS=OFF -
DCMAKE_INSTALL_PREFIX=/usr/elocal
make -j8 && sudo make install
Tutorial - first example
// gcc simple_load_elm.c `pkg-config --cflags --libs elementary ewebkit2`
#include <Elementary.h>
#include <EWebKit2.h>
EAPI_MAIN int elm_main(int argc, char *argv[])
{
ewk_init();
Evas_Object* win = elm_win_add(NULL, "sample", ELM_WIN_BASIC);
elm_win_title_set(win, "sample");
...
Evas_Object* bg = elm_bg_add(win);
...
Evas_Object *ewk = ewk_view_add(evas_object_evas_get(win));
evas_object_smart_callback_add(ewk, "load,progress", progress_cb, NULL);
ewk_view_url_set(ewk, "http://bunhere.tistory.com");
evas_object_resize(ewk, 400, 400);
evas_object_move(ewk, 0, 0);
evas_object_show(ewk);
elm_run();
ewk_shutdown();
}
ELM_MAIN()
# ps -ef | grep a.out
ryuan 23281 13874 0 23:01 pts/22 00:00:00 ./a.out
ryuan 23373 23304 0 23:01 pts/24 00:00:00 grep --color=auto a.out
# ps -ef | grep WebPr
ryuan 23286 23281 0 23:01 pts/22 00:00:00 /usr/elocal/bin/WebProcess 25
ryuan 23377 23304 0 23:01 pts/24 00:00:00 grep --color=auto WebPr
https://github.com/ewebkit/samples/blob/master/samples/ewebkit/simple_load_elm.c
Major objects
● ewk_view (evas object)
○ view object to load and draw web contents.
○ based on smart object.
● Ewk_Context (Ewk_Object)
○ Instance to represent and control processes.
○ Each context only creates each web process.
● Ewk_Page_Group (Ewk_Object)
○ Instance to represent and control session.
● Ewk_Settings
Major objects
Application
ewk_context #1
ewk_page_group #1
ewk_context #2
ewk_page_group #2 ewk_page_group #3
ewk_view
#1
ewk_view
#2
ewk_view
#3
ewk_view
#4
WebProcess #1 WebProcess #2
Ewk_Object
● Almost ewk objects are based on Ewk_Object
● Ewk_Object is just simple smart pointer.
● There are two APIs to control the life of objects
○ ewk_object_ref
○ ewk_object_unref
Tutorial 2 - window.alert()
static void
on_javascript_alert(Ewk_View_Smart_Data *smartData, const char *message)
{ … }
EAPI_MAIN
int elm_main(int argc, char *argv[])
{
…
// Evas_Object* ewk = ewk_view_add(evas_object_evas_get(win));
static Ewk_View_Smart_Class ewk_view_class = EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
("SimpleEwkClass");
ewk_view_smart_class_set(&ewk_view_class);
ewk_view_class.run_javascript_alert = on_javascript_alert;
Evas_Smart *smart = evas_smart_class_new(&ewk_view_class.sc);
Evas_Object *ewk = ewk_view_smart_add(evas_object_evas_get(g_win), smart, ewk_context_default_get(),
ewk_page_group_create(NULL));
// theme path should be calculated via “pkg-config --variable=datadir ewebkit2”
ewk_view_theme_set(ewk, "/usr/share/ewebkit2-1/themes/default.edj");
// ewk_view_url_set(ewk, "http://bunhere.tistory.com");
ewk_view_html_string_load(ewk,
"<!doctype html><body><input type=button onclick="window.alert('hello');"></body>", NULL, NULL);
...
}
ELM_MAIN()https://github.com/ewebkit/samples/blob/master/samples/ewebkit/simple_popup.c
Methods of Ewk_View_Smart_Class
Internals
Read How browsers work (korean)
webcore
javascript core
EFL, cairo, libsoup, gstreamer, ...
ewebkit
html,
css, js
DOM
Tree
Render
Tree
Render
Layer
Tree
Graphics
Layer Tree
Page
Internals - WebKit2
Multi process architecture
WebProcess UIProcess
webcoreJSC
WebPage DrawingArea WebPagePr
oxy
DrawingArea
Proxy
IPC
IPC
WebProcess WebProcess
Proxy
WK Interface
ewk interface
WebContext
WorkQueue
WorkQueue
NetworkProcess ...
Internals - ewk_view
WebView EwkViewWKView
ewk_view(evas_object)
Ewk_View_Smart_Class
Ewk_View_Smart_Data
Evas_Smart_Class
evas_image
Evas_GL
WebPageProxy WKPage
Internals - Coordinated Graphics
http://trac.webkit.
org/wiki/CoordinatedGraphicsSyste
m
Internals - Coordinated Graphics
● WebProcess draws the render tree.
○ Into not one surface but multiple layers.
(Accelerated compositing)
○ Each layers also consist of multiple tiles.
(Tiled BackingStore)
○ Tile memory and layer states are shared between
UIProcess and WebProcess.
● UIProcess composite layers.(UI side compositing)
○ UIProcess ‘can’ scroll/scale the layers.
ewebkit extension
ewebkit-extension is simple interface to inject user’
s shared objects to WebProcess for the extension
such as javascript binding.
Plan to add it into
release 1.13
libewebkit2.so
ewebkit extension
WebProcess UIProcess
webcoreJSC
WebPage DrawingArea WebPagePr
oxy
DrawingArea
Proxy
IPC
IPC
WebProcess WebProcess
Proxy
WK Interface
ewk interface
WebContext
WorkQueue
WorkQueue
Injected
Bundle
libewebkit_extension_manager.so
extension.so applicationextension.so
WK Interface
ewk
interface
JSC
interface
Information, links
● source code
○ Development : http://www.webkit.org/building/checkout.
html
○ Release : https://github.com/ewebkit/webkit
● doxygen
○ http://ewebkit.github.io/ewebkit-doc/ewebkit2/html/
● samples
○ https://github.com/ewebkit/samples
● simple browser
○ https://github.com/bunhere/elbow
Information, links
● http://trac.webkit.org/wiki/EFLWebKit
● http://trac.webkit.
org/wiki/CoordinatedGraphicsSystem

More Related Content

Viewers also liked

WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ Project
Joone Hur
 
Understanding Webkit Rendering
Understanding Webkit RenderingUnderstanding Webkit Rendering
Understanding Webkit Rendering
Ariya Hidayat
 

Viewers also liked (20)

פיתוח אפליקציות Webkit לדפדפנים סלולריים Ppt
פיתוח אפליקציות Webkit לדפדפנים סלולריים Pptפיתוח אפליקציות Webkit לדפדפנים סלולריים Ppt
פיתוח אפליקציות Webkit לדפדפנים סלולריים Ppt
 
FrontTalks: Вадим Макеев (Opera Software), «Зачем Опере Вебкит, или Опиум для...
FrontTalks: Вадим Макеев (Opera Software), «Зачем Опере Вебкит, или Опиум для...FrontTalks: Вадим Макеев (Opera Software), «Зачем Опере Вебкит, или Опиум для...
FrontTalks: Вадим Макеев (Opera Software), «Зачем Опере Вебкит, или Опиум для...
 
WebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionWebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolution
 
WebKit, why it matters (PDF version)
WebKit, why it matters (PDF version)WebKit, why it matters (PDF version)
WebKit, why it matters (PDF version)
 
WebKitGtk+ Project
WebKitGtk+ ProjectWebKitGtk+ Project
WebKitGtk+ Project
 
Guides To Analyzing WebKit Performance
Guides To Analyzing WebKit PerformanceGuides To Analyzing WebKit Performance
Guides To Analyzing WebKit Performance
 
Seminar on Tizen OS
Seminar on Tizen OSSeminar on Tizen OS
Seminar on Tizen OS
 
Samsung Indonesia: Tizen Wearables
Samsung Indonesia: Tizen WearablesSamsung Indonesia: Tizen Wearables
Samsung Indonesia: Tizen Wearables
 
Programming Basics guide Tizen
Programming Basics guide TizenProgramming Basics guide Tizen
Programming Basics guide Tizen
 
[Ajou unib.] Tizen v2.4 z3 practice
[Ajou unib.] Tizen v2.4 z3 practice[Ajou unib.] Tizen v2.4 z3 practice
[Ajou unib.] Tizen v2.4 z3 practice
 
Analysis on Tizen Operating System
Analysis on Tizen Operating SystemAnalysis on Tizen Operating System
Analysis on Tizen Operating System
 
How to improve your Tizen native program
How to improve your Tizen native programHow to improve your Tizen native program
How to improve your Tizen native program
 
Tizen operating system by srisailam
Tizen operating system by srisailamTizen operating system by srisailam
Tizen operating system by srisailam
 
Android pour l'industrie
Android pour l'industrieAndroid pour l'industrie
Android pour l'industrie
 
Understanding Webkit Rendering
Understanding Webkit RenderingUnderstanding Webkit Rendering
Understanding Webkit Rendering
 
Tizen os seminar report
Tizen os seminar reportTizen os seminar report
Tizen os seminar report
 
Tizen Operating System
Tizen Operating SystemTizen Operating System
Tizen Operating System
 
Tizen introduction & architecture
Tizen introduction & architectureTizen introduction & architecture
Tizen introduction & architecture
 
Tizen operating system seminar ppt
Tizen operating system seminar pptTizen operating system seminar ppt
Tizen operating system seminar ppt
 
Tizen Overview and Architecture - Seokjae Jeong (Samsung) - Korea Linux Forum...
Tizen Overview and Architecture - Seokjae Jeong (Samsung) - Korea Linux Forum...Tizen Overview and Architecture - Seokjae Jeong (Samsung) - Korea Linux Forum...
Tizen Overview and Architecture - Seokjae Jeong (Samsung) - Korea Linux Forum...
 

Similar to [KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)

Scaling Django with gevent
Scaling Django with geventScaling Django with gevent
Scaling Django with gevent
Mahendra M
 

Similar to [KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan) (20)

Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)Ewebkit basic (Web rendering enging of EFL)
Ewebkit basic (Web rendering enging of EFL)
 
20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native20180518 QNAP Seminar - Introduction to React Native
20180518 QNAP Seminar - Introduction to React Native
 
Ecto
EctoEcto
Ecto
 
Scaling Django with gevent
Scaling Django with geventScaling Django with gevent
Scaling Django with gevent
 
The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)
 
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
 
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 RevolutionWebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
 
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
WebKit and Blink: Open Development Powering the HTML5 Revolution (LinuxCon No...
 
Creating new Tizen profiles using the Yocto Project
Creating new Tizen profiles  using the Yocto ProjectCreating new Tizen profiles  using the Yocto Project
Creating new Tizen profiles using the Yocto Project
 
How to build a tool for operating Flink on Kubernetes
How to build a tool for operating Flink on KubernetesHow to build a tool for operating Flink on Kubernetes
How to build a tool for operating Flink on Kubernetes
 
Monkey Server
Monkey ServerMonkey Server
Monkey Server
 
Ajax Applications with JSF2 and New RichFaces 4 at JAX 2011
Ajax Applications with JSF2 and New RichFaces 4 at JAX 2011Ajax Applications with JSF2 and New RichFaces 4 at JAX 2011
Ajax Applications with JSF2 and New RichFaces 4 at JAX 2011
 
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJSAjax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJS
 
Dgeni documentation generator
Dgeni   documentation generatorDgeni   documentation generator
Dgeni documentation generator
 
Ajax Applications with JSF 2 and New RichFaces 4 - CONFESS 2011
Ajax Applications with JSF 2 and New RichFaces 4 - CONFESS 2011Ajax Applications with JSF 2 and New RichFaces 4 - CONFESS 2011
Ajax Applications with JSF 2 and New RichFaces 4 - CONFESS 2011
 
Establish reliable builds and deployments with Magento
Establish reliable builds and deployments with MagentoEstablish reliable builds and deployments with Magento
Establish reliable builds and deployments with Magento
 
Buildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in pythonBuildout: creating and deploying repeatable applications in python
Buildout: creating and deploying repeatable applications in python
 
The WebKit project
The WebKit projectThe WebKit project
The WebKit project
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkit
 
Why is EFL used on Tizen?
Why is EFL used on Tizen?Why is EFL used on Tizen?
Why is EFL used on Tizen?
 

More from EnlightenmentProject

[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
EnlightenmentProject
 

More from EnlightenmentProject (14)

[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
[E-Dev-Day 2015][3/4] QA Status Report (Stefan Schmidt)
 
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
[E-Dev-Day 2015][4/4] Update on EFL performance benchmarking (Cedric Bail)
 
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
[E-Dev-Day 2015][1/4] Eolian - Past Year Experiences and the Future (Daniel K...
 
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
[KOR][E-Kor-Seminar 2014][8/8] Enlightenment Window Manager (Carsten Haitzler)
 
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
[KOR][E-Kor-Seminar 2014][7/8] Accessibility in EFL (Shinwoo Kim)
 
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
[KOR][E-Kor-Seminar 2014][4/8] Elm Theme Viewer (SeoZ)
 
[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)
[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)
[KOR][E-Kor-Seminar 2014][1/8] Introduction of EFL and Enlightenment (Hermet)
 
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
[E-Dev-Day 2014][14/16] Adding vector graphics support to EFL
 
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
[E-Dev-Day 2014][8/16] The Way How EFL is used in the Tizen, previous, curren...
 
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary	[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
[E-Dev-Day 2014][5/16] C++ and JavaScript bindings for EFL and Elementary
 
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
[E-Dev-Day 2014][4/16] Review of Eolian, Eo, Bindings, Interfaces and What's ...
 
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
[E-Dev-Day-US-2015][9/9] High Level Application Development with Elua (Daniel...
 
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
[E-Dev-Day-US-2015][8/9] he EFL API in Review (Tom Hacohen)
 
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
[E-Dev-Day-US-2015][6/9] Wayland - What's up upstream? (Bryce Harrington)
 

Recently uploaded

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

Recently uploaded (20)

The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 

[KOR][E-Kor-Seminar 2014][2/8] Webkit EFL (Ryuan)

  • 1. ewebkit intro, internal and ewebkit extension ryuan.choi (최병운)
  • 2. content ● Introduction of ewebkit ● Tutorials ● Internals ● ewebkit extension ● Information, links
  • 3. ewebkit webkit based rendering engine for EFL. TIZEN(2.x) uses ewebkit. current version of ewebkit : 1.11 WebKit2 multi process architecture.
  • 4. ewebkit - features - Many HTML5 features - INDEXED DATABASE(X) - Accelerated compositing - Viewport meta tag - Fixed Layout - Touch event - UI Side compositing
  • 5. ● Source code ○ Latest : git://git.webkit.org/WebKit.git ○ Stable : git@github.com:ewebkit/webkit.git http://download.enlightenment.org/rel/libs/webkit-efl/ ● Document : http://ewebkit.github.io/ewebkit-doc ● Samples : git@github.com:ewebkit/samples.git ● IRC(FreeNode) : #webkit-efl , #webkit-kr ● Mailing list : webkit-efl@lists.webkit.org ○ https://lists.webkit.org/mailman/listinfo/webkit-efl ● Wiki : http://trac.webkit.org/wiki/EFLWebKit ewebkit
  • 6. EFL(evas, ecore, …) ewebkit vs elm_web Elementary ewebkit ● elm_web is optional winset of Elementary ○ ./autogen.sh --with-elementary-web-backend=ewebkit2 ● TIZEN does not use elm_web yet. elm_web use EFL(evas, ecore, …) Elementary ewebkit use <open source> <TIZEN>
  • 7. How to build/install ewebkit # Download source code wget http://download.enlightenment.org/rel/libs/webkit-efl/ewebkit-1.11.0.tar.xz tar xvJf ewebkit-1.11.0.tar.xz # extract from archieve cd ewebkit # move to the root directory of souce code. mkdir build && cd build cmake .. -DPORT=Efl -DENABLE_BATTERY_STATUS=OFF - DCMAKE_INSTALL_PREFIX=/usr/elocal make -j8 && sudo make install
  • 8. Tutorial - first example // gcc simple_load_elm.c `pkg-config --cflags --libs elementary ewebkit2` #include <Elementary.h> #include <EWebKit2.h> EAPI_MAIN int elm_main(int argc, char *argv[]) { ewk_init(); Evas_Object* win = elm_win_add(NULL, "sample", ELM_WIN_BASIC); elm_win_title_set(win, "sample"); ... Evas_Object* bg = elm_bg_add(win); ... Evas_Object *ewk = ewk_view_add(evas_object_evas_get(win)); evas_object_smart_callback_add(ewk, "load,progress", progress_cb, NULL); ewk_view_url_set(ewk, "http://bunhere.tistory.com"); evas_object_resize(ewk, 400, 400); evas_object_move(ewk, 0, 0); evas_object_show(ewk); elm_run(); ewk_shutdown(); } ELM_MAIN() # ps -ef | grep a.out ryuan 23281 13874 0 23:01 pts/22 00:00:00 ./a.out ryuan 23373 23304 0 23:01 pts/24 00:00:00 grep --color=auto a.out # ps -ef | grep WebPr ryuan 23286 23281 0 23:01 pts/22 00:00:00 /usr/elocal/bin/WebProcess 25 ryuan 23377 23304 0 23:01 pts/24 00:00:00 grep --color=auto WebPr https://github.com/ewebkit/samples/blob/master/samples/ewebkit/simple_load_elm.c
  • 9. Major objects ● ewk_view (evas object) ○ view object to load and draw web contents. ○ based on smart object. ● Ewk_Context (Ewk_Object) ○ Instance to represent and control processes. ○ Each context only creates each web process. ● Ewk_Page_Group (Ewk_Object) ○ Instance to represent and control session. ● Ewk_Settings
  • 10. Major objects Application ewk_context #1 ewk_page_group #1 ewk_context #2 ewk_page_group #2 ewk_page_group #3 ewk_view #1 ewk_view #2 ewk_view #3 ewk_view #4 WebProcess #1 WebProcess #2
  • 11. Ewk_Object ● Almost ewk objects are based on Ewk_Object ● Ewk_Object is just simple smart pointer. ● There are two APIs to control the life of objects ○ ewk_object_ref ○ ewk_object_unref
  • 12. Tutorial 2 - window.alert() static void on_javascript_alert(Ewk_View_Smart_Data *smartData, const char *message) { … } EAPI_MAIN int elm_main(int argc, char *argv[]) { … // Evas_Object* ewk = ewk_view_add(evas_object_evas_get(win)); static Ewk_View_Smart_Class ewk_view_class = EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION ("SimpleEwkClass"); ewk_view_smart_class_set(&ewk_view_class); ewk_view_class.run_javascript_alert = on_javascript_alert; Evas_Smart *smart = evas_smart_class_new(&ewk_view_class.sc); Evas_Object *ewk = ewk_view_smart_add(evas_object_evas_get(g_win), smart, ewk_context_default_get(), ewk_page_group_create(NULL)); // theme path should be calculated via “pkg-config --variable=datadir ewebkit2” ewk_view_theme_set(ewk, "/usr/share/ewebkit2-1/themes/default.edj"); // ewk_view_url_set(ewk, "http://bunhere.tistory.com"); ewk_view_html_string_load(ewk, "<!doctype html><body><input type=button onclick="window.alert('hello');"></body>", NULL, NULL); ... } ELM_MAIN()https://github.com/ewebkit/samples/blob/master/samples/ewebkit/simple_popup.c
  • 14. Internals Read How browsers work (korean) webcore javascript core EFL, cairo, libsoup, gstreamer, ... ewebkit html, css, js DOM Tree Render Tree Render Layer Tree Graphics Layer Tree Page
  • 15. Internals - WebKit2 Multi process architecture WebProcess UIProcess webcoreJSC WebPage DrawingArea WebPagePr oxy DrawingArea Proxy IPC IPC WebProcess WebProcess Proxy WK Interface ewk interface WebContext WorkQueue WorkQueue NetworkProcess ...
  • 16. Internals - ewk_view WebView EwkViewWKView ewk_view(evas_object) Ewk_View_Smart_Class Ewk_View_Smart_Data Evas_Smart_Class evas_image Evas_GL WebPageProxy WKPage
  • 17. Internals - Coordinated Graphics http://trac.webkit. org/wiki/CoordinatedGraphicsSyste m
  • 18. Internals - Coordinated Graphics ● WebProcess draws the render tree. ○ Into not one surface but multiple layers. (Accelerated compositing) ○ Each layers also consist of multiple tiles. (Tiled BackingStore) ○ Tile memory and layer states are shared between UIProcess and WebProcess. ● UIProcess composite layers.(UI side compositing) ○ UIProcess ‘can’ scroll/scale the layers.
  • 19. ewebkit extension ewebkit-extension is simple interface to inject user’ s shared objects to WebProcess for the extension such as javascript binding. Plan to add it into release 1.13
  • 20. libewebkit2.so ewebkit extension WebProcess UIProcess webcoreJSC WebPage DrawingArea WebPagePr oxy DrawingArea Proxy IPC IPC WebProcess WebProcess Proxy WK Interface ewk interface WebContext WorkQueue WorkQueue Injected Bundle libewebkit_extension_manager.so extension.so applicationextension.so WK Interface ewk interface JSC interface
  • 21. Information, links ● source code ○ Development : http://www.webkit.org/building/checkout. html ○ Release : https://github.com/ewebkit/webkit ● doxygen ○ http://ewebkit.github.io/ewebkit-doc/ewebkit2/html/ ● samples ○ https://github.com/ewebkit/samples ● simple browser ○ https://github.com/bunhere/elbow
  • 22. Information, links ● http://trac.webkit.org/wiki/EFLWebKit ● http://trac.webkit. org/wiki/CoordinatedGraphicsSystem