summaryrefslogtreecommitdiff
path: root/Userland/Applications/Browser
AgeCommit message (Collapse)Author
2021-05-03LibGUI: Rename ScrollableWidget => AbstractScrollableWidgetAndreas Kling
2021-05-01Everywhere: Rename app_menu to file_menu or game_menuAndreas Kling
2021-04-30Browser: Add FrogFind search engineMaciej Zygmanowski
FrogFind is a search engine for very old computers and can be loaded and rendered correctly by Serenity Browser :^)
2021-04-29Browser: Display search engine format in statusbarMaciej Zygmanowski
2021-04-29Browser: Save search engine setting to preferencesMaciej Zygmanowski
2021-04-29Browser: Add GitHub and Yandex to search enginesPanagiotis Vasilopoulos
2021-04-26Browser: Add basic support for search enginessppmacd
If you start a URL with a '?' character, the Browser will use the user-selected search engine (none by default). For now, there are several engines hardcoded and there is no support for custom search engines.
2021-04-25Services: Rename ProtocolServer to RequestServerDexesTTP
The current ProtocolServer was really only used for requests, and with the recent introduction of the WebSocket service, long-lasting connections with another server are not part of it. To better reflect this, this commit renames it to RequestServer. This commit also changes the existing 'protocol' portal to 'request', the existing 'protocol' user and group to 'request', and most mentions of the 'download' aspect of the request to 'request' when relevant, to make everything consistent across the system. Note that LibProtocol still exists as-is, but the more generic Client class and the more specific Download class have both been renamed to a more accurate RequestClient and Request to match the new names. This commit only change names, not behaviors.
2021-04-25LibWeb: Add WebSocket bindingsDexesTTP
The WebSocket bindings match the original specification from the WHATWG living standard, but do not match the later update of the standard that involves FETCH. The FETCH update will be handled later since the changes would also affect XMLHttpRequest.
2021-04-23AK: Rename adopt() to adopt_ref()Andreas Kling
This makes it more symmetrical with adopt_own() (which is used to create a NonnullOwnPtr from the result of a naked new.)
2021-04-22Everything: Move to SPDX license identifiers in all files.Brian Gianforcaro
SPDX License Identifiers are a more compact / standardized way of representing file license information. See: https://spdx.dev/resources/use/#identifiers This was done with the `ambr` search and replace tool. ambr --no-parent-ignore --key-from-file --rep-from-file key.txt rep.txt *
2021-04-18LibJS: Implement console.assert()Linus Groh
2021-04-18Browser+WebContent: Fix HTML injection in console functions outputLinus Groh
2021-04-18Browser: Add status tips to most of the actionsAndreas Kling
2021-04-18Browser: Show status tips for any entered actionAndreas Kling
2021-04-18LibGUI: Rename Action::long_text to Action::status_tipAndreas Kling
This feels a bit more descriptive.
2021-04-17Browser: Display full UserAgent string in status bar on menu hoverIdan Horowitz
This uses the new on_action_enter & on_action_leave APIs to display the full useragent string when hovering over one of the useragent spoof menu options.
2021-04-16Browser+LibWeb+WebContent: Parse cookies in the OOP tabTimothy Flynn
To protect the main Browser process against nefarious cookies, parse the cookies out-of-process and then send the parsed result over IPC to the main process. This way, if the cookie parser blows up, only that tab will be affected.
2021-04-15Browser: Implement spec-compliant cookie retrievalTimothy Flynn
https://tools.ietf.org/html/rfc6265#section-5.4
2021-04-14Browser+LibWeb: Add support for spoofing the browser user agentIdan Horowitz
This is helpful when testing certain sites like twitter.com which display differently based on the user agent.
2021-04-14Browser: Respect the HttpOnly flag when storing cookiesTimothy Flynn
2021-04-14Browser+LibWeb+WebContent: Track the source of document.cookie requestsTimothy Flynn
To implement the HttpOnly attribute, the CookieJar needs to know where a request originated from. Namely, it needs to distinguish between HTTP / non-HTTP (i.e. JavaScript) requests. When the HttpOnly attribute is set, requests from JavaScript are to be blocked.
2021-04-14Browser+LibWeb: Move the cookie structure into LibWebTimothy Flynn
2021-04-14Browser+LibWeb: Move cookie parser into LibWebTimothy Flynn
This moves the cookie parsing steps out of CookieJar into their own file inside LibWeb. It makes sense for the cookie structures to be in LibWeb for a couple reasons: 1. There are some steps in the spec that will need to partially happen from LibWeb, such as the HttpOnly attribute. 2. Parsing the cookie string will be safer if it happens in the OOP tab rather than the main Browser process. Then if the parser blows up due to a malformed cookie, only that tab will be affected. 3. Cookies in general are a Web concept not specific to a browser.
2021-04-13Browser: Remove expired cookies from the CookieJarTimothy Flynn
The spec doesn't have any exact steps here, it just notes: The user agent MUST evict all expired cookies from the cookie store if, at any time, an expired cookie exists in the cookie store. Here, we implement "at any time" as "when a cookie is retrieved or stored".
2021-04-13Everywhere: It's now "Foobar", not "FooBar", and not "foo bar"Andreas Kling
I hereby declare these to be full nouns that we don't split, neither by space, nor by underscore: - Breadcrumbbar - Coolbar - Menubar - Progressbar - Scrollbar - Statusbar - Taskbar - Toolbar This patch makes everything consistent by replacing every other variant of these with the proper one. :^)
2021-04-13Browser: Implement spec-compliant cookie storageTimothy Flynn
https://tools.ietf.org/html/rfc6265#section-5.3 This includes a bit of an update to how cookies are first parsed. The storage spec requires some extra information from the parsing steps than just the actual values that were parsed. For example, it needs to know whether Max-Age or Expires (or both) were specified to give precedence to Max-Age. To accommodate this, the parser now uses an intermediate struct for storing this information. The final Cookie struct is not created until the storage steps. The storage itself is also updated to be keyed by a combo of the cookie name, domain, and path. Retrieving cookies was updated to use the spec's domain-matching algorithm, but otherwise is not written to the spec yet. This also does not handle evicting expired cookies yet.
2021-04-12Browser: Change value of "the latest representable date" for cookiesTimothy Flynn
Setting the year to NumericLimits<unsigned>::max() resulted in the following datetime: -2-12-31 00:00:00. Instead, set the latest datetime to the last second of the year 9999.
2021-04-12Browser: Add debug command to dump cookiesTimothy Flynn
Using document.cookie only lets the test page see the name/value pair; the value returned will not included the parsed attributes.
2021-04-12Browser: Process Expires cookie attributeTimothy Flynn
2021-04-12LibJS: Make Errors fully spec compliantLinus Groh
The previous handling of the name and message properties specifically was breaking websites that created their own error types and relied on the error prototype working correctly - not assuming an JS::Error this object, that is. The way it works now, and it is supposed to work, is: - Error.prototype.name and Error.prototype.message just have initial string values and are no longer getters/setters - When constructing an error with a message, we create a regular property on the newly created object, so a lookup of the message property will either get it from the object directly or go though the prototype chain - Internal m_name/m_message properties are no longer needed and removed This makes printing errors slightly more complicated, as we can no longer rely on the (safe) internal properties, and cannot trust a property lookup either - get_without_side_effects() is used to solve this, it's not perfect but something we can revisit later. I did some refactoring along the way, there was some really old stuff in there - accessing vm.call_frame().arguments[0] is not something we (have to) do anymore :^) Fixes #6245.
2021-04-12Browser: Process Secure and HttpOnly cookie attributesTimothy Flynn
2021-04-12Browser: Process Path cookie attributeTimothy Flynn
2021-04-12Browser: Process Domain cookie attributeTimothy Flynn
2021-04-12Browser: Process Max-Age cookie attributeTimothy Flynn
Note: the default expiry time should be the "the latest representable date". However, DateTime::from_timestamp(NumericLimits<time_t>::max()) isn't feasible due to the for-loops in LibC's time_to_tm. So instead, this just sets the date to the maxium year.
2021-04-12Browser: Parse cookie attribute name-value pairsTimothy Flynn
Implements the remainder of the parsing algorithm of RFC-6265 Section 5.2 to extract optional attributes. The attribute values are not processed.
2021-04-11Browser+LibWeb: Add hooks for getting and setting cookiesTimothy Flynn
2021-04-11Browser: Initial cookie storage implementationTimothy Flynn
This adds storage for cookies that maye be set via 'document.cookie' in JavaScript or the Set-Cookie HTTP header. For now, it parses only the name-value pair from a set-cookie line, but does not parse optional attributes. Currently, storage is ephemeral and only survives for the lifetime of the Browser instance.
2021-04-09Browser: Add a separator line below the menu while in multi-tab modeAndreas Kling
2021-04-09Browser: Add more Alt shortcuts to menu actionsAndreas Kling
2021-04-09Browser: Add Alt shortcuts to menu actionsAndreas Kling
2021-04-05Browser: Add Alt shortcuts for top-level menusAndreas Kling
2021-03-30Browser+LibWeb+WebContent: Add action to clear resource cacheTimothy Flynn
2021-03-27Browser: Set parent of tab child windowsLinus Groh
By setting the parent of the JS console, DOM inspector, view source and download windows, they will be destroyed automatically when the main browser window is closed. Fixes #2373.
2021-03-26Browser: Add right-click context menu item for editing bookmarksTimothy Flynn
This allows users to right-click on a bookmark button to open a small dialog for editing bookmark titles and URLs.
2021-03-25Userland: Turn all application menus into window menus :^)Andreas Kling
2021-03-12Everywhere: Remove klog(), dbg() and purge all LogStream usage :^)Andreas Kling
Good-bye LogStream. Long live AK::Format!
2021-03-09LibWeb: Rename CSSParser => DeprecatedCSSParserAndreas Kling
2021-03-07Applications: Open folder with pre-selected file where appropriate :^)speles
2021-02-28Browser: Implemented out of process JS consoleBrandon Scott
Added input hook into console widget to allow input to be captured and sent to the external JS console via IPC. Output from the external JS console is fed into the console widget via handle_js_console_output().