By The Fully Optimized eXperience (FOX) James Brereton - 06069736 Katie Tanner - 06060472 Gordon Krull - 06003108 Rob Staalduinen - 06009513.

Slides:



Advertisements
Similar presentations
Introduction to HTML & CSS
Advertisements

CHAPTER 15 WEBPAGE OPTIMIZATION. LEARNING OBJECTIVES How to test your web-page performance How browser and server interactions impact performance What.
Cascading Style Sheets
Strategies For Creating Accessible University Webpages Scot Close and Neil Torrefiel Web Services Unit San Jose State University.
Italian C++ Community Chromium as a framework Raffaele Intorcia Tiziano Cappellari.
Objective Understand web-based digital media production methods, software, and hardware. Course Weight : 10%
Concrete Architecture of Firefox 2 Team One July 6, 2007 Team One July 6, 2007.
© 2007 IBM Corporation IBM Emerging Technologies Enabling an Accessible Web 2.0 Becky Gibson Web Accessibility Architect.
CM143 - Web Week 2 Basic HTML. Links and Image Tags.
Page 1 Building Reliable Component-based Systems Chapter 18 - A Framework for Integrating Business Applications Chapter 18 A Framework for Integrating.
HCI 201 Week 5 Loose Ends. Agenda Image stuff Image stuff File stuff File stuff Bandwidth Bandwidth UNIX UNIX HTML HTML Design elements Design elements.
Topics in this presentation: The Web and how it works Difference between Web pages and web sites Web browsers and Web servers HTML purpose and structure.
Conceptual Architecture of Firefox 6.0 Rob Staalduinen Katie Tanner Gordon Krull James Brereton By Fully Optimized.
Design Patterns academy.zariba.com 1. Lecture Content 1.What are Design Patterns? 2.Creational 3.Structural 4.Behavioral 5.Architectural 6.Design Patterns.
Using Cascading Style Sheets (CSS) Dept. of Computer Science and Computer Information CSCI N-100.
Conceptual Architecture of PostgreSQL PopSQL Andrew Heard, Daniel Basilio, Eril Berkok, Julia Canella, Mark Fischer, Misiu Godfrey.
LEARN THE QUICK AND EASY WAY! VISUAL QUICKSTART GUIDE HTML and CSS 8th Edition Chapter 2: Working with Webpage Files.
Basic Web Design. Technology is a tool  FIRST, understand how people actually interact with each other and with the information in their lives, in all.
Networking Nasrullah. Input stream Most clients will use input streams that read data from the file system (FileInputStream), the network (getInputStream()/getInputStream()),
4.1 JavaScript Introduction
Samuvel Johnson nd MCA B. Contents  Introduction to Real-time systems  Two main types of system  Testing real-time software  Difficulties.
Yahoo! User Interface (YUI) Library Natly Mekdara.
Web Browsers And Mobile Web Browsers. Guiding Questions What is a mobile Web browser? Why do Web pages look differently on different Web browsers? What.
Web-Enabled Decision Support Systems
An Introduction to Software Architecture
The Internet and the World Wide Web. The Internet A Network is a collection of computers and devices that are connected together. The Internet is a worldwide.
JQUERY | INTRODUCTION. jQuery  Open source JavaScript library  Simplifies the interactions between  HTML document, or the Document Object Model (DOM),
Internet Web Publishing III. Intro to Cascading Style Sheets Patricia Roberts.
INTRODUCTION TO JAVASCRIPT AND DOM Internet Engineering Spring 2012.
Embedded Software SKKU 28 1 WebKit/EFL. Embedded Software SKKU 28 2 WebKit Parsing Layout and Painting WebKit and EFL Contents.
An Introduction to JavaScript Summarized from Chapter 6 of “Web Programming: Building Internet Applications”, 3 rd Edition.
WEB BASED DATA TRANSFORMATION USING XML, JAVA Group members: Darius Balarashti & Matt Smith.
Conceptual Architecture of Mozilla Firefox (version ) Jared Haines Iris Lai John,Chun-Hung,Chiu Josh Fairhead June 5, 2007.
Copyright © Osmosys O S M O S Y SO S M O S Y S D e p l o y i n g E x p e r i e n c e & E x p e r t i s e™ HTML Training.
Facade Introduction. Intent Provide a unified interface to a set of interfaces in a subsystem. Facade defines a higher-level interface that makes the.
1 Overview of XSL. 2 Outline We will use Roger Costello’s tutorial The purpose of this presentation is  To give a quick overview of XSL  To describe.
DATABASE MANAGEMENT SYSTEM ARCHITECTURE
Concrete Architecture of Mozilla Firefox (version ) Iris Lai Jared Haines John,Chun-Hung,Chiu Josh Fairhead July 06, 2007.
Browser Bugs & Validation SIPB Introduction to Web Design Wednesday, January 20th Jonté Craighead & Cathy Zhang.
PERFORMANCE ENHANCEMENT IN ASP.NET By Hassan Tariq Session #1.
Chapter 4 Applets Cop Why Applets? WWW makes huge information available to anyone with web browser. Web server send web pages and images to your.
Concrete Architecture of PostgreSQL. Overview – Derivation Process – Conceptual Architecture Revisited – High Level Conceptual Dependencies – High Level.
XML A Language Presentation. Outline 1. Introduction 2. XML 2.1 Background 2.2 Structure 2.3 Advantages 3. Related Technologies 3.1 DTD 3.2 Schemas and.
Chapter 1 Introduction. Chapter 1 -- Introduction2  Def: Compiler --  a program that translates a program written in a language like Pascal, C, PL/I,
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
TK2023 Object-Oriented Software Engineering CHAPTER 8 LOGICAL ARCHITECTURE.
 Web pages originally static  Page is delivered exactly as stored on server  Same information displayed for all users, from all contexts  Dynamic.
