Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(103)

Side by Side Diff: Source/core/dom/Document.cpp

Issue 19940002: [HTML Import] Respect Content Security Policy Model (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix Mac build failure Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/dom/Document.h ('k') | Source/core/dom/DocumentInit.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r ights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All r ights reserved.
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved.
9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved.
(...skipping 4096 matching lines...) Expand 10 before | Expand all | Expand 10 after
4107 4107
4108 // Schedule dropping of the DocumentSharedObjectPool. We keep it alive for a while after parsing finishes 4108 // Schedule dropping of the DocumentSharedObjectPool. We keep it alive for a while after parsing finishes
4109 // so that dynamically inserted content can also benefit from sharing optimi zations. 4109 // so that dynamically inserted content can also benefit from sharing optimi zations.
4110 // Note that we don't refresh the timer on pool access since that could lead to huge caches being kept 4110 // Note that we don't refresh the timer on pool access since that could lead to huge caches being kept
4111 // alive indefinitely by something innocuous like JS setting .innerHTML repe atedly on a timer. 4111 // alive indefinitely by something innocuous like JS setting .innerHTML repe atedly on a timer.
4112 static const int timeToKeepSharedObjectPoolAliveAfterParsingFinishedInSecond s = 10; 4112 static const int timeToKeepSharedObjectPoolAliveAfterParsingFinishedInSecond s = 10;
4113 m_sharedObjectPoolClearTimer.startOneShot(timeToKeepSharedObjectPoolAliveAft erParsingFinishedInSeconds); 4113 m_sharedObjectPoolClearTimer.startOneShot(timeToKeepSharedObjectPoolAliveAft erParsingFinishedInSeconds);
4114 4114
4115 // Parser should have picked up all preloads by now 4115 // Parser should have picked up all preloads by now
4116 m_fetcher->clearPreloads(); 4116 m_fetcher->clearPreloads();
4117
4118 if (m_import)
4119 m_import->didFinishParsing();
4117 } 4120 }
4118 4121
4119 void Document::sharedObjectPoolClearTimerFired(Timer<Document>*) 4122 void Document::sharedObjectPoolClearTimerFired(Timer<Document>*)
4120 { 4123 {
4121 m_sharedObjectPool.clear(); 4124 m_sharedObjectPool.clear();
4122 } 4125 }
4123 4126
4124 void Document::didAccessStyleResolver() 4127 void Document::didAccessStyleResolver()
4125 { 4128 {
4126 static const int timeBeforeThrowingAwayStyleResolverAfterLastUseInSeconds = 60; 4129 static const int timeBeforeThrowingAwayStyleResolverAfterLastUseInSeconds = 60;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
4206 initSecurityContext(DocumentInit(m_url, m_frame, m_import)); 4209 initSecurityContext(DocumentInit(m_url, m_frame, m_import));
4207 } 4210 }
4208 4211
4209 void Document::initSecurityContext(const DocumentInit& initializer) 4212 void Document::initSecurityContext(const DocumentInit& initializer)
4210 { 4213 {
4211 if (haveInitializedSecurityOrigin()) { 4214 if (haveInitializedSecurityOrigin()) {
4212 ASSERT(securityOrigin()); 4215 ASSERT(securityOrigin());
4213 return; 4216 return;
4214 } 4217 }
4215 4218
4216 if (!initializer.frame()) { 4219 if (!initializer.hasSecurityContext()) {
4217 // No source for a security context. 4220 // No source for a security context.
4218 // This can occur via document.implementation.createDocument(). 4221 // This can occur via document.implementation.createDocument().
4219 m_cookieURL = KURL(ParsedURLString, emptyString()); 4222 m_cookieURL = KURL(ParsedURLString, emptyString());
4220 setSecurityOrigin(SecurityOrigin::createUnique()); 4223 setSecurityOrigin(SecurityOrigin::createUnique());
4221 setContentSecurityPolicy(ContentSecurityPolicy::create(this)); 4224 setContentSecurityPolicy(ContentSecurityPolicy::create(this));
4222 return; 4225 return;
4223 } 4226 }
4224 4227
4225 // In the common case, create the security context from the currently 4228 // In the common case, create the security context from the currently
4226 // loading URL with a fresh content security policy. 4229 // loading URL with a fresh content security policy.
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
4278 securityOrigin()->grantLoadLocalResources(); 4281 securityOrigin()->grantLoadLocalResources();
4279 return; 4282 return;
4280 } 4283 }
4281 4284
4282 m_cookieURL = ownerFrame->document()->cookieURL(); 4285 m_cookieURL = ownerFrame->document()->cookieURL();
4283 // We alias the SecurityOrigins to match Firefox, see Bug 15313 4286 // We alias the SecurityOrigins to match Firefox, see Bug 15313
4284 // https://bugs.webkit.org/show_bug.cgi?id=15313 4287 // https://bugs.webkit.org/show_bug.cgi?id=15313
4285 setSecurityOrigin(ownerFrame->document()->securityOrigin()); 4288 setSecurityOrigin(ownerFrame->document()->securityOrigin());
4286 } 4289 }
4287 4290
4288 void Document::initContentSecurityPolicy() 4291 void Document::initContentSecurityPolicy(const ContentSecurityPolicyResponseHead ers& headers)
4289 { 4292 {
4290 if (!m_frame->tree()->parent() || (!shouldInheritSecurityOriginFromOwner(m_u rl) && !isPluginDocument())) 4293 if (m_frame && m_frame->tree()->parent() && (shouldInheritSecurityOriginFrom Owner(m_url) || isPluginDocument()))
4291 return; 4294 contentSecurityPolicy()->copyStateFrom(m_frame->tree()->parent()->docume nt()->contentSecurityPolicy());
4292 4295 contentSecurityPolicy()->didReceiveHeaders(headers);
4293 contentSecurityPolicy()->copyStateFrom(m_frame->tree()->parent()->document() ->contentSecurityPolicy());
4294 } 4296 }
4295 4297
4296 void Document::didUpdateSecurityOrigin() 4298 void Document::didUpdateSecurityOrigin()
4297 { 4299 {
4298 if (!m_frame) 4300 if (!m_frame)
4299 return; 4301 return;
4300 m_frame->script()->updateSecurityOrigin(); 4302 m_frame->script()->updateSecurityOrigin();
4301 } 4303 }
4302 4304
4303 bool Document::isContextThread() const 4305 bool Document::isContextThread() const
(...skipping 785 matching lines...) Expand 10 before | Expand all | Expand 10 after
5089 { 5091 {
5090 return DocumentLifecycleNotifier::create(this); 5092 return DocumentLifecycleNotifier::create(this);
5091 } 5093 }
5092 5094
5093 DocumentLifecycleNotifier* Document::lifecycleNotifier() 5095 DocumentLifecycleNotifier* Document::lifecycleNotifier()
5094 { 5096 {
5095 return static_cast<DocumentLifecycleNotifier*>(ScriptExecutionContext::lifec ycleNotifier()); 5097 return static_cast<DocumentLifecycleNotifier*>(ScriptExecutionContext::lifec ycleNotifier());
5096 } 5098 }
5097 5099
5098 } // namespace WebCore 5100 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/dom/Document.h ('k') | Source/core/dom/DocumentInit.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698