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

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

Issue 2838603002: Added [SecureContext] to the subtle attribute (Closed)
Patch Set: Magic test starts doing differnt things out of the blue. Need to handle this properly. Avada Kedavr… Created 3 years, 7 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
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 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 2012 Apple Inc. All
7 * rights reserved. 7 * rights reserved.
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved.
9 * (http://www.torchmobile.com/) 9 * (http://www.torchmobile.com/)
10 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. 10 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved.
(...skipping 3880 matching lines...) Expand 10 before | Expand all | Expand 10 after
3891 } 3891 }
3892 3892
3893 void Document::CloneDataFromDocument(const Document& other) { 3893 void Document::CloneDataFromDocument(const Document& other) {
3894 SetCompatibilityMode(other.GetCompatibilityMode()); 3894 SetCompatibilityMode(other.GetCompatibilityMode());
3895 SetEncodingData(other.encoding_data_); 3895 SetEncodingData(other.encoding_data_);
3896 SetContextFeatures(other.GetContextFeatures()); 3896 SetContextFeatures(other.GetContextFeatures());
3897 SetSecurityOrigin(other.GetSecurityOrigin()->IsolatedCopy()); 3897 SetSecurityOrigin(other.GetSecurityOrigin()->IsolatedCopy());
3898 SetMimeType(other.contentType()); 3898 SetMimeType(other.contentType());
3899 } 3899 }
3900 3900
3901 bool Document::IsSecureContextImpl( 3901 bool Document::IsSecureContextImpl() const {
3902 const SecureContextCheck privilege_context_check) const {
3903 // There may be exceptions for the secure context check defined for certain 3902 // There may be exceptions for the secure context check defined for certain
3904 // schemes. The exceptions are applied only to the special scheme and to 3903 // schemes. The exceptions are applied only to the special scheme and to
3905 // sandboxed URLs from those origins, but *not* to any children. 3904 // sandboxed URLs from those origins, but *not* to any children.
3906 // 3905 //
3907 // For example: 3906 // For example:
3908 // <iframe src="http://host"> 3907 // <iframe src="http://host">
3909 // <iframe src="scheme-has-exception://host"></iframe> 3908 // <iframe src="scheme-has-exception://host"></iframe>
3910 // <iframe sandbox src="scheme-has-exception://host"></iframe> 3909 // <iframe sandbox src="scheme-has-exception://host"></iframe>
3911 // </iframe> 3910 // </iframe>
3912 // both inner iframes pass this check, assuming that the scheme 3911 // both inner iframes pass this check, assuming that the scheme
(...skipping 15 matching lines...) Expand all
3928 // 3927 //
3929 // In all cases, a frame must be potentially trustworthy in addition to 3928 // In all cases, a frame must be potentially trustworthy in addition to
3930 // having an exception listed in order for the exception to be granted. 3929 // having an exception listed in order for the exception to be granted.
3931 if (!GetSecurityOrigin()->IsPotentiallyTrustworthy()) 3930 if (!GetSecurityOrigin()->IsPotentiallyTrustworthy())
3932 return false; 3931 return false;
3933 3932
3934 if (SchemeRegistry::SchemeShouldBypassSecureContextCheck( 3933 if (SchemeRegistry::SchemeShouldBypassSecureContextCheck(
3935 GetSecurityOrigin()->Protocol())) 3934 GetSecurityOrigin()->Protocol()))
3936 return true; 3935 return true;
3937 3936
3938 if (privilege_context_check == kStandardSecureContextCheck) { 3937 if (!frame_)
3939 if (!frame_) 3938 return true;
3940 return true; 3939 Frame* parent = frame_->Tree().Parent();
3941 Frame* parent = frame_->Tree().Parent(); 3940 while (parent) {
3942 while (parent) { 3941 if (!parent->GetSecurityContext()
3943 if (!parent->GetSecurityContext() 3942 ->GetSecurityOrigin()
3944 ->GetSecurityOrigin() 3943 ->IsPotentiallyTrustworthy())
3945 ->IsPotentiallyTrustworthy()) 3944 return false;
3946 return false; 3945 parent = parent->Tree().Parent();
3947 parent = parent->Tree().Parent();
3948 }
3949 } 3946 }
3950 return true; 3947 return true;
3951 } 3948 }
3952 3949
3953 StyleSheetList& Document::StyleSheets() { 3950 StyleSheetList& Document::StyleSheets() {
3954 if (!style_sheet_list_) 3951 if (!style_sheet_list_)
3955 style_sheet_list_ = StyleSheetList::Create(this); 3952 style_sheet_list_ = StyleSheetList::Create(this);
3956 return *style_sheet_list_; 3953 return *style_sheet_list_;
3957 } 3954 }
3958 3955
(...skipping 2563 matching lines...) Expand 10 before | Expand all | Expand 10 after
6522 list->InvalidateCacheForAttribute(attr_name); 6519 list->InvalidateCacheForAttribute(attr_name);
6523 } 6520 }
6524 6521
6525 void Document::PlatformColorsChanged() { 6522 void Document::PlatformColorsChanged() {
6526 if (!IsActive()) 6523 if (!IsActive())
6527 return; 6524 return;
6528 6525
6529 GetStyleEngine().PlatformColorsChanged(); 6526 GetStyleEngine().PlatformColorsChanged();
6530 } 6527 }
6531 6528
6532 bool Document::IsSecureContext( 6529 bool Document::IsSecureContext(String& error_message) const {
6533 String& error_message, 6530 if (!IsSecureContext()) {
6534 const SecureContextCheck privilege_context_check) const {
6535 if (!IsSecureContext(privilege_context_check)) {
6536 error_message = SecurityOrigin::IsPotentiallyTrustworthyErrorMessage(); 6531 error_message = SecurityOrigin::IsPotentiallyTrustworthyErrorMessage();
6537 return false; 6532 return false;
6538 } 6533 }
6539 return true; 6534 return true;
6540 } 6535 }
6541 6536
6542 bool Document::IsSecureContext( 6537 bool Document::IsSecureContext() const {
6543 const SecureContextCheck privilege_context_check) const { 6538 bool is_secure = IsSecureContextImpl();
6544 bool is_secure = IsSecureContextImpl(privilege_context_check);
6545 if (GetSandboxFlags() != kSandboxNone) { 6539 if (GetSandboxFlags() != kSandboxNone) {
6546 UseCounter::Count( 6540 UseCounter::Count(
6547 *this, is_secure 6541 *this, is_secure
6548 ? UseCounter::kSecureContextCheckForSandboxedOriginPassed 6542 ? UseCounter::kSecureContextCheckForSandboxedOriginPassed
6549 : UseCounter::kSecureContextCheckForSandboxedOriginFailed); 6543 : UseCounter::kSecureContextCheckForSandboxedOriginFailed);
6550 } 6544 }
6551 UseCounter::Count(*this, is_secure ? UseCounter::kSecureContextCheckPassed 6545 UseCounter::Count(*this, is_secure ? UseCounter::kSecureContextCheckPassed
6552 : UseCounter::kSecureContextCheckFailed); 6546 : UseCounter::kSecureContextCheckFailed);
6553 return is_secure; 6547 return is_secure;
6554 } 6548 }
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
6735 } 6729 }
6736 6730
6737 void showLiveDocumentInstances() { 6731 void showLiveDocumentInstances() {
6738 WeakDocumentSet& set = liveDocumentSet(); 6732 WeakDocumentSet& set = liveDocumentSet();
6739 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); 6733 fprintf(stderr, "There are %u documents currently alive:\n", set.size());
6740 for (blink::Document* document : set) 6734 for (blink::Document* document : set)
6741 fprintf(stderr, "- Document %p URL: %s\n", document, 6735 fprintf(stderr, "- Document %p URL: %s\n", document,
6742 document->Url().GetString().Utf8().data()); 6736 document->Url().GetString().Utf8().data());
6743 } 6737 }
6744 #endif 6738 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/Document.h ('k') | third_party/WebKit/Source/core/dom/ExecutionContext.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698