Diff
Modified: releases/WebKitGTK/webkit-2.22/Source/WTF/ChangeLog (236048 => 236049)
--- releases/WebKitGTK/webkit-2.22/Source/WTF/ChangeLog 2018-09-17 09:54:31 UTC (rev 236048)
+++ releases/WebKitGTK/webkit-2.22/Source/WTF/ChangeLog 2018-09-17 09:54:40 UTC (rev 236049)
@@ -1,3 +1,19 @@
+2018-08-24 Antti Koivisto <[email protected]>
+
+ Allow creating WeakPtrs to const objects
+ https://bugs.webkit.org/show_bug.cgi?id=188785
+
+ Reviewed by Geoff Garen.
+
+ const Foo foo;
+ WeakPtr<const Foo> weakConstFoo = makeWeakPtr(foo);
+
+ * wtf/WeakPtr.h:
+ (WTF::WeakPtrFactory::createWeakPtr const):
+
+ Add a separate factory function for const T.
+ The underlying WeakReference is kept non-const in all cases.
+
2018-08-21 Carlos Garcia Campos <[email protected]>
[Linux] Cache the memory footprint and only update it after 1 second
Modified: releases/WebKitGTK/webkit-2.22/Source/WTF/wtf/WeakPtr.h (236048 => 236049)
--- releases/WebKitGTK/webkit-2.22/Source/WTF/wtf/WeakPtr.h 2018-09-17 09:54:31 UTC (rev 236048)
+++ releases/WebKitGTK/webkit-2.22/Source/WTF/wtf/WeakPtr.h 2018-09-17 09:54:40 UTC (rev 236049)
@@ -111,6 +111,13 @@
return { makeRef(*m_ref) };
}
+ WeakPtr<const T> createWeakPtr(const T& ptr) const
+ {
+ if (!m_ref)
+ m_ref = WeakReference<T>::create(const_cast<T*>(&ptr));
+ return { makeRef(reinterpret_cast<WeakReference<const T>&>(*m_ref)) };
+ }
+
void revokeAll()
{
if (!m_ref)
Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog (236048 => 236049)
--- releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog 2018-09-17 09:54:31 UTC (rev 236048)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/ChangeLog 2018-09-17 09:54:40 UTC (rev 236049)
@@ -1,3 +1,25 @@
+2018-08-24 Antti Koivisto <[email protected]>
+
+ Allow creating WeakPtrs to const objects
+ https://bugs.webkit.org/show_bug.cgi?id=188785
+
+ Reviewed by Geoff Garen.
+
+ Remove some unneeded const_casts.
+
+ * css/MediaQueryEvaluator.cpp:
+ (WebCore::MediaQueryEvaluator::MediaQueryEvaluator):
+ (WebCore::MediaQueryEvaluator::evaluate const):
+ * css/MediaQueryEvaluator.h:
+ * rendering/FloatingObjects.cpp:
+ (WebCore::ComputeFloatOffsetAdapter::ComputeFloatOffsetAdapter):
+ (WebCore::ComputeFloatOffsetForFloatLayoutAdapter::ComputeFloatOffsetForFloatLayoutAdapter):
+ (WebCore::ComputeFloatOffsetForLineLayoutAdapter::ComputeFloatOffsetForLineLayoutAdapter):
+ (WebCore::FindNextFloatLogicalBottomAdapter::FindNextFloatLogicalBottomAdapter):
+ (WebCore::FloatingObjects::FloatingObjects):
+ * rendering/FloatingObjects.h:
+ (WebCore::FloatingObjects::renderer const):
+
2018-08-23 Ryosuke Niwa <[email protected]>
initKeyboardEvent doesn't clear CapsLock state
Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/css/MediaQueryEvaluator.cpp (236048 => 236049)
--- releases/WebKitGTK/webkit-2.22/Source/WebCore/css/MediaQueryEvaluator.cpp 2018-09-17 09:54:31 UTC (rev 236048)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/css/MediaQueryEvaluator.cpp 2018-09-17 09:54:40 UTC (rev 236049)
@@ -110,7 +110,7 @@
MediaQueryEvaluator::MediaQueryEvaluator(const String& acceptedMediaType, const Document& document, const RenderStyle* style)
: m_mediaType(acceptedMediaType)
- , m_document(makeWeakPtr(const_cast<Document&>(document)))
+ , m_document(makeWeakPtr(document))
, m_style(style)
{
}
@@ -787,7 +787,7 @@
if (!m_document)
return m_fallbackResult;
- Document& document = *m_document;
+ auto& document = *m_document;
auto* frame = document.frame();
if (!frame || !frame->view() || !m_style)
return m_fallbackResult;
Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/css/MediaQueryEvaluator.h (236048 => 236049)
--- releases/WebKitGTK/webkit-2.22/Source/WebCore/css/MediaQueryEvaluator.h 2018-09-17 09:54:31 UTC (rev 236048)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/css/MediaQueryEvaluator.h 2018-09-17 09:54:40 UTC (rev 236049)
@@ -75,7 +75,7 @@
private:
String m_mediaType;
- WeakPtr<Document> m_document;
+ WeakPtr<const Document> m_document;
const RenderStyle* m_style { nullptr };
bool m_fallbackResult { false };
};
Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/rendering/FloatingObjects.cpp (236048 => 236049)
--- releases/WebKitGTK/webkit-2.22/Source/WebCore/rendering/FloatingObjects.cpp 2018-09-17 09:54:31 UTC (rev 236048)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/rendering/FloatingObjects.cpp 2018-09-17 09:54:40 UTC (rev 236049)
@@ -124,7 +124,7 @@
public:
typedef FloatingObjectInterval IntervalType;
- ComputeFloatOffsetAdapter(RenderBlockFlow& renderer, LayoutUnit lineTop, LayoutUnit lineBottom, LayoutUnit offset)
+ ComputeFloatOffsetAdapter(const RenderBlockFlow& renderer, LayoutUnit lineTop, LayoutUnit lineBottom, LayoutUnit offset)
: m_renderer(makeWeakPtr(renderer))
, m_lineTop(lineTop)
, m_lineBottom(lineBottom)
@@ -144,7 +144,7 @@
protected:
virtual bool updateOffsetIfNeeded(const FloatingObject&) = 0;
- WeakPtr<RenderBlockFlow> m_renderer;
+ WeakPtr<const RenderBlockFlow> m_renderer;
LayoutUnit m_lineTop;
LayoutUnit m_lineBottom;
LayoutUnit m_offset;
@@ -154,7 +154,7 @@
template <FloatingObject::Type FloatTypeValue>
class ComputeFloatOffsetForFloatLayoutAdapter : public ComputeFloatOffsetAdapter<FloatTypeValue> {
public:
- ComputeFloatOffsetForFloatLayoutAdapter(RenderBlockFlow& renderer, LayoutUnit lineTop, LayoutUnit lineBottom, LayoutUnit offset)
+ ComputeFloatOffsetForFloatLayoutAdapter(const RenderBlockFlow& renderer, LayoutUnit lineTop, LayoutUnit lineBottom, LayoutUnit offset)
: ComputeFloatOffsetAdapter<FloatTypeValue>(renderer, lineTop, lineBottom, offset)
{
}
@@ -170,7 +170,7 @@
template <FloatingObject::Type FloatTypeValue>
class ComputeFloatOffsetForLineLayoutAdapter : public ComputeFloatOffsetAdapter<FloatTypeValue> {
public:
- ComputeFloatOffsetForLineLayoutAdapter(RenderBlockFlow& renderer, LayoutUnit lineTop, LayoutUnit lineBottom, LayoutUnit offset)
+ ComputeFloatOffsetForLineLayoutAdapter(const RenderBlockFlow& renderer, LayoutUnit lineTop, LayoutUnit lineBottom, LayoutUnit offset)
: ComputeFloatOffsetAdapter<FloatTypeValue>(renderer, lineTop, lineBottom, offset)
{
}
@@ -185,7 +185,7 @@
public:
typedef FloatingObjectInterval IntervalType;
- FindNextFloatLogicalBottomAdapter(RenderBlockFlow& renderer, LayoutUnit belowLogicalHeight)
+ FindNextFloatLogicalBottomAdapter(const RenderBlockFlow& renderer, LayoutUnit belowLogicalHeight)
: m_renderer(makeWeakPtr(renderer))
, m_belowLogicalHeight(belowLogicalHeight)
{
@@ -199,7 +199,7 @@
LayoutUnit nextShapeLogicalBottom() const { return m_nextShapeLogicalBottom.value_or(nextLogicalBottom()); }
private:
- WeakPtr<RenderBlockFlow> m_renderer;
+ WeakPtr<const RenderBlockFlow> m_renderer;
LayoutUnit m_belowLogicalHeight;
std::optional<LayoutUnit> m_nextLogicalBottom;
std::optional<LayoutUnit> m_nextShapeLogicalBottom;
@@ -250,7 +250,7 @@
: m_leftObjectsCount(0)
, m_rightObjectsCount(0)
, m_horizontalWritingMode(renderer.isHorizontalWritingMode())
- , m_renderer(makeWeakPtr(const_cast<RenderBlockFlow&>(renderer)))
+ , m_renderer(makeWeakPtr(renderer))
{
}
Modified: releases/WebKitGTK/webkit-2.22/Source/WebCore/rendering/FloatingObjects.h (236048 => 236049)
--- releases/WebKitGTK/webkit-2.22/Source/WebCore/rendering/FloatingObjects.h 2018-09-17 09:54:31 UTC (rev 236048)
+++ releases/WebKitGTK/webkit-2.22/Source/WebCore/rendering/FloatingObjects.h 2018-09-17 09:54:40 UTC (rev 236049)
@@ -161,7 +161,7 @@
LayoutUnit findNextFloatLogicalBottomBelowForBlock(LayoutUnit logicalHeight);
private:
- RenderBlockFlow& renderer() const { return *m_renderer; }
+ const RenderBlockFlow& renderer() const { return *m_renderer; }
void computePlacedFloatsTree();
const FloatingObjectTree* placedFloatsTree();
void increaseObjectsCount(FloatingObject::Type);
@@ -173,7 +173,7 @@
unsigned m_leftObjectsCount;
unsigned m_rightObjectsCount;
bool m_horizontalWritingMode;
- WeakPtr<RenderBlockFlow> m_renderer;
+ WeakPtr<const RenderBlockFlow> m_renderer;
};
} // namespace WebCore
Modified: releases/WebKitGTK/webkit-2.22/Tools/ChangeLog (236048 => 236049)
--- releases/WebKitGTK/webkit-2.22/Tools/ChangeLog 2018-09-17 09:54:31 UTC (rev 236048)
+++ releases/WebKitGTK/webkit-2.22/Tools/ChangeLog 2018-09-17 09:54:40 UTC (rev 236049)
@@ -1,3 +1,15 @@
+2018-08-24 Antti Koivisto <[email protected]>
+
+ Allow creating WeakPtrs to const objects
+ https://bugs.webkit.org/show_bug.cgi?id=188785
+
+ Reviewed by Geoff Garen.
+
+ * TestWebKitAPI/Tests/WTF/WeakPtr.cpp:
+ (TestWebKitAPI::Base::weakPtrFactory const):
+ (TestWebKitAPI::TEST):
+ (TestWebKitAPI::Base::weakPtrFactory): Deleted.
+
2018-08-22 Ryosuke Niwa <[email protected]>
Assert in NetworkBlobRegistry::unregisterBlobURL after network process had terminated
Modified: releases/WebKitGTK/webkit-2.22/Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp (236048 => 236049)
--- releases/WebKitGTK/webkit-2.22/Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp 2018-09-17 09:54:31 UTC (rev 236048)
+++ releases/WebKitGTK/webkit-2.22/Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp 2018-09-17 09:54:40 UTC (rev 236049)
@@ -201,12 +201,14 @@
class Base {
public:
+ Base() { }
+
int foo()
{
return 0;
}
- auto& weakPtrFactory() { return m_weakPtrFactory; }
+ auto& weakPtrFactory() const { return m_weakPtrFactory; }
private:
WeakPtrFactory<Base> m_weakPtrFactory;
@@ -214,6 +216,8 @@
class Derived : public Base {
public:
+ Derived() { }
+
int foo()
{
return 1;
@@ -284,4 +288,38 @@
}
}
+TEST(WTF_WeakPtr, DerivedConstructAndAssignConst)
+{
+ const Derived derived;
+ {
+ auto derivedWeakPtr = makeWeakPtr(derived);
+ WeakPtr<const Base> baseWeakPtr { WTFMove(derivedWeakPtr) };
+ EXPECT_EQ(baseWeakPtr.get(), &derived);
+ EXPECT_NULL(derivedWeakPtr.get());
+ }
+
+ {
+ auto derivedWeakPtr = makeWeakPtr(derived);
+ WeakPtr<const Base> baseWeakPtr { derivedWeakPtr };
+ EXPECT_EQ(baseWeakPtr.get(), &derived);
+ EXPECT_EQ(derivedWeakPtr.get(), &derived);
+ }
+
+ {
+ auto derivedWeakPtr = makeWeakPtr(derived);
+ WeakPtr<const Base> baseWeakPtr;
+ baseWeakPtr = WTFMove(derivedWeakPtr);
+ EXPECT_EQ(baseWeakPtr.get(), &derived);
+ EXPECT_NULL(derivedWeakPtr.get());
+ }
+
+ {
+ auto derivedWeakPtr = makeWeakPtr(derived);
+ WeakPtr<const Base> baseWeakPtr;
+ baseWeakPtr = derivedWeakPtr;
+ EXPECT_EQ(baseWeakPtr.get(), &derived);
+ EXPECT_EQ(derivedWeakPtr.get(), &derived);
+ }
+}
+
} // namespace TestWebKitAPI