Commit d9d7833f authored by pmeenan's avatar pmeenan Committed by Commit bot

Added a use counter for in-body external stylesheets

This will give us an idea for how common it is to have in-body external
stylesheets and gauge the impact of making them not block paint or
determine if we need stronger protection like blocking the HTML parser.

BUG=481122, 638074

Review-Url: https://codereview.chromium.org/2286793002
Cr-Commit-Position: refs/heads/master@{#415792}
parent 1e16f5f8
......@@ -2678,6 +2678,8 @@
'dom/StyleElement.h',
'dom/StyleEngine.cpp',
'dom/StyleEngine.h',
'dom/StyleEngineContext.cpp',
'dom/StyleEngineContext.h',
'dom/StyleSheetCandidate.cpp',
'dom/StyleSheetCandidate.h',
'dom/StyleSheetCollection.cpp',
......
/*
* Copyright (C) 2016 Google, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY GOOGLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "core/dom/StyleEngineContext.h"
#include "core/frame/UseCounter.h"
namespace blink {
StyleEngineContext::StyleEngineContext()
: m_addedPendingSheetBeforeBody(false)
{
}
void StyleEngineContext::addingPendingSheet(const Document& document)
{
// If the sheet was ever added before the body then all references to it are
// treated as before-body.
if (!m_addedPendingSheetBeforeBody) {
m_addedPendingSheetBeforeBody = !document.body();
if (!m_addedPendingSheetBeforeBody)
UseCounter::count(document, UseCounter::PendingStylesheetAddedAfterBodyStarted);
}
}
} // namespace blink
......@@ -9,12 +9,12 @@
namespace blink {
class StyleEngineContext {
class CORE_EXPORT StyleEngineContext {
public:
StyleEngineContext() : m_addedPendingSheetBeforeBody(false) {}
StyleEngineContext();
~StyleEngineContext() {}
bool addedPendingSheetBeforeBody() const { return m_addedPendingSheetBeforeBody; }
void addingPendingSheet(const Document& document) { m_addedPendingSheetBeforeBody = m_addedPendingSheetBeforeBody || !document.body(); }
void addingPendingSheet(const Document&);
private:
bool m_addedPendingSheetBeforeBody : 1;
};
......
......@@ -1275,6 +1275,7 @@ public:
DraggableAttribute = 1539,
CleanScriptElementWithNonce = 1540,
PotentiallyInjectedScriptElementWithNonce = 1541,
PendingStylesheetAddedAfterBodyStarted = 1542,
// Add new features immediately above this line. Don't change assigned
// numbers of any item, and don't reuse removed slots.
......
......@@ -80322,6 +80322,7 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
<int value="1539" label="DraggableAttribute"/>
<int value="1540" label="CleanScriptElementWithNonce"/>
<int value="1541" label="PotentiallyInjectedScriptElementWithNonce"/>
<int value="1542" label="PendingStylesheetAddedAfterBodyStarted"/>
</enum>
<enum name="FetchRequestMode" type="int">
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment