diff -r 000000000000 -r 6474c204b198 parser/html/nsHtml5SpeculativeLoad.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/parser/html/nsHtml5SpeculativeLoad.cpp Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,61 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsHtml5SpeculativeLoad.h" +#include "nsHtml5TreeOpExecutor.h" + +nsHtml5SpeculativeLoad::nsHtml5SpeculativeLoad() +#ifdef DEBUG + : mOpCode(eSpeculativeLoadUninitialized) +#endif +{ + MOZ_COUNT_CTOR(nsHtml5SpeculativeLoad); +} + +nsHtml5SpeculativeLoad::~nsHtml5SpeculativeLoad() +{ + MOZ_COUNT_DTOR(nsHtml5SpeculativeLoad); + NS_ASSERTION(mOpCode != eSpeculativeLoadUninitialized, + "Uninitialized speculative load."); +} + +void +nsHtml5SpeculativeLoad::Perform(nsHtml5TreeOpExecutor* aExecutor) +{ + switch (mOpCode) { + case eSpeculativeLoadBase: + aExecutor->SetSpeculationBase(mUrl); + break; + case eSpeculativeLoadImage: + aExecutor->PreloadImage(mUrl, mCrossOrigin); + break; + case eSpeculativeLoadScript: + aExecutor->PreloadScript(mUrl, mCharset, mTypeOrCharsetSource, + mCrossOrigin, false); + break; + case eSpeculativeLoadScriptFromHead: + aExecutor->PreloadScript(mUrl, mCharset, mTypeOrCharsetSource, + mCrossOrigin, true); + break; + case eSpeculativeLoadStyle: + aExecutor->PreloadStyle(mUrl, mCharset, mCrossOrigin); + break; + case eSpeculativeLoadManifest: + aExecutor->ProcessOfflineManifest(mUrl); + break; + case eSpeculativeLoadSetDocumentCharset: { + nsAutoCString narrowName; + CopyUTF16toUTF8(mCharset, narrowName); + NS_ASSERTION(mTypeOrCharsetSource.Length() == 1, + "Unexpected charset source string"); + int32_t intSource = (int32_t)mTypeOrCharsetSource.First(); + aExecutor->SetDocumentCharsetAndSource(narrowName, + intSource); + } + break; + default: + NS_NOTREACHED("Bogus speculative load."); + break; + } +}