blob: b7682404041d4219f97dd270b3b2d9f2884c0fd5 [file] [log] [blame]
// Copyright 2015 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 InspectedFrames_h
#define InspectedFrames_h
#include "core/CoreExport.h"
#include "platform/heap/Handle.h"
#include "wtf/Forward.h"
#include "wtf/Noncopyable.h"
namespace blink {
class LocalFrame;
class CORE_EXPORT InspectedFrames final : public NoBaseWillBeGarbageCollectedFinalized<InspectedFrames> {
WTF_MAKE_NONCOPYABLE(InspectedFrames);
USING_FAST_MALLOC_WILL_BE_REMOVED(InspectedFrames);
public:
class CORE_EXPORT Iterator {
STACK_ALLOCATED();
public:
Iterator operator++(int);
Iterator& operator++();
bool operator==(const Iterator& other);
bool operator!=(const Iterator& other);
LocalFrame* operator*() { return m_current; }
LocalFrame* operator->() { return m_current; }
private:
friend class InspectedFrames;
Iterator(LocalFrame* root, LocalFrame* current);
RawPtrWillBeMember<LocalFrame> m_root;
RawPtrWillBeMember<LocalFrame> m_current;
};
static PassOwnPtrWillBeRawPtr<InspectedFrames> create(LocalFrame* root)
{
return adoptPtrWillBeNoop(new InspectedFrames(root));
}
LocalFrame* root() { return m_root; }
bool contains(LocalFrame*) const;
LocalFrame* frameWithSecurityOrigin(const String& originRawString);
Iterator begin();
Iterator end();
DEFINE_INLINE_TRACE()
{
visitor->trace(m_root);
}
private:
explicit InspectedFrames(LocalFrame*);
RawPtrWillBeMember<LocalFrame> m_root;
};
} // namespace blink
#endif // InspectedFrames_h