Rendering Syndicated Library Content in an Institutional Portal: Integrating MyLibrary into uPortal John Fereira: Cornell University Eric Lease Morgan:
JavaScript Introduction and Background. 2 Web languages Three formal languages HTML JavaScript CSS Three different tasks Document description Client-side.
Web Technology (NCS-504) Prepared By Mr. Abhishek Kesharwani Assistant Professor,UCER Naini,Allahabad.
1 Introduction to Web Application Review. 2 Five Layers Architecture HTML, CSS, Java Script ASP.net User ’ s.dll, Nunit, Web Services ADO.net SQL Server,
Flux & React Web Application Development Mark Repka, Rich McNeary, Steve Mueller.
Building KFS using KNS Presented by James SmithJustin Beltran University of ArizonaUniversity of California, Irvine.
Rendering XML Documents ©NIITeXtensible Markup Language/Lesson 5/Slide 1 of 46 Objectives In this session, you will learn to: * Define rendering * Identify.
INTRODUCING HYBRID APP KAU with MICT PARK IT COMPANIES Supported by KOICA
XML & JSON. Background XML and JSON are to standard, textual data formats for representing arbitrary data – XML stands for “eXtensible Markup Language”
Introduction to WebKit Girish Ramakrishnan. History
Introduction to Internet Programming (Web Based Application)
Getting Started with CSS
Web App vs Mobile App.
Un</br>able’s MySecretSecrets
.NET and .NET Core 7. XAML Pan Wuming 2017.
Introduction to Web Page Design
Introduction to JavaScript
Objective Understand web-based digital media production methods, software, and hardware. Course Weight : 10%
An Introduction to Software Architecture
The Islamia University Bahawalpur
Introduction to Web Application Design
Introduction to AJAX and JSON
Presentation transcript:

By The Fully Optimized eXperience (FOX) James Brereton Katie Tanner Gordon Krull Rob Staalduinen

