In order to be able to use a generic hashmap in things such
as the fs_backing_store we want one to exist. Here it is,
along with some moderately comprehensive tests.
Current limits:
1. All keys and values are owned by the hashmap
2. The hashmap, while capable of different bucket counts
only has a single fixed count for now
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
By doing this, we ensure the scrollbars update their thumbs
properly, otherwise they can lag behind the page shape somewhat.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
To correctly have the GUI know about all url bar updates, we
should inform it during the processing of redirects and we should
ensure that when we're in the ready-but-not-done phase we do not
use the fetch parameters but instead the content's known URL
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
To correctly refocus the location box on tab switching we
need to not update the url of the tab when the scaffold updates
its global context.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Because the initial navigation process on new browser window
creation is somewhat complex, we need a small state machine in
the GTK UI to ensure that we handle the correct combination
of focussing needed to maintain selection through initial tab
opening.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
So that when we create a new tab we automatically focus the
location box, pass the flag into create, and honour it when it
comes back to us.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
In the creation of a browser window it may be valuable to request
that the GUI focus the location input box. This can be used when
the user requests a new tab/window to allow the entry box to be
focussed properly immediately.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
This gets rid of temp_open_background which was, frankly, a bit
of an eyesore. In addition it makes the open-in-new-tab context
menu action behave like Firefox's with respect to the user's preference
regarding whether or not to immediately focus new tabs.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
To better support new-tab / new-window operations as well as
GUIs which want to allow tabs to open in the background by default,
add a flag to request a new browser window be foregrounded. This
will allow us to simplify at least the GTK frontend a little.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
This is a *very* rudimentary implementation lacking most of the
functionality of NamedNodeMap but it's enough to get jQuery 1.12.4 up.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
To get us further along the JavaScript pathway, support the
getter and setter for innerHTML. The getter always returns
an empty string for now, but the setter works.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
The async script completion process needs to complete the
content state machine so that browser throbbers eventually
stop once async scripts have fetched and run, even if that
happens *after* conversion finishes.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
This should enable keyboard support for the other core windows
such as cookies, global history and the hotlist.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
In order to let keypresses operate the local history window on
GTK3 we have to permit the drawing area to get focus so that
the keypresses actually make their way into the event loop in
the correct place.
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>