WebPositive matures

Blog post by stippi on Fri, 2010-03-19 12:31

Well... that might be a bit bold for me to say. Obviously WebPositive still has a lot of things missing. On the other hand, this version adds some of the most crucial things, like persistent cookie support, bookmarks and a much improved browsing history implementation. The bookmark implementation is fairly nice, I believe, using Tracker to manage the bookmarks and to sort them into categories as one wishes. It is using the same bookmark format that NetPositive used. Importing bookmarks from other formats has not yet been implemented. Maybe it's also a good idea to simply merge them, instead of doing a one time import. That could faciliate the situation where WebPositive and BeZillaBrowser are used side by side for a while. Among the missing features for bookmarks is using the favicon, if one is available. And there is a known bug where bookmarks fail to be created if the page title contains invalid glyphs for the file system. This should be fixed soon.

Then I've also been working on the Haiku app_server to accomodate some WebKit porting needs, like a new BView::DrawString() version that allows to position each character individually. This used to work in the WebKit port, but very inefficientlay, by drawing one glyph at a time. Meanwhile it was changed to draw the entire string in one go, which broke justified text and CSS3 letter spacing. All this is back in working order now. The other set of features I added to the Interface Kit and app_server is better BShape support, which again enables a few things in the WebKit port, drawing arcs and ellipses. To grasp the enormous importance of this work, consider that the Asteroids HTML5 democan now finally display the explosions in WebPositive!

Unfortunately, a lot more work is required on the app_server. Stroke dashing, affine transformations, bitmap fill patterns, clipping paths, alpha masks and powerful compositing modes... the list is long and will take some time to work through.

Still I have not upgraded the WebKit SVN version that the port is being based on, mostly since it seemed the tree is having some problems with reports of changes having caused regressions. I know that currently the login of Facebook is crashing WebPositve, which I believe is another symptom of using the system allocator instead of the WebCore built-in one, misaligned memory accesses being the underlying problem. It seems to trigger only in certain use cases, so that WebPositive crashes reliably instead of randomly (that is, until you know which sites crash it).

Other improvements in this version include support for tracking visited links, although only within the current session, but that allows more tests to pass, like the ACID3 test now doesn't display "LINKTEST FAILED" anymore. Another test suit is the CSS3 Selectors Test. I've been tracking down various issues exposed via such testing sites. The release of the IE9 testing platform by Microsoft was also an interesting event. Naturally, they picked tests which other browser do not handle well. But a whole range of tests fail for the same underlying missing feature, so that a score of 45% passed tests is not saying much when 40 or so percent of the tests basically test the same feature in various variations (an exaggeration of course). If you're wondering what the red square and the white cross are in the ACID3 tests, that is caused by missing support for custom fonts in our WebKit port. Two other tests do not yet pass, where one of them fails for computational stability problems, and the other one I have not yet tracked down. Just click on the A to get a prompt with the test results if you're interested.

Finally I've improved the consistency in the interface when switching pages. The progress bar and status text update to the page in question. Wrong favicons should be a thing of the past, and I've enabled smooth-scaling for bitmaps. Luckily the bitmap rendering in app_server is quite fast, as can be seen with the Flying Bitmaps test.

Since we are at a round revision now, I figured it's time for another post and update! You need an absolutely current Haiku version to run this. :-) Enjoy and have fun!

Download WebPositive (svn revision: r444)

Comments

Re: WebPositive matures

Dear stippi,

I have just started to suspect that you exist in more than just one copy. Your progress on WebPositive is unbelievable. I wish I had 1/10 of your efficiency in programming. Wow...

Best regards,
Platsek

Re: WebPositive matures

Hello again,

I am getting the following error when trying to run WebPositive (r333) on nightly Haiku r35900 (the newest one at the moment of writing this comment): Could not open "WebPositive" (Missing symbol: _ZN6BShape5ArcToEfffbbRK6BPoint). Does it mean I have to wait a couple of hours longer for tonight's build to get it running?

Best regards,
Platsek

Re: WebPositive matures

Yes, ArcTo was added in r35905 so you'll need at least that or newer. Generally speaking Web+ is highly likely to require bleeding edge Haiku revisions since stippi's adding so many missing features to the app_server and friends to support it.

Re: WebPositive matures

Wow! Just keeps getting better. Thanks, stippi!!

Re: WebPositive matures

Okay, not to put down your work or anything, because it's phenominal what you're doing and very useful, but do you (or does anybody) have an older revision to download, if a newer one is a few days off? The current one seems to pretty often render a blank page, and if it's one that scrolls enough I can scroll to get the content to show up, but Google search results for example are such a length that scrolling will only allow me to see the very top and very bottom of the page. Often I have to restart the browser to get some normal surfing for a while until the next time it happens.

