Coder Social home page Coder Social logo

scamper's Introduction

Scamper Web Browser Build Status

Scamper is a Web Browser for the Squeak enviroment.

Installation

  1. Drag the SAR file scamper.sar into Squeak, choose "Install SAR".
  2. Run Scamper install in the Workspace.

Using Scamper

There are several ways to open Scamper:

  • Open Scamper by running Scamper open in the Workspace. The default page will be shown.
  • Run Scamper openOnUrl: 'http://google.com' asUrl in the Workspace with any given URL, e.g. http://google.com.

or simply

  • Open Scamper via Apps. The default page will be shown.

scamper's People

Contributors

andreasburmeister avatar anjoss avatar codezeilen avatar fniephaus avatar gittihab avatar jenniferstamm avatar konstantinjdobler avatar kris-fillip avatar leonardlang avatar mlichtblau avatar mrserth avatar pfischbeck avatar rs22 avatar steditor avatar wgierke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

scamper's Issues

Add line-height support

Text elements should support the line-height attribute.

Has to cooperate with font-size rendering, see #99

Add CSS box model rendering

Contents in websites should have correct borders, margins and paddings as well as a correct size.

Contains support and tests for:

  • display block
  • display inline
  • padding
  • margin
  • border
  • width
  • height
  • position static

Estimated effort: 377

Refactor threading for better testability

As of now, it is difficult for tests to detect when website content has been completely downloaded by Scamper. Using the step method to trigger processing the downloaded content also makes debugging hard.

My suggestion: Use the Promise class to encapsulate a background task that returns a result. Promises can be synchronously awaited (useful for tests) and chained. To update the UI after a download (on the correct thread), WorldState>>addDeferredUIMessage could be used.

Here's an example of how to use the Promise class:

printStatus := [ :value | 
    Transcript show: 'Value: ' , value ,
                     ' on process ' , Processor activeProcess name; 
               cr ].

printStatus value: 'Starting...'.

promise := Promise new.
finalPromise := promise then: [ :value |
    (Delay forMilliseconds: 500) wait.
    value := value + 1.
    printStatus value: value.
    value ].

[  "long running operation..."
   (Delay forMilliseconds: 500) wait.
   printStatus value: 1.
   promise resolveWith: 1] forkAt: Processor userBackgroundPriority.

result := finalPromise wait.
printStatus value: 'Finished with ' , result

Output:

Value: Starting... on process 10147
Value: 1 on process 25034
Value: 2 on process 25034
Value: Finished with 2 on process 10147

Add CSS support

Cascading style sheets should be loaded from style tags and referenced css files.

Contains support and tests for:

  • style attribute
  • basic css tokenization

Estimated effort: 490

Add list support

Ordered and unordered lists should be displayed with arabic numbers and bullets respectively.

Contains support and tests for:

  • ol
    • Basic enumeration
    • Custom start value
    • Custom value inbetween
    • Custom style (roman, alphabet etc.) (Not wanted by the customer)
    • list-style-type:none
  • ul
    • Basic list
    • Custom style (square, arrow etc.) (Not wanted by the customer)
    • list-style-type:none
  • li
  • dl
  • dt
  • dd

Estimated effort: 164

Add download manager

As a user, I would like to use a download manager to manage my downloads.

The webClient library returns a MIME type. Use this information to select whether the file should be displayed or downloaded.

Add horizontal rule support

Horizontal rules that are used for content segmentation should be displayed as horizontal line.

Contains support and tests for:

  • hr

Estimated effort: 74

Remove Flash support

Since the classes FlashFileReader and FlashMorphReader used for flash support are no longer included in the Squeak image, flash support should be removed.

Estimated effort: 15

Add CSS selector support

CSS selectors should apply to their corresponding elements.

Contains support and tests for:

  • id
  • tag name
  • class
  • hierarchy

Estimated effort: 250

Add image tag support

Scamper should display images in Websites correctly.

Contains support and tests for:

  • image
  • alt
  • height
  • width

Estimated effort: 159

Improve HTML parsing

The browser shouldn't display content it didn't properly recognize as text. Displaying this text disrupts the reading of the website.
js

Estimated effort: 120

Add table support

Tables in a website should be displayed and have distinguishable head cells and content cells.

tabellen

