Index: third_party/WebKit/Source/core/html/HTMLFrameElementBase.cpp |
diff --git a/third_party/WebKit/Source/core/html/HTMLFrameElementBase.cpp b/third_party/WebKit/Source/core/html/HTMLFrameElementBase.cpp |
index 2e3534b3059a5c1ef8a0e9dec3e630f2c3b1859a..566a9cb9b6a65e356cd67d5d46c9ce83ed18c4d5 100644 |
--- a/third_party/WebKit/Source/core/html/HTMLFrameElementBase.cpp |
+++ b/third_party/WebKit/Source/core/html/HTMLFrameElementBase.cpp |
@@ -47,6 +47,7 @@ HTMLFrameElementBase::HTMLFrameElementBase(const QualifiedName& tagName, Documen |
, m_scrollingMode(ScrollbarAuto) |
, m_marginWidth(-1) |
, m_marginHeight(-1) |
+ , m_javaScriptURLFailedAccessCheck(false) |
{ |
} |
@@ -58,8 +59,11 @@ bool HTMLFrameElementBase::isURLAllowed() const |
const KURL& completeURL = document().completeURL(m_URL); |
if (protocolIsJavaScript(completeURL)) { |
- if (contentFrame() && !ScriptController::canAccessFromCurrentOrigin(toIsolate(&document()), contentFrame())) |
+ if (contentFrame() && !ScriptController::canAccessFromCurrentOrigin(toIsolate(&document()), contentFrame())) { |
+ m_javaScriptURLFailedAccessCheck = true; |
return false; |
+ } |
+ SECURITY_CHECK(!m_javaScriptURLFailedAccessCheck); |
} |
LocalFrame* parentFrame = document().frame(); |
@@ -166,6 +170,10 @@ void HTMLFrameElementBase::didNotifySubtreeInsertionsToDocument() |
if (!SubframeLoadingDisabler::canLoadFrame(*this)) |
return; |
+ // We should never have a content frame at the point where we got inserted |
+ // into a tree. |
+ SECURITY_CHECK(!contentFrame()); |
+ |
setNameAndOpenURL(); |
} |
@@ -186,6 +194,7 @@ void HTMLFrameElementBase::attachLayoutTree(const AttachContext& context) |
void HTMLFrameElementBase::setLocation(const String& str) |
{ |
m_URL = AtomicString(str); |
+ m_javaScriptURLFailedAccessCheck = false; |
if (isConnected()) |
openURL(false); |