Also maybe I missed it, but where's the bug tracker for Web+ that was mentioned on the Haiku list a couple days ago when someone asked about GSoC?

Thanks again for all your hard work!
Kev

Re: WebPositive matures

http://mmlr.dyndns.org has the bug tracker, sources and near the bottom of the page is a link for its nightly archive.

Re: WebPositive matures

Ah, thanks. For some reason on the latest Haiku now the r307 of Web+ isn't stable enough to load a page, and the latest nightly is still exhibiting the weirdness. I have a feeling it'll be all good soon enough though. :)

Unfortunately neither r307 nor the latest, nor BeZilla seem to be able to log in (the login popup only comes up once in a while, and whether or not it does, no page ever loads at /login) to the bug tracker (although Haiku's trac works okay on both.) I was able to register an account, though. I guess I'll have to wait until one of those is working to officially submit bugs.

Re: WebPositive matures

Kev, the WebPositive Trac install is served from a Haiku system and definitely has problems... :-) Sorry for the frustration. Pester Axel or Michael to look into the TCP problems...

The latest WebPositive is supposed to run as good as the versions before. The problems you are seeing could be caused by some version mismatch. Are you absolutely sure you are running the latest Haiku revision? For example, if you are running a GCC2-based hybrid, and upgraded via "jam ... update-all", then some of the GCC4 libs may not have been updated properly, since building hybrids only works reliably when doing a clean build.

Re: WebPositive matures

No worries stippi, I'm not frustrated, more just excited, but thought I should report what didn't seem to be working. I'm pretty sure I didn't have a version mismatch, though, depending on the build times I guess. I went to each web site and downloaded the latest nightly (in the case of Haiku, the gcc2-hybrid-raw) and used those.

About the strange blank rendering, sometimes resizing, scrolling (if applicable), and/or mousing over page elements makes them visible. Here's a screenshot I took:

http://img248.imageshack.us/img248/3884/screenshot1jw.png

Also if you're on a Google search page typing in the search textbox, each keystroke causes the page to flash between blank and rendered at least once, then after a second or so it might show you the page or it might be blank or it might be blank except for the box you're typing in. This started happening around the same time as the above blankness problem, because I had been using an older build for a few days for Googling things and it had been flawless for that.

Re: WebPositive matures

Hi Kev,

the update issue you see is really strange. I am not seeing this at all. The only updating issue I see is with my webmailer, GMX, where the list of emails or the emails to read is displayed in a frame. Sometimes, scrolling that frame causes glitches in the parent frame within parts above the embedded frame. I am a bit clueless as to what you could be experiencing.

Re: WebPositive matures

Just simply amazing. Thanks for all that you do, stippi!

Re: WebPositive matures

Cool! Bookmarks!

Could ~/config/settings/WebPositive/Bookmarks/ show by default the relevant attributes: Title, URL, Modified, Keywords ?
The Bookmarks menu should also just display the Title-attribute instead of the file name (also for folders).
Favicons as icons would also be a nice touch.

How about adding a URL attribute to all downloaded files?
Nice progress!

Regards,
Humdinger

Re: WebPositive matures

URL attributes on downloaded files? Hah! So you didn't actually try it. :-P

Re: WebPositive matures

Oops! Has this been there long? I thought I looked for that some time ago, but maybe I just missed it... :)

Now to something completely different (cue naked man at organ):
I often get an alert telling me "Transferred a partial file", which sometimes renders a page blank or, I guess, incomplete. What's up with that?

Next: open a link in a new tab and quickly switch back to the original page before the new page has been completely rendered. Now switch to the new tab. You'll still see the blank/incomplete page until you resize the window.

Have you considered opening new tabs in the background? I normally prefer that as it gives the new pages time to render while I read the original article, or pick other promising hits of a web search.

