Title: [104721] trunk/Source/WebCore
- Revision
- 104721
- Author
- [email protected]
- Date
- 2012-01-11 10:17:57 -0800 (Wed, 11 Jan 2012)
Log Message
Use HashMap<OwnPtr> for RenderBoxRegionInfo map in RenderRegion
https://bugs.webkit.org/show_bug.cgi?id=75348
Reviewed by Darin Adler.
* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::logicalWidthChangedInRegions): use OwnPtr.
* rendering/RenderRegion.cpp:
(WebCore::RenderRegion::setRenderBoxRegionInfo): use HashMap::add() instead of
get() potentially followed by set().
(WebCore::RenderRegion::takeRenderBoxRegionInfo): change to return PassOwnPtr.
(WebCore::RenderRegion::removeRenderBoxRegionInfo):
(WebCore::RenderRegion::deleteAllRenderBoxRegionInfo):
* rendering/RenderRegion.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (104720 => 104721)
--- trunk/Source/WebCore/ChangeLog 2012-01-11 18:06:57 UTC (rev 104720)
+++ trunk/Source/WebCore/ChangeLog 2012-01-11 18:17:57 UTC (rev 104721)
@@ -1,3 +1,20 @@
+2012-01-11 Caio Marcelo de Oliveira Filho <[email protected]>
+
+ Use HashMap<OwnPtr> for RenderBoxRegionInfo map in RenderRegion
+ https://bugs.webkit.org/show_bug.cgi?id=75348
+
+ Reviewed by Darin Adler.
+
+ * rendering/RenderFlowThread.cpp:
+ (WebCore::RenderFlowThread::logicalWidthChangedInRegions): use OwnPtr.
+ * rendering/RenderRegion.cpp:
+ (WebCore::RenderRegion::setRenderBoxRegionInfo): use HashMap::add() instead of
+ get() potentially followed by set().
+ (WebCore::RenderRegion::takeRenderBoxRegionInfo): change to return PassOwnPtr.
+ (WebCore::RenderRegion::removeRenderBoxRegionInfo):
+ (WebCore::RenderRegion::deleteAllRenderBoxRegionInfo):
+ * rendering/RenderRegion.h:
+
2012-01-11 Joel Webber <[email protected]>
Implement setCurrentTime() and pauseAnimations() on SVGSVGElement
Modified: trunk/Source/WebCore/rendering/RenderFlowThread.cpp (104720 => 104721)
--- trunk/Source/WebCore/rendering/RenderFlowThread.cpp 2012-01-11 18:06:57 UTC (rev 104720)
+++ trunk/Source/WebCore/rendering/RenderFlowThread.cpp 2012-01-11 18:17:57 UTC (rev 104721)
@@ -650,13 +650,11 @@
ASSERT(!region->needsLayout());
- RenderBoxRegionInfo* oldInfo = region->takeRenderBoxRegionInfo(block);
+ OwnPtr<RenderBoxRegionInfo> oldInfo = region->takeRenderBoxRegionInfo(block);
if (!oldInfo)
continue;
LayoutUnit oldLogicalWidth = oldInfo->logicalWidth();
- delete oldInfo;
-
RenderBoxRegionInfo* newInfo = block->renderBoxRegionInfo(region, offsetFromLogicalTopOfFirstPage);
if (!newInfo || newInfo->logicalWidth() != oldLogicalWidth)
return true;
Modified: trunk/Source/WebCore/rendering/RenderRegion.cpp (104720 => 104721)
--- trunk/Source/WebCore/rendering/RenderRegion.cpp 2012-01-11 18:06:57 UTC (rev 104720)
+++ trunk/Source/WebCore/rendering/RenderRegion.cpp 2012-01-11 18:17:57 UTC (rev 104721)
@@ -50,11 +50,6 @@
{
}
-RenderRegion::~RenderRegion()
-{
- deleteAllRenderBoxRegionInfo();
-}
-
LayoutRect RenderRegion::regionOverflowRect() const
{
// FIXME: Would like to just use hasOverflowClip() but we aren't a block yet. When RenderRegion is eliminated and
@@ -206,30 +201,27 @@
if (!m_isValid || !m_flowThread)
return 0;
- RenderBoxRegionInfo* existingBoxInfo = m_renderBoxRegionInfo.get(box);
- if (existingBoxInfo) {
- *existingBoxInfo = RenderBoxRegionInfo(logicalLeftInset, logicalRightInset, containingBlockChainIsInset);
- return existingBoxInfo;
- }
-
- RenderBoxRegionInfo* newBoxInfo = new RenderBoxRegionInfo(logicalLeftInset, logicalRightInset, containingBlockChainIsInset);
- m_renderBoxRegionInfo.set(box, newBoxInfo);
- return newBoxInfo;
+ OwnPtr<RenderBoxRegionInfo>& boxInfo = m_renderBoxRegionInfo.add(box, nullptr).first->second;
+ if (boxInfo)
+ *boxInfo = RenderBoxRegionInfo(logicalLeftInset, logicalRightInset, containingBlockChainIsInset);
+ else
+ boxInfo = adoptPtr(new RenderBoxRegionInfo(logicalLeftInset, logicalRightInset, containingBlockChainIsInset));
+
+ return boxInfo.get();
}
-RenderBoxRegionInfo* RenderRegion::takeRenderBoxRegionInfo(const RenderBox* box)
+PassOwnPtr<RenderBoxRegionInfo> RenderRegion::takeRenderBoxRegionInfo(const RenderBox* box)
{
return m_renderBoxRegionInfo.take(box);
}
void RenderRegion::removeRenderBoxRegionInfo(const RenderBox* box)
{
- delete m_renderBoxRegionInfo.take(box);
+ m_renderBoxRegionInfo.remove(box);
}
void RenderRegion::deleteAllRenderBoxRegionInfo()
{
- deleteAllValues(m_renderBoxRegionInfo);
m_renderBoxRegionInfo.clear();
}
Modified: trunk/Source/WebCore/rendering/RenderRegion.h (104720 => 104721)
--- trunk/Source/WebCore/rendering/RenderRegion.h 2012-01-11 18:06:57 UTC (rev 104720)
+++ trunk/Source/WebCore/rendering/RenderRegion.h 2012-01-11 18:17:57 UTC (rev 104721)
@@ -41,7 +41,6 @@
class RenderRegion : public RenderReplaced {
public:
explicit RenderRegion(Node*, RenderFlowThread*);
- virtual ~RenderRegion();
virtual bool isRenderRegion() const { return true; }
@@ -71,7 +70,7 @@
RenderBoxRegionInfo* renderBoxRegionInfo(const RenderBox*) const;
RenderBoxRegionInfo* setRenderBoxRegionInfo(const RenderBox*, LayoutUnit logicalLeftInset, LayoutUnit logicalRightInset,
bool containingBlockChainIsInset);
- RenderBoxRegionInfo* takeRenderBoxRegionInfo(const RenderBox*);
+ PassOwnPtr<RenderBoxRegionInfo> takeRenderBoxRegionInfo(const RenderBox*);
void removeRenderBoxRegionInfo(const RenderBox*);
void deleteAllRenderBoxRegionInfo();
@@ -96,7 +95,7 @@
// A RenderBoxRegionInfo* tells us about any layout information for a RenderBox that
// is unique to the region. For now it just holds logical width information for RenderBlocks, but eventually
// it will also hold a custom style for any box (for region styling).
- HashMap<const RenderBox*, RenderBoxRegionInfo*> m_renderBoxRegionInfo;
+ HashMap<const RenderBox*, OwnPtr<RenderBoxRegionInfo> > m_renderBoxRegionInfo;
bool m_isValid;
bool m_hasCustomRegionStyle;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes