// static LocalFrame* MixedContentChecker::inWhichFrameIsContentMixed(LocalFrame* frame, WebURLRequest::FrameType frameType, const KURL& url) { // We only care about subresource loads; top-level navigations cannot be mixed content. Neither can frameless requests. if (frameType == WebURLRequest::FrameTypeTopLevel || !frame) return nullptr; // Check the top frame first. if (Frame* top = frame->tree().top()) { // FIXME: We need a way to access the top-level frame's SecurityOrigin when that frame // is in a different process from the current frame. Until that is done, we bail out. if (!top->isLocalFrame()) return nullptr; LocalFrame* localTop = toLocalFrame(top); measureStricterVersionOfIsMixedContent(localTop, url); if (isMixedContent(localTop->document()->securityOrigin(), url)) return localTop; } measureStricterVersionOfIsMixedContent(frame, url); if (isMixedContent(frame->document()->securityOrigin(), url)) return frame; // No mixed content, no problem. return nullptr; }
// static Frame* MixedContentChecker::inWhichFrameIsContentMixed(Frame* frame, WebURLRequest::FrameType frameType, const KURL& url) { // We only care about subresource loads; top-level navigations cannot be mixed content. Neither can frameless requests. if (frameType == WebURLRequest::FrameTypeTopLevel || !frame) return nullptr; // Check the top frame first. if (Frame* top = frame->tree().top()) { measureStricterVersionOfIsMixedContent(top, url); if (isMixedContent(top->securityContext()->getSecurityOrigin(), url)) return top; } measureStricterVersionOfIsMixedContent(frame, url); if (isMixedContent(frame->securityContext()->getSecurityOrigin(), url)) return frame; // No mixed content, no problem. return nullptr; }