Age | Commit message (Collapse) | Author |
|
This patch introduces a bunch of things:
- Subframes (Web::Frame::create_subframe())
- HTMLIFrameElement (loads and owns the hosted Web::Frame)
- LayoutFrame (layout and rendering of the hosted frame)
There's still a huge number of things missing, like scrolling, overflow
handling, event handling, scripting, etc. But we can make a little
iframe in a document and it actually renders another document there.
I think that's pretty cool! :^)
|
|
|
|
This was a confusing bug: ImageStyleValue loaded its image resource as
a Generic resource, while HTMLImageElement loaded as Image.
This patch fixes the issue and adds an assertion to verify that we only
share resources that have the same C++ client class type.
|
|
|
|
Set the intrinsic size up front and let LayoutReplaced do the work.
|
|
The only CSS property we care about for widgets is "display:none".
For everything else, we ignore it and use a native look & feel. :^)
|
|
LayoutCanvas now communicates intrinsic size to LayoutReplaced so it
can use the normal replaced algorithm.
|
|
LayoutReplaced now has intrinsic width, height and ratio. Only some of
the values may be present. The layout algorithm takes the various
configurations into account per the CSS specification.
This is still pretty immature but at least we're moving forward. :^)
|
|
In particular, we now compute the containing block of boxes with
position:absolute and position:fixed (more) correctly.
|
|
This makes stuff inside <noscript> correctly not show up since we run
with scripting enabled.
In the future, we can add a way to disable scripting, but for now,
Document::is_scripting_enabled() just returns true.
|
|
This patchset adds a simple SignedBigInteger that is entirely defined in
terms of UnsignedBigInteger.
It also adds a NumberTheory::Power function, which is terribly
inefficient, but since the use of exponentiation is very much
discouraged for large inputs, no particular attempts were made
to make it more performant.
|
|
When handling a "textarea" start tag, we have to ignore the next token
if it's an LF ('\n'). However, we were not switching the tokenizer
state before fetching the lookahead token, and this caused us to force
the tokenizer into the RCDATA state too late, effectively getting it
stuck in that state for way longer than it should be.
Fixes #2508.
|
|
We can't RECONSUME_IN after we've used EMIT_CHARACTER since we'll have
returned from the function.
|
|
This change allows users to use CMAKE_GENERATOR=Ninja ./BuildIt.sh
BuildIt.sh assumes the default cmake generator is Make. However,
the user may specify CMAKE_GENERATOR=Ninja, for example, to set the
default generator. Therefore, instead of calling make to build the
LibC target we should call cmake --build to use the correct generated
files.
|
|
This lets Serenity boot even when the repository is cloned with a
umask of 027.
|
|
I want to add a "chmod -R" right after the cp command.
This needs to happen before all the other chmods, to not
undo their effect.
|
|
If one fails, it's now easier to see which one it is.
|
|
run.sh currently makes qemu print this as the very first output:
WARNING: Image format was not specified for '_disk_image' and probing guessed raw.
Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
Specify the 'raw' format explicitly to remove the restrictions.
This is scary for people who don't know that this is normal, and
write operations to block 0 being restricted could be confusing
for some operations happening from within serenity too at some point.
So specify the 'raw' format explicitly, like the warning suggests.
Requires using -drive instead of -hda.
From `man qemu-system`:
Instead of -hda, -hdb, -hdc, -hdd, you can use:
qemu-system-x86_64 -drive file=file,index=0,media=disk
So use that, and also pass format=raw.
|
|
Attempting to open a non-existent file from the command line should not
fail, it should just open a new text document with that name. Note that
the file is not created until you actually save it.
|
|
Oops, these were still using the byte-offset cursor. My goodness is it
unergonomic to index into UTF-8 strings, but Dr. Bugaev says it's good.
There is lots of room for improvement here. Just like the rest of the
tokenizer and parser. We'll have to do a few optimization passes over
them once they mature.
|
|
We already convert the input to UTF-8 before starting the tokenizer,
so all this patch had to do was switch the tokenizer to use an Utf8View
for its input (and to emit 32-bit codepoints.)
|
|
|
|
Also, implement append(Utf32View) using it.
|
|
This isn't fully working, the APs pretend like they're
fully initialized and are just halted permanently for now.
|
|
This allows for using atomic operations on any variables,
not only those wrapped in AK::Atomic<T>
|
|
|
|
The NumericCharacterReferenceEnd tokenizer state should not advance
the input stream.
|
|
Until now we would simply apply stylesheets in the order they finished
loading. This patch adds a StyleSheetList object that hangs off of each
Document and contains all the style sheets in document order.
There's still a lot of work to do for a proper cascade, but at least
this makes us consistently wrong every time. :^)
|
|
Subclasses that override Element::parse_attribute() must always call to
base class since otherwise we might forget to parse some attributes.
This makes class selectors work on <body> and <img> elements. :^)
|
|
|
|
|
|
This fixes #2488
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
We were neglecting to emit start tags for tags where the last attribute
had no value.
Also fix a parse error TODO that I hit while looking at this.
|
|
|
|
|
|
|
|
does not contain "template"
|
|
|
|
|
|
|
|
|
|
parse_template_literal now breaks out of the loop if it sees something
it doesn't expect. Additionally, it now checks for EOFs.
|
|
This fixes terminal UI resizing in the vim port. The problem was that
vim had "#ifdef TIOCGWINSZ" around the code that figures out the size
of the terminal.
Since all of our ioctl() requests were enum values, this code was not
compiled into vim at all. This patch fixes that. :^)
|