Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(263)

Side by Side Diff: sky/engine/core/rendering/RenderIFrame.cpp

Issue 730653002: Sky: update the HTMLIFrameElement's geometry during paint invalidation rather (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: esprehn Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 6
7 #include "core/rendering/RenderIFrame.h" 7 #include "core/rendering/RenderIFrame.h"
8 8
9 #include "core/editing/FrameSelection.h" 9 #include "core/editing/FrameSelection.h"
10 #include "core/html/HTMLIFrameElement.h" 10 #include "core/html/HTMLIFrameElement.h"
11 #include "core/loader/FrameLoaderClient.h" 11 #include "core/loader/FrameLoaderClient.h"
12 #include "core/rendering/PaintInfo.h" 12 #include "core/rendering/PaintInfo.h"
13 #include "core/rendering/RenderView.h"
13 #include "platform/geometry/LayoutPoint.h" 14 #include "platform/geometry/LayoutPoint.h"
14 15
15 namespace blink { 16 namespace blink {
16 17
17 RenderIFrame::RenderIFrame(HTMLIFrameElement* iframe) 18 RenderIFrame::RenderIFrame(HTMLIFrameElement* iframe)
18 : RenderReplaced(iframe) 19 : RenderReplaced(iframe)
19 { 20 {
21 view()->addIFrame(this);
20 } 22 }
21 23
22 RenderIFrame::~RenderIFrame() 24 RenderIFrame::~RenderIFrame()
23 { 25 {
26 if (view())
27 view()->removeIFrame(this);
24 } 28 }
25 29
26 void RenderIFrame::layout() 30 void RenderIFrame::invalidateWidgetBounds()
27 { 31 {
28 RenderReplaced::layout();
29
30 // TODO(mpcomplete): This will generate extra SetBounds calls in some cases
31 // because some layout modules involve multiple passes (e.g., flexbox).
32 // Instead, we'll need to defer the work to later in the pipeline.
33 mojo::View* contentView = toHTMLIFrameElement(node())->contentView(); 32 mojo::View* contentView = toHTMLIFrameElement(node())->contentView();
34 if (!contentView) 33 if (!contentView)
35 return; 34 return;
36 35
37 IntRect bounds = pixelSnappedIntRect(frameRect()); 36 IntRect bounds = pixelSnappedIntRect(frameRect());
38 mojo::Rect mojo_bounds; 37 mojo::Rect mojoBounds;
39 mojo_bounds.x = bounds.x(); 38 mojoBounds.x = bounds.x();
40 mojo_bounds.y = bounds.y(); 39 mojoBounds.y = bounds.y();
41 mojo_bounds.width = bounds.width(); 40 mojoBounds.width = bounds.width();
42 mojo_bounds.height = bounds.height(); 41 mojoBounds.height = bounds.height();
43 contentView->SetBounds(mojo_bounds); 42 contentView->SetBounds(mojoBounds);
44 } 43 }
45 44
46 void RenderIFrame::paintReplaced(PaintInfo& paintInfo, 45 void RenderIFrame::paintReplaced(PaintInfo& paintInfo,
47 const LayoutPoint& paintOffset) 46 const LayoutPoint& paintOffset)
48 { 47 {
49 // Draw a gray background. This should be painted over by the actual 48 // Draw a gray background. This should be painted over by the actual
50 // content. 49 // content.
51 // TODO(mpcomplete): figure out what we should actually do here. 50 // TODO(mpcomplete): figure out what we should actually do here.
52 GraphicsContext* context = paintInfo.context; 51 GraphicsContext* context = paintInfo.context;
53 52
54 IntRect paintRect = pixelSnappedIntRect(LayoutRect( 53 IntRect paintRect = pixelSnappedIntRect(LayoutRect(
55 paintOffset.x(), paintOffset.y(), contentWidth(), contentHeight())); 54 paintOffset.x(), paintOffset.y(), contentWidth(), contentHeight()));
56 context->setStrokeStyle(SolidStroke); 55 context->setStrokeStyle(SolidStroke);
57 context->setStrokeColor(Color::lightGray); 56 context->setStrokeColor(Color::lightGray);
58 context->setFillColor(Color::darkGray); 57 context->setFillColor(Color::darkGray);
59 context->drawRect(paintRect); 58 context->drawRect(paintRect);
60 } 59 }
61 60
62 } // namespace blink 61 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698