• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 RemoteFrameView_h
6 #define RemoteFrameView_h
7 
8 #include "platform/Widget.h"
9 #include "platform/geometry/IntRect.h"
10 #include "platform/heap/Handle.h"
11 
12 namespace blink {
13 
14 class RemoteFrame;
15 
16 class RemoteFrameView : public Widget {
17 public:
18     static PassRefPtr<RemoteFrameView> create(RemoteFrame*);
19 
20     virtual ~RemoteFrameView();
21 
isRemoteFrameView()22     virtual bool isRemoteFrameView() const OVERRIDE { return true; }
23 
frame()24     RemoteFrame& frame() const
25     {
26         ASSERT(m_remoteFrame);
27         return *m_remoteFrame;
28     }
29 
30     // Override to notify remote frame that its viewport size has changed.
31     virtual void frameRectsChanged() OVERRIDE;
32 
33     virtual void invalidateRect(const IntRect&) OVERRIDE;
34 
35     virtual void setFrameRect(const IntRect&) OVERRIDE;
36 
37 private:
38     explicit RemoteFrameView(RemoteFrame*);
39 
40     // The RefPtrWillBePersistent-cycle between RemoteFrame and its RemoteFrameView
41     // is broken in the same manner as FrameView::m_frame and LocalFrame::m_view is.
42     // See the FrameView::m_frame comment.
43     RefPtrWillBePersistent<RemoteFrame> m_remoteFrame;
44 };
45 
46 DEFINE_TYPE_CASTS(RemoteFrameView, Widget, widget, widget->isRemoteFrameView(), widget.isRemoteFrameView());
47 
48 } // namespace blink
49 
50 #endif // RemoteFrameView_h
51