mona

54. Draw Optimization - WebKit porting to Mona OS

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

53. HTTP GET is slow - 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 …

52.Our First Tweet! - WebKit porting to Mona OS

The Tweet Hello, World2012-05-03 17:36:43 via web How we tweeted! TOC 0. Table of Contents - WebKit porting to Mona OS

46. A bug on repaint flow - 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…

MSG_TIMER をまとめるのはやめた

色々うまく動かない例が出たので。

Timer API の話続き

Windows の Timer Message や Message Queue に関してドキュメントを読んだ。いくつか興味深い話があったのでメモ。 Queue Size のデフォルトは 10000 。Mona は 1024 。 WM_PAINT, WM_TIMER, WM_QUIT 以外は Queue の最後に追加される。 WM_PAINT, WM_TIMER…

Timer API の悩み

Timer API で悩む。今の Mona のタイマーは指定時間後に MSG_TIMER というメッセージが飛んでくるという API 。受け手側がこのメッセージをハンドルし、タイマー発火後の処理を書かないといけない。この方式は Mona のマイクロカーネルメッセージングと大変…

Mona の Timer API の問題点

API は以下の 2 つ。 set_timer(intervalMsec) returns timerId kill_timer(timerId) set_timer 後は intervalMsec 毎に MSG_TIMER がそのスレッドのメッセージキューに放り込まれる。kill_timer でタイマーを破棄すれば MSG_TIMER は飛んでこなくなる。今ま…

45. JavaScript Console - WebKit porting to Mona OS

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

44. Show loading status on status bar - 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…

43. Status bar - WebKit porting to Mona OS

TOC 0. Table of Contents - WebKit porting to Mona OS

42. Changing Mouse Cursor when hover- 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…

41. Handling Mouse Event - WebKit porting to Mona OS

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…

40. A problem on invalidateContentsAndWindow() - WebKit porting to Mona OS

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…

39. Google Search - WebKit porting to Mona OS

We have "textbox" and "key event handler". Let's try Google Search. Yay! TOC 0. Table of Contents - WebKit porting to Mona OS

38. Change focus when tab key is pressed- 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…

37. Start working on Text Editing - WebKit porting to Mona OS

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…

36. Fixed image loading bug - WebKit porting to Mona OS

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

35. JavaScript/PNG images - 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

34. Crash on ICU library - 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…

33. Hello font - WebKit porting to Mona OS

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

32. Hello TOFU font - 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…

31. Can't debug OSX WebKit MiniBrowser with GDB - WebKit porting to Mona OS

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…

30. Moved to github - WebKit porting to Mona OS

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…

29. Improving turn around time - WebKit porting to Mona OS

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…

28. Show an image - WebKit porting to Mona OS

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…

27. A first screenshot of our browser - WebKit porting to Mona OS

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…

26. Got a title - WebKit porting to Mona OS

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…

25.Classes named xxxClient on WebKit - WebKit porting to Mona OS

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 …

24. What does WebView do? - WebKit porting to Mona OS

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…