summaryrefslogtreecommitdiff
path: root/Source/WebCore/css/MediaQueryMatcher.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/css/MediaQueryMatcher.h
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/css/MediaQueryMatcher.h')
-rw-r--r--Source/WebCore/css/MediaQueryMatcher.h47
1 files changed, 19 insertions, 28 deletions
diff --git a/Source/WebCore/css/MediaQueryMatcher.h b/Source/WebCore/css/MediaQueryMatcher.h
index 4d549b96a..7510710d9 100644
--- a/Source/WebCore/css/MediaQueryMatcher.h
+++ b/Source/WebCore/css/MediaQueryMatcher.h
@@ -17,8 +17,7 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef MediaQueryMatcher_h
-#define MediaQueryMatcher_h
+#pragma once
#include <memory>
#include <wtf/Forward.h>
@@ -32,56 +31,48 @@ class MediaQueryList;
class MediaQueryListListener;
class MediaQueryEvaluator;
class MediaQuerySet;
+class RenderStyle;
// MediaQueryMatcher class is responsible for keeping a vector of pairs
// MediaQueryList x MediaQueryListListener. It is responsible for evaluating the queries
// whenever it is needed and to call the listeners if the corresponding query has changed.
-// The listeners must be called in the very same order in which they have been added.
+// The listeners must be called in the order in which they were added.
-class MediaQueryMatcher : public RefCounted<MediaQueryMatcher> {
+class MediaQueryMatcher final : public RefCounted<MediaQueryMatcher> {
public:
- static PassRefPtr<MediaQueryMatcher> create(Document* document) { return adoptRef(new MediaQueryMatcher(document)); }
+ static Ref<MediaQueryMatcher> create(Document& document) { return adoptRef(*new MediaQueryMatcher(document)); }
~MediaQueryMatcher();
+
void documentDestroyed();
- void addListener(PassRefPtr<MediaQueryListListener>, PassRefPtr<MediaQueryList>);
- void removeListener(MediaQueryListListener*, MediaQueryList*);
+ void addListener(Ref<MediaQueryListListener>&&, MediaQueryList&);
+ void removeListener(MediaQueryListListener&, MediaQueryList&);
- PassRefPtr<MediaQueryList> matchMedia(const String&);
+ RefPtr<MediaQueryList> matchMedia(const String&);
unsigned evaluationRound() const { return m_evaluationRound; }
- void styleResolverChanged();
- bool evaluate(const MediaQuerySet*);
-
-private:
- class Listener {
- public:
- Listener(PassRefPtr<MediaQueryListListener>, PassRefPtr<MediaQueryList>);
- ~Listener();
- void evaluate(MediaQueryEvaluator*);
+ void styleResolverChanged();
- MediaQueryListListener* listener() { return m_listener.get(); }
- MediaQueryList* query() { return m_query.get(); }
+ bool evaluate(const MediaQuerySet&);
- private:
- RefPtr<MediaQueryListListener> m_listener;
- RefPtr<MediaQueryList> m_query;
+private:
+ struct Listener {
+ Ref<MediaQueryListListener> listener;
+ Ref<MediaQueryList> query;
};
- MediaQueryMatcher(Document*);
- std::unique_ptr<MediaQueryEvaluator> prepareEvaluator() const;
+ explicit MediaQueryMatcher(Document&);
+ std::unique_ptr<RenderStyle> documentElementUserAgentStyle() const;
String mediaType() const;
Document* m_document;
- Vector<std::unique_ptr<Listener>> m_listeners;
+ Vector<Listener> m_listeners;
// This value is incremented at style selector changes.
// It is used to avoid evaluating queries more then once and to make sure
// that a media query result change is notified exactly once.
- unsigned m_evaluationRound;
+ unsigned m_evaluationRound { 1 };
};
} // namespace WebCore
-
-#endif // MediaQueryMatcher_h