1 | | Chromium process models (for reference): [https://sites.google.com/a/chromium.org/dev/developers/design-documents/process-models] |
| 1 | == Current status == |
| 2 | * Sam explained the WebKit2 API using http://trac.webkit.org/wiki/WebKit2 |
| 3 | * Huge improvement over last year |
| 4 | * It switched from a science project to a real browser |
| 5 | * They had some issues with designing a Browser API (lots of classes need to be exposed but it is difficult to know which one specially are required to be) |
| 6 | * They chose a C API (to avoid the fragile class problem in C++) but it may not have been a great choice: the Qt people do not use the WebKit2 API for example. |
| 7 | * However the Gtk community sided with it. |
| 8 | * Apple will push their out-of-process plugin code to the plugin/ directory. |
| 9 | * However they want to *replace* one of our 5-6 implementations instead of adding yet another one. |
| 10 | * DRT rewritten but did not have the same functionnality as the old one. |
| 11 | * Problems with EventSender as it needs to run events synchronously. |
| 12 | |
| 13 | == Merging WebKitTestRunner and DRT == |
| 14 | * Sam was not sure how much could be merged? |
| 15 | * Using code generator (IDLParser.pm) instead of manually writing the JS properties / methods could be a way to avoid duplicating code |
| 16 | * Current problem: people write a new test that uses a new or existing feature in DRT and WebKitTestRunner does not pass.... |
| 17 | * Solution: IDL based generation (however some implementation '''will need''' to be different) |
| 18 | * There will still be some amount of overlap between the 2 |
| 19 | * Alexey is proposing a new library to have consistent results as it was determined that ports differ in the way they dump their results |
| 20 | ** "We need to merge DRT with itself" |
| 21 | |
| 22 | == API InjectedBundle == |
| 23 | * Kind of plugins to the Browser (they can be used to implement extensions) |
| 24 | * Bits of code that you can inject to the web-process associated with a Browser. They can also listen to events. |
| 25 | * All data in InjectedBundles should be considered untrusted. |
| 26 | * It is basically an object graphs |
| 27 | * It can be thought of as an "agreed-upon API for objects" |
| 28 | * One of the nice feature of this API is that it does not need to expose the protocol |
| 29 | * However it induces a lot of boiler plate code (mostly type checking) |
| 30 | * Very similar to WK objects |
| 31 | * Maybe add a better abstraction for dictionnary or array. |
| 32 | |
| 33 | == WebKit 1 - 2: Code sharing == |
| 34 | * Talk about sharing the key bindings in Gtk? |
| 35 | ** Solution: Push to WebCore/platform so that they can be shared |
| 36 | * Example: WindowsMessageBroadcaster |
| 37 | * To enable code sharing, we need to have more logic in WebCore! |
| 38 | |
| 39 | == Missing from the current implementation == |
| 40 | * Multiple processes in the same tab (a la Chromium) |
| 41 | * Chromium actually has a limited number of processes and change WebKit instances on the fly |
| 42 | * Chromium process models (for reference): [https://sites.google.com/a/chromium.org/dev/developers/design-documents/process-models] |
| 43 | * Rendering PDF |
| 44 | * Stability is still not quite there yet |
| 45 | * Refining how the sandboxing works (uses fancy mac implementation of sandboxing) |
| 46 | * Want to move networking / filesystem access out of the web-process |
| 47 | * Threaded mode is dead at the moment (should work if you have no processes at all), *may* want to be brought back but it is a challenge |
| 48 | * Similar flag in Chromium, very handy for certain platform |
| 49 | * low-level communication code is very specific to the platform! |
| 50 | * Accessibility is supported on Mac but kind of difficult... Does not work on Windows and it will be difficult to implement |
| 51 | * Chromium may be sharing the tree across process boundaries but WebKit2 is not |
| 52 | |
| 53 | == Multiple processes for the same browser == |
| 54 | * Envisioned |
| 55 | * Would like to but lots of changes required |