Idea if mouse gestures should become available (I generally haven't used those much back when I still used other OSs much...): A quick drag and drop towards the tab-bar could open the link as new tab, anywhere else and it opens in a new window.

Thanks!
Humdinger

Re: WebPositive matures

Yes, the URL attribute on downloads has been there since the very beginning.

Transfer errors in WebPositive are most likely due to less aggressive error handling in cURL compared to Firefox. Firefox also appears to nag less, it just shows the incomplete page without mentioning the error. The underlying problem is most likely in the Haiku networking implementation (kernel).

Opening tabs in the background is already implemented. It depends on which button you use to click a link. Middle mouse button always opens the tab in the background, while primary click is, well, primary and carries out the navigation immediately. If the associated action was to open a new window, it will open in a new tab and switch there immediately. Unfortunately, opening a link from the context menu is implemented inside WebCore and thus the port cannot distinguish it from a primary action. That should be fixed though, so it behaves like a tertiary click.

Drag & drop shall be implemented at some point. Right now I am not giving it high priority.

Re: WebPositive matures

WRT tertiary mouse button to open a link in a new tab in the background:
I have a notebook and Mouse preferences, showing a 3-button mouse type, lights up the middle button when I do CTRL+ALT+LeftClick. Unfortunately, this doesn't tab-load a link. When I connect a real mouse, however, this works.

Regards,
Humdinger

Re: WebPositive matures

I just tested r333 on r35920, Step by step it is becoming more complete, nice job!

I did run into a problem uploading files to trac. http://panman.eu/haiku/webpositive_upload.png Hopefully this is enough for you to reproduce this. Forgot to say: They actually do upload properly.

When are you thinking of moving WebPositive to the trunk? (no pressure of course). Or how about an optional package. (Probably include big warnings about requiring a current haiku version)

By the way, that Flying Images test is really a lot faster than on Firefox under Fedora 11. Impressive!

Re: WebPositive matures

Here's another issue: When I copy&paste some code from a website into Paladin and start compiling, I get many errors telling me

error: stray '\240' in program
error: stray '\302' in program

It looks like having to do with blank lines.

Regards,
Humdinger

Re: WebPositive matures

I've noticed these strange characters in pasted text as well and intend to fix it. It's funny because NetPositive had the same problem... :-)

Re: WebPositive matures

Humdinger wrote:

Here's another issue: When I copy&paste some code from a website into Paladin and start compiling, I get many errors telling me

error: stray '\240' in program
error: stray '\302' in program

It looks like having to do with blank lines.

Then WebPositive is great!!! This is exactly what would happen to me with NetPositive. I wrote FileFilter for BeOS to handle this, I have not tried it under Haiku but you can find it at:
http://www.haikuware.com/index.php?option=com_remository&Itemid=100094&f...

WebPositive *IS* the Haiku version of NetPositive.

Re: WebPositive matures

Hi Earl!

I compiled your FileFIlter and it does kinda works. It replaces the mystery characters with a "B ". Appears every blank line. So, it's not completely fixing it, but it simplifies things until Stippi fixes what's wrong. All I need to do now is a find&replace of "B "... :)

Thanks
Humdinger

Re: WebPositive matures

Humdinger wrote:

Hi Earl!

I compiled your FileFIlter and it does kinda works. It replaces the mystery characters with a "B ". Appears every blank line. So, it's not completely fixing it, but it simplifies things until Stippi fixes what's wrong. All I need to do now is a find&replace of "B "... :)

Check the code, that was suppose to be an '@' character, or you can change the code to not output any none printable character instead.

Which version did you use, CLI/GUI/Tracker Addon?

Re: WebPositive matures

I used the Addon code. It should replace non-printables with ASCII 64, which is "@". I changed it to 60 just for giggles, but it still outputs "B "...
The solution: As DiskProbe reveals, Web+'s output for a blank line is "0a c2 a0 0a".
"0a" are the line feeds for the new lines. When your filtering program strips off the highest bit, "c2 a0" becomes "42 20" which is "B ". That's again printable, and therefore not replaced with 64 == "@".

Maybe this helps stippi to have Web+ output blank lines correctly?

Regards,
Humdinger

Re: WebPositive matures

Thanks for the reply, that suggests I need to add some options to the code as there will be times where one will want to just strip the high bits vs times to remove all unprintable characters.

And I too hope that helps fix WebPositive, once I can use YouTube with it, my netbook becomes 100% Haiku. I don't even need to play the videos, I just need to be able to download them like I can do with FireFox.

Re: WebPositive matures

Today I'm doing a lot of the debugging and added something to trac using WebPositive itself... then I added an attachment and WebPositive gave me an error (something regarding transfer interrupted?), I retry 3 times... and I made a little mess :-( as you can see:

http://dev.haiku-os.org/ticket/4601

The attachment(s) seems OK, so the error is false (?).

For the rest it seems to works well, very very fast!

Another thing I lost a lot from Firefox is "text error recognition" (that reddish line on erratic text!) and the suggested corrected text... english is not my native tongue so sometimes I do mistaken...

Re: WebPositive matures

Hi Stippi, wonderful work :)

I don't know if you've implemented pop-ups?

At Haikuware, the file repository's thumbnails use pop-ups to show the enlarged images. WebPositive doesn't seem to be able to handle this. The rest of the site renders fine.

Re: WebPositive matures

i'm using it right now. i didn't think i'd ever be running a working Haiku, or escaping the clutches of the *zilla slowness... and here you've created this fast, feature-filled (considering it's youth) browser that's made it possible for me to do web stuff, on an alpha OS, on an old Pentium III 500MHz computer.

Thank you!

Re: WebPositive matures

Why is it not integrated in the nightly builds?