<br><br><div class="gmail_quote">On Tue, Jul 28, 2009 at 2:12 AM, Jonas Sicking <span dir="ltr">&lt;jonas@sicking.cc&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div></div><div class="h5">On Tue, Jul 28, 2009 at 1:38 AM, Maciej Stachowiak&lt;<a href="mailto:mjs@apple.com">mjs@apple.com</a>&gt; wrote:<br>
&gt;<br>
&gt; On Jul 27, 2009, at 10:51 PM, David Levin wrote:<br>
&gt;<br>
&gt; It sounds like most of the concerns are about the 2nd part of this proposal:<br>
&gt; allowing a background page to continue running after the visible page has<br>
&gt; been closed.<br>
&gt; However, the first part sounds like it alone would be useful to web<br>
&gt; applications like GMail:<br>
&gt;<br>
&gt; The first, which should begenerally useful, is the ability to have a hidden<br>
&gt; HTML/JS page running<br>
&gt; in the background that can access the DOM of visible windows. This<br>
&gt; page should be accessible from windows that the user navigates to. We<br>
&gt; call this background Javascript window a &quot;shared context&quot; or a<br>
&gt; &quot;background page&quot;. This will enable multiple instances of a web app<br>
&gt; (e.g. tearoff windows in Gmail) to cleanly access the same user state<br>
&gt; no matter which windows are open.<br>
&gt;<br>
&gt; + restrict things to the same security origin.<br>
&gt; It sounds similar in concept to a share worker except that it runs in the<br>
&gt; main thread and is more concerned with dom manipulation/state while workers<br>
&gt; have typically been thought of as allowing background processing.<br>
&gt; It seems that the lifetime of this could be scoped, so that it dies when it<br>
&gt; isn&#39;t referenced (in a similar way to how shared worker lifetime is scoped).<br>
&gt;<br>
&gt; This idea actually sounds reasonably ok, and I think I once proposed<br>
&gt; something like this as an alternative to shared workers as the way for<br>
&gt; multiple app instances to share state and computation.<br>
&gt; It&#39;s really the bit about invisibly continuing to run once all related web<br>
&gt; pages are closed that I would worry about the security issues.<br>
<br>
</div></div>The only concern I see with this is that it permanently forces all<br>
windows from the same domain to run in the same process. As things<br>
stand today, if the user opens two tabs (or windows) and navigates to<br>
the two different pages on <a href="http://www.example.com" target="_blank">www.example.com</a>, then a browser could if it<br>
so wished use separate processes to run those two pages. If we enabled<br>
this API the two pages would have to run in the same process, even if<br>
neither page actually used this new API.<br>
<font color="#888888"><br>
/ Jonas</font></blockquote><div><br></div><div>There are conflicting requirements along these lines that would need to be resolved...</div><div><br></div><div>1) A nested iframe needs to run in the same process as its containing page.</div>
<div>2) A shared context needs to run in the same process as its client pages.</div><div><br></div><div>... but what if a nested iframe document in processA connects to a sharedContext that has already been loaded into processB. Somethings gotta give.</div>
<div><br></div><div>What if a sharedContext isn&#39;t gauranteed to be a singleton in the browser. A browser can provide best effort at co-locating pages and sharedContexts, but it can&#39;t gaurantee that, and the spec respects that.</div>
<div><br></div><div>The lesser gaurantee is that all directly scriptable pages (those from a given set of related browsing contexts) WILL share the same sharedContext (should the refer to it).</div><div><br></div><div><br>
</div><div> </div></div><br>