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)#ifndef RemoteFrame_h
6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#define RemoteFrame_h
7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
8d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "core/frame/Frame.h"
9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
10c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
1207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochclass RemoteFrameView;
1307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch
14d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)class RemoteFrame: public Frame {
15d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)public:
167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static PassRefPtrWillBeRawPtr<RemoteFrame> create(FrameClient*, FrameHost*, FrameOwner*);
17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    virtual bool isRemoteFrame() const OVERRIDE { return true; }
18d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    virtual ~RemoteFrame();
20d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
21c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)    virtual void detach() OVERRIDE;
22c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)
2307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch    void setView(PassRefPtr<RemoteFrameView>);
2407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch    void createView();
2507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch
26323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    RemoteFrameView* view() const;
27323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
28d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)private:
29f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles)    RemoteFrame(FrameClient*, FrameHost*, FrameOwner*);
3007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch
3107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch    RefPtr<RemoteFrameView> m_view;
32d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)};
33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
34323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)inline RemoteFrameView* RemoteFrame::view() const
35323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){
36323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    return m_view.get();
37323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)}
38323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
39d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)DEFINE_TYPE_CASTS(RemoteFrame, Frame, remoteFrame, remoteFrame->isRemoteFrame(), remoteFrame.isRemoteFrame());
40d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
41c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
42d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
43d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#endif // RemoteFrame_h
44