Commit graph

1410 commits

Author SHA1 Message Date
Nico Weber 5af30b8f63 MacPDF: Tweak "#pragma mark" comments 2023-09-30 08:08:11 +02:00
Nico Weber d2bda064da MacPDF: Pre-populate "Go to Page..." dialog with current page 2023-09-30 08:08:11 +02:00
Nico Weber e67d8cfb2a MacPDF: Show current page and page count in subtitle 2023-09-30 08:08:11 +02:00
Nico Weber bd19fcc039 MacPDF: Add a "Go to Page..." menu item
xib changes:
* Add a "Go" toplevel submenu
* Put a "Go to Page..." menu item in it
* Add showGoToPageDialog: to first responder
* Bind action of new menu item to that

The dialog is just a janky NSAlert for now.
2023-09-30 08:08:11 +02:00
Nico Weber fe4fe5ceff MacPDF: Support opening password-protected PDFs
This is a bit janky for several reasons:
* `initialize` is now no longer called on a bg thread
* sheet UI is janky both visually and from an implementation PoV

But hey, it works for now.
2023-09-30 08:08:11 +02:00
Nico Weber 97dbdbc9b0 MacPDF: Fill bitmap cache on demand in -[LagomPDFView drawRect]
Removes one needless paint on document restore, and makes sure
that window resizing invalidates the cache (since this now checks
the bitmap's size).
2023-09-30 08:08:11 +02:00
Nico Weber 2799dedb1b MacPDF: Save and restore current page
This works great when quitting and reopening the app,
but when closing a window and the reopening from Recent Files,
the current page isn't restored. In Preview.app, it is.
2023-09-30 08:08:11 +02:00
Nico Weber 5401f3aecc MacPDF: Clean up some includes 2023-09-30 08:08:11 +02:00
Nico Weber f5e81c8a99 MacPDF: Make pdfs without embedded fonts work again
A prior change removed some (very hacky) code needed for this
2023-09-30 08:08:11 +02:00
Nico Weber 87f31cab70 MacPDF: Remove application restore logging again 2023-09-30 08:08:11 +02:00
Nico Weber d3e8d87672 MacPDF: Add some temporary logging for application restoring
In the end, apparently I had "Close windows when quitting an
application" enabled in Desktop & Dock in System Settings. With that
turned off, it just worked (...but I still need to serialize the current
page in the view).

Even with it turned off, cmd-opt-q would "Quit and Keep Windows",
so I could've also used that for testing.
2023-09-30 08:08:11 +02:00
Nico Weber 751ed5e1ee MacPDF: Larger default window size 2023-09-30 08:08:11 +02:00
Nico Weber 43859f07ec MacPDF: Opt in to both automatic and sudden termination
Automatic termination means that the app no longer shows up as
opened in the doc when the last Window is closed, but it's actually
still running and opens immediately when clicked again.

Sudden termination means that the app can close quickly on logout.
I think it means the runtime just calls _exit() and assumes all
data is saved continuously.
2023-09-30 08:08:11 +02:00
Nico Weber 819a602ee1 MacPDF: Actually show contents of opened PDFs
xib change: connected _pdfView outlet to LagomPDFView instance.
2023-09-30 08:08:11 +02:00
Nico Weber 0a01a2c82b MacPDF: Start converting to document architecture
Cmd-O now produces an Open... dialog, and opening a PDF file reads it
(and then creates the old LagomPDFView object, which then reads
a hardcoded PDF again and displays that. One thing at a time.)

"Open Recent>" is also populated and seems to work.

See the guide:
https://developer.apple.com/library/archive/documentation/DataManagement/Conceptual/DocBasedAppProgrammingGuideForOSX/Introduction/Introduction.html
2023-09-30 08:08:11 +02:00
Nico Weber 77b311f00a MacPDF: FixedPoint hack fix courtesy of trflynn
Also some minor cleanups, and pick a different default document.
2023-09-30 08:08:11 +02:00
Nico Weber ef91ced481 MacPDF: Change current page with arrow left/right 2023-09-30 08:08:11 +02:00
Nico Weber c4c4ead9d2 MacPDF: Highdpi! 2023-09-30 08:08:11 +02:00
Nico Weber 6e0dea3a12 MacPDF: Style tweaks; one less leak 2023-09-30 08:08:11 +02:00
Nico Weber 4d9233dacc MacPDF: Fewer leaks; cache bitmap; refactor a bit 2023-09-30 08:08:11 +02:00
Nico Weber 2831654b00 MacPDF: Initial commit
This is mostly the output of the Xcode new app wizard.
2023-09-30 08:08:11 +02:00
Niklas Poslovski 485ae28ba7 AK: Add support for backtraces on Haiku 2023-09-29 15:11:52 +01:00
Sam Atkins b0317bb3a1 LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
Aliaksandr Kalenik e7a3040c9f LibWeb: Do not use JS::Handle for TimerHandler
There is no need to use JS::Handle for timer handler because it is
visited from JS::HeapFunction in HTML::Timer.
2023-09-27 16:33:21 +02:00
Shannon Booth 3bd04d2c58 LibWeb: Port Attr interface from DeprecatedString to String
There are an unfortunate number of DeprecatedString conversions required
here, but these should all fall away and look much more pretty again
when other places are also ported away from DeprecatedString.

Leaves only the Element IDL interface left :^)
2023-09-25 15:39:29 +02:00
Bastiaan van der Plaat 469563b398 GMLCompiler: Add icon_from_path and frame_style properties 2023-09-24 20:05:33 -06:00
Bastiaan van der Plaat a4e272d2c8 GMLCompiler: Fix bug where backslash in escaped sequence was preserved 2023-09-24 20:05:33 -06:00
Sam Atkins 1c4a05f8a4 LibWeb: Treat "revert" as a CSS-wide keyword
This isn't included in the base definition of a CSS-wide keyword, but
the CASCADE-4 spec which adds it says:

