SlideShare a Scribd company logo
1 of 39
Download to read offline
Wekkit & chromium
Pierr Chen
13年5月2日星期四
webkit
webkit
webcore
JavaScriptCore
13年5月2日星期四
13年5月2日星期四
how webpage is
displayed
13年5月2日星期四
layer
13年5月2日星期四
layer created when
It's the root object for the page
• It has explicit CSS position properties (relative, absolute or a
transform)
• It is transparent
• Has overflow, an alpha mask or reflection
• Has a CSS filter
• Corresponds to <canvas> element that has a 3D (WebGL) context or an
accelerated 2D context
• Corresponds to a <video> element
13年5月2日星期四
Trees
13年5月2日星期四
Rendering Path
from back layer to font layer
for each layer, start from the root renderObject ,
traversal down to the child object and stop at
object that belong to another layer
draw by using GraphicContext ,generating a bitmap
13年5月2日星期四
from wekkit to screen
(SW path)
13年5月2日星期四
HW compositor
client = render process
13年5月2日星期四
reference
http://www.youtube.com/watch?v=RVnARGhhs9w (rendering in wekkit)
http://www.charlesbryant.com/index.php/342/yo-check-my-reflow/
http://www.youtube.com/watch?v=JFzC_Gx76E8&feature=relmfu (chromium webkit API)
http://www.youtube.com/watch?v=xuMWhto62Eo (webkit in your living room - netflix)
http://blog.csdn.net/spacetiller/article/details/5784475
http://www.chromium.org/developers/design-documents/gpu-accelerated-compositing-in-
chrome
http://www.chromium.org/developers/design-documents/graphics-and-skia
13年5月2日星期四
chrome overview
--- Qian Qian de
13年5月2日星期四
misc
13年5月2日星期四
process model
process-per-site-instance (site+tab)
process-per-site (site)
process-per-tab (tab)
single process (whatever)
13年5月2日星期四
multiprocess architecture
13年5月2日星期四
Browser process
13年5月2日星期四
renderViewHost
// A RenderViewHost is responsible for creating and talking to a RenderView
// object in a child process. It exposes a high level API to users, for things
// like loading pages, adjusting the display and other browser functionality,
// which it translates into IPC messages sent over the IPC channel with the
// RenderView. It responds to all IPC messages sent by that RenderView and
// cracks them, calling a delegate object back with higher level types where
// possible.
//
// The intent of this interface is to provide a view-agnostic communication
// conduit with a renderer. This is so we can build HTML views not only as
// WebContents (see WebContents for an example) but also as views, etc.
13年5月2日星期四
RenderViewHostImpl(.h)
// This implements the RenderViewHost interface that is exposed to
// embedders of content, and adds things only visible to content.
//
// The exact API of this object needs to be more thoroughly designed. Right
// now it mimics what WebContentsImpl exposed, which is a fairly large API and
// may contain things that are not relevant to a common subset of views. See
// also the comment in render_view_host_delegate.h about the size and scope of
// the delegate API.
//
// Right now, the concept of page navigation (both top level and frame) exists
// in the WebContentsImpl still, so if you instantiate one of these elsewhere,
// you will not be able to traverse pages back and forward. We need to determine
// if we want to bring that and other functionality down into this object so it
// can be shared by others.
????????
13年5月2日星期四
RenderViewHostDelegate
//
// RenderViewHostDelegate
//
// An interface implemented by an object interested in knowing about the state
// of the RenderViewHost.
//
// This interface currently encompasses every type of message that was
// previously being sent by WebContents itself. Some of these notifications
// may not be relevant to all users of RenderViewHost and we should consider
// exposing a more generic Send function on RenderViewHost and a response
// listener here to serve that need.
13年5月2日星期四
RenderThread
// The RenderThreadImpl class represents a background thread where RenderView
// instances live. The RenderThread supports an API that is used by its
// consumer to talk indirectly to the RenderViews and supporting objects.
// Likewise, it provides an API for the RenderViews to talk back to the main
// process (i.e., their corresponding WebContentsImpl).
//
// Most of the communication occurs in the form of IPC messages. They are
// routed to the RenderThread according to the routing IDs of the messages.
// The routing IDs correspond to RenderView instances.
13年5月2日星期四
RenderView(Impl.h)
//
// RenderView is an object that manages a WebView object, and provides a
// communication interface with an embedding application process
//
13年5月2日星期四
IPC
a named pipe is created for each render process
for communication with the browser process
13年5月2日星期四
the render process
Each renderer has two threads ,The render thread is where the main objects such as the
RenderView and all WebKit code run. When it communicates to the browser, messages are
first sent to the main thread, which in turn dispatches the message to the browser process.
13年5月2日星期四
layers
13年5月2日星期四
WebKit: Rendering engine.The Port is a part of WebKit that integrates
with platform dependent system services such as resource loading and
graphics.
• Glue: Converts WebKit types to Chromium types. This is our "WebKit
embedding layer." It is the basis of two browsers, Chromium, and
test_shell (which allows us to test WebKit).
• Renderer / Render host: This is Chromium's "multi-process
embedding layer." It proxies notifications and commands across the
process boundary.
• WebContents: A reusable component that is the main class of the
Content module. It's easily embeddable to allow multiprocess rendering
of HTML into a view.
• TabContentWrapper: Contains a single WebContents, and is the
connection point for all the additions ("TabHelpers") that Chrome
wants to keep in 1:1 relation with the WebContents.
• Browser: Represents the browser window, it contains multiple
TabContentsWrappers.
13年5月2日星期四
Chrome-specific code are provided in platform-specific
source files that live in platform/graphics/chromium.
13年5月2日星期四
build android
http://code.google.com/p/chromium/wiki/
AndroidBuildInstructions
cd $SRC; sudo ./install_build-deps-andriod.sh
. build/android/envsetup.sh
android_gyp
sudo make -j4 content_shell_apk
sudo make -j4 //多编译chrome下面⼀一些东西和unittest
13年5月2日星期四
build system
.gyp/.gypi
.mk
gyp
antgcc
.so .jar/.apk
each target in the gyp will
generate a mk file
.mk.mk.mk
make
13年5月2日星期四
gyp
generate your project
13年5月2日星期四
ant
13年5月2日星期四
adb shell am start -a android.intent.action.VIEW -n
org.chromium.content_shell/.ContentShellActivity -d "www.html5test.com"
Content Shell .apk on Android
make -j4 content_shell_apk
adb install -r ContentShell-debug.apk
app_148 24364 109 546084 53448 ffffffff 00000000 S org.chromium.content_shell
app_148 24391 109 555500 68540 ffffffff 00000000 S org.chromium.content_shell:sandboxed_process0
13年5月2日星期四
content_shell_apk
content.gyp:content_java
copy_and_strip_so ant xxx
shell/android/*.java
shell/res/*
lib.java/chromium_base.jar
lib.java/chromium_content.jar
lib.java/chromium_media.jar
lib.java/chromium_net.jar
libcontent_shell_content_view.so
common_aidl
libcontent_shell_content_view
action
target
1
2
3
make content_shell_apk
depend
net.gyp:net_java
base.gyp:base_java
content_common
content shell apk
java
native
java
13年5月2日星期四
content_shell_content_view
.so
content_shell_jni_
header
conent_shell_pak
content_shell_lib
.a
content_render
1
xxx
target name in gyp
./content
+port/browser
+public/browser
+browser
content_plugincontent_utility
content_worker
shell
depend
cotent_browser(.a) lots of ...(.a)
depend
link all the .a
check libcontent_shell_content_view.target.mk
search (OBJS) ,around line 201
$(obj).target = src/out/Debug/obj.target
your could rm the library then
make -j4 libwebkit
$(obj).target/third_party/WebKit/Source/WebKit/chromium/libwebkit.a
make libcontent_shell_content_view
13年5月2日星期四
chrome_xx.jar
lib.java/chromium_base.jar
lib.java/chromium_content.jar
lib.java/chromium_media.jar
lib.java/chromium_net.jar
base/base_java.target.mk
content/content_java.target.mk
media/media_java.target.mk
net/net_java.target.mk
build/android/ant/ant.xml
build/android/ant/chromium-jars.xml
use
base/android/java/*.java
2
13年5月2日星期四
chrome/
android_webview
Webview            <--android
WebiewProvider   <--android
AwContents        <----chrome/android_webview
CotentViewCore   <---chrome/content
13年5月2日星期四
jni_generator
1. out/Debug/obj/gen/content/shell/jni/ShellManager_jni.h
2. content/shell/android/shell_manager.cc
3. content/shell/android/java/src/org/chromium/content_shell/ShellManager.java
4. out/Debug/obj/gen/content/shell/jni/ContentViewCore_jni.h
5. content/browser/android/content_view_core_impl.cc
6. content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
4,5 -> libcontent_browser.a
3,6 -> chromium_content.jar
1,2 -> libcontent_shell_content_view.so(*)
*libcontent_shell_content_view.so depend
on libcontent_browser.a , so 4,5 are
consisted in the .so as well.
~/chromium/src/base/android/jni_generator
13年5月2日星期四
content android native
app
common
browser
13年5月2日星期四
Gesture handling
Recognizing use framework GestureDetector
and ScaleGestureDetector
handling in the native (CContentViewCore)
ContentViewGustureHandler
ContentViewGustureHandler.MotionEventDelegate
ZoomManager
13年5月2日星期四
reference
http://www.chromium.org/developers/design-documents/gpu-accelerated-compositing-in-chrome
http://www.ericdlarson.com/misc/chrome_command_line_flags.html
13年5月2日星期四

More Related Content

What's hot

What's hot (19)

Chromium ui framework(shared)
Chromium ui framework(shared)Chromium ui framework(shared)
Chromium ui framework(shared)
 
LCU14 208- Chromium-Blink Migration for RDK
LCU14 208- Chromium-Blink Migration for RDKLCU14 208- Chromium-Blink Migration for RDK
LCU14 208- Chromium-Blink Migration for RDK
 
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
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
 
Nuxeo WebEngine: a practical introduction
Nuxeo WebEngine: a practical introductionNuxeo WebEngine: a practical introduction
Nuxeo WebEngine: a practical introduction
 
Hardware Acceleration in WebKit
Hardware Acceleration in WebKitHardware Acceleration in WebKit
Hardware Acceleration in WebKit
 
Architecture of the Web browser
Architecture of the Web browserArchitecture of the Web browser
Architecture of the Web browser
 
Web browser architecture
Web browser architectureWeb browser architecture
Web browser architecture
 
Lessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and BlinkLessons from Contributing to WebKit and Blink
Lessons from Contributing to WebKit and Blink
 
Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)Chromium on Wayland Desktop (BlinkOn 7)
Chromium on Wayland Desktop (BlinkOn 7)
 
Building a Browser for Automotive: Alternatives, Challenges and Recommendations
Building a Browser for Automotive: Alternatives, Challenges and RecommendationsBuilding a Browser for Automotive: Alternatives, Challenges and Recommendations
Building a Browser for Automotive: Alternatives, Challenges and Recommendations
 
How Browser Works?
How Browser Works?How Browser Works?
How Browser Works?
 
Cache in Chromium: Disk Cache
Cache in Chromium: Disk CacheCache in Chromium: Disk Cache
Cache in Chromium: Disk Cache
 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWA
 
Chromium wayland
Chromium waylandChromium wayland
Chromium wayland
 
Bootstrap Jump Start
Bootstrap Jump StartBootstrap Jump Start
Bootstrap Jump Start
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
 
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPagesBP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
BP206 It's Not Herculean: 12 Tasks Made Easier with IBM Domino XPages
 
WPE WebKit for Android
WPE WebKit for AndroidWPE WebKit for Android
WPE WebKit for Android
 

Viewers also liked

WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
Igalia
 
Chrom works introduction
Chrom works   introductionChrom works   introduction
Chrom works introduction
Soo Kim
 
Surface flingerservice(서피스 출력 요청 jb)
Surface flingerservice(서피스 출력 요청 jb)Surface flingerservice(서피스 출력 요청 jb)
Surface flingerservice(서피스 출력 요청 jb)
fefe7270
 

Viewers also liked (19)

Android things intro
Android things introAndroid things intro
Android things intro
 
Overview of Brillo (Android Things)
Overview of Brillo (Android Things)Overview of Brillo (Android Things)
Overview of Brillo (Android Things)
 
Webkit Chromium Contribution Process
Webkit Chromium Contribution ProcessWebkit Chromium Contribution Process
Webkit Chromium Contribution Process
 
Developing and Testing Industrial Hardware With QEMU (LinuxCon Europe 2012)
Developing and Testing Industrial Hardware With QEMU (LinuxCon Europe 2012)Developing and Testing Industrial Hardware With QEMU (LinuxCon Europe 2012)
Developing and Testing Industrial Hardware With QEMU (LinuxCon Europe 2012)
 
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
WebKit Clutter Port Present and Future; WebKitGtk Status and Roadmap to WebKi...
 
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...
 
Chrom works introduction
Chrom works   introductionChrom works   introduction
Chrom works introduction
 
Compiling and Optimizing Your Own Browser with WebKit
Compiling and Optimizing Your Own Browser with WebKitCompiling and Optimizing Your Own Browser with WebKit
Compiling and Optimizing Your Own Browser with WebKit
 
Skia & Freetype - Android 2D Graphics Essentials
Skia & Freetype - Android 2D Graphics EssentialsSkia & Freetype - Android 2D Graphics Essentials
Skia & Freetype - Android 2D Graphics Essentials
 
LCE13: Android Graphics Upstreaming
LCE13: Android Graphics UpstreamingLCE13: Android Graphics Upstreaming
LCE13: Android Graphics Upstreaming
 
Overview of Brillo and Weave
Overview of Brillo and WeaveOverview of Brillo and Weave
Overview of Brillo and Weave
 
Chromium vs. Firefox
Chromium vs. FirefoxChromium vs. Firefox
Chromium vs. Firefox
 
BKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack UpdateBKK16-315 Graphics Stack Update
BKK16-315 Graphics Stack Update
 
Surface flingerservice(서피스 출력 요청 jb)
Surface flingerservice(서피스 출력 요청 jb)Surface flingerservice(서피스 출력 요청 jb)
Surface flingerservice(서피스 출력 요청 jb)
 
How browser work
How browser workHow browser work
How browser work
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depth
 
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspectiveAndroid graphic system (SurfaceFlinger) : Design Pattern's perspective
Android graphic system (SurfaceFlinger) : Design Pattern's perspective
 
Android internals 07 - Android graphics (rev_1.1)
Android internals 07 - Android graphics (rev_1.1)Android internals 07 - Android graphics (rev_1.1)
Android internals 07 - Android graphics (rev_1.1)
 
Hardware Accelerated 2D Rendering for Android
Hardware Accelerated 2D Rendering for AndroidHardware Accelerated 2D Rendering for Android
Hardware Accelerated 2D Rendering for Android
 

Similar to Chrome & Webkit overview

Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master Class
Spike Brehm
 

Similar to Chrome & Webkit overview (20)

Building reusable components as micro frontends with glimmer js and webcompo...
Building reusable components as micro frontends  with glimmer js and webcompo...Building reusable components as micro frontends  with glimmer js and webcompo...
Building reusable components as micro frontends with glimmer js and webcompo...
 
Introduction to html5
Introduction to html5Introduction to html5
Introduction to html5
 
Html5 - Awesome APIs
Html5 - Awesome APIsHtml5 - Awesome APIs
Html5 - Awesome APIs
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | Introduction
 
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
 
Vijay Oscon
Vijay OsconVijay Oscon
Vijay Oscon
 
Transforming the web into a real application platform
Transforming the web into a real application platformTransforming the web into a real application platform
Transforming the web into a real application platform
 
Chapter 1
Chapter 1Chapter 1
Chapter 1
 
Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master Class
 
Portfolio
PortfolioPortfolio
Portfolio
 
Flex Remoting With WebORB v1.0
Flex Remoting With WebORB v1.0Flex Remoting With WebORB v1.0
Flex Remoting With WebORB v1.0
 
Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]
 
DevCon5 (July 2014) - Acision SDK
DevCon5 (July 2014) - Acision SDKDevCon5 (July 2014) - Acision SDK
DevCon5 (July 2014) - Acision SDK
 
MyMobileWeb Certification Part I
MyMobileWeb Certification Part IMyMobileWeb Certification Part I
MyMobileWeb Certification Part I
 
sveltekit-en.pdf
sveltekit-en.pdfsveltekit-en.pdf
sveltekit-en.pdf
 
soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5soft-shake.ch - Introduction to HTML5
soft-shake.ch - Introduction to HTML5
 
HPC Cloud Burst Using Docker
HPC Cloud Burst Using DockerHPC Cloud Burst Using Docker
HPC Cloud Burst Using Docker
 
Building Killer RESTful APIs with NodeJs
Building Killer RESTful APIs with NodeJsBuilding Killer RESTful APIs with NodeJs
Building Killer RESTful APIs with NodeJs
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
 

Recently uploaded

Recently uploaded (20)

Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
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...
 
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
 
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 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...
 
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
 
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 🔝✔️✔️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
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 ...
 
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
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
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 🔝✔️✔️
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 

Chrome & Webkit overview