- Revision
- 231548
- Author
- [email protected]
- Date
- 2018-05-09 00:05:46 -0700 (Wed, 09 May 2018)
Log Message
Add OptionSet::operator& and operator bool
https://bugs.webkit.org/show_bug.cgi?id=185306
Reviewed by Anders Carlsson.
Source/WebCore:
Use it in a few places.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::reload):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::logReasonsForCompositing):
(WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
Source/WTF:
This is primarily to allow writing
if (options & Option:A)
instead of
if (options.contains(Option:A))
This is consistent with other OptionSet operators.
* wtf/OptionSet.h:
(WTF::OptionSet::operator bool):
(WTF::OptionSet::operator&):
Also remove T versions of operator| and operator-, they are not needed due to
implicit conversion from T to OptionSet<T>.
Tools:
* TestWebKitAPI/Tests/WTF/OptionSet.cpp:
(TestWebKitAPI::TEST):
Modified Paths
Diff
Modified: trunk/Source/WTF/ChangeLog (231547 => 231548)
--- trunk/Source/WTF/ChangeLog 2018-05-09 06:29:05 UTC (rev 231547)
+++ trunk/Source/WTF/ChangeLog 2018-05-09 07:05:46 UTC (rev 231548)
@@ -1,3 +1,27 @@
+2018-05-09 Antti Koivisto <[email protected]>
+
+ Add OptionSet::operator& and operator bool
+ https://bugs.webkit.org/show_bug.cgi?id=185306
+
+ Reviewed by Anders Carlsson.
+
+ This is primarily to allow writing
+
+ if (options & Option:A)
+
+ instead of
+
+ if (options.contains(Option:A))
+
+ This is consistent with other OptionSet operators.
+
+ * wtf/OptionSet.h:
+ (WTF::OptionSet::operator bool):
+ (WTF::OptionSet::operator&):
+
+ Also remove T versions of operator| and operator-, they are not needed due to
+ implicit conversion from T to OptionSet<T>.
+
2018-05-06 Filip Pizlo <[email protected]>
InPlaceAbstractState::beginBasicBlock shouldn't have to clear any abstract values
Modified: trunk/Source/WTF/wtf/OptionSet.h (231547 => 231548)
--- trunk/Source/WTF/wtf/OptionSet.h 2018-05-09 06:29:05 UTC (rev 231547)
+++ trunk/Source/WTF/wtf/OptionSet.h 2018-05-09 07:05:46 UTC (rev 231548)
@@ -107,6 +107,8 @@
constexpr iterator begin() const { return m_storage; }
constexpr iterator end() const { return 0; }
+ constexpr explicit operator bool() { return !isEmpty(); }
+
constexpr bool contains(OptionSet optionSet) const
{
return m_storage & optionSet.m_storage;
@@ -139,9 +141,9 @@
return fromRaw(lhs.m_storage | rhs.m_storage);
}
- constexpr friend OptionSet operator|(OptionSet lhs, T rhs)
+ constexpr friend OptionSet operator&(OptionSet lhs, OptionSet rhs)
{
- return lhs | OptionSet { rhs };
+ return fromRaw(lhs.m_storage & rhs.m_storage);
}
constexpr friend OptionSet operator-(OptionSet lhs, OptionSet rhs)
@@ -149,11 +151,6 @@
return fromRaw(lhs.m_storage & ~rhs.m_storage);
}
- constexpr friend OptionSet operator-(OptionSet lhs, T rhs)
- {
- return lhs - OptionSet { rhs };
- }
-
private:
enum InitializationTag { FromRawValue };
constexpr OptionSet(T t, InitializationTag)
Modified: trunk/Source/WebCore/ChangeLog (231547 => 231548)
--- trunk/Source/WebCore/ChangeLog 2018-05-09 06:29:05 UTC (rev 231547)
+++ trunk/Source/WebCore/ChangeLog 2018-05-09 07:05:46 UTC (rev 231548)
@@ -1,3 +1,18 @@
+2018-05-09 Antti Koivisto <[email protected]>
+
+ Add OptionSet::operator& and operator bool
+ https://bugs.webkit.org/show_bug.cgi?id=185306
+
+ Reviewed by Anders Carlsson.
+
+ Use it in a few places.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::reload):
+ * rendering/RenderLayerCompositor.cpp:
+ (WebCore::RenderLayerCompositor::logReasonsForCompositing):
+ (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
+
2018-05-08 Dean Jackson <[email protected]>
Disable system preview link fetching
Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (231547 => 231548)
--- trunk/Source/WebCore/loader/FrameLoader.cpp 2018-05-09 06:29:05 UTC (rev 231547)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp 2018-05-09 07:05:46 UTC (rev 231548)
@@ -1701,9 +1701,9 @@
loader->setOverrideEncoding(m_documentLoader->overrideEncoding());
auto frameLoadTypeForReloadOptions = [] (auto options) {
- if (options.contains(ReloadOption::FromOrigin))
+ if (options & ReloadOption::FromOrigin)
return FrameLoadType::ReloadFromOrigin;
- if (options.contains(ReloadOption::ExpiredOnly))
+ if (options & ReloadOption::ExpiredOnly)
return FrameLoadType::ReloadExpiredOnly;
return FrameLoadType::Reload;
};
Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (231547 => 231548)
--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2018-05-09 06:29:05 UTC (rev 231547)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp 2018-05-09 07:05:46 UTC (rev 231548)
@@ -2210,81 +2210,81 @@
{
OptionSet<CompositingReason> reasons = reasonsForCompositing(layer);
- if (reasons.contains(CompositingReason::Transform3D))
+ if (reasons & CompositingReason::Transform3D)
return "3D transform";
- if (reasons.contains(CompositingReason::Video))
+ if (reasons & CompositingReason::Video)
return "video";
- if (reasons.contains(CompositingReason::Canvas))
+ if (reasons & CompositingReason::Canvas)
return "canvas";
- if (reasons.contains(CompositingReason::Plugin))
+ if (reasons & CompositingReason::Plugin)
return "plugin";
- if (reasons.contains(CompositingReason::IFrame))
+ if (reasons & CompositingReason::IFrame)
return "iframe";
- if (reasons.contains(CompositingReason::BackfaceVisibilityHidden))
+ if (reasons & CompositingReason::BackfaceVisibilityHidden)
return "backface-visibility: hidden";
- if (reasons.contains(CompositingReason::ClipsCompositingDescendants))
+ if (reasons & CompositingReason::ClipsCompositingDescendants)
return "clips compositing descendants";
- if (reasons.contains(CompositingReason::Animation))
+ if (reasons & CompositingReason::Animation)
return "animation";
- if (reasons.contains(CompositingReason::Filters))
+ if (reasons & CompositingReason::Filters)
return "filters";
- if (reasons.contains(CompositingReason::PositionFixed))
+ if (reasons & CompositingReason::PositionFixed)
return "position: fixed";
- if (reasons.contains(CompositingReason::PositionSticky))
+ if (reasons & CompositingReason::PositionSticky)
return "position: sticky";
- if (reasons.contains(CompositingReason::OverflowScrollingTouch))
+ if (reasons & CompositingReason::OverflowScrollingTouch)
return "-webkit-overflow-scrolling: touch";
- if (reasons.contains(CompositingReason::Stacking))
+ if (reasons & CompositingReason::Stacking)
return "stacking";
- if (reasons.contains(CompositingReason::Overlap))
+ if (reasons & CompositingReason::Overlap)
return "overlap";
- if (reasons.contains(CompositingReason::NegativeZIndexChildren))
+ if (reasons & CompositingReason::NegativeZIndexChildren)
return "negative z-index children";
- if (reasons.contains(CompositingReason::TransformWithCompositedDescendants))
+ if (reasons & CompositingReason::TransformWithCompositedDescendants)
return "transform with composited descendants";
- if (reasons.contains(CompositingReason::OpacityWithCompositedDescendants))
+ if (reasons & CompositingReason::OpacityWithCompositedDescendants)
return "opacity with composited descendants";
- if (reasons.contains(CompositingReason::MaskWithCompositedDescendants))
+ if (reasons & CompositingReason::MaskWithCompositedDescendants)
return "mask with composited descendants";
- if (reasons.contains(CompositingReason::ReflectionWithCompositedDescendants))
+ if (reasons & CompositingReason::ReflectionWithCompositedDescendants)
return "reflection with composited descendants";
- if (reasons.contains(CompositingReason::FilterWithCompositedDescendants))
+ if (reasons & CompositingReason::FilterWithCompositedDescendants)
return "filter with composited descendants";
#if ENABLE(CSS_COMPOSITING)
- if (reasons.contains(CompositingReason::BlendingWithCompositedDescendants))
+ if (reasons & CompositingReason::BlendingWithCompositedDescendants)
return "blending with composited descendants";
- if (reasons.contains(CompositingReason::IsolatesCompositedBlendingDescendants))
+ if (reasons & CompositingReason::IsolatesCompositedBlendingDescendants)
return "isolates composited blending descendants";
#endif
- if (reasons.contains(CompositingReason::Perspective))
+ if (reasons & CompositingReason::Perspective)
return "perspective";
- if (reasons.contains(CompositingReason::Preserve3D))
+ if (reasons & CompositingReason::Preserve3D)
return "preserve-3d";
- if (reasons.contains(CompositingReason::Root))
+ if (reasons & CompositingReason::Root)
return "root";
return "";
@@ -3798,10 +3798,10 @@
LOG_WITH_STREAM(Compositing, stream << "Registering ViewportConstrained " << nodeType << " node " << nodeID << " (layer " << backing->graphicsLayer()->primaryLayerID() << ") as child of " << parentNodeID);
- if (changes.contains(ScrollingNodeChangeFlags::Layer))
+ if (changes & ScrollingNodeChangeFlags::Layer)
scrollingCoordinator->updateNodeLayer(nodeID, backing->graphicsLayer());
- if (changes.contains(ScrollingNodeChangeFlags::LayerGeometry)) {
+ if (changes & ScrollingNodeChangeFlags::LayerGeometry) {
switch (nodeType) {
case FixedNode:
scrollingCoordinator->updateNodeViewportConstraints(nodeID, computeFixedViewportConstraints(layer));
Modified: trunk/Tools/ChangeLog (231547 => 231548)
--- trunk/Tools/ChangeLog 2018-05-09 06:29:05 UTC (rev 231547)
+++ trunk/Tools/ChangeLog 2018-05-09 07:05:46 UTC (rev 231548)
@@ -1,3 +1,13 @@
+2018-05-09 Antti Koivisto <[email protected]>
+
+ Add OptionSet::operator& and operator bool
+ https://bugs.webkit.org/show_bug.cgi?id=185306
+
+ Reviewed by Anders Carlsson.
+
+ * TestWebKitAPI/Tests/WTF/OptionSet.cpp:
+ (TestWebKitAPI::TEST):
+
2018-05-08 Wenson Hsieh <[email protected]>
Consolidate WebContentReaderIOS and WebContentReaderMac into WebContentReaderCocoa
Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/OptionSet.cpp (231547 => 231548)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/OptionSet.cpp 2018-05-09 06:29:05 UTC (rev 231547)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/OptionSet.cpp 2018-05-09 07:05:46 UTC (rev 231548)
@@ -316,4 +316,67 @@
EXPECT_TRUE(*it1 == *it2);
}
+TEST(WTF_OptionSet, OperatorAnd)
+{
+ OptionSet<ExampleFlags> a { ExampleFlags::A };
+ OptionSet<ExampleFlags> ac { ExampleFlags::A, ExampleFlags::C };
+ OptionSet<ExampleFlags> bc { ExampleFlags::B, ExampleFlags::C };
+ {
+ auto set = a & ac;
+ EXPECT_TRUE(!!set);
+ EXPECT_FALSE(set.isEmpty());
+ EXPECT_TRUE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+ }
+ {
+ auto set = a & bc;
+ EXPECT_FALSE(!!set);
+ EXPECT_TRUE(set.isEmpty());
+ EXPECT_FALSE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+ }
+ {
+ auto set = ac & bc;
+ EXPECT_TRUE(!!set);
+ EXPECT_FALSE(set.isEmpty());
+ EXPECT_FALSE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_TRUE(set.contains(ExampleFlags::C));
+ }
+ {
+ auto set = ExampleFlags::A & bc;
+ EXPECT_FALSE(!!set);
+ EXPECT_TRUE(set.isEmpty());
+ EXPECT_FALSE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+ }
+ {
+ auto set = ExampleFlags::A & ac;
+ EXPECT_TRUE(!!set);
+ EXPECT_FALSE(set.isEmpty());
+ EXPECT_TRUE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+ }
+ {
+ auto set = bc & ExampleFlags::A;
+ EXPECT_FALSE(!!set);
+ EXPECT_TRUE(set.isEmpty());
+ EXPECT_FALSE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+ }
+ {
+ auto set = ac & ExampleFlags::A;
+ EXPECT_TRUE(!!set);
+ EXPECT_FALSE(set.isEmpty());
+ EXPECT_TRUE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+ }
+}
+
} // namespace TestWebKitAPI