OLD | NEW |
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 4215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4226 } | 4226 } |
4227 } | 4227 } |
4228 // FIXME: If this document came from the file system, the HTML5 | 4228 // FIXME: If this document came from the file system, the HTML5 |
4229 // specificiation tells us to read the last modification date from the file | 4229 // specificiation tells us to read the last modification date from the file |
4230 // system. | 4230 // system. |
4231 if (!foundDate) | 4231 if (!foundDate) |
4232 date.setMillisecondsSinceEpochForDateTime(convertToLocalTime(currentTime
MS())); | 4232 date.setMillisecondsSinceEpochForDateTime(convertToLocalTime(currentTime
MS())); |
4233 return String::format("%02d/%02d/%04d %02d:%02d:%02d", date.month() + 1, dat
e.monthDay(), date.fullYear(), date.hour(), date.minute(), date.second()); | 4233 return String::format("%02d/%02d/%04d %02d:%02d:%02d", date.month() + 1, dat
e.monthDay(), date.fullYear(), date.hour(), date.minute(), date.second()); |
4234 } | 4234 } |
4235 | 4235 |
4236 const KURL& Document::firstPartyForCookies() const | 4236 const KURL Document::firstPartyForCookies() const |
4237 { | 4237 { |
4238 if (SchemeRegistry::shouldTreatURLSchemeAsFirstPartyWhenTopLevel(topDocument
().url().protocol())) | 4238 // TODO(mkwst): This doesn't correctly handle sandboxed documents; we want t
o look at their URL, |
4239 return topDocument().url(); | 4239 // but we can't because we don't know what it is. |
| 4240 KURL topDocumentURL = frame()->tree().top()->isLocalFrame() |
| 4241 ? topDocument().url() |
| 4242 : KURL(KURL(), frame()->securityContext()->getSecurityOrigin()->toString
()); |
| 4243 if (SchemeRegistry::shouldTreatURLSchemeAsFirstPartyWhenTopLevel(topDocument
URL.protocol())) |
| 4244 return topDocumentURL; |
4240 | 4245 |
4241 // We're intentionally using the URL of each document rather than the docume
nt's SecurityOrigin. | 4246 // We're intentionally using the URL of each document rather than the docume
nt's SecurityOrigin. |
4242 // Sandboxing a document into a unique origin shouldn't effect first-/third-
party status for | 4247 // Sandboxing a document into a unique origin shouldn't effect first-/third-
party status for |
4243 // cookies and site data. | 4248 // cookies and site data. |
4244 const OriginAccessEntry& accessEntry = topDocument().accessEntryFromURL(); | 4249 const OriginAccessEntry& accessEntry = frame()->tree().top()->isLocalFrame() |
4245 const Document* currentDocument = this; | 4250 ? topDocument().accessEntryFromURL() |
4246 while (currentDocument) { | 4251 : OriginAccessEntry(topDocumentURL.protocol(), topDocumentURL.host(), Or
iginAccessEntry::AllowRegisterableDomains); |
| 4252 const Frame* currentFrame = frame(); |
| 4253 while (currentFrame) { |
4247 // Skip over srcdoc documents, as they are always same-origin with their
closest non-srcdoc parent. | 4254 // Skip over srcdoc documents, as they are always same-origin with their
closest non-srcdoc parent. |
4248 while (currentDocument->isSrcdocDocument()) | 4255 while (currentFrame->isLocalFrame() && toLocalFrame(currentFrame)->docum
ent()->isSrcdocDocument()) |
4249 currentDocument = currentDocument->parentDocument(); | 4256 currentFrame = currentFrame->tree().parent(); |
4250 ASSERT(currentDocument); | 4257 ASSERT(currentFrame); |
4251 | 4258 |
4252 // We use 'matchesDomain' here, as it turns out that some folks embed HT
TPS login forms | 4259 // We use 'matchesDomain' here, as it turns out that some folks embed HT
TPS login forms |
4253 // into HTTP pages; we should allow this kind of upgrade. | 4260 // into HTTP pages; we should allow this kind of upgrade. |
4254 if (accessEntry.matchesDomain(*currentDocument->getSecurityOrigin()) ==
OriginAccessEntry::DoesNotMatchOrigin) | 4261 if (accessEntry.matchesDomain(*currentFrame->securityContext()->getSecur
ityOrigin()) == OriginAccessEntry::DoesNotMatchOrigin) |
4255 return SecurityOrigin::urlWithUniqueSecurityOrigin(); | 4262 return SecurityOrigin::urlWithUniqueSecurityOrigin(); |
4256 | 4263 |
4257 currentDocument = currentDocument->parentDocument(); | 4264 currentFrame = currentFrame->tree().parent(); |
4258 } | 4265 } |
4259 | 4266 |
4260 return topDocument().url(); | 4267 return topDocumentURL; |
4261 } | 4268 } |
4262 | 4269 |
4263 static bool isValidNameNonASCII(const LChar* characters, unsigned length) | 4270 static bool isValidNameNonASCII(const LChar* characters, unsigned length) |
4264 { | 4271 { |
4265 if (!isValidNameStart(characters[0])) | 4272 if (!isValidNameStart(characters[0])) |
4266 return false; | 4273 return false; |
4267 | 4274 |
4268 for (unsigned i = 1; i < length; ++i) { | 4275 for (unsigned i = 1; i < length; ++i) { |
4269 if (!isValidNamePart(characters[i])) | 4276 if (!isValidNamePart(characters[i])) |
4270 return false; | 4277 return false; |
(...skipping 1767 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6038 #ifndef NDEBUG | 6045 #ifndef NDEBUG |
6039 using namespace blink; | 6046 using namespace blink; |
6040 void showLiveDocumentInstances() | 6047 void showLiveDocumentInstances() |
6041 { | 6048 { |
6042 Document::WeakDocumentSet& set = Document::liveDocumentSet(); | 6049 Document::WeakDocumentSet& set = Document::liveDocumentSet(); |
6043 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); | 6050 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); |
6044 for (Document* document : set) | 6051 for (Document* document : set) |
6045 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().get
String().utf8().data()); | 6052 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().get
String().utf8().data()); |
6046 } | 6053 } |
6047 #endif | 6054 #endif |
OLD | NEW |