> The revert CSS-wide keyword rolls back the cascade to the cascaded
  value of the earlier origin.

So it is one. While I'm at it, rename `is_builtin()` to match the spec
terminology. It's not used currently, but will be in the next commit.
2023-09-25 00:46:21 +01:00
Andrew Kaster 247f12d7b0 LibWeb: Insert WindowProperties object into Window's prototype chain
And implement WindowProperties, the "named properties object" for Window
according to the spec.

This involves moving an AO out of LegacyPlatformObject and into a common
place that the WindowProperties class can access.

This doesn't implement the AOs on Window that actually name lookup for
the unenumerable named properties on the window yet, just the
scaffolding.
2023-09-22 19:55:59 -06:00
Shannon Booth e123492470 LibWeb: Allow ArrayBuffer attributes to be used in IDL
The FileReader IDL has the following entry:
```
readonly attribute (DOMString or ArrayBuffer)? result;
```

This change supports the use ArrayBuffer as a JS built-in in this
definition.
2023-09-17 16:37:31 -06:00
Dan Klishch 67e07fa4e2 JSSpecCompiler: Introduce ControlFlowOperator nodes 2023-09-17 16:04:42 -06:00
Dan Klishch 81519975c5 JSSpecCompiler: Add reference resolving pass
It replaces UnresolvedReference with Variable, FunctionPointer, or
SlotName nodes. Also, it gathers all variable names from their
declarations.
2023-09-17 16:04:42 -06:00
Dan Klishch 326bac19d9 JSSpecCompiler: Make nodes inherit from Statement or Expression
The distinction between them will become important during CFG building.
2023-09-17 16:04:42 -06:00
Dan Klishch ed5ef4da6d JSSpecCompiler: Make clang-tidy happier, no functional changes 2023-09-17 16:04:42 -06:00
nipos 2e0960a7ef Meta: Don't link LibCrypt to native libcrypt on Haiku 2023-09-17 13:38:12 -06:00
nipos 2691c079d4 Meta+Ladybird: Link to libnetwork on Haiku 2023-09-17 13:38:12 -06:00
nipos e345085329 Meta+Ladybird: Add some extra definitions for Haiku 2023-09-17 13:38:12 -06:00
implicitfield 1b3ad1c721 LibCrypto: Add support for BLAKE2b 2023-09-17 16:49:35 +03:30
Aliaksandr Kalenik da2c18d1f9 Meta: Update LibJSGCVerifier to build with llvm 16.0.6
Changes to fix LibJSGCVerifier build with llvm version used in
BuildClang.sh
2023-09-16 20:51:28 -06:00
Timothy Flynn 139c575cc9 LibUnicode: Update to Unicode version 15.1.0
https://unicode.org/versions/Unicode15.1.0/

