1323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)// found in the LICENSE file.
4323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
5323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)#include "config.h"
6323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)#include "web/OpenedFrameTracker.h"
7323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
8323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)#include "public/web/WebFrame.h"
9323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
10323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)namespace blink {
11323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
12323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)OpenedFrameTracker::OpenedFrameTracker()
13323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){
14323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)}
15323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
16323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)OpenedFrameTracker::~OpenedFrameTracker()
17323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){
18323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    updateOpener(0);
19323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)}
20323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
21323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)bool OpenedFrameTracker::isEmpty() const
22323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){
23323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    return m_openedFrames.isEmpty();
24323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)}
25323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
26323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)void OpenedFrameTracker::add(WebFrame* frame)
27323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){
28323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    m_openedFrames.add(frame);
29323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)}
30323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
31323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)void OpenedFrameTracker::remove(WebFrame* frame)
32323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){
33323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    m_openedFrames.remove(frame);
34323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)}
35323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
36323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)void OpenedFrameTracker::updateOpener(WebFrame* frame)
37323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){
38323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    HashSet<WebFrame*>::iterator end = m_openedFrames.end();
39323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    for (HashSet<WebFrame*>::iterator it = m_openedFrames.begin(); it != end; ++it)
40323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)        (*it)->m_opener = frame;
41323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)}
42323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
43323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} // namespace blink
44