1. Introduction 2. Derivation of Concrete Architecture 3. Conceptual vs. Concrete 4. Concrete Architecture Overview ◦ Document Parser ◦ Content Model ◦ Style System ◦ Frame Constructor ◦ Platform Specific Rendering and Widgets 5. Updated use case diagram 6. Limitations 7. Lessons Learned 8. Summary

 Gecko primarily acts as the browser and rendering engine for Firefox  It is responsible for parsing and compiling data received from Necko and rendering the webpage at the user’s request  The overall architecture of the Gecko subsystem is an object-oriented

 Our conceptual architecture of Firefox, created in the first deliverable of the project, acted as a starting point for our concrete architecture  We then began looking at the source files using lsedit and sorted files and folders into subsystem entities  We then examined unexpected dependencies to derive their root causes using lsedit and by viewing the source code  We attempted to determine if dependencies were caused by a misplaced file or were an inherent dependency within Gecko

 Removal of Image Library subsystem ◦ While moving files and looking for the contents of our entities, it became apparent that while documentation references an image library, actual tasks of uploading handling image data are handled by other subsystems  Many more internal dependencies

 Unexpected Dependencies (Internal) ◦ Content Model  The HTML Parser needs access to HTML form constants and processes  Access to nsEventStates.h in order to inform the content model of any Html changes within the parser.  Unexpected Dependencies (External) ◦ Display Backend  The Display Backend calls HTML5Parser.cpp and HTML5StreamParser.cpp to retrieve HTML 5 data ◦ UI Layer  UI Layer takes HTML code and converts it to plain text (nsScriptableUnescapeHTML.cpp)

 Unexpected Dependencies (Internal) ◦ Frame Constructor  nsTreeUtils.cpp and nsTreeContentView.cpp, used for reading and interpreting the DOM Tree ◦ Platform Specific Rendering and Widgets  PuppetWidget.cpp  Allows for widgetless rendering, acts as a place holder widget when no widgets are involved  nsAndroidBridge.cpp and nsAppShell.cpp  When creating the DOM tree on the Android platform, if the web browser needs access to the GPS and other Hardware Functionality

 Unexpected Dependencies (Internal) ◦ Content Model  Contains a large number of Style Rules and interfaces which are called on by nsCSSRuleProcessor.cpp ◦ Frame Constructor  Contains a large number of CSS objects, but files such as nsBlockFrame.cpp and nsIScrollableFrame.cpp are also used by the Style System in the CSS Rendering Process ◦ Platform-Specific Rendering and Widgets  The style system’s StyleConsts.h file depends on various “Look and Feel” objects related to platform- specific rendering

 Unexpected Dependencies (External) ◦ UI Layer  Dependency on nsXULWindow.cpp ◦ Display Backend  The Style System depends on files for dealing with Font Metrics, and the display backend relies on the style system for font constants to avoid duplicated code ◦ SpiderMonkey  The Style System Depends on SpiderMonkey for fetching CSS properties (nsCSSPropertiesQS.h)

 Unexpected Dependencies (Internal) ◦ Document Parser  nsHTMLParts.h calls nsHTMLContentSink.cpp - nsHTMLParts retrieves HTML data from the content sink used for the content model for additional frame- state bits used by the Frame Constructor ◦ Platform Specific Widgets  Contains a large number of widgets such as nsIPluginWidget.cpp for mac-specific frame rendering, and nsNativeWidget.cpp which deals with platform- specific rendering

 Unexpected Dependencies (External) ◦ Necko  Depends on frame constructor for handling URIs and Input/Output streams (nsNetUtil.h)  Frame Constructor depends on Necko when secure browsing (nsSecureBrowserUIMPL.cpp) ◦ UI Layer  Toolkit file nsAppRunner.cpp depends on Frame Constructor  Frame constructor depends on XPFE when dealing with XUL

 Unexpected Dependencies (Internal) ◦ Style System  nsNativeTheme.cpp and nsNativeThemeWin.cpp call upon nsStyleStruct.h for internal style rules, and “Look and Feel” widgets call upon StyleConsts.h ◦ Content Model  PuppetWidget.ccp calls TabChild.ccp  Comment inside PuppetWidget.h:  // TabChild normally holds a strong reference to this PuppetWidget //or its root ancestor, but each PuppetWidget also needs a reference // back to TabChild (e.g. to delegate nsIWidget IME calls to chrome) // So we hold a weak reference to TabChild (PBrowserChild) here. // Since it's possible for TabChild to outlive the PuppetWidget, // we clear this weak reference in Destroy()

 Unexpected Dependencies (External) ◦ Android-specific rendering files created a few unexpected dependencies external to Gecko  i.e., a dependency on Necko: Android Bridge depends on nsOSHelperAppService.cpp in the uriloader folder for Android  Security and networking files in Necko specific to Android also depend on the Android Bridge file ◦ Widget support files depend on nsAppShellCID.h in the UI layer (XPFE folder)

 As a result of rapid evolution, there is little documentation and comments in the source code are often not informative or non- existent ◦ Additionally, file naming conventions were not useful in determining which subsytem a file belonged to  Difficult to collaborate effectively because changes to the architecture in lsedit could only be reflected on one instance of the file

 Meaningful comments are crucial to the understanding of the functionality of and relations between files and subsystems  Although we initially assumed that the data flow and purpose of each subsystem would be clearly defined, we found that subsystems contained files that were called beyond their initial scope, resulting in unexpected dependencies

 Our derived concrete architecture for Gecko consists of a object-oriented style of architecture containing 5 subsytems, one less than our conceptual architecture  Although Gecko generally implements the object-oriented style that we expected, its derived dependencies reveal higher complexity than expected  The concrete architecture of Gecko contained many dependencies we did not expect when deriving our conceptual architecture. We believe that most of these exist for reasons of expediency, but this was difficult to determine for sure due to missing or unclear documentation. ◦ We derived unexpected dependencies both within Gecko and external to it.  Our derivation was limited due to poor documentation

    Basics Basics    archive.mozilla.org/newlayout/doc/layout /master.xhtml archive.mozilla.org/newlayout/doc/layout /master.xhtml   central/widget/src/xpwidgets/PuppetWidget.h.html central/widget/src/xpwidgets/PuppetWidget.h.html