| Index: third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner.cpp
|
| diff --git a/third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner.cpp b/third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner.cpp
|
| index 8eaded2449197dab7cc11f7e781f8d8fdf8485b7..2b5f60ea17b352b699df4391477bc76c7bf05b82 100644
|
| --- a/third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner.cpp
|
| +++ b/third_party/WebKit/Source/core/html/parser/HTMLPreloadScanner.cpp
|
| @@ -486,26 +486,29 @@ void TokenPreloadScanner::rewindTo(TokenPreloadScannerCheckpoint checkpointIndex
|
| m_checkpoints.clear();
|
| }
|
|
|
| -void TokenPreloadScanner::scan(const HTMLToken& token, const SegmentedString& source, PreloadRequestStream& requests)
|
| +void TokenPreloadScanner::scan(const HTMLToken& token, const SegmentedString& source, PreloadRequestStream& requests, ViewportDescriptionWrapper* viewport)
|
| {
|
| - scanCommon(token, source, requests);
|
| + scanCommon(token, source, requests, viewport);
|
| }
|
|
|
| -void TokenPreloadScanner::scan(const CompactHTMLToken& token, const SegmentedString& source, PreloadRequestStream& requests)
|
| +void TokenPreloadScanner::scan(const CompactHTMLToken& token, const SegmentedString& source, PreloadRequestStream& requests, ViewportDescriptionWrapper* viewport)
|
| {
|
| - scanCommon(token, source, requests);
|
| + scanCommon(token, source, requests, viewport);
|
| }
|
|
|
| -static void handleMetaViewport(const String& attributeValue, const CachedDocumentParameters* documentParameters, MediaValuesCached* mediaValues)
|
| +static void handleMetaViewport(const String& attributeValue, const CachedDocumentParameters* documentParameters, MediaValuesCached* mediaValues, ViewportDescriptionWrapper* viewport)
|
| {
|
| if (!documentParameters->viewportMetaEnabled)
|
| return;
|
| ViewportDescription description(ViewportDescription::ViewportMeta);
|
| HTMLMetaElement::getViewportDescriptionFromContentAttribute(attributeValue, description, nullptr, documentParameters->viewportMetaZeroValuesQuirk);
|
| + if (viewport) {
|
| + viewport->description = description;
|
| + viewport->set = true;
|
| + }
|
| FloatSize initialViewport(mediaValues->deviceWidth(), mediaValues->deviceHeight());
|
| PageScaleConstraints constraints = description.resolve(initialViewport, documentParameters->defaultViewportMinWidth);
|
| - mediaValues->setViewportHeight(constraints.layoutSize.height());
|
| - mediaValues->setViewportWidth(constraints.layoutSize.width());
|
| + mediaValues->overrideViewportDimensions(constraints.layoutSize.width(), constraints.layoutSize.height());
|
| }
|
|
|
| static void handleMetaReferrer(const String& attributeValue, CachedDocumentParameters* documentParameters, CSSPreloadScanner* cssScanner)
|
| @@ -517,7 +520,7 @@ static void handleMetaReferrer(const String& attributeValue, CachedDocumentParam
|
| }
|
|
|
| template <typename Token>
|
| -static void handleMetaNameAttribute(const Token& token, CachedDocumentParameters* documentParameters, MediaValuesCached* mediaValues, CSSPreloadScanner* cssScanner)
|
| +static void handleMetaNameAttribute(const Token& token, CachedDocumentParameters* documentParameters, MediaValuesCached* mediaValues, CSSPreloadScanner* cssScanner, ViewportDescriptionWrapper* viewport)
|
| {
|
| const typename Token::Attribute* nameAttribute = token.getAttributeItem(nameAttr);
|
| if (!nameAttribute)
|
| @@ -530,7 +533,7 @@ static void handleMetaNameAttribute(const Token& token, CachedDocumentParameters
|
|
|
| String contentAttributeValue(contentAttribute->value());
|
| if (equalIgnoringCase(nameAttributeValue, "viewport")) {
|
| - handleMetaViewport(contentAttributeValue, documentParameters, mediaValues);
|
| + handleMetaViewport(contentAttributeValue, documentParameters, mediaValues, viewport);
|
| return;
|
| }
|
|
|
| @@ -540,7 +543,7 @@ static void handleMetaNameAttribute(const Token& token, CachedDocumentParameters
|
| }
|
|
|
| template <typename Token>
|
| -void TokenPreloadScanner::scanCommon(const Token& token, const SegmentedString& source, PreloadRequestStream& requests)
|
| +void TokenPreloadScanner::scanCommon(const Token& token, const SegmentedString& source, PreloadRequestStream& requests, ViewportDescriptionWrapper* viewport)
|
| {
|
| if (!m_documentParameters->doHtmlPreloadScanning)
|
| return;
|
| @@ -614,7 +617,7 @@ void TokenPreloadScanner::scanCommon(const Token& token, const SegmentedString&
|
| return;
|
| }
|
|
|
| - handleMetaNameAttribute(token, m_documentParameters.get(), m_mediaValues.get(), &m_cssScanner);
|
| + handleMetaNameAttribute(token, m_documentParameters.get(), m_mediaValues.get(), &m_cssScanner, viewport);
|
| }
|
|
|
| if (match(tagImpl, pictureTag)) {
|
| @@ -663,7 +666,7 @@ void HTMLPreloadScanner::appendToEnd(const SegmentedString& source)
|
| m_source.append(source);
|
| }
|
|
|
| -void HTMLPreloadScanner::scan(ResourcePreloader* preloader, const KURL& startingBaseElementURL)
|
| +void HTMLPreloadScanner::scan(ResourcePreloader* preloader, const KURL& startingBaseElementURL, ViewportDescriptionWrapper* viewport)
|
| {
|
| ASSERT(isMainThread()); // HTMLTokenizer::updateStateFor only works on the main thread.
|
|
|
| @@ -678,7 +681,7 @@ void HTMLPreloadScanner::scan(ResourcePreloader* preloader, const KURL& starting
|
| while (m_tokenizer->nextToken(m_source, m_token)) {
|
| if (m_token.type() == HTMLToken::StartTag)
|
| m_tokenizer->updateStateFor(attemptStaticStringCreation(m_token.name(), Likely8Bit));
|
| - m_scanner.scan(m_token, m_source, requests);
|
| + m_scanner.scan(m_token, m_source, requests, viewport);
|
| m_token.clear();
|
| }
|
|
|
|
|