blob: ae5d70f971d07a920a5ef1c67205c9d0a6a2095b [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// 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_RESIZE_OBSERVER_RESIZE_OBSERVATION_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_RESIZE_OBSERVER_RESIZE_OBSERVATION_H_
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/resize_observer/resize_observer_box_options.h"
#include "third_party/blink/renderer/core/resize_observer/resize_observer_entry.h"
#include "third_party/blink/renderer/platform/geometry/layout_size.h"
#include "third_party/blink/renderer/platform/heap/handle.h"
namespace blink {
class Element;
class ResizeObserver;
// ResizeObservation represents an element that is being observed.
class CORE_EXPORT ResizeObservation final
: public GarbageCollected<ResizeObservation> {
public:
ResizeObservation(Element* target,
ResizeObserver*,
ResizeObserverBoxOptions observed_box);
Element* Target() const { return target_; }
size_t TargetDepth();
// True if observationSize differs from target's current size.
bool ObservationSizeOutOfSync();
void SetObservationSize(const LayoutSize&);
ResizeObserverBoxOptions observedBox() const { return observed_box_; }
LayoutSize ComputeTargetSize() const;
void Trace(Visitor*) const;
private:
WeakMember<Element> target_;
Member<ResizeObserver> observer_;
// Target size sent in last observation notification.
LayoutSize observation_size_;
ResizeObserverBoxOptions observed_box_;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_CORE_RESIZE_OBSERVER_RESIZE_OBSERVATION_H_