OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 28 matching lines...) Expand all Loading... |
39 #include "platform/weborigin/ReferrerPolicy.h" | 39 #include "platform/weborigin/ReferrerPolicy.h" |
40 #include "platform/weborigin/SecurityPolicy.h" | 40 #include "platform/weborigin/SecurityPolicy.h" |
41 | 41 |
42 namespace blink { | 42 namespace blink { |
43 | 43 |
44 // static | 44 // static |
45 PassOwnPtr<PrerenderHandle> PrerenderHandle::create(Document& document, Prerende
rClient* client, const KURL& url, const unsigned prerenderRelTypes) | 45 PassOwnPtr<PrerenderHandle> PrerenderHandle::create(Document& document, Prerende
rClient* client, const KURL& url, const unsigned prerenderRelTypes) |
46 { | 46 { |
47 // Prerenders are unlike requests in most ways (for instance, they pass down
fragments, and they don't return data), | 47 // Prerenders are unlike requests in most ways (for instance, they pass down
fragments, and they don't return data), |
48 // but they do have referrers. | 48 // but they do have referrers. |
49 const ReferrerPolicy referrerPolicy = document.referrerPolicy(); | |
50 | |
51 if (!document.frame()) | 49 if (!document.frame()) |
52 return PassOwnPtr<PrerenderHandle>(); | 50 return PassOwnPtr<PrerenderHandle>(); |
53 | 51 |
54 const String referrer = SecurityPolicy::generateReferrerHeader(referrerPolic
y, url, document.outgoingReferrer()); | 52 RefPtr<Prerender> prerender = Prerender::create(client, url, prerenderRelTyp
es, SecurityPolicy::generateReferrer(document.referrerPolicy(), url, document.ou
tgoingReferrer())); |
55 | |
56 RefPtr<Prerender> prerender = Prerender::create(client, url, prerenderRelTyp
es, referrer, referrerPolicy); | |
57 | 53 |
58 PrerendererClient* prerendererClient = PrerendererClient::from(document.page
()); | 54 PrerendererClient* prerendererClient = PrerendererClient::from(document.page
()); |
59 if (prerendererClient) | 55 if (prerendererClient) |
60 prerendererClient->willAddPrerender(prerender.get()); | 56 prerendererClient->willAddPrerender(prerender.get()); |
61 prerender->add(); | 57 prerender->add(); |
62 | 58 |
63 return adoptPtr(new PrerenderHandle(document, prerender.release())); | 59 return adoptPtr(new PrerenderHandle(document, prerender.release())); |
64 } | 60 } |
65 | 61 |
66 PrerenderHandle::PrerenderHandle(Document& document, PassRefPtr<Prerender> prere
nder) | 62 PrerenderHandle::PrerenderHandle(Document& document, PassRefPtr<Prerender> prere
nder) |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 } | 95 } |
100 | 96 |
101 | 97 |
102 void PrerenderHandle::detach() | 98 void PrerenderHandle::detach() |
103 { | 99 { |
104 m_prerender->removeClient(); | 100 m_prerender->removeClient(); |
105 m_prerender.clear(); | 101 m_prerender.clear(); |
106 } | 102 } |
107 | 103 |
108 } | 104 } |
OLD | NEW |