summaryrefslogtreecommitdiff
path: root/Userland/Applications
AgeCommit message (Collapse)Author
2021-04-20FileManager+FileOperation: Report Errors when doing an file operationTobias Christiansen
Report back errors from the FileOperation to the FileManager and display them in the MessageBox
2021-04-20FileManager: Don't crash on error in FileOperationTobias Christiansen
did_error() caused the program to crash since the DialogBox tried to run its own Notifier with the same - now invalid because closed - fd. In addition to setting the member that is the Notifier to nullptr we also tell the Notifier that it is not enabled anymore.
2021-04-19LibGfx: Improve PNG encoder API somewhatAndreas Kling
This is still far from ideal, but let's at least make it take a Gfx::Bitmap const&.
2021-04-18FontEditor+LibGfx: Allow user to specify if a specific glyph is presentIdan Horowitz
This replaces the glyph width spinbox in the font editor with a checkbox when editing fixed width fonts that indicates if the currently selected character's glyph is present in the edited font (For variable width fonts a non zero width implies presence) This commit also changes the background color of glyphs in the glyph map based on the presence of each specific glyph in the font.
2021-04-18FontEditor: Update GlyphMap on font type changeIdan Horowitz
Since font type changes also change the amount of glyphs in a font, the glyph map has to be re-rendered to properly showcase the change.
2021-04-18LibJS: Implement console.assert()Linus Groh
2021-04-18Browser+WebContent: Fix HTML injection in console functions outputLinus Groh
2021-04-18FileManager: Show action status tips in the status bar :^)Andreas Kling
2021-04-18Everywhere: Rename title_bar => titlebarAndreas Kling
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-18Everywhere: Fix a bunch of typosLinus Groh
2021-04-18FileManager: Pluralize empty selection statusbar message properlyLinus Groh
"item(s)" is silly, we can be more specific. :^)
2021-04-17Run: Put the window in the bottom left of the desktopAndreas Kling
This makes a lot more sense now that it's spawned by the start button.
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-17TextEditor: Show action long texts in the status bar :^)Andreas Kling
We now display a description of the currently hovered action in the text editor application's status bar. This is pretty cool! :^) This is currentl achieved via the hooks on GUI::Application. Longer term we'll probably want to find a more flexible abstraction for this, since not all applications will be as simple as TextEditor.
2021-04-17FileManager: Estimate transfer timeLeandro Pereira
Use the total bytes transferred count to estimate the time left for the copy operation to finish. With the estimate label, the two progress bars were deemed superfluous, so the only remaining progress bar is the overall copy progress, that is updated more frequently. (The same progress is also shown in the task bar, so you can minimize the window and still be informed of the progress.)
2021-04-17FileManager: Show file copying animationLeandro Pereira
Bring some mid-90s charm and show a file flying animation while copying files. Icons for both source and destination directories are currently the default icons, but in the future they could be the respective icons for the destination directory.
2021-04-17FileManager: Make DirectoryView API's take String instead of StringViewAndreas Kling
2021-04-16HexEditor: Use debgln_ifHendiadyoin1
2021-04-16PixelPaint: Add keyboard zoom shortcutsJagger De Leo
You can now use Ctrl+= and Ctrl+- to zoom in and out.
2021-04-16PixelPaint: Add Zoom Reset button to new View Menubar.Jagger De Leo
If you lose your image while panning and zooming around, it is handy to have a reset function to get back home. :^)
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-16Everywhere: Add `-Wdouble-promotion` warningNicholas-Baron
This warning informs of float-to-double conversions. The best solution seems to be to do math *either* in 32-bit *or* in 64-bit, and only to cross over when absolutely necessary.
2021-04-15Welcome: Fix build breakageAndreas Kling
2021-04-15Everything: Add `-Wnon-virtual-dtor` flagNicholas-Baron
This flag warns on classes which have `virtual` functions but do not have a `virtual` destructor. This patch adds both the flag and missing destructors. The access level of the destructors was determined by a two rules of thumb: 1. A destructor should have a similar or lower access level to that of a constructor. 2. Having a `private` destructor implicitly deletes the default constructor, which is probably undesirable for "interface" types (classes with only virtual functions and no data). In short, most of the added destructors are `protected`, unless the compiler complained about access.
2021-04-15Applications: Rename Serendipity => WelcomeAndreas Kling
Let's stick to the theme of "the most obvious name possible"
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-13FileManager+FileOperation: Show byte progress of current fileAndreas Kling
What I meant for the GUI progress bars to show: - Bytes copied of the current file - Files copied of the total set What it actually showed: - Bytes copied of the total bytes - Files copied of the total set This patch fixes it by showing byte progress of the current file instead of byte progress of total bytes.
2021-04-13FileManager: Use a Core::File for the FileOperation pipesAndreas Kling
Instead of popen()/pclose(), we now open the pipes manually and wrap them in a friendly Core::File object.
2021-04-13FileManager: Use FileOperation to perform drag&drop copy out-of-processAndreas Kling
And display the progress of the copy operation in a separate window. :^) Note that this patch only updates the drag&drop code path to use the new mechanism. We still have to go through FileManager and make use of this everywhere. We also need to support additional operations, like Move, Delete, etc. Still, this is quite cool! :^)
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-12Serendipity: Paint theme agnostic bannerthankyouverycool
And remove temporary welcome-banner.png. Fixes invisible text in dark themes.