Andreas Kling
213e2793bd
LibWeb: Add Node.insertBefore(Node node, Node? child)
2020-06-21 17:42:00 +02:00
Andreas Kling
e1bd815a6a
LibWeb: Generate Event and MouseEvent bindings from IDL :^)
...
We still have to hand-write a function to turn an Event& into a wrapper
but this is still a hue improvement. Eventually we'll find a way to
auto-generate that function as well.
2020-06-21 16:12:28 +02:00
Andreas Kling
dd29ff884f
LibWeb: Generate ImageData bindings from IDL :^)
2020-06-21 15:57:10 +02:00
Andreas Kling
b959d06ace
LibWeb: Generate HTMLCanvasElement bindings from IDL :^)
2020-06-21 15:37:13 +02:00
Andreas Kling
119dd2c541
LibWeb: Generate HTMLImageElement bindings from IDL :^)
2020-06-21 15:26:09 +02:00
Andreas Kling
1914f52371
LibWeb: Add HTMLElement wrapper
...
Expose the "title" attribute just to expose something. :^)
2020-06-21 14:39:15 +02:00
Andreas Kling
244b243d22
LibWeb: Add EventTarget.removeEventListener()
2020-06-21 12:37:34 +02:00
Andreas Kling
d724a12732
LibWeb: Generate EventTarget bindings from IDL :^)
2020-06-21 12:31:42 +02:00
Andreas Kling
a014b2930e
LibWeb: Add Element.tagName and Element.className
2020-06-21 12:01:13 +02:00
Andreas Kling
a64033e581
LibWeb: Generate Element bindings from IDL :^)
...
Had to do a bunch more hacking on WrapperGenerator to support this.
We now support attribute setters as well.
2020-06-21 11:39:32 +02:00
stelar7
5eb39a5f61
LibWeb: Update parser with more insertion modes :^)
...
Implements handling of InHeadNoScript, InSelectInTable, InTemplate,
InFrameset, AfterFrameset, and AfterAfterFrameset.
2020-06-21 10:13:31 +02:00
Maciej Sobaczewski
a4fbc78f25
LibWeb: Respect display:none on <input> elements
2020-06-21 09:59:06 +02:00
Andreas Kling
bc4fa7a3c9
LibWeb: Expose Node.appendChild() to the web
...
This is a very barebones implementation of appendChild() that doesn't
take any of the idiosyncratic DOM behaviors into account yet.
Also teach the wrapper generator how to turn an Interpreter argument
into a Node&.
2020-06-21 01:01:50 +02:00
Andreas Kling
faff557400
LibWeb: Expose Document.body to the web
...
Also, make it return a HTMLElement since Document.body should actually
return the frameset element in a frame-based document.
2020-06-21 01:00:30 +02:00
Andreas Kling
319ef8aa86
LibWeb: Expose Document.createElement() to the web
2020-06-21 00:58:55 +02:00
Andreas Kling
94cf1f08ec
LibWeb: Add Node.parentNode and Node.parentElement to DOM API :^)
2020-06-21 00:58:55 +02:00
Andreas Kling
1ffffa0053
LibWeb: Start generating JS wrappers from (simplified) WebIDL :^)
...
This patch introduces a hackish but functional IDL parser and uses it
to generate the JS bindings for Node and Document.
We'll see how far this simple parser takes us. The important thing
right now is generating code, not being a perfect IDL parser. :^)
2020-06-21 00:58:55 +02:00
Andreas Kling
cc5cba90db
LibWeb: Give the DOM Window object a (weak) pointer to its JS wrapper
2020-06-20 17:50:48 +02:00
Andreas Kling
6242e029ed
LibWeb: Make Element::tag_name() return a const FlyString&
...
The more generic virtual variant is renamed to node_name() and now only
Element has tag_name(). This removes a huge amount of String ctor/dtor
churn in selector matching.
2020-06-16 19:09:14 +02:00
Andreas Kling
9bb4020195
LibWeb: Don't load stylesheets with rel="alternate"
...
We're not supposed to load these by default. Alternate stylesheets can
be offered in a menu or something, if the user is interested.
2020-06-15 20:31:18 +02:00
Andreas Kling
17d26b92f8
LibWeb: Just ignore <script> elements that failed to load the script
...
We're never gonna be able to run them if we can't load them so just
let it go.
2020-06-15 18:37:48 +02:00
Andreas Kling
84f8c91a6f
LibWeb: Use the URL encoder from AK instead of rolling a custom one
2020-06-15 17:56:00 +02:00
Andreas Kling
d883607e8f
LibWeb: Force a full relayout if an element's CSS display changes
...
Not doing this was causing the wrong kind of LayoutNode to stay around
even though we had the final "display" value.
2020-06-15 17:56:00 +02:00
Andreas Kling
73c9f7ebf4
LibWeb: Move "visible in viewport" state tracking to ImageLoader
...
This should technically apply to any LayoutImage, so let's just move
it to ImageLoader.
2020-06-14 19:32:23 +02:00
Andreas Kling
c45615128b
LibWeb: Move bitmap animation from HTMLImageElement to ImageLoader
...
Since ImageLoader manages the image decoder anyway, let it manage
animation as well.
2020-06-14 19:26:25 +02:00
Andreas Kling
ec39f419e5
LibWeb: Remove some unused functions from HTMLImageElement
2020-06-14 19:05:36 +02:00
Andreas Kling
a93fb7299f
LibWeb: Don't choke when trying to render a document-less <iframe>
...
Just paint it like an empty box if there's no document in the frame.
2020-06-14 15:32:38 +02:00
Andreas Kling
3cc0c477db
LibWeb: Add basic <object> element support
...
This patch implements a simple <object> element with fallback content.
If the URL from the data attribute fails to load (including 404),
we render the DOM tree inside the <object> as fallback content.
This works by generating a different layout tree for the <object>
depending on the state and success of the data load. Since we cannot
currently do incremental layout tree updates, we have to force a
complete layout tree rebuild when the resource load finishes/fails.
2020-06-13 22:24:49 +02:00
Andreas Kling
95d70addd8
LibWeb: Split out image loading logic from HTMLImageElement
...
Since more DOM nodes are going to want to load images (<object>, ...)
this patch splits out the image loading logic into an ImageLoader class
and then HTMLImageElement simply has an ImageLoader.
LayoutImage is then given a const ImageLoader& at construction and can
then provide layout and rendering for many kinds of DOM nodes.
2020-06-13 22:22:54 +02:00
Andreas Kling
d6d248c328
LibWeb: Add "data" to HTML::AttributeNames
2020-06-13 22:21:25 +02:00
Andreas Kling
502b5b76c8
LibWeb: Have DOM nodes start out in "needs style update" state
...
Otherwise we won't get the first fully styled look until you interact
with the page (e.g via hovering an element.)
2020-06-13 20:10:43 +02:00
Andreas Kling
2650005af8
LibWeb: <link rel> is actually a space-separated list of tokens
...
...so when we check for rel=stylesheet, we have to split it up into
parts first. :^)
2020-06-13 20:02:36 +02:00
Andreas Kling
7e8945601a
LibWeb: Turn <td align> into CSS text-align
...
Note that align=center and align=middle both behave like the <center>
element, and not like text-align:center.
2020-06-13 15:16:56 +02:00
Andreas Kling
6de937a689
LibWeb: Turn <table bgcolor> into CSS background-color
...
More presentational attribute stuff. HN looking more and more like it's
supposed to. :^)
2020-06-13 12:49:20 +02:00
Andreas Kling
256898431c
LibWeb: Simplify Node::is_link()
...
No need to check for presence of the href attribute as that is already
checked by enclosing_link_element().
2020-06-13 00:23:32 +02:00
Andreas Kling
0306ada1ff
LibWeb: Add "colspan" to HTML::AttributeNames
2020-06-13 00:11:14 +02:00
Andreas Kling
c5a3d99dd5
LibWeb: Turn <table width> into the CSS width property
2020-06-12 22:52:38 +02:00
Andreas Kling
ca41c2e4a0
LibWeb: Turn <td bgcolor> into background-color
2020-06-12 22:47:51 +02:00
Andreas Kling
e9e2226544
LibWeb: Add "bgcolor" to HTML::AttributeNames
2020-06-12 22:47:41 +02:00
Andreas Kling
fdfda6dec2
AK: Make string-to-number conversion helpers return Optional
...
Get rid of the weird old signature:
- int StringType::to_int(bool& ok) const
And replace it with sensible new signature:
- Optional<int> StringType::to_int() const
2020-06-12 21:28:55 +02:00
Andreas Kling
ff2c949d70
LibWeb: Include class names in layout tree dumps
...
This makes it a lot easier to see which layout node is which DOM node.
2020-06-12 13:23:07 +02:00
Andreas Kling
116cf92156
LibGfx: Rename Rect,Point,Size => IntRect,IntPoint,IntSize
...
This fits nicer with FloatRect,FloatPoint,FloatSize and gives a much
better visual clue about what type of metric is being used.
2020-06-10 10:59:04 +02:00
Andreas Kling
28dcef4757
LibWeb: Add LayoutTableRowGroup to implement display: table-row-group
2020-06-09 21:53:16 +02:00
Andreas Kling
5042e560ef
LibJS: Make more Interpreter functions take a GlobalObject&
2020-06-08 21:25:16 +02:00
Andreas Kling
92392398a2
LibWeb: Add Page abstraction between PageView and main Frame
...
* A PageView is a view onto a Page object.
* A Page always has a main Frame (root of Frame tree.)
* Page has a PageClient. PageView is a PageClient.
The goal here is to allow building another kind of view onto
a Page while keeping the rest of LibWeb intact.
2020-06-08 21:12:20 +02:00
Andreas Kling
9b17bf3dcd
LibWeb: Use HTML::TagNames globals in the new HTML parser
2020-06-07 23:53:16 +02:00
Andreas Kling
992697d99f
LibWeb: Add HTML::TagNames namespace for global tag name FlyStrings
...
Instead of "iframe", we can now say HTML::TagNames::iframe and avoid
a FlyString lookup.
2020-06-07 23:27:03 +02:00
Andreas Kling
10851d87a2
LibWeb: Add (stub) HTMLTable{,Cell,Row}Element C++ classes
...
We'll need a place to implement the various presentational attributes
for table parts, and more stuff.
2020-06-07 23:10:45 +02:00
Andreas Kling
3ae3729b4e
LibWeb: Let subframes propagate paint invalidations via host element
...
When a paint invalidation occurs inside a subframe, it bubbles up to
Frame::set_needs_display(). From there, we call PageView if this is
the main frame, or otherwise invalidate the subframe host element.
2020-06-07 14:56:29 +02:00
Andreas Kling
59f9b32a44
LibWeb: Remove unused Document::on_layout_updated hook
2020-06-07 14:47:33 +02:00