21. No undefined references - WebKit porting to Mona OS


With a great help from notImplemented() function, there's no undefined references on MonaLauncher whose source code is following.

#include <config.h>
#include <Page.h>
int main(int argc, char* argv[]) {
  WebCore::Page::PageClients pageClients;
}

Size of MLAUNCH.EXE is 49MB!. What happens when it runs? It is not tied to Window System yet.

MONA_ASSERT failure Loader.cpp:21: size < MAX_IMAGE_SIZE
kernel panic

Okay, the binary executable is too big. Defined MAX_IMAGE_SIZE=100MB on the kernel.
Re-run it. Yay, no errors.


The next thing we have to do is to define WebView?.

Wrote following code, which seems a minimal WebKit client code.

#include <config.h>
#include <Page.h>
#include <Frame.h>
#include "FrameLoaderClientMona.h"

int main(int argc, char* argv[]) {
  printf("%s %s:%d\n", __func__, __FILE__, __LINE__);
  WebCore::Page::PageClients pageClients;
  WebCore::Page* page = new WebCore::Page(pageClients);
  WebCore::FrameLoaderClientMona* loaderClient = new WebCore::FrameLoaderClientMona();
  RefPtr<WebCore::Frame> frame = WebCore::Frame::create(page, 0, loaderClient);
  frame->init();
  WebCore::ResourceRequest req = WebCore::ResourceRequest("http://google.com/");
  frame->loader()->load(req, false);
  printf("%s %s:%d\n", __func__, __FILE__, __LINE__);
}

And then killed :D

================================================================================
Killed MLAUNCH.EXE (thread 0th)

 Reason:
    Access denied

 Stack trace:
     1. (a2a30f51)   (unknown)  
     2. (a2a0e30f)   (unknown)  
     3. (a2a0e9ef)   (unknown)  
     4. (a0ab55a5)   (unknown)  
     5. (a2a2100e)   (unknown)  

 Registers:
    eax : 00000000 ebx : a2a19000 ecx : ffffffff edx : 0000000c
    esp : effffc34 ebp : effffc38 esi : efffff0c edi : 0000000c
    cs  : 0000002b ds  : 00000033 ss  : 0000003b cr3 : 00312000