summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-12-25Ladybird: Fix reloading functionalityBaitinq
Previously, reloading went back to the first page loaded by WebView::load() or WebView::load_html(), as they are the only methods that modify m_url, which is what the reload loaded. Now we handle reloads in Tab.cpp by simply loading the last entry in the m_history.
2022-12-25Ladybird: Stub out new WebView::ViewImplementation APIsTimothy Flynn
These were added for WebDriver, which doesn't have a Ladybird implementation yet.
2022-12-25Ladybird: Don't add initial about:blank load to historyBaitinq
The hackish initial loading of about:blank was previously added to the history, so you could go back to it (which wasn't very ergonomic). Now we set the m_is_history_navigation flag before loading it so it doesn't get added to the history.
2022-12-25Ladybird: Add new WebContent source file for WebDriver endpointsTimothy Flynn
2022-12-25Ladybird: Add subclass of WebSocket::WebSocketImpl using Qt networkingAndreas Kling
2022-12-25Ladybird: Don't change window icons when background tabs change iconsGunnar Beutner
2022-12-25Ladybird: Don't update window titles when background tabs change titlesGunnar Beutner
Steps to reproduce: 1. Open the Cookie Clicker game in a tab. 2. Open another website in another tab and make that the current tab. 3. Observe how the window's title mentions Cookie Clicker.
2022-12-25Ladybird: Don't push to history when loading through history navigationBaitinq
Previously we were always pushing to history on the on_load_start callback. Now we only do that if we are NOT navigating through the history navigation (loading pages by going back/forward). This is what the SerenityOS browser does:^)
2022-12-25Ladybird: Handle forward and backward mouse buttonsBaitinq
We now emit a new signal for backward mouse button's mouseup and forward mouse button's mouseup which is handled by going back and forward in the history respectively:))
2022-12-25Ladybird: Don't burn 100% CPU in EventLoopPluginQt::spin_until()Andreas Kling
There's no point in busy-waiting for the condition to come true. By passing the `WaitForMoreEvents` flag to `processEvents()`, we allow Qt to block until it has something for us to react to. This was extremely noticeable when waiting for large resources to finish loading.
2022-12-25Ladybird: Disable HTTP2 as it's significantly slowerAndreas Kling
The slowdown is sometimes 5x, possibly more. This is trivially confirmed by adding a large JS file to a page and comparing the load time with a simple wget.
2022-12-25Ladybird: Clean up linked librariesLinus Groh
- Add Qt::Core, Qt::Gui, LibGfx, LibIPC, and LibJS to the ladybird target, remove LibGL, LibSoftGPU, and LibWebSocket - Add LibJS to the WebContent target, remove LibWebView - Order them properly :^) Regressed in https://github.com/SerenityOS/serenity/pull/15746. Fixes #108.
2022-12-25Ladybird/Documentation: Bump GCC requirement to >= 12Linus Groh
See https://github.com/SerenityOS/serenity/pull/15797
2022-12-25Ladybird: Ignore SIGINT when we're being debuggedGunnar Beutner
Let's ignore SIGINT if we're being debugged because GDB incorrectly forwards the signal to us even when it's set to "nopass". See https://sourceware.org/bugzilla/show_bug.cgi?id=9425 for details.
2022-12-25Ladybird: Use Browser's History.{cpp,h}Linus Groh
There are no custom changes for Ladybird in the current copies of those files, so we just need to ensure to keep Ladybird up to date for any changes made upstream.
2022-12-25Ladybird: Use Browser's CookieJar.{cpp,h}Linus Groh
There are no custom changes for Ladybird in the current copies of those files, so we just need to ensure to keep Ladybird up to date for any changes made upstream. This fixes a build issue introduced by https://github.com/SerenityOS/serenity/pull/15736.
2022-12-25Ladybird/CMake: Launch gdb with follow fork mode to debug WebContentnetworkException
2022-12-25Ladybird/CMake: Add options for enabling {A,M,UB}SANnetworkException
This patch adds convenient flags for enabling ASAN, MSAN and UBSAN.
2022-12-25Ladybird: Add Ctrl+Shift+G shortcut to force a garbage collectionAndreas Kling
2022-12-25Ladybird: Add Userland/ subdirs of Lagom binary dir to include pathAndrew Kaster
Recent Serenity changes put generated files for libraries in _deps/lagom-build/Userland/Libraries rather than lagom-build/Libraries.
2022-12-25Ladybird/RequestManagerQt: Unwrap multiple cookies masquerading as oneAndreas Kling
Qt can wrap any number of cookies into a single Set-Cookie header in the network responses it gives us. We now use the QNetworkReply::header() API to get a "cooked" list of the cookies, and then rewrap them in a format suitable for LibWeb. Sites that send multiple Set-Cookie headers in one response now work a lot better. :^)
2022-12-25Ladybird/WebContentView: Make Tab and Shift+Tab workAndreas Kling
These didn't work, for two reasons: 1. Qt swallows all Tab key presses by default. We have to override the event() function in order to receive them. 2. Qt transforms Shift+Tab into a fake "Backtab" key. We have to undo this transformation and send Shift+Tab to WebContent.
2022-12-25Ladybird/WebContentView: Accept focus and notify WebContent on changeAndreas Kling
2022-12-25Ladybird: Hook up the CookieJar again after WebContent introductionAndreas Kling
2022-12-25Ladybird: Accept file paths, domains, and URLs as an argumentIdan Horowitz
This makes opening test files much more ergonomic :^)
2022-12-25Ladybird: Close the other side's file descriptors after forkingAndreas Kling
When spawning a WebContent process, we have to close the file descriptors belonging to the "other side" in both processes, or they will not get naturally "cleaned up" when one of the processes exits. Fixes #93
2022-12-25Ladybird: Implement EventLoopPluginQt::quit()Andreas Kling
This breaks out of the main Qt event loop.
2022-12-25Ladybird: Ensure that installed ladybird can launch WebContent processAndrew Kaster
Always call platform_init after there's a QApplication, because in the installed configuration that's how we find the resources. Try QCoreApplication::applicationDirPath() after looking in ./WebContent for the WebContent process. In an installed configuration, ladybird and WebContent will both be in $PREFIX/bin. Add install rules for WebContent and its linked libraries, for if they ever differ from ladybird's.
2022-12-25Ladybird: Remove some unnecessary includes in main.cppAndreas Kling
2022-12-25Ladybird: Load about:blank in new tabsAndreas Kling
This makes the JS console usable in new tabs, without having to load something first.
2022-12-25Ladybird: Make ladybird depend on WebContentLuke Wilde
This causes CMake to output a WebContent build, without this it would not build WebContent and Ladybird would be unusable since it couldn't find the WebContent executable.
2022-12-25Ladybird: Let Lagom build the IPC endpoints for WebContentAndreas Kling
2022-12-25Ladybird: Remove PageClientLadybird as it's no longer usedAndreas Kling
2022-12-25Ladybird: Port over ConsoleWidget from the SerenityOS BrowserAndreas Kling
While this adds a fair bit of widget code, we're also increasing code sharing by using the same bits in WebContentClient for interacting with the JS console. That said, we should look for more ways to share code here.
2022-12-25Ladybird: Render web content in a separate process :^)Andreas Kling
This patch brings over the WebContent process over from SerenityOS to Ladybird, along with a new WebContentView widget that renders web content in a separate process. There's a lot of jank and FIXME material here, notably I had to re-add manually pumped Core::EventLoop instances on both sides, in order to get the IPC protocol running. This introduces a lot of latency and we should work towards replacing those loops with improved abstractions. The WebContent process is built separately here (not part of Lagom) and we provide our own main.cpp for it. Like everything, this can be better architected, it's just a starting point. :^)
2022-12-25Ladybird/Meta: Split out build instructions to a separate documentAndreas Kling
2022-12-25Ladybird/ConsoleClient: Implement console message styling with `%c`Sam Atkins
This matches the changes made to Serenity in: https://github.com/SerenityOS/serenity/commit/7a2da4cabf5627941cf1fc6eb7c5fd068fcc75f9
2022-12-25Ladybird/CMake: Enable compile_commands.json by defaultAndrew Kaster
This should help IDEs have an easier time indexing serenity files.
2022-12-25Ladybird/SimpleWebView: Install and check for content filters in res/Andrew Kaster
This allows installed ladybird and Andriod ladybird to find the content filters without copying all of Base/home/anon into the install tree.
2022-12-25Ladybird/WebView: Fix size calculation in update_viewport_rect()Itamar
size() may include the dimensions of the scrollbars, so we now use viewport() instead.
2022-12-25Ladybird/Tab: Handle "Dump History" actionMoustafa Raafat
2022-12-25Ladybird/SimpleWebView: Add debug logging for unhandled debug requestsMoustafa Raafat
2022-12-25Ladybird/Tab: Update history title when tab title changesMoustafa Raafat
2022-12-25Ladybird/History: Ignore title updates when history has no current itemMoustafa Raafat
2022-12-25Ladybird/BrowserWindow: Make "View Source" a separate windowMoustafa Raafat
View Source was a subwindow which made it cover part of the browser with no way for closing it.
2022-12-25Ladybird: The JS console widget should be a standalone windowAndreas Kling
...not part of the WebView. Its lifetime is managed by a QPointer.
2022-12-25Ladybird/ConsoleClient: Get the current ESO from new HostDefined helperAndrew Kaster
2022-12-25Ladybird/Everywhere: Ensure that Qt objects are created with parentsAndrew Kaster
This prevents memory leaks detected by both Valgrind and ASAN/LSAN. Valgrind is still suspicious of the leaked JS::VM from Web::Bindings::main_thread_vm() but there's other issues with leak checking all the GC'd objects. Co-Authored-By: Diego Iastrubni <diegoiast@gmail.com>
2022-12-25Ladybird: Fix typo in README.mdJonas Kvinge
2022-12-25Ladybird: Start applying the default content filterLuke Wilde
For the first cut, the file path is not configurable and the content filter cannot be toggled on or off. If we fail to apply the content filters for any reason (e.g. the filter file doesn't exist), we simply just stop loading the content filters to allow using Ladybird without content filters.