<div class="gmail_quote">On Tue, May 26, 2009 at 5:05 PM, Sam Weinig <span dir="ltr">&lt;<a href="mailto:sam.weinig@gmail.com">sam.weinig@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="gmail_quote"><div class="im">On Tue, May 26, 2009 at 4:12 PM, Jeremy Orlow <span dir="ltr">&lt;<a href="mailto:jorlow@chromium.org" target="_blank">jorlow@chromium.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">

The common case is definitely that we know whether we want the proxy (for IPC) or the implementation at compile time.  In some cases (like Chromium) this is not known until initialization time. </blockquote><div><br></div>

</div><div> What do you mean by &quot;initialization time&quot;?  Is it the case that you know which one you want at each call site?  Or do literally want to make a runtime choice based on state?<br></div></div></blockquote>
</div><br>Well, I meant that we always want one or the other based on if the process is being used as a render process (i.e. sandboxed, running WebKit but with all DOM Storage calls proxied) or a browser process (i.e. running only selected parts of WebCore like the DOM Storage backend/implementation).<br>
<br><br>Come to think of it (IIRC) all calls to the StorageBackend within the WebCore code should go through a proxy for Chromium.  The proxy will then call into Chromium&#39;s webkit bridge/glue, which will pass the message through the IPC layer, which will call back into bridge/glue code, which will be interacting with the real implementation.<br>
<br>If that&#39;s true, then the implementation could be very explicitly split into 2 (with frontend code calling backend proxy code and vice versa) and single process implementations could simply typedef _____Proxy to _____Impl (or Implementation, or Base, or whatever you want to call it).<br>
<br>....or have I completely confused myself?<br><br>J<br>