Bug 912981 - Make parser aware of view-source srcdoc status. r=hsivonen

This commit is contained in:
James Kitchener
2013-09-10 13:40:50 -04:00
parent 0f2fc0d4e4
commit 9e4c5894af
4 changed files with 25 additions and 44 deletions

View File

@@ -12,7 +12,7 @@
#include "nsHtml5TreeBuilder.h"
#include "nsHtml5AtomTable.h"
#include "nsHtml5DependentUTF16Buffer.h"
#include "nsIInputStreamChannel.h"
#include "nsNetUtil.h"
NS_INTERFACE_TABLE_HEAD(nsHtml5Parser)
NS_INTERFACE_TABLE2(nsHtml5Parser, nsIParser, nsISupportsWeakReference)
@@ -218,7 +218,13 @@ nsHtml5Parser::Parse(const nsAString& aSourceBuffer,
mExecutor->SetParser(this);
mTreeBuilder->setScriptingEnabled(mExecutor->IsScriptEnabled());
mTreeBuilder->setIsSrcdocDocument(IsSrcdocDocument());
bool isSrcdoc = false;
nsCOMPtr<nsIChannel> channel;
rv = GetChannel(getter_AddRefs(channel));
if (NS_SUCCEEDED(rv)) {
isSrcdoc = NS_IsSrcdocChannel(channel);
}
mTreeBuilder->setIsSrcdocDocument(isSrcdoc);
mTokenizer->start();
mExecutor->Start();
@@ -682,7 +688,13 @@ nsHtml5Parser::Initialize(nsIDocument* aDoc,
void
nsHtml5Parser::StartTokenizer(bool aScriptingEnabled) {
mTreeBuilder->setIsSrcdocDocument(IsSrcdocDocument());
bool isSrcdoc = false;
nsCOMPtr<nsIChannel> channel;
nsresult rv = GetChannel(getter_AddRefs(channel));
if (NS_SUCCEEDED(rv)) {
isSrcdoc = NS_IsSrcdocChannel(channel);
}
mTreeBuilder->setIsSrcdocDocument(isSrcdoc);
mTreeBuilder->SetPreventScriptExecution(!aScriptingEnabled);
mTreeBuilder->setScriptingEnabled(aScriptingEnabled);
@@ -708,20 +720,3 @@ nsHtml5Parser::ContinueAfterFailedCharsetSwitch()
mStreamParser->ContinueAfterFailedCharsetSwitch();
}
bool
nsHtml5Parser::IsSrcdocDocument()
{
nsresult rv;
bool isSrcdoc = false;
nsCOMPtr<nsIChannel> channel;
rv = GetChannel(getter_AddRefs(channel));
if (NS_SUCCEEDED(rv)) {
nsCOMPtr<nsIInputStreamChannel> isr = do_QueryInterface(channel);
if (isr) {
isr->GetIsSrcdocChannel(&isSrcdoc);
}
}
return isSrcdoc;
}