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#include "config.h"
6#include "core/frame/RemoteFrame.h"
7
8#include "core/frame/RemoteFrameView.h"
9#include "core/html/HTMLFrameOwnerElement.h"
10
11namespace blink {
12
13inline RemoteFrame::RemoteFrame(FrameClient* client, FrameHost* host, FrameOwner* owner)
14    : Frame(client, host, owner)
15{
16}
17
18PassRefPtrWillBeRawPtr<RemoteFrame> RemoteFrame::create(FrameClient* client, FrameHost* host, FrameOwner* owner)
19{
20    return adoptRefWillBeNoop(new RemoteFrame(client, host, owner));
21}
22
23RemoteFrame::~RemoteFrame()
24{
25    setView(nullptr);
26}
27
28void RemoteFrame::detach()
29{
30    detachChildren();
31    m_host = nullptr;
32}
33
34void RemoteFrame::setView(PassRefPtr<RemoteFrameView> view)
35{
36    m_view = view;
37}
38
39void RemoteFrame::createView()
40{
41    RefPtr<RemoteFrameView> view = RemoteFrameView::create(this);
42    setView(view);
43
44    if (ownerRenderer()) {
45        HTMLFrameOwnerElement* owner = deprecatedLocalOwner();
46        ASSERT(owner);
47        owner->setWidget(view);
48    }
49}
50
51} // namespace blink
52