blob: 26ada20955466066176bf64c21bc1a0d1e945dd5 [file] [log] [blame]
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CONTAINER_QUERY_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CONTAINER_QUERY_H_
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/css/container_selector.h"
#include "third_party/blink/renderer/core/css/media_query_exp.h"
#include "third_party/blink/renderer/core/layout/geometry/axis.h"
#include "third_party/blink/renderer/platform/text/writing_mode.h"
namespace blink {
class CORE_EXPORT ContainerQuery final
: public GarbageCollected<ContainerQuery> {
public:
ContainerQuery(ContainerSelector, const MediaQueryExpNode* query);
ContainerQuery(const ContainerQuery&);
const ContainerSelector& Selector() const { return selector_; }
const ContainerQuery* Parent() const { return parent_.Get(); }
ContainerQuery* CopyWithParent(const ContainerQuery*) const;
String ToString() const;
void Trace(Visitor* visitor) const {
visitor->Trace(query_);
visitor->Trace(parent_);
}
private:
friend class ContainerQueryTest;
friend class ContainerQueryEvaluator;
friend class CSSContainerRule;
friend class StyleRuleContainer;
const MediaQueryExpNode& Query() const { return *query_; }
ContainerSelector selector_;
Member<const MediaQueryExpNode> query_;
Member<const ContainerQuery> parent_;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_CORE_CSS_CONTAINER_QUERY_H_