1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef OpenedFrameTracker_h
6#define OpenedFrameTracker_h
7
8#include "wtf/HashSet.h"
9#include "wtf/Noncopyable.h"
10
11namespace blink {
12
13class WebFrame;
14
15// Small helper class to track the set of frames that a WebFrame has opened.
16// Due to layering restrictions, we need to hide the implementation, since
17// public/web/ cannot depend on wtf/.
18class OpenedFrameTracker {
19    WTF_MAKE_NONCOPYABLE(OpenedFrameTracker);
20public:
21    OpenedFrameTracker();
22    ~OpenedFrameTracker();
23
24    bool isEmpty() const;
25    void add(WebFrame*);
26    void remove(WebFrame*);
27
28    // Updates the opener for all tracked frames.
29    void updateOpener(WebFrame*);
30
31private:
32    WTF::HashSet<WebFrame*> m_openedFrames;
33};
34
35} // namespace blink
36
37#endif // WebFramePrivate_h
38