Contains support and tests for:

  • table
  • tr
  • td
  • th
  • align + valign (possibly depends on #30)
  • table borders
  • border collapsing ?
  • cellspans ?

Estimated effort: 281

Add font-family support

Text elements should support the font-family attribute.
Basic fonts such as Times, Verdana or Arial/Helvetica should be supported.

Remove worker count

The browser should not provide the possibility to edit the number of workers and should in fact not display the number at all, because I do not understand the meaning and effect of this property. The browser should therefore provide a good default value and work correctly without me having to adjust this value.

workers

Estimated effort: 10

Add link support

When a website contains a link, it should be displayed clickable and should be recognizable as link by being blue, underlined and changing the cursor into a pointer on mouseover. When the user clicks the link, Scamper should navigate to the referenced Webpage or initiate a download if the referenced document is not a html document.

Contains support and tests for:

  • a

Estimated effort: 50

View videos

As a user, I would like to watch videos in the web browser

Add HTTPS support

In order to communicate securely using Scamper, I'd like to have HTTPS capabilities.

Estimated effort: 272

Remove editable start page

As a user, I don't need to have a personal start page, and I don't need to edit its HTML source code.

Contains Todos:

  • "Home"-Button should redirect to home page (browser:about instead of browser:start)
  • Remove browser:start alias
  • Remove context menu entries: edit start page, go to start page

Possible followup task: add ability to change the start page url

Add settings window

Browser settings (such as worker count, start page) should be set in a central settings window.

Should we extend the Squeak Preference browser (Tools -> Preferences) or have our own window?

Estimated effort: 150

Add text-decoration support

Text elements should support the text-decoration attribute and render underline and line-through correctly

Add CSS color support

Text-, border- and background-colors should be displayed correctly

Contains support and tests for:

  • color names
  • hex colors
  • rgb colors
  • opacity?
  • color:
  • background-color: Included in #83
  • border-color: Included in #84

Estimated effort: 212

Add CSS background-image support

Background images should be displayed correctly.

Contains support and tests for:

  • background-image
  • background-repeat
  • background-position

Estimated effort: 229

Issue POST requests correctly

As a user in order to use search engines I want to submit a search query.

Google's search box doesn't work - is this a problem of POSTs in general or with the specific website?

Estimated effort: 85

Add CSS Text formatting

CSS-formatted text should be displayed correctly, including font and text styles.

Contains support and tests for:

  • font-size
  • font-style
  • font-weight

Estimated effort: 150

Change style of browser buttons

The browser's gui should look like all other Squeak system windows as it should integrate well in the Sqeak image. Therefor the buttons in Scamper should have the same appearance as buttons in other system windows.

buttons scamper

Add form support

Forms should be correctly parsed and be completionable and sendable.

Contains support and tests for:

  • form
  • targets (post/get)
  • input text
  • input password
  • input hidden
  • input submit
  • input reset
  • radio buttons
  • selection lists
  • checkboxes
  • file selection
  • buttons
  • textarea

Estimated effort: 382

Add frame support

Frames should be supported to show sub-webpages inside a webpage

Contains support and tests for:

  • frameset
  • frame
  • iframe

Refactor existing code

In order to have an exciting browsing experience as a user, I want to use a browser that is sufficiently tested.

Todos in detail:

  • Write unit tests for the HTML-Package
  • Write unit tests for the Scamper-Package
  • Remove unused code and refactor if necessary for testing

Add text and headline support

Text content of web pages should be displayed in paragraphes, headlines as larger and bolder text. Special text contents that do not have a clear visual representation (such as quotes) or do represent additional special HTML-based formatting (such as font, tt, kbd, ...) may be rendered as standard text instead.

Contains support and tests for:

  • p
  • br
  • h1-h6

May contain support for:

  • blockquote
  • strong
  • b
  • em
  • i
  • u
  • tt
  • kbd
  • strike
  • big
  • small
  • font
  • pre

Estimated effort: 286

Add tabs

As a user, I am used to being able to open different web pages on several tabs.

See #58

Bug: Additional information in HTTP Request are not evaluated

The WebClient library supports a lot of features such as an userAgent or other attentional request informations. However, these informations are not being submitted so that webpages look bad (because Scamper doesn't get a light version and cannot display all HTML and CSS elements)

Fix URL line break

A line break of the URL is not useful. I would like Scamper to only display as much of the URL as it can.

url line break

Review and add meta support

Scamper should display Page titles in the System Window's title bar and show favicons beneath the url.

Contains support and tests for

  • title
  • favicons

There is some parsing for meta tags but e.g. the hpi's website title is not loaded correctly.

Include link rel stylesheets

Scamper should load and apply stylesheets that are linked with a link tag, e.g. <link rel="stylesheet" type="text/css" href="theme.css">

Estimated effort: 150

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.