This update includes a new set of code point properties, Indic Conjunct
Break. These may have the values Consonant, Linker, or Extend. These are
used in text segmentation to prevent breaking on some extended grapheme
cluster sequences.
2023-09-15 18:30:26 +02:00
Sam Atkins 2cb816ad69 LibWeb: Alphabetize property names in Properties.json
And add a check to make sure it stays that way!
2023-09-11 10:42:00 +01:00
Sam Atkins b78b5e6297 LibWeb: Generate property_is_shorthand(PropertyID) function
Sometimes we want to know if a property is a shorthand, but don't care
what its longhands are.
2023-09-11 10:42:00 +01:00
Dan Klishch 4c4e1e1aed JSSpecCompiler: Add if branch merging pass
It merges standalone IfBranch/ElseIfBranch nodes into IfElseIfChain
nodes. This will ease CFG generation later.
2023-09-09 11:20:43 -06:00
Dan Klishch 092ed1cc8a JSSpecCompiler: Allow storing NullableTrees in nodes
And use this in ElseIfBranch node.
2023-09-09 11:20:43 -06:00
Dan Klishch 4eede5282c JSSpecCompiler: Allow storing error text in ErrorNode
This will be the main way to communicate errors from compilation passes.
2023-09-09 11:20:43 -06:00
Dan Klishch 72794e7843 JSSpecCompiler: Add function call canonicalization pass
It simplifies ladders of BinaryOperators nodes in the function call
arguments into nice and neat FunctionCall node. Ladders initially appear
since I do not want to complicate expression parser, so it interprets
`f(a, b, c, d)` as `f "function_call_operator" (a, (b, (c, d))))`.
2023-09-09 11:20:43 -06:00
Dan Klishch 1c4cd34320 JSSpecCompiler: Restrict usage of NodeSubtreePointer
This class stores a non-owning raw pointer to a member of `Node`, so
extra care is needed to ensure that referenced `Node`s will be alive
by the time `NodeSubtreePointer` is used. Since we only need to use this
class while traversing AST in `RecursiveASTVisitor`, access to class
methods can be restricted using `Badge<RecursiveASTVisitor>`.
2023-09-09 11:20:43 -06:00
Shannon Booth 41928c2902 LibWeb: Port DOMException interface from DeprecatedString to String 2023-09-06 11:44:45 -04:00
Shannon Booth 914fb90bbe LibWeb: Don't generate Optional<String> from IDL for non-null arguments
Previously if the IDL was something like:
```
constructor(optional DOMString data = "");
```

We were generating code that would be passing through to the constructor
an Optional<String> - even though for this situation it is not possible
for it to be null.

Instead, if we know if there is a default value that is non-null and the
type is not nullish, just generate the cpp code as a String.
2023-09-05 20:36:09 -04:00
Shannon Booth f991e40d7f LibWeb: Support [Reflect] on IDL String attributes that may return null
This change allows IDL interfaces to be compiled using new AK String
which have a attribute in the interface that may return null.

Without this change we would run into a compile error from code such as
the following example:

```
auto retval = impl->deprecated_attribute(HTML::AttributeNames::ref);

if (!retval.has_value()) {
    return JS::js_null();
 }
 return JS::PrimitiveString::create(vm, retval.release_value());
```

As `deprecated_attribute` returns a `DeprecatedString` instead of an
`Optional<String>`. Fix that by using the non-deprecated attribute
implementation, and falling back to the empty string for where we cannot
return null.

Also add a test here to cover a regression I almost introduced here
which was not previously covered by our test suite.

Ideally, all of this should actually just be calling
Element::get_attribute_value, but I'm not entirely sure at this stage
what the behavioral change would be to test for here. Since this
implementation preserves the previous behavior, stick with it, and add a
FIXME for now.
2023-09-05 20:36:09 -04:00