Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(622)

Unified Diff: Source/core/css/MediaQueryEvaluator.h

Issue 18328028: Enable MQ evaluation off the main thread (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@threaded_mqe_rebase
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/css/MediaQueryEvaluator.h
diff --git a/Source/core/css/MediaQueryEvaluator.h b/Source/core/css/MediaQueryEvaluator.h
index eb67ac718d906854f33dfc8d455d5496654bfb8d..42e1ee9464d597c64016b44ffe57d0b555714bc1 100644
--- a/Source/core/css/MediaQueryEvaluator.h
+++ b/Source/core/css/MediaQueryEvaluator.h
@@ -28,6 +28,7 @@
#ifndef MediaQueryEvaluator_h
#define MediaQueryEvaluator_h
+#include "wtf/RefCounted.h"
#include "wtf/text/WTFString.h"
namespace WebCore {
@@ -36,6 +37,64 @@ class MediaQueryExp;
class MediaQuerySet;
class RenderStyle;
class StyleResolver;
+class Document;
+
+class MediaValues : public RefCounted<MediaValues> {
+public:
+ // Should return a pointer that auto destructs when copied
+ static PassRefPtr<MediaValues> create(Document*);
+ static PassRefPtr<MediaValues> copy(const MediaValues*);
+
+ int getViewportWidth() { return m_viewportWidth; }
+ int getViewportHeight() { return m_viewportHeight; }
+ int getDeviceWidth() { return m_deviceWidth; }
+ int getDeviceHeight() { return m_deviceHeight; }
+ float getPixelRatio() { return m_pixelRatio; }
+ int getColorBitsPerComponent() { return m_colorBitsPerComponent; }
+ int getMonochromeBitsPerComponent() { return m_monochromeBitsPerComponent; }
+ int getPointer() { return m_pointer; }
+ int getDefaultFontSize() { return m_defaultFontSize; }
+ bool getThreeDEnabled() { return m_threeDEnabled; }
+ String getMediaType() { return m_mediaType; }
+
+private:
+ MediaValues(int viewportWidth,
+ int viewportHeight,
+ int deviceWidth,
+ int deviceHeight,
+ float pixelRatio,
+ int colorBitsPerComponent,
+ int monochromeBitsPerComponent,
+ int pointer,
+ int defaultFontSize,
+ int threeDEnabled,
+ String mediaType)
+ : m_viewportWidth(viewportWidth)
+ , m_viewportHeight(viewportHeight)
+ , m_deviceWidth(deviceWidth)
+ , m_deviceHeight(deviceHeight)
+ , m_pixelRatio(pixelRatio)
+ , m_colorBitsPerComponent(colorBitsPerComponent)
+ , m_monochromeBitsPerComponent(monochromeBitsPerComponent)
+ , m_pointer(pointer)
+ , m_defaultFontSize(defaultFontSize)
+ , m_threeDEnabled(threeDEnabled)
+ , m_mediaType(mediaType.isolatedCopy())
+ {
+ }
+
+ int m_viewportWidth;
+ int m_viewportHeight;
+ int m_deviceWidth;
+ int m_deviceHeight;
+ float m_pixelRatio;
+ int m_colorBitsPerComponent;
+ int m_monochromeBitsPerComponent;
+ int m_pointer;
+ int m_defaultFontSize;
+ bool m_threeDEnabled;
+ String m_mediaType;
+};
/**
* Class that evaluates css media queries as defined in
@@ -68,6 +127,10 @@ public:
/** Creates evaluator which evaluates full media queries */
MediaQueryEvaluator(const AtomicString& acceptedMediaType, Frame*, RenderStyle*);
+ /** Creates evaluator which evaluates in a thread-safe manner a subset of media values
+ */
+ MediaQueryEvaluator(const String& acceptedMediaType, const MediaValues* , bool mediaFeatureResult);
+
~MediaQueryEvaluator();
bool mediaTypeMatch(const AtomicString& mediaTypeToMatch) const;
@@ -84,6 +147,7 @@ private:
Frame* m_frame; // Not owned.
RefPtr<RenderStyle> m_style;
bool m_expResult;
+ RefPtr<MediaValues> m_mediaValues;
};
} // namespace

Powered by Google App Engine
This is Rietveld 408576698