Diff
Modified: trunk/Source/WebKit/ChangeLog (249092 => 249093)
--- trunk/Source/WebKit/ChangeLog 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/ChangeLog 2019-08-26 06:16:50 UTC (rev 249093)
@@ -1,3 +1,75 @@
+2019-08-25 Simon Fraser <simon.fra...@apple.com>
+
+ [iOS WK2] Make a strongly-typed TransactionID to replace uint64_t transactionIDs
+ https://bugs.webkit.org/show_bug.cgi?id=199983
+
+ Reviewed by Dean Jackson.
+
+ Add TransactionID which is a MonotonicObjectIdentifier<TransactionIDType>. This is modeled
+ after ObjectIdentifier<>, but we can't use that because it doesn't have a guarantee of
+ values always increasing by 1 (all derived classes share the same value source). Also, we
+ need a per-RemoteLayerTreeDrawingArea set of values, but a static seed would cause values to
+ be incremented by all RemoteLayerTreeDrawingAreas in a WebProcess.
+
+ Replace all the bare uint64_t with TransactionID, fixing message generation codegen.
+
+ * Scripts/webkit/messages.py:
+ * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h:
+ (WebKit::RemoteLayerTreeTransaction::transactionID const):
+ (WebKit::RemoteLayerTreeTransaction::setTransactionID):
+ * Shared/TransactionID.h: Added.
+ (WebKit::MonotonicObjectIdentifier::MonotonicObjectIdentifier):
+ (WebKit::MonotonicObjectIdentifier::isHashTableDeletedValue const):
+ (WebKit::MonotonicObjectIdentifier::encode const):
+ (WebKit::MonotonicObjectIdentifier::decode):
+ (WebKit::MonotonicObjectIdentifier::operator== const):
+ (WebKit::MonotonicObjectIdentifier::operator> const):
+ (WebKit::MonotonicObjectIdentifier::operator>= const):
+ (WebKit::MonotonicObjectIdentifier::operator< const):
+ (WebKit::MonotonicObjectIdentifier::operator<= const):
+ (WebKit::MonotonicObjectIdentifier::operator!= const):
+ (WebKit::MonotonicObjectIdentifier::increment):
+ (WebKit::MonotonicObjectIdentifier::next const):
+ (WebKit::MonotonicObjectIdentifier::toUInt64 const):
+ (WebKit::MonotonicObjectIdentifier::operator bool const):
+ (WebKit::MonotonicObjectIdentifier::loggingString const):
+ (WebKit::MonotonicObjectIdentifier::hashTableDeletedValue):
+ (WebKit::MonotonicObjectIdentifier::isValidIdentifier):
+ (WebKit::operator<<):
+ * Shared/VisibleContentRectUpdateInfo.h:
+ (WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
+ (WebKit::VisibleContentRectUpdateInfo::lastLayerTreeTransactionID const):
+ * UIProcess/API/Cocoa/WKWebView.mm:
+ (-[WKWebView _processWillSwapOrDidExit]):
+ * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
+ * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in:
+ * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
+ (WebKit::RemoteLayerTreeDrawingAreaProxy::willCommitLayerTree):
+ (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::resetState):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/ios/WKContentViewInteraction.h:
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ (-[WKContentView cleanupInteraction]):
+ * UIProcess/ios/WebPageProxyIOS.mm:
+ (WebKit::WebPageProxy::commitPotentialTap):
+ (WebKit::WebPageProxy::handleTap):
+ * WebKit.xcodeproj/project.pbxproj:
+ * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
+ (WebKit::RemoteLayerTreeDrawingArea::nextTransactionID const):
+ (WebKit::RemoteLayerTreeDrawingArea::lastCommittedTransactionID const):
+ (WebKit::RemoteLayerTreeDrawingArea::takeNextTransactionID):
+ * WebProcess/WebPage/WebFrame.h:
+ (WebKit::WebFrame::firstLayerTreeTransactionIDAfterDidCommitLoad const):
+ (WebKit::WebFrame::setFirstLayerTreeTransactionIDAfterDidCommitLoad):
+ * WebProcess/WebPage/WebPage.h:
+ * WebProcess/WebPage/WebPage.messages.in:
+ * WebProcess/WebPage/ios/WebPageIOS.mm:
+ (WebKit::WebPage::handleTap):
+ (WebKit::WebPage::handlePotentialDoubleTapForDoubleClickAtPoint):
+ (WebKit::WebPage::commitPotentialTap):
+
2019-08-24 Chris Dumez <cdu...@apple.com>
Make CacheStorageEngineCaches's decodeCachesNames() more robust against bad input data
Modified: trunk/Source/WebKit/Scripts/webkit/messages.py (249092 => 249093)
--- trunk/Source/WebKit/Scripts/webkit/messages.py 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/Scripts/webkit/messages.py 2019-08-26 06:16:50 UTC (rev 249093)
@@ -217,6 +217,7 @@
'WebCore::SWServerConnectionIdentifier',
'WebKit::ActivityStateChangeID',
'WebKit::LayerHostingContextID',
+ 'WebKit::TransactionID',
'WebKit::StorageAreaIdentifier',
'WebKit::StorageAreaImplIdentifier',
'WebKit::StorageNamespaceIdentifier',
Modified: trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h (249092 => 249093)
--- trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h 2019-08-26 06:16:50 UTC (rev 249093)
@@ -31,6 +31,7 @@
#include "GenericCallback.h"
#include "PlatformCAAnimationRemote.h"
#include "RemoteLayerBackingStore.h"
+#include "TransactionID.h"
#include <WebCore/Color.h>
#include <WebCore/FilterOperations.h>
#include <WebCore/FloatPoint3D.h>
@@ -264,8 +265,8 @@
bool avoidsUnsafeArea() const { return m_avoidsUnsafeArea; }
void setAvoidsUnsafeArea(bool avoidsUnsafeArea) { m_avoidsUnsafeArea = avoidsUnsafeArea; }
- uint64_t transactionID() const { return m_transactionID; }
- void setTransactionID(uint64_t transactionID) { m_transactionID = transactionID; }
+ TransactionID transactionID() const { return m_transactionID; }
+ void setTransactionID(TransactionID transactionID) { m_transactionID = transactionID; }
ActivityStateChangeID activityStateChangeID() const { return m_activityStateChangeID; }
void setActivityStateChangeID(ActivityStateChangeID activityStateChangeID) { m_activityStateChangeID = activityStateChangeID; }
@@ -309,7 +310,7 @@
double m_initialScaleFactor { 1 };
double m_viewportMetaTagWidth { -1 };
uint64_t m_renderTreeSize { 0 };
- uint64_t m_transactionID { 0 };
+ TransactionID m_transactionID;
ActivityStateChangeID m_activityStateChangeID { ActivityStateChangeAsynchronous };
OptionSet<WebCore::LayoutMilestone> m_newlyReachedPaintingMilestones;
bool m_scaleWasSetByUIProcess { false };
Added: trunk/Source/WebKit/Shared/TransactionID.h (0 => 249093)
--- trunk/Source/WebKit/Shared/TransactionID.h (rev 0)
+++ trunk/Source/WebKit/Shared/TransactionID.h 2019-08-26 06:16:50 UTC (rev 249093)
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <wtf/HashFunctions.h>
+#include <wtf/HashTraits.h>
+#include <wtf/Optional.h>
+#include <wtf/text/TextStream.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebKit {
+
+template<typename T> class MonotonicObjectIdentifier {
+public:
+ MonotonicObjectIdentifier() = default;
+
+ MonotonicObjectIdentifier(WTF::HashTableDeletedValueType)
+ : m_identifier(hashTableDeletedValue())
+ { }
+
+ bool isHashTableDeletedValue() const { return m_identifier == hashTableDeletedValue(); }
+
+ template<typename Encoder> void encode(Encoder& encoder) const
+ {
+ ASSERT(isValidIdentifier(m_identifier));
+ encoder << m_identifier;
+ }
+ template<typename Decoder> static Optional<MonotonicObjectIdentifier> decode(Decoder& decoder)
+ {
+ Optional<uint64_t> identifier;
+ decoder >> identifier;
+ if (!identifier)
+ return WTF::nullopt;
+ ASSERT(isValidIdentifier(*identifier));
+ return MonotonicObjectIdentifier { *identifier };
+ }
+
+ bool operator==(const MonotonicObjectIdentifier& other) const
+ {
+ return m_identifier == other.m_identifier;
+ }
+
+ bool operator>(const MonotonicObjectIdentifier& other) const
+ {
+ return m_identifier > other.m_identifier;
+ }
+
+ bool operator>=(const MonotonicObjectIdentifier& other) const
+ {
+ return m_identifier >= other.m_identifier;
+ }
+
+ bool operator<(const MonotonicObjectIdentifier& other) const
+ {
+ return m_identifier < other.m_identifier;
+ }
+
+ bool operator<=(const MonotonicObjectIdentifier& other) const
+ {
+ return m_identifier <= other.m_identifier;
+ }
+
+ bool operator!=(const MonotonicObjectIdentifier& other) const
+ {
+ return m_identifier != other.m_identifier;
+ }
+
+ MonotonicObjectIdentifier& increment()
+ {
+ ++m_identifier;
+ return *this;
+ }
+
+ MonotonicObjectIdentifier next() const
+ {
+ return MonotonicObjectIdentifier(m_identifier + 1);
+ }
+
+ uint64_t toUInt64() const { return m_identifier; }
+ explicit operator bool() const { return m_identifier; }
+
+ String loggingString() const
+ {
+ return String::number(m_identifier);
+ }
+
+private:
+ template<typename U> friend MonotonicObjectIdentifier<U> makeMonotonicObjectIdentifier(uint64_t);
+ friend struct HashTraits<MonotonicObjectIdentifier>;
+ template<typename U> friend struct MonotonicObjectIdentifierHash;
+
+ static uint64_t hashTableDeletedValue() { return std::numeric_limits<uint64_t>::max(); }
+ static bool isValidIdentifier(uint64_t identifier) { return identifier != hashTableDeletedValue(); }
+
+ explicit MonotonicObjectIdentifier(uint64_t identifier)
+ : m_identifier(identifier)
+ {
+ }
+
+ uint64_t m_identifier { 0 };
+};
+
+template<typename T>
+TextStream& operator<<(TextStream& ts, const MonotonicObjectIdentifier<T>& identifier)
+{
+ ts << identifier.toUInt64();
+ return ts;
+}
+
+enum TransactionIDType { };
+using TransactionID = MonotonicObjectIdentifier<TransactionIDType>;
+
+}
Modified: trunk/Source/WebKit/Shared/VisibleContentRectUpdateInfo.h (249092 => 249093)
--- trunk/Source/WebKit/Shared/VisibleContentRectUpdateInfo.h 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/Shared/VisibleContentRectUpdateInfo.h 2019-08-26 06:16:50 UTC (rev 249093)
@@ -25,6 +25,7 @@
#pragma once
+#include "TransactionID.h"
#include <WebCore/FloatRect.h>
#include <WebCore/LengthBox.h>
#include <WebCore/VelocityData.h>
@@ -46,7 +47,7 @@
public:
VisibleContentRectUpdateInfo() = default;
- VisibleContentRectUpdateInfo(const WebCore::FloatRect& exposedContentRect, const WebCore::FloatRect& unobscuredContentRect, const WebCore::FloatBoxExtent& contentInsets, const WebCore::FloatRect& unobscuredRectInScrollViewCoordinates, const WebCore::FloatRect& unobscuredContentRectRespectingInputViewBounds, const WebCore::FloatRect& customFixedPositionRect, const WebCore::FloatBoxExtent& obscuredInsets, const WebCore::FloatBoxExtent& unobscuredSafeAreaInsets, double scale, bool inStableState, bool isFirstUpdateForNewViewSize, bool isChangingObscuredInsetsInteractively, bool allowShrinkToFit, bool enclosedInScrollableAncestorView, const WebCore::VelocityData& scrollVelocity, uint64_t lastLayerTreeTransactionId)
+ VisibleContentRectUpdateInfo(const WebCore::FloatRect& exposedContentRect, const WebCore::FloatRect& unobscuredContentRect, const WebCore::FloatBoxExtent& contentInsets, const WebCore::FloatRect& unobscuredRectInScrollViewCoordinates, const WebCore::FloatRect& unobscuredContentRectRespectingInputViewBounds, const WebCore::FloatRect& customFixedPositionRect, const WebCore::FloatBoxExtent& obscuredInsets, const WebCore::FloatBoxExtent& unobscuredSafeAreaInsets, double scale, bool inStableState, bool isFirstUpdateForNewViewSize, bool isChangingObscuredInsetsInteractively, bool allowShrinkToFit, bool enclosedInScrollableAncestorView, const WebCore::VelocityData& scrollVelocity, TransactionID lastLayerTreeTransactionId)
: m_exposedContentRect(exposedContentRect)
, m_unobscuredContentRect(unobscuredContentRect)
, m_contentInsets(contentInsets)
@@ -82,7 +83,7 @@
bool isChangingObscuredInsetsInteractively() const { return m_isChangingObscuredInsetsInteractively; }
bool allowShrinkToFit() const { return m_allowShrinkToFit; }
bool enclosedInScrollableAncestorView() const { return m_enclosedInScrollableAncestorView; }
- uint64_t lastLayerTreeTransactionID() const { return m_lastLayerTreeTransactionID; }
+ TransactionID lastLayerTreeTransactionID() const { return m_lastLayerTreeTransactionID; }
MonotonicTime timestamp() const { return m_scrollVelocity.lastUpdateTime; }
@@ -101,7 +102,7 @@
WebCore::FloatBoxExtent m_obscuredInsets;
WebCore::FloatBoxExtent m_unobscuredSafeAreaInsets;
WebCore::VelocityData m_scrollVelocity;
- uint64_t m_lastLayerTreeTransactionID { 0 };
+ TransactionID m_lastLayerTreeTransactionID;
double m_scale { -1 };
bool m_inStableState { false };
bool m_isFirstUpdateForNewViewSize { false };
Modified: trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (249092 => 249093)
--- trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm 2019-08-26 06:16:50 UTC (rev 249093)
@@ -316,7 +316,7 @@
BOOL _hasCommittedLoadForMainFrame;
BOOL _needsResetViewStateAfterCommitLoadForMainFrame;
- uint64_t _firstPaintAfterCommitLoadTransactionID;
+ WebKit::TransactionID _firstPaintAfterCommitLoadTransactionID;
WebKit::DynamicViewportUpdateMode _dynamicViewportUpdateMode;
WebKit::DynamicViewportSizeUpdateID _currentDynamicViewportSizeUpdateID;
CATransform3D _resizeAnimationTransformAdjustments;
@@ -331,7 +331,7 @@
WebCore::FloatBoxExtent _obscuredInsetsWhenSaved;
Optional<WebCore::FloatPoint> _unobscuredCenterToRestore;
- Optional<uint64_t> _firstTransactionIDAfterPageRestore;
+ Optional<WebKit::TransactionID> _firstTransactionIDAfterPageRestore;
double _scaleToRestore;
std::unique_ptr<WebKit::ViewGestureController> _gestureController;
@@ -1883,7 +1883,7 @@
_frozenVisibleContentRect = WTF::nullopt;
_frozenUnobscuredContentRect = WTF::nullopt;
- _firstPaintAfterCommitLoadTransactionID = 0;
+ _firstPaintAfterCommitLoadTransactionID = { };
_firstTransactionIDAfterPageRestore = WTF::nullopt;
_hasScheduledVisibleRectUpdate = NO;
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h (249092 => 249093)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h 2019-08-26 06:16:50 UTC (rev 249093)
@@ -27,6 +27,7 @@
#include "DrawingAreaProxy.h"
#include "RemoteLayerTreeHost.h"
+#include "TransactionID.h"
#include <WebCore/FloatPoint.h>
#include <WebCore/IntPoint.h>
#include <WebCore/IntSize.h>
@@ -49,8 +50,8 @@
void acceleratedAnimationDidStart(uint64_t layerID, const String& key, MonotonicTime startTime);
void acceleratedAnimationDidEnd(uint64_t layerID, const String& key);
- uint64_t nextLayerTreeTransactionID() const { return m_pendingLayerTreeTransactionID + 1; }
- uint64_t lastCommittedLayerTreeTransactionID() const { return m_transactionIDForPendingCACommit; }
+ TransactionID nextLayerTreeTransactionID() const { return m_pendingLayerTreeTransactionID.next(); }
+ TransactionID lastCommittedLayerTreeTransactionID() const { return m_transactionIDForPendingCACommit; }
void didRefreshDisplay();
@@ -96,7 +97,7 @@
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
// Message handlers
- void willCommitLayerTree(uint64_t transactionID);
+ void willCommitLayerTree(TransactionID);
void commitLayerTree(const RemoteLayerTreeTransaction&, const RemoteScrollingCoordinatorTransaction&);
void sendUpdateGeometry();
@@ -112,10 +113,10 @@
RetainPtr<CALayer> m_tileMapHostLayer;
RetainPtr<CALayer> m_exposedRectIndicatorLayer;
- uint64_t m_pendingLayerTreeTransactionID { 0 };
- uint64_t m_lastVisibleTransactionID { 0 };
- uint64_t m_transactionIDForPendingCACommit { 0 };
- uint64_t m_transactionIDForUnhidingContent { 0 };
+ TransactionID m_pendingLayerTreeTransactionID;
+ TransactionID m_lastVisibleTransactionID;
+ TransactionID m_transactionIDForPendingCACommit;
+ TransactionID m_transactionIDForUnhidingContent;
ActivityStateChangeID m_activityStateChangeID { ActivityStateChangeAsynchronous };
CallbackMap m_callbacks;
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in (249092 => 249093)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in 2019-08-26 06:16:50 UTC (rev 249093)
@@ -21,6 +21,6 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
messages -> RemoteLayerTreeDrawingAreaProxy : DrawingAreaProxy {
- void WillCommitLayerTree(uint64_t transactionID)
+ void WillCommitLayerTree(WebKit::TransactionID transactionID)
void CommitLayerTree(WebKit::RemoteLayerTreeTransaction layerTreeTransaction, WebKit::RemoteScrollingCoordinatorTransaction scrollingTreeTransaction)
}
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm (249092 => 249093)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm 2019-08-26 06:16:50 UTC (rev 249093)
@@ -183,7 +183,7 @@
m_isWaitingForDidUpdateGeometry = true;
}
-void RemoteLayerTreeDrawingAreaProxy::willCommitLayerTree(uint64_t transactionID)
+void RemoteLayerTreeDrawingAreaProxy::willCommitLayerTree(TransactionID transactionID)
{
m_pendingLayerTreeTransactionID = transactionID;
}
@@ -195,7 +195,7 @@
LOG(RemoteLayerTree, "%s", layerTreeTransaction.description().data());
LOG(RemoteLayerTree, "%s", scrollingTreeTransaction.description().data());
- ASSERT(layerTreeTransaction.transactionID() == m_lastVisibleTransactionID + 1);
+ ASSERT(layerTreeTransaction.transactionID() == m_lastVisibleTransactionID.next());
m_transactionIDForPendingCACommit = layerTreeTransaction.transactionID();
m_activityStateChangeID = layerTreeTransaction.activityStateChangeID();
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (249092 => 249093)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2019-08-26 06:16:50 UTC (rev 249093)
@@ -7043,8 +7043,8 @@
#endif
#if PLATFORM(IOS_FAMILY)
- m_firstLayerTreeTransactionIdAfterDidCommitLoad = 0;
- m_lastVisibleContentRectUpdate = VisibleContentRectUpdateInfo();
+ m_firstLayerTreeTransactionIdAfterDidCommitLoad = { };
+ m_lastVisibleContentRectUpdate = { };
m_hasNetworkRequestsOnSuspended = false;
m_isKeyboardAnimatingIn = false;
m_isScrollingOrZooming = false;
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (249092 => 249093)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2019-08-26 06:16:50 UTC (rev 249093)
@@ -47,6 +47,7 @@
#include "SuspendedPageProxy.h"
#include "SyntheticEditingCommandType.h"
#include "SystemPreviewController.h"
+#include "TransactionID.h"
#include "UserMediaPermissionRequestManagerProxy.h"
#include "VisibleContentRectUpdateInfo.h"
#include "VisibleWebPageCounter.h"
@@ -666,7 +667,7 @@
void setDeviceOrientation(int32_t);
int32_t deviceOrientation() const { return m_deviceOrientation; }
void setOverrideViewportArguments(const Optional<WebCore::ViewportArguments>&);
- void willCommitLayerTree(uint64_t transactionID);
+ void willCommitLayerTree(TransactionID);
void selectWithGesture(const WebCore::IntPoint, WebCore::TextGranularity, uint32_t gestureType, uint32_t gestureState, bool isInteractingWithFocusedElement, WTF::Function<void(const WebCore::IntPoint&, uint32_t, uint32_t, uint32_t, CallbackBase::Error)>&&);
void updateSelectionWithTouches(const WebCore::IntPoint, uint32_t touches, bool baseIsStart, WTF::Function<void (const WebCore::IntPoint&, uint32_t, uint32_t, CallbackBase::Error)>&&);
@@ -1221,12 +1222,12 @@
void willStartUserTriggeredZooming();
void potentialTapAtPosition(const WebCore::FloatPoint&, bool shouldRequestMagnificationInformation, uint64_t& requestID);
- void commitPotentialTap(OptionSet<WebKit::WebEvent::Modifier>, uint64_t layerTreeTransactionIdAtLastTouchStart, WebCore::PointerID);
+ void commitPotentialTap(OptionSet<WebKit::WebEvent::Modifier>, TransactionID layerTreeTransactionIdAtLastTouchStart, WebCore::PointerID);
void cancelPotentialTap();
void tapHighlightAtPosition(const WebCore::FloatPoint&, uint64_t& requestID);
- void handleTap(const WebCore::FloatPoint&, OptionSet<WebKit::WebEvent::Modifier>, uint64_t layerTreeTransactionIdAtLastTouchStart);
+ void handleTap(const WebCore::FloatPoint&, OptionSet<WebKit::WebEvent::Modifier>, TransactionID layerTreeTransactionIdAtLastTouchStart);
void didRecognizeLongPress();
- void handleDoubleTapForDoubleClickAtPoint(const WebCore::IntPoint&, OptionSet<WebEvent::Modifier>, uint64_t layerTreeTransactionIdAtLastTouchStart);
+ void handleDoubleTapForDoubleClickAtPoint(const WebCore::IntPoint&, OptionSet<WebEvent::Modifier>, TransactionID layerTreeTransactionIdAtLastTouchStart);
void inspectorNodeSearchMovedToPosition(const WebCore::FloatPoint&);
void inspectorNodeSearchEndedAtPosition(const WebCore::FloatPoint&);
@@ -2180,7 +2181,7 @@
Optional<WebCore::InputMode> m_pendingInputModeChange;
Optional<WebCore::ViewportArguments> m_overrideViewportArguments;
VisibleContentRectUpdateInfo m_lastVisibleContentRectUpdate;
- uint64_t m_firstLayerTreeTransactionIdAfterDidCommitLoad { 0 };
+ TransactionID m_firstLayerTreeTransactionIdAfterDidCommitLoad;
int32_t m_deviceOrientation { 0 };
bool m_hasReceivedLayerTreeTransactionAfterDidCommitLoad { true };
bool m_hasNetworkRequestsOnSuspended { false };
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h (249092 => 249093)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.h 2019-08-26 06:16:50 UTC (rev 249093)
@@ -38,6 +38,7 @@
#import "InteractionInformationAtPosition.h"
#import "SyntheticEditingCommandType.h"
#import "TextCheckingController.h"
+#import "TransactionID.h"
#import "UIKitSPI.h"
#import "WKActionSheetAssistant.h"
#import "WKAirPlayRoutePicker.h"
@@ -293,7 +294,7 @@
BlockPtr<void(::WebEvent *, BOOL)> _keyWebEventHandler;
CGPoint _lastInteractionLocation;
- uint64_t _layerTreeTransactionIdAtLastTouchStart;
+ WebKit::TransactionID _layerTreeTransactionIdAtLastTouchStart;
WebKit::WKSelectionDrawingInfo _lastSelectionDrawingInfo;
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (249092 => 249093)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2019-08-26 06:16:50 UTC (rev 249093)
@@ -909,7 +909,7 @@
[self removeGestureRecognizer:_touchActionGestureRecognizer.get()];
#endif
- _layerTreeTransactionIdAtLastTouchStart = 0;
+ _layerTreeTransactionIdAtLastTouchStart = { };
#if ENABLE(DATA_INTERACTION)
[existingLocalDragSessionContext(_dragDropInteractionState.dragSession()) cleanUpTemporaryDirectories];
Modified: trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm (249092 => 249093)
--- trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm 2019-08-26 06:16:50 UTC (rev 249093)
@@ -815,7 +815,7 @@
process().send(Messages::WebPage::PotentialTapAtPosition(requestID, position, shouldRequestMagnificationInformation), m_pageID);
}
-void WebPageProxy::commitPotentialTap(OptionSet<WebEvent::Modifier> modifiers, uint64_t layerTreeTransactionIdAtLastTouchStart, WebCore::PointerID pointerId)
+void WebPageProxy::commitPotentialTap(OptionSet<WebEvent::Modifier> modifiers, TransactionID layerTreeTransactionIdAtLastTouchStart, WebCore::PointerID pointerId)
{
process().send(Messages::WebPage::CommitPotentialTap(modifiers, layerTreeTransactionIdAtLastTouchStart, pointerId), m_pageID);
}
@@ -830,7 +830,7 @@
process().send(Messages::WebPage::TapHighlightAtPosition(requestID, position), m_pageID);
}
-void WebPageProxy::handleTap(const FloatPoint& location, OptionSet<WebEvent::Modifier> modifiers, uint64_t layerTreeTransactionIdAtLastTouchStart)
+void WebPageProxy::handleTap(const FloatPoint& location, OptionSet<WebEvent::Modifier> modifiers, TransactionID layerTreeTransactionIdAtLastTouchStart)
{
process().send(Messages::WebPage::HandleTap(roundedIntPoint(location), modifiers, layerTreeTransactionIdAtLastTouchStart), m_pageID);
}
@@ -840,7 +840,7 @@
process().send(Messages::WebPage::DidRecognizeLongPress(), m_pageID);
}
-void WebPageProxy::handleDoubleTapForDoubleClickAtPoint(const WebCore::IntPoint& point, OptionSet<WebEvent::Modifier> modifiers, uint64_t layerTreeTransactionIdAtLastTouchStart)
+void WebPageProxy::handleDoubleTapForDoubleClickAtPoint(const WebCore::IntPoint& point, OptionSet<WebEvent::Modifier> modifiers, TransactionID layerTreeTransactionIdAtLastTouchStart)
{
process().send(Messages::WebPage::HandleDoubleTapForDoubleClickAtPoint(point, modifiers, layerTreeTransactionIdAtLastTouchStart), m_pageID);
}
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (249092 => 249093)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2019-08-26 06:16:50 UTC (rev 249093)
@@ -1959,6 +1959,7 @@
0F08CF531D63C14000B48DF1 /* WKFormSelectPopover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKFormSelectPopover.h; path = ios/forms/WKFormSelectPopover.h; sourceTree = "<group>"; };
0F0C365718C051BA00F607D7 /* RemoteLayerTreeHostIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RemoteLayerTreeHostIOS.mm; sourceTree = "<group>"; };
0F0C365B18C05CA100F607D7 /* RemoteScrollingCoordinatorProxyIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RemoteScrollingCoordinatorProxyIOS.mm; sourceTree = "<group>"; };
+ 0F11781422E39BE6008BD570 /* TransactionID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TransactionID.h; sourceTree = "<group>"; };
0F174AA2142A4CB60039250F /* APIGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIGeometry.h; sourceTree = "<group>"; };
0F174AA6142AAC610039250F /* WKGeometry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKGeometry.cpp; sourceTree = "<group>"; };
0F3C7257196F5F5000AEDD0C /* WKInspectorHighlightView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKInspectorHighlightView.mm; sourceTree = "<group>"; };
@@ -5299,6 +5300,7 @@
2FD43B911FA006A10083F51C /* TouchBarMenuData.h */,
2F809DD51FBD1BC9005FE63A /* TouchBarMenuItemData.cpp */,
2F809DD91FBD1BF2005FE63A /* TouchBarMenuItemData.h */,
+ 0F11781422E39BE6008BD570 /* TransactionID.h */,
5C4B9D8A210A8C46008F14D1 /* UndoOrRedo.h */,
1A64245D12DE29A100CAAE2C /* UpdateInfo.cpp */,
1A64245C12DE29A100CAAE2C /* UpdateInfo.h */,
Modified: trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h (249092 => 249093)
--- trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h 2019-08-26 06:16:50 UTC (rev 249093)
@@ -51,8 +51,8 @@
RemoteLayerTreeDrawingArea(WebPage&, const WebPageCreationParameters&);
virtual ~RemoteLayerTreeDrawingArea();
- uint64_t nextTransactionID() const { return m_currentTransactionID + 1; }
- uint64_t lastCommittedTransactionID() const { return m_currentTransactionID; }
+ TransactionID nextTransactionID() const { return m_currentTransactionID.next(); }
+ TransactionID lastCommittedTransactionID() const { return m_currentTransactionID; }
private:
// DrawingArea
@@ -119,7 +119,7 @@
WebCore::TiledBacking* mainFrameTiledBacking() const;
- uint64_t takeNextTransactionID() { return ++m_currentTransactionID; }
+ TransactionID takeNextTransactionID() { return m_currentTransactionID.increment(); }
bool markLayersVolatileImmediatelyIfPossible() override;
@@ -169,7 +169,7 @@
HashSet<RemoteLayerTreeDisplayRefreshMonitor*> m_displayRefreshMonitors;
HashSet<RemoteLayerTreeDisplayRefreshMonitor*>* m_displayRefreshMonitorsToNotify { nullptr };
- uint64_t m_currentTransactionID { 0 };
+ TransactionID m_currentTransactionID;
Vector<RemoteLayerTreeTransaction::TransactionCallbackID> m_pendingCallbackIDs;
ActivityStateChangeID m_activityStateChangeID { ActivityStateChangeAsynchronous };
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebFrame.h (249092 => 249093)
--- trunk/Source/WebKit/WebProcess/WebPage/WebFrame.h 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebFrame.h 2019-08-26 06:16:50 UTC (rev 249093)
@@ -28,6 +28,7 @@
#include "APIObject.h"
#include "DownloadID.h"
#include "ShareableBitmap.h"
+#include "TransactionID.h"
#include "WKBase.h"
#include "WebFrameLoaderClient.h"
#include <_javascript_Core/ConsoleTypes.h>
@@ -167,8 +168,8 @@
RefPtr<ShareableBitmap> createSelectionSnapshot() const;
#if PLATFORM(IOS_FAMILY)
- uint64_t firstLayerTreeTransactionIDAfterDidCommitLoad() const { return m_firstLayerTreeTransactionIDAfterDidCommitLoad; }
- void setFirstLayerTreeTransactionIDAfterDidCommitLoad(uint64_t transactionID) { m_firstLayerTreeTransactionIDAfterDidCommitLoad = transactionID; }
+ TransactionID firstLayerTreeTransactionIDAfterDidCommitLoad() const { return m_firstLayerTreeTransactionIDAfterDidCommitLoad; }
+ void setFirstLayerTreeTransactionIDAfterDidCommitLoad(TransactionID transactionID) { m_firstLayerTreeTransactionIDAfterDidCommitLoad = transactionID; }
#endif
private:
@@ -190,7 +191,7 @@
WebCore::FrameIdentifier m_frameID;
#if PLATFORM(IOS_FAMILY)
- uint64_t m_firstLayerTreeTransactionIDAfterDidCommitLoad { 0 };
+ TransactionID m_firstLayerTreeTransactionIDAfterDidCommitLoad;
#endif
};
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (249092 => 249093)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h 2019-08-26 06:16:50 UTC (rev 249093)
@@ -632,15 +632,15 @@
bool allowsUserScaling() const;
bool hasStablePageScaleFactor() const { return m_hasStablePageScaleFactor; }
- void handleTap(const WebCore::IntPoint&, OptionSet<WebKit::WebEvent::Modifier>, uint64_t lastLayerTreeTransactionId);
+ void handleTap(const WebCore::IntPoint&, OptionSet<WebKit::WebEvent::Modifier>, TransactionID lastLayerTreeTransactionId);
void potentialTapAtPosition(uint64_t requestID, const WebCore::FloatPoint&, bool shouldRequestMagnificationInformation);
- void commitPotentialTap(OptionSet<WebKit::WebEvent::Modifier>, uint64_t lastLayerTreeTransactionId, WebCore::PointerID);
+ void commitPotentialTap(OptionSet<WebKit::WebEvent::Modifier>, TransactionID lastLayerTreeTransactionId, WebCore::PointerID);
void commitPotentialTapFailed();
void cancelPotentialTap();
void cancelPotentialTapInFrame(WebFrame&);
void tapHighlightAtPosition(uint64_t requestID, const WebCore::FloatPoint&);
void didRecognizeLongPress();
- void handleDoubleTapForDoubleClickAtPoint(const WebCore::IntPoint&, OptionSet<WebKit::WebEvent::Modifier>, uint64_t lastLayerTreeTransactionId);
+ void handleDoubleTapForDoubleClickAtPoint(const WebCore::IntPoint&, OptionSet<WebKit::WebEvent::Modifier>, TransactionID lastLayerTreeTransactionId);
void inspectorNodeSearchMovedToPosition(const WebCore::FloatPoint&);
void inspectorNodeSearchEndedAtPosition(const WebCore::FloatPoint&);
@@ -1880,7 +1880,7 @@
FocusedElementIdentifier m_currentFocusedElementIdentifier { 0 };
Optional<DynamicViewportSizeUpdateID> m_pendingDynamicViewportSizeUpdateID;
double m_lastTransactionPageScaleFactor { 0 };
- uint64_t m_lastTransactionIDWithScaleChange { 0 };
+ TransactionID m_lastTransactionIDWithScaleChange;
CompletionHandler<void(InteractionInformationAtPosition&&)> m_pendingSynchronousPositionInformationReply;
#endif
Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in (249092 => 249093)
--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.messages.in 2019-08-26 06:16:50 UTC (rev 249093)
@@ -53,13 +53,13 @@
SetOverrideViewportArguments(Optional<WebCore::ViewportArguments> arguments)
DynamicViewportSizeUpdate(WebCore::FloatSize viewLayoutSize, WebCore::FloatSize maximumUnobscuredSize, WebCore::FloatRect targetExposedContentRect, WebCore::FloatRect targetUnobscuredRect, WebCore::FloatRect targetUnobscuredRectInScrollViewCoordinates, WebCore::RectEdges<float> targetUnobscuredSafeAreaInsets, double scale, int32_t deviceOrientation, uint64_t dynamicViewportSizeUpdateID)
- HandleTap(WebCore::IntPoint point, OptionSet<WebKit::WebEvent::Modifier> modifiers, uint64_t lastLayerTreeTransactionId)
+ HandleTap(WebCore::IntPoint point, OptionSet<WebKit::WebEvent::Modifier> modifiers, WebKit::TransactionID lastLayerTreeTransactionId)
PotentialTapAtPosition(uint64_t requestID, WebCore::FloatPoint point, bool shouldRequestMagnificationInformation)
- CommitPotentialTap(OptionSet<WebKit::WebEvent::Modifier> modifiers, uint64_t lastLayerTreeTransactionId, WebCore::PointerID pointerId)
+ CommitPotentialTap(OptionSet<WebKit::WebEvent::Modifier> modifiers, WebKit::TransactionID lastLayerTreeTransactionId, WebCore::PointerID pointerId)
CancelPotentialTap()
TapHighlightAtPosition(uint64_t requestID, WebCore::FloatPoint point)
DidRecognizeLongPress()
- HandleDoubleTapForDoubleClickAtPoint(WebCore::IntPoint point, OptionSet<WebKit::WebEvent::Modifier> modifiers, uint64_t lastLayerTreeTransactionId)
+ HandleDoubleTapForDoubleClickAtPoint(WebCore::IntPoint point, OptionSet<WebKit::WebEvent::Modifier> modifiers, WebKit::TransactionID lastLayerTreeTransactionId)
InspectorNodeSearchMovedToPosition(WebCore::FloatPoint point)
InspectorNodeSearchEndedAtPosition(WebCore::FloatPoint point)
BlurFocusedElement()
Modified: trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm (249092 => 249093)
--- trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm 2019-08-26 01:51:57 UTC (rev 249092)
+++ trunk/Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm 2019-08-26 06:16:50 UTC (rev 249093)
@@ -815,7 +815,7 @@
send(Messages::WebPageProxy::DidCompleteSyntheticClick());
}
-void WebPage::handleTap(const IntPoint& point, OptionSet<WebEvent::Modifier> modifiers, uint64_t lastLayerTreeTransactionId)
+void WebPage::handleTap(const IntPoint& point, OptionSet<WebEvent::Modifier> modifiers, TransactionID lastLayerTreeTransactionId)
{
FloatPoint adjustedPoint;
Node* nodeRespondingToClick = m_page->mainFrame().nodeRespondingToClickEvents(point, adjustedPoint);
@@ -835,7 +835,7 @@
handleSyntheticClick(*nodeRespondingToClick, adjustedPoint, modifiers);
}
-void WebPage::handleDoubleTapForDoubleClickAtPoint(const IntPoint& point, OptionSet<WebEvent::Modifier> modifiers, uint64_t lastLayerTreeTransactionId)
+void WebPage::handleDoubleTapForDoubleClickAtPoint(const IntPoint& point, OptionSet<WebEvent::Modifier> modifiers, TransactionID lastLayerTreeTransactionId)
{
FloatPoint adjustedPoint;
auto* nodeRespondingToDoubleClick = m_page->mainFrame().nodeRespondingToDoubleClickEvent(point, adjustedPoint);
@@ -1073,7 +1073,7 @@
#endif
}
-void WebPage::commitPotentialTap(OptionSet<WebEvent::Modifier> modifiers, uint64_t lastLayerTreeTransactionId, WebCore::PointerID pointerId)
+void WebPage::commitPotentialTap(OptionSet<WebEvent::Modifier> modifiers, TransactionID lastLayerTreeTransactionId, WebCore::PointerID pointerId)
{
auto invalidTargetForSingleClick = !m_potentialTapNode;
if (!invalidTargetForSingleClick) {