| 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 Apple Inc. All rights
reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011 Apple Inc. All rights
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 Google Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009 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 * | 10 * |
| (...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 m_document = this; | 436 m_document = this; |
| 437 | 437 |
| 438 m_pageGroupUserSheetCacheValid = false; | 438 m_pageGroupUserSheetCacheValid = false; |
| 439 | 439 |
| 440 m_printing = false; | 440 m_printing = false; |
| 441 m_paginatedForScreen = false; | 441 m_paginatedForScreen = false; |
| 442 | 442 |
| 443 m_ignoreAutofocus = false; | 443 m_ignoreAutofocus = false; |
| 444 | 444 |
| 445 m_frame = frame; | 445 m_frame = frame; |
| 446 m_documentLoader = frame ? frame->loader()->activeDocumentLoader() : 0; | |
| 447 | 446 |
| 448 // We depend on the url getting immediately set in subframes, but we | 447 // We depend on the url getting immediately set in subframes, but we |
| 449 // also depend on the url NOT getting immediately set in opened windows. | 448 // also depend on the url NOT getting immediately set in opened windows. |
| 450 // See fast/dom/early-frame-url.html | 449 // See fast/dom/early-frame-url.html |
| 451 // and fast/dom/location-new-window-no-crash.html, respectively. | 450 // and fast/dom/location-new-window-no-crash.html, respectively. |
| 452 // FIXME: Can/should we unify this behavior? | 451 // FIXME: Can/should we unify this behavior? |
| 453 if ((frame && frame->ownerElement()) || !url.isEmpty()) | 452 if ((frame && frame->ownerElement()) || !url.isEmpty()) |
| 454 setURL(url); | 453 setURL(url); |
| 455 | 454 |
| 456 m_axObjectCache = 0; | 455 m_axObjectCache = 0; |
| (...skipping 3269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3726 if (m_frame) | 3725 if (m_frame) |
| 3727 m_frame->script()->updateSecurityOrigin(); | 3726 m_frame->script()->updateSecurityOrigin(); |
| 3728 } | 3727 } |
| 3729 | 3728 |
| 3730 // http://www.whatwg.org/specs/web-apps/current-work/#dom-document-lastmodified | 3729 // http://www.whatwg.org/specs/web-apps/current-work/#dom-document-lastmodified |
| 3731 String Document::lastModified() const | 3730 String Document::lastModified() const |
| 3732 { | 3731 { |
| 3733 DateComponents date; | 3732 DateComponents date; |
| 3734 bool foundDate = false; | 3733 bool foundDate = false; |
| 3735 if (m_frame) { | 3734 if (m_frame) { |
| 3736 String httpLastModified = m_documentLoader->response().httpHeaderField("
Last-Modified"); | 3735 String httpLastModified; |
| 3736 if (DocumentLoader* documentLoader = loader()) |
| 3737 httpLastModified = documentLoader->response().httpHeaderField("Last-
Modified"); |
| 3737 if (!httpLastModified.isEmpty()) { | 3738 if (!httpLastModified.isEmpty()) { |
| 3738 date.setMillisecondsSinceEpochForDateTime(parseDate(httpLastModified
)); | 3739 date.setMillisecondsSinceEpochForDateTime(parseDate(httpLastModified
)); |
| 3739 foundDate = true; | 3740 foundDate = true; |
| 3740 } | 3741 } |
| 3741 } | 3742 } |
| 3742 // FIXME: If this document came from the file system, the HTML5 | 3743 // FIXME: If this document came from the file system, the HTML5 |
| 3743 // specificiation tells us to read the last modification date from the file | 3744 // specificiation tells us to read the last modification date from the file |
| 3744 // system. | 3745 // system. |
| 3745 if (!foundDate) | 3746 if (!foundDate) |
| 3746 date.setMillisecondsSinceEpochForDateTime(currentTimeMS()); | 3747 date.setMillisecondsSinceEpochForDateTime(currentTimeMS()); |
| (...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4434 // loading URL with a fresh content security policy. | 4435 // loading URL with a fresh content security policy. |
| 4435 m_cookieURL = m_url; | 4436 m_cookieURL = m_url; |
| 4436 ScriptExecutionContext::setSecurityOrigin(SecurityOrigin::create(m_url, m_fr
ame->loader()->sandboxFlags())); | 4437 ScriptExecutionContext::setSecurityOrigin(SecurityOrigin::create(m_url, m_fr
ame->loader()->sandboxFlags())); |
| 4437 m_contentSecurityPolicy = ContentSecurityPolicy::create(securityOrigin()); | 4438 m_contentSecurityPolicy = ContentSecurityPolicy::create(securityOrigin()); |
| 4438 | 4439 |
| 4439 if (SecurityOrigin::allowSubstituteDataAccessToLocal()) { | 4440 if (SecurityOrigin::allowSubstituteDataAccessToLocal()) { |
| 4440 // If this document was loaded with substituteData, then the document ca
n | 4441 // If this document was loaded with substituteData, then the document ca
n |
| 4441 // load local resources. See https://bugs.webkit.org/show_bug.cgi?id=16
756 | 4442 // load local resources. See https://bugs.webkit.org/show_bug.cgi?id=16
756 |
| 4442 // and https://bugs.webkit.org/show_bug.cgi?id=19760 for further | 4443 // and https://bugs.webkit.org/show_bug.cgi?id=19760 for further |
| 4443 // discussion. | 4444 // discussion. |
| 4444 if (m_documentLoader->substituteData().isValid()) | 4445 |
| 4446 DocumentLoader* documentLoader = loader(); |
| 4447 if (documentLoader && documentLoader->substituteData().isValid()) |
| 4445 securityOrigin()->grantLoadLocalResources(); | 4448 securityOrigin()->grantLoadLocalResources(); |
| 4446 } | 4449 } |
| 4447 | 4450 |
| 4448 if (Settings* settings = this->settings()) { | 4451 if (Settings* settings = this->settings()) { |
| 4449 if (!settings->isWebSecurityEnabled()) { | 4452 if (!settings->isWebSecurityEnabled()) { |
| 4450 // Web security is turned off. We should let this document access eve
ry | 4453 // Web security is turned off. We should let this document access eve
ry |
| 4451 // other document. This is used primary by testing harnesses for web | 4454 // other document. This is used primary by testing harnesses for web |
| 4452 // sites. | 4455 // sites. |
| 4453 securityOrigin()->grantUniversalAccess(); | 4456 securityOrigin()->grantUniversalAccess(); |
| 4454 | 4457 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4515 } | 4518 } |
| 4516 | 4519 |
| 4517 void Document::updateURLForPushOrReplaceState(const KURL& url) | 4520 void Document::updateURLForPushOrReplaceState(const KURL& url) |
| 4518 { | 4521 { |
| 4519 Frame* f = frame(); | 4522 Frame* f = frame(); |
| 4520 if (!f) | 4523 if (!f) |
| 4521 return; | 4524 return; |
| 4522 | 4525 |
| 4523 setURL(url); | 4526 setURL(url); |
| 4524 f->loader()->setOutgoingReferrer(url); | 4527 f->loader()->setOutgoingReferrer(url); |
| 4525 m_documentLoader->replaceRequestURLForSameDocumentNavigation(url); | 4528 |
| 4529 if (DocumentLoader* documentLoader = loader()) |
| 4530 documentLoader->replaceRequestURLForSameDocumentNavigation(url); |
| 4526 } | 4531 } |
| 4527 | 4532 |
| 4528 void Document::statePopped(SerializedScriptValue* stateObject) | 4533 void Document::statePopped(SerializedScriptValue* stateObject) |
| 4529 { | 4534 { |
| 4530 if (!frame()) | 4535 if (!frame()) |
| 4531 return; | 4536 return; |
| 4532 | 4537 |
| 4533 // Per step 11 of section 6.5.9 (history traversal) of the HTML5 spec, we | 4538 // Per step 11 of section 6.5.9 (history traversal) of the HTML5 spec, we |
| 4534 // defer firing of popstate until we're in the complete state. | 4539 // defer firing of popstate until we're in the complete state. |
| 4535 if (m_readyState == Complete) | 4540 if (m_readyState == Complete) |
| (...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4981 Frame* frame = window ? window->frame() : this->frame(); | 4986 Frame* frame = window ? window->frame() : this->frame(); |
| 4982 return Touch::create(frame, target, identifier, screenX, screenY, pageX, pag
eY); | 4987 return Touch::create(frame, target, identifier, screenX, screenY, pageX, pag
eY); |
| 4983 } | 4988 } |
| 4984 | 4989 |
| 4985 PassRefPtr<TouchList> Document::createTouchList(ExceptionCode&) const | 4990 PassRefPtr<TouchList> Document::createTouchList(ExceptionCode&) const |
| 4986 { | 4991 { |
| 4987 return TouchList::create(); | 4992 return TouchList::create(); |
| 4988 } | 4993 } |
| 4989 #endif | 4994 #endif |
| 4990 | 4995 |
| 4996 DocumentLoader* Document::loader() const |
| 4997 { |
| 4998 if (!m_frame) |
| 4999 return 0; |
| 5000 |
| 5001 DocumentLoader* loader = m_frame->loader()->activeDocumentLoader(); |
| 5002 if (!loader) |
| 5003 return 0; |
| 5004 |
| 5005 if (m_frame->document() != this) |
| 5006 return 0; |
| 5007 |
| 5008 return loader; |
| 5009 } |
| 5010 |
| 4991 } // namespace WebCore | 5011 } // namespace WebCore |
| OLD | NEW |