I think it's a great idea and the only drawback I can see is the WTF
dependency and the security implications, which shouldn't be anything
we couldn't overcome.

The biggest challenges IMHO would be:

1) clearly identifying what backend and frontend mean and where the
separation occurs. I worry (perhaps without substance) that the
definition may vary from port to port.
2) general logistics of actually lopping off huge parts of existing
WebKit code and refactoring them in-flight.

But I totally think we (you) are up to the challenge :)

:DG<

On Tue, Apr 28, 2009 at 5:05 PM, Jeremy Orlow <jor...@chromium.org> wrote:
> Yes, yes, I know this is a "horrible idea", but please hear me out....  :-)
>
> Last week, a couple of us (Darin F, Michael N, Jeremy M, and I) had lunch at
> Apple to talk to talk about sharing more code. HTML 5 brings with it a lot
> of APIs that reach outside of the top level browsing context boundary (i.e.
> the render process boundary in Chromium). We talked specifically about
> localStorage and appCache. Although I believe the following generalizes well
> for any such API, I recognize that there are some unique constraints for
> stuff like databases...so I'm not even going to talk about them right now.
> Anyhow...
> For a while now, I've looked at a bunch of ways to make localStorage
> multi-process aware, but really none of them have any hope except one:
> splitting localStorage into a frontend and backend. The frontend would be
> the portion in each renderer process that connects into the JS bindings. A
> single backend would store all the data and be shared by the frontends.
> Originally, my plan was to do this split and then write my own back end in
> the browser process, but there are several problems with this. From a
> technical standpoint, it's unclear how testing would work since our
> test_shell would be testing a different backend from what's in Chromium. It
> also means we have more code to maintain, and that code is completely off of
> WebKit's radar. It also makes Apple mad and Dimitri sad. So really, this
> doesn't seem like a good solution.
> Assuming the only viable solution is having several frontends talking to one
> backend (I'm confident this is true) and assuming having our own backend is
> not viable (this also seems true), then the only choice is for us to use the
> WebCore backend. We can't run this in any renderer process since the
> response times for browser->renderer communication are unbounded. So that
> leaves either the browser process or some browser helper process.
> Creating a helper process for the browser seems like a pretty interesting
> idea to me since there's already a lot of somewhat dangerous stuff running
> in the browser process. (The only thing I can remember right now is v8 for
> parsing .pac files, but I know there's more.) Basically, the helper process
> would be a sandboxed process where anything "dangerous" but not bound to a
> single renderer process would run. Ideally it would store little to no state
> so that the browser could easily restart it and resend any pending messages
> if it crashed. For localStorage, the backend (which is part of WebCore)
> would run there and all localStorage messages would be proxied through the
> browser process. The VFS could be used to retrieve file handles.
> The other option is to simply run part of WebCore's localStorage within the
> browser process. LocalStorage only depends on WTF, so this really isn't
> _that_ terrible of an idea. Thoughts?
> Anyhow, the WebKit guys we talked to like the idea of a split
> frontend/backend, especially if it means we'll continue sharing code. I
> believe Michael is going to be doing something similar for AppCache.
> J
> >
>

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: chromium-dev@googlegroups.com 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to