summaryrefslogtreecommitdiffstats
path: root/chromium/docs/website/site/developers/design-documents/cookies-and-prerender/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/docs/website/site/developers/design-documents/cookies-and-prerender/index.md')
-rw-r--r--chromium/docs/website/site/developers/design-documents/cookies-and-prerender/index.md68
1 files changed, 0 insertions, 68 deletions
diff --git a/chromium/docs/website/site/developers/design-documents/cookies-and-prerender/index.md b/chromium/docs/website/site/developers/design-documents/cookies-and-prerender/index.md
deleted file mode 100644
index 361afa49f53..00000000000
--- a/chromium/docs/website/site/developers/design-documents/cookies-and-prerender/index.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-breadcrumbs:
-- - /developers
- - For Developers
-- - /developers/design-documents
- - Design Documents
-page_name: cookies-and-prerender
-title: Cookies and Prerender
----
-
-Shared local storage such as DOM storage, IndexedDB, and HTTP cookies present
-challenges for prerendering. Ideally mutations made by the prerendered page
-should not be visible to other tabs until after the user has activated the page.
-Mutations made by other pages should be reflected in the prerendered page, which
-may have already read from local storage before the other pages made the
-changes.
-There is some thought about adding a transactional cookie store which would be
-memory only for the prerendered page. Unlike some of the HTML5 storage
-mechanisms, cookies primarily exist in HTTP and setter's may not have access to
-the Visibility API to change behavior. Basically, the transactional store would
-exist in memory only. If the user never uses a prerendered page, any mutations
-will just disappear. If the user tries to navigate to a page, mutations in the
-transactional cookie store are compared against mutations in the profile's main
-cookie store. If there are any conflicts, the prerendered page is cancelled and
-the mutations disappear. Otherwise, the mutations are merged into the profile's
-main cookie store and the page is swapped in.
-
-Prerendered requests will use a ChromeURLRequestContext which has a new
-CookieStore interface, but is otherwise the same as the current profile’s
-ChromeURLRequestContext. If the PrerenderContents are discarded without being
-used, the changes made to the CookieStore interface go away. Otherwise, the
-deltas will be committed to the main CookieStore for the profile. If there is a
-merge problem, the prerendered page is discarded and a fresh request is issued.
-There are a couple of possible approaches to implementing this:
-a) Do a complete copy of the canonical cookie store for the prerendered page.
-Both the canonical cookie store and the prerendered cookie store make mutations
-locally, and both maintain a log of mutations. Abandoning is simple: just delete
-the new cookie store. Conflict detection happens by examining the logs of the
-canonical store and the prerender store, and merges are simply applying the logs
-of the prerendered store to the canonical store if no detection detected. The
-main advantage is that this does not change the current "get all cookies for
-this request" path at all. The downsides are memory cost plus memcpy
-(back-of-the-envelope estimate is 600KB for store) and some overhead for
-Set-Cookie in non prerender case due to log.
-b) Add ability for CookieMonster's to be chained together. The prerendered
-version starts out with 0 entries, but points to the canonical backing store.
-Set-Cookie in the prerendered page only adds entries to the prerendered version.
-"Get all cookies" in the prerendered page will need to merge together cookies
-from the prerendered cookiemonster and the backing cookiemonster. Abandoning is
-easy - just remove the prerendered cookie monster. Merge will look at last
-modified times for entries and any newer ones in the backing store will cause
-conflict detection. The main concern is how to detect a clearing of Set-Cookie
-in the backing store at the time of merge. The main advantage of this case is
-low overhead at startup and fairly minimial logic changes. The concerns are the
-complexity of "get all cookies" for the prerendered case, as well as detecting
-deleted cookies during the merge.
-c) Add a new CookieStore implementation which stores diffs and has a
-CookieMonster backing store. This is similar to b), but could handle the deleted
-cookie case better. The downside is the potential for lots of duplicated logic,
-and very different lookup paths. Also, a fair bit of code does downcasting of
-CookieStore to CookieMonster, so the CookieStore interface will need to change
-for this to work.
-A few other concerns:
-- Are cookies ever cached in the render process? For example, does
-document.cookies do an IPC over to the CookieMonster to retrieve the values each
-time, or is there a cache that we will have to deal with?
-- How big are the cookiestore's typically? Could we get away with the
-copy-and-log approach? \ No newline at end of file