mona
Improved our Window System. Added clipping support. Decreased frequency of repaint(). Also performed refactoring around WebView/WebPage. Now it becomes much faster. TOC 0. Table of Contents - WebKit porting to Mona OS
Using Twitter on our WebKit is not comfortable, because it's slow. So the next step is make it faster. At first I thought renderring was slow. Yes it was slow, but HTTP GET is much slower than it. As you know, to make Twitter work, WebKit …
The Tweet Hello, World2012-05-03 17:36:43 via web How we tweeted! TOC 0. Table of Contents - WebKit porting to Mona OS
Finally, I understand why my WebKit port crashes on doDeferredRepaints. Here are steps to repaint. (1) FrameView::doDeferredRepaints (2) ScrollView::scrollContents (3) ChromeClient::invalidateContentsAndWindow (4) WevView::paint (5) FrameV…
色々うまく動かない例が出たので。
Windows の Timer Message や Message Queue に関してドキュメントを読んだ。いくつか興味深い話があったのでメモ。 Queue Size のデフォルトは 10000 。Mona は 1024 。 WM_PAINT, WM_TIMER, WM_QUIT 以外は Queue の最後に追加される。 WM_PAINT, WM_TIMER…
Timer API で悩む。今の Mona のタイマーは指定時間後に MSG_TIMER というメッセージが飛んでくるという API 。受け手側がこのメッセージをハンドルし、タイマー発火後の処理を書かないといけない。この方式は Mona のマイクロカーネルメッセージングと大変…
API は以下の 2 つ。 set_timer(intervalMsec) returns timerId kill_timer(timerId) set_timer 後は intervalMsec 毎に MSG_TIMER がそのスレッドのメッセージキューに放り込まれる。kill_timer でタイマーを破棄すれば MSG_TIMER は飛んでこなくなる。今ま…
Supported JavaScript console, which show console.log and errors. It's easy, just override ChromeClient::addMessageToConsole function. Thanks to @filil_tech. TOC 0. Table of Contents - WebKit porting to Mona OS
When you click one of links on your browser, you will see some kind of loading status such as "Sending request..." or "Waiting...". They are much more important than you think. Without them, you can't know whether loading starts or not, an…
TOC 0. Table of Contents - WebKit porting to Mona OS
When you move mouse cursor to a link on browser, the cursor changes. This should be implemented on Webkit for MonaOS.At first step, design you cursor. Using M-x picture-mode on Emacs, drawn and designed a cursor. Then added API for changin…
Handling mouse event is almost same as keyboard event. All you have to do is Define PlatformMouseEvent constructor for your port Handle your native MouseEvent on WebView then convert it PlatformMouseEvent Pass PlatformMouseEvent to Focused…
On some of WebKit ports, layout function such as FormView::updateLayoutAndStyleIfNeededRecursive() is called in ChromeClient::invalidateContentsAndWindow. But in at least Mona port, it causes some kind of bad recursive call of void FrameVi…
We have "textbox" and "key event handler". Let's try Google Search. Yay! TOC 0. Table of Contents - WebKit porting to Mona OS
On tab key press, focus on a element changes to another one. This behaviour is written in EventHandler::defaultTabHandler.cpp. And works for my browser. So the next step is type search keyword on google.com. It crashes now.. TOC 0. Table o…
LTNS. Our first step of text editing works. We wrap os-dependent key events in PlatformKeyboardEvent, then handle them on EditorClient. Does it sound easy? No, it much more difficult than I expected. TOC 0. Table of Contents - WebKit porti…
Fixed image loading bug. Our select function has a bug on the readfds paramter. Here are the latest screenshots. TOC 0. Table of Contents - WebKit porting to Mona OS
Enabled JavaScript Ported zlib and libpng Enabled PNG image load Enabled JavaScript Enabled libpng TOC 0. Table of Contents - WebKit porting to Mona OS
When we access more real website such as http://facebook.com and http://google.com, the browser crashes. The backtrace shows a crash on ICU library. I found two bugs. The one is easy to find, one fuction returns 1 which should be return co…
With a help of the previous TOFU font showing, we finally succeeded in showing system font. Font size and type are just ignore for now. TOC 0. Table of Contents - WebKit porting to Mona OS
Succeeded showing TOHU font, which is just a filled rectangle. The reason why no fonts was shown is FontMetrics::height() returned always zero. We should have set ascent and descent on SimpleFontData::platformInit as follows. void SimpleFo…
Since Mona has a poor debug feature, we want a stable debuggable WebKit. I think the OSX WebKit MiniBrowser is suitable for this usage. Building % Tools/Scripts/set-webkit-configuration --debug % make -C Source/JavaScriptCore % make -C Sou…
Our local WebKit repository was unintentionally removed. 6-day-commit was lost. So we moved to github. Here is our branch https://github.com/higepon/webkit/tree/monaos-port. Our branch is 6608 commits behind!. TOC 0. Table of Contents - We…
Hajime Morrita strongly recommend me to use more high-spec machine or EC2 for building WebKit. I think he is right, but we should also improve whole turn around time. Almost time is spent on making an OS image and booting from it. Fortunat…
Succeeded in showing an image. For now we support only bmp format, but it's easy to support other formats. What we have done are Added setting and changed some. page_->settings()->setLoadsImagesAutomatically(true); Called forceLayout() Int…
Finally I found a way to fetch a image buffer from WebKit. I was sure that Webkit was ready to draw, but it was really hard to find the point. The code to draw is as following. The point is to pass GraphicsContext to FrameView::paint() fun…
Our WebKit port reached at the curl layer which issues HTTP request. The request is successfully sent and a response comes. The response is redirected to the parser. Finally we get a title of the web page on FrameLoaderClientMona::setTitle…
We see many classes named xxxClient on WebKit. And also we have to implement them. For example we should implement following classes. ChromeClient ContextMenuClient CookieJarClient DragClient EditorClient FrameLoaderClient Since they have …
We have to implement our own WebView class. I had a quick look at Haiku port WebView. It uses many WebCore classes, I don't understand what they do. Okay, we need to discern the big picture. Found Surfin' Safari - Blog Archive » How WebKit…