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/RemoteFrameView.h"
7
8#include "core/frame/RemoteFrame.h"
9#include "core/rendering/RenderPart.h"
10
11namespace blink {
12
13RemoteFrameView::RemoteFrameView(RemoteFrame* remoteFrame)
14    : m_remoteFrame(remoteFrame)
15{
16    ASSERT(remoteFrame);
17}
18
19RemoteFrameView::~RemoteFrameView()
20{
21}
22
23PassRefPtr<RemoteFrameView> RemoteFrameView::create(RemoteFrame* remoteFrame)
24{
25    RefPtr<RemoteFrameView> view = adoptRef(new RemoteFrameView(remoteFrame));
26    view->show();
27    return view.release();
28}
29
30void RemoteFrameView::invalidateRect(const IntRect& rect)
31{
32    RenderPart* renderer = m_remoteFrame->ownerRenderer();
33    if (!renderer)
34        return;
35
36    IntRect repaintRect = rect;
37    repaintRect.move(renderer->borderLeft() + renderer->paddingLeft(),
38        renderer->borderTop() + renderer->paddingTop());
39    renderer->invalidatePaintRectangle(repaintRect);
40}
41
42void RemoteFrameView::setFrameRect(const IntRect& newRect)
43{
44    IntRect oldRect = frameRect();
45
46    if (newRect == oldRect)
47        return;
48
49    Widget::setFrameRect(newRect);
50
51    frameRectsChanged();
52}
53
54void RemoteFrameView::frameRectsChanged()
55{
56    // FIXME: Notify embedder via WebLocalFrameClient when that is possible.
57}
58
59} // namespace blink
60