1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// found in the LICENSE file.
4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "config.h"
6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/frame/RemoteFrame.h"
7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch#include "core/frame/RemoteFrameView.h"
9a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch#include "core/html/HTMLFrameOwnerElement.h"
1007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch
11c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
13f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)inline RemoteFrame::RemoteFrame(FrameClient* client, FrameHost* host, FrameOwner* owner)
14f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)    : Frame(client, host, owner)
15d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
16d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciPassRefPtrWillBeRawPtr<RemoteFrame> RemoteFrame::create(FrameClient* client, FrameHost* host, FrameOwner* owner)
19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    return adoptRefWillBeNoop(new RemoteFrame(client, host, owner));
21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)RemoteFrame::~RemoteFrame()
24d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
2507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch    setView(nullptr);
2607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch}
2707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch
28c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)void RemoteFrame::detach()
29c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles){
30c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    detachChildren();
317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    m_host = nullptr;
32c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)}
33c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
3407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochvoid RemoteFrame::setView(PassRefPtr<RemoteFrameView> view)
3507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch{
3607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch    m_view = view;
3707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch}
3807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch
3907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochvoid RemoteFrame::createView()
4007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch{
4107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch    RefPtr<RemoteFrameView> view = RemoteFrameView::create(this);
4207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch    setView(view);
4307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch
44a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch    if (ownerRenderer()) {
45f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)        HTMLFrameOwnerElement* owner = deprecatedLocalOwner();
46f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)        ASSERT(owner);
47f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)        owner->setWidget(view);
48a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch    }
49d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
50d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
51c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
52