WebKit Bugzilla
Attachment 347201 Details for
Bug 188614
: Templatize CallbackMap, making it possible to have strict CallbackID subtypes
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-188614-20180815132453.patch (text/plain), 37.59 KB, created by
Tim Horton
on 2018-08-15 13:24:53 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Tim Horton
Created:
2018-08-15 13:24:53 PDT
Size:
37.59 KB
patch
obsolete
>Subversion Revision: 234781 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 4e96af3d5102cdf39c3da36698d975ed3e1d0183..c627e126b2f23dcc3847ad15a7a2c381ebf1dfe3 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,73 @@ >+2018-08-15 Tim Horton <timothy_horton@apple.com> >+ >+ Templatize CallbackMap, making it possible to have strict CallbackID subtypes >+ https://bugs.webkit.org/show_bug.cgi?id=188614 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ In order to make things more clear and to make it harder to make mistakes, >+ make CallbackMap take a template parameter that indicates which CallbackID >+ subtype it vends and accepts. This way, we can't mix up CallbackIDs for >+ e.g. DrawingAreaProxy's CallbackMap vs. WebPageProxy's. >+ >+ * UIProcess/GenericCallback.h: >+ (WebKit::CallbackMap::put): >+ (WebKit::CallbackMap::take): >+ Templatize CallbackMap on the CallbackID subtype that it creates and manages. >+ >+ * Shared/OptionalCallbackID.h: >+ (WebKit::OptionalCallbackID::OptionalCallbackID): >+ (WebKit::OptionalCallbackID::callbackID): >+ Templatize OptionalCallbackID on the inner CallbackID subtype that it owns. >+ >+ * Shared/CallbackID.h: >+ Make CallbackID's friends template-happy. >+ >+ * NetworkProcess/Cookies/WebCookieManager.cpp: >+ (WebKit::WebCookieManager::setHTTPCookieAcceptPolicy): >+ * NetworkProcess/Cookies/WebCookieManager.h: >+ * NetworkProcess/Cookies/WebCookieManager.messages.in: >+ * UIProcess/WebCookieManagerProxy.cpp: >+ (WebKit::WebCookieManagerProxy::didGetHostnamesWithCookies): >+ (WebKit::WebCookieManagerProxy::didSetCookies): >+ (WebKit::WebCookieManagerProxy::didGetCookies): >+ (WebKit::WebCookieManagerProxy::didDeleteCookies): >+ (WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy): >+ * UIProcess/WebCookieManagerProxy.h: >+ * WebKit.xcodeproj/project.pbxproj: >+ * Scripts/webkit/messages.py: >+ * Shared/CookieManagerCallbackID.h: Added. >+ Add CookieManagerCallbackID and adopt it throughout cookie code. >+ >+ * Shared/DrawingAreaInfo.h: >+ * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h: >+ (WebKit::RemoteLayerTreeTransaction::callbackIDs const): >+ (WebKit::RemoteLayerTreeTransaction::setCallbackIDs): >+ * Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm: >+ (WebKit::RemoteLayerTreeTransaction::decode): >+ * UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h: >+ * UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h: >+ * WebProcess/WebPage/DrawingArea.h: >+ (WebKit::DrawingArea::addTransactionCallbackID): >+ * WebProcess/WebPage/DrawingArea.messages.in: >+ * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h: >+ * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: >+ (WebKit::RemoteLayerTreeDrawingArea::addTransactionCallbackID): >+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h: >+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm: >+ (WebKit::TiledCoreAnimationDrawingArea::addTransactionCallbackID): >+ Add DrawingAreaCallbackID and adopt it throughout DrawingArea. >+ Get rid of the nasty and confusing static_cast from CallbackID to TransactionCallbackID. >+ >+ * UIProcess/WebPageProxy.cpp: >+ (WebKit::WebPageProxy::getLoadDecisionForIcon): >+ * UIProcess/WebPageProxy.h: >+ * WebProcess/WebPage/WebPage.cpp: >+ (WebKit::WebPage::didGetLoadDecisionForIcon): >+ * WebProcess/WebPage/WebPage.h: >+ * WebProcess/WebPage/WebPage.messages.in: >+ Specify that WebPage(Proxy) use the CallbackID base class explicitly in a few places. >+ > 2018-08-10 David Kilzer <ddkilzer@apple.com> > > [Cocoa] WebKit::PlatformPopupMenuData should use member initialization >diff --git a/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp b/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp >index 0bb149ca15550e1a9c8d3e469ab26ce646b8cba5..a7f1da68f7ba9c5ae83e8e638744aea5f7d645cb 100644 >--- a/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp >+++ b/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.cpp >@@ -148,7 +148,7 @@ void WebCookieManager::stopObservingCookieChanges(PAL::SessionID sessionID) > WebCore::stopObservingCookieChanges(*storageSession); > } > >-void WebCookieManager::setHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy policy, OptionalCallbackID callbackID) >+void WebCookieManager::setHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy policy, OptionalCallbackID<CookieManagerCallbackID> callbackID) > { > platformSetHTTPCookieAcceptPolicy(policy); > >diff --git a/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h b/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h >index de22c79f8e8d0e2b81724f65111a9f10a5d20369..4ffb1deeaf0ed9b726973cf9f165c5f5c00100f0 100644 >--- a/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h >+++ b/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.h >@@ -25,7 +25,7 @@ > > #pragma once > >-#include "CallbackID.h" >+#include "CookieManagerCallbackID.h" > #include "HTTPCookieAcceptPolicy.h" > #include "MessageReceiver.h" > #include "NetworkProcessSupplement.h" >@@ -56,7 +56,7 @@ public: > > static const char* supplementName(); > >- void setHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy, OptionalCallbackID); >+ void setHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy, OptionalCallbackID<CookieManagerCallbackID>); > > #if USE(SOUP) > void setCookiePersistentStorage(const String& storagePath, uint32_t storageType); >diff --git a/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in b/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in >index e3de9d8cfab9fd5f6fb68a2c0710262a855dc448..12510552280fb3228dcfad5bc9242546ef002009 100644 >--- a/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in >+++ b/Source/WebKit/NetworkProcess/Cookies/WebCookieManager.messages.in >@@ -24,19 +24,19 @@ > */ > > messages -> WebCookieManager { >- void GetHostnamesWithCookies(PAL::SessionID sessionID, WebKit::CallbackID callbackID) >+ void GetHostnamesWithCookies(PAL::SessionID sessionID, WebKit::CookieManagerCallbackID callbackID) > void DeleteCookiesForHostname(PAL::SessionID sessionID, String hostname) > void DeleteAllCookies(PAL::SessionID sessionID) > >- void SetCookie(PAL::SessionID sessionID, struct WebCore::Cookie cookie, WebKit::CallbackID callbackID) >- void SetCookies(PAL::SessionID sessionID, Vector<WebCore::Cookie> cookies, WebCore::URL url, WebCore::URL mainDocumentURL, WebKit::CallbackID callbackID) >- void GetAllCookies(PAL::SessionID sessionID, WebKit::CallbackID callbackID) >- void GetCookies(PAL::SessionID sessionID, WebCore::URL url, WebKit::CallbackID callbackID) >- void DeleteCookie(PAL::SessionID sessionID, struct WebCore::Cookie cookie, WebKit::CallbackID callbackID) >- void DeleteAllCookiesModifiedSince(PAL::SessionID sessionID, WallTime time, WebKit::CallbackID callbackID) >+ void SetCookie(PAL::SessionID sessionID, struct WebCore::Cookie cookie, WebKit::CookieManagerCallbackID callbackID) >+ void SetCookies(PAL::SessionID sessionID, Vector<WebCore::Cookie> cookies, WebCore::URL url, WebCore::URL mainDocumentURL, WebKit::CookieManagerCallbackID callbackID) >+ void GetAllCookies(PAL::SessionID sessionID, WebKit::CookieManagerCallbackID callbackID) >+ void GetCookies(PAL::SessionID sessionID, WebCore::URL url, WebKit::CookieManagerCallbackID callbackID) >+ void DeleteCookie(PAL::SessionID sessionID, struct WebCore::Cookie cookie, WebKit::CookieManagerCallbackID callbackID) >+ void DeleteAllCookiesModifiedSince(PAL::SessionID sessionID, WallTime time, WebKit::CookieManagerCallbackID callbackID) > >- void SetHTTPCookieAcceptPolicy(uint32_t policy, WebKit::OptionalCallbackID callbackID) >- void GetHTTPCookieAcceptPolicy(WebKit::CallbackID callbackID) >+ void SetHTTPCookieAcceptPolicy(uint32_t policy, WebKit::OptionalCallbackID<WebKit::CookieManagerCallbackID> callbackID) >+ void GetHTTPCookieAcceptPolicy(WebKit::CookieManagerCallbackID callbackID) > > void StartObservingCookieChanges(PAL::SessionID sessionID) > void StopObservingCookieChanges(PAL::SessionID sessionID) >diff --git a/Source/WebKit/Scripts/webkit/messages.py b/Source/WebKit/Scripts/webkit/messages.py >index a782baac9d45bb3c9d0b8992622faa6252aa184d..3800e42df57ba1cbd6471360004cda2a7c978949 100644 >--- a/Source/WebKit/Scripts/webkit/messages.py >+++ b/Source/WebKit/Scripts/webkit/messages.py >@@ -197,6 +197,8 @@ def forward_declarations_and_headers(receiver): > 'WebCore::ServiceWorkerRegistrationIdentifier', > 'WebCore::SWServerConnectionIdentifier', > 'WebKit::ActivityStateChangeID', >+ 'WebKit::CookieManagerCallbackID', >+ 'WebKit::DrawingAreaCallbackID', > 'WebKit::UserContentControllerIdentifier', > ]) > >@@ -316,6 +318,7 @@ def class_template_headers(template_string): > 'OptionSet': {'headers': ['<wtf/OptionSet.h>'], 'argument_coder_headers': ['"ArgumentCoders.h"']}, > 'Vector': {'headers': ['<wtf/Vector.h>'], 'argument_coder_headers': ['"ArgumentCoders.h"']}, > 'std::pair': {'headers': ['<utility>'], 'argument_coder_headers': ['"ArgumentCoders.h"']}, >+ 'WebKit::OptionalCallbackID': {'headers': ['"OptionalCallbackID.h"'], 'argument_coder_headers': ['"OptionalCallbackID.h"']}, > } > > match = re.match('(?P<template_name>.+?)<(?P<parameter_string>.+)>', template_string) >@@ -419,6 +422,7 @@ def headers_for_type(type): > 'WebCore::SelectionRect': ['"EditorState.h"'], > 'WebKit::ActivityStateChangeID': ['"DrawingAreaInfo.h"'], > 'WebKit::BackForwardListItemState': ['"SessionState.h"'], >+ 'WebKit::DrawingAreaCallbackID': ['"DrawingAreaInfo.h"'], > 'WebKit::LayerHostingMode': ['"LayerTreeContext.h"'], > 'WebKit::PageState': ['"SessionState.h"'], > 'WebKit::WebGestureEvent': ['"WebEvent.h"'], >diff --git a/Source/WebKit/Shared/CallbackID.h b/Source/WebKit/Shared/CallbackID.h >index 8f18d4dcf770cb901a99f63a9af55a46f6c5cee3..c79abd1f870092ab25d030c9783c251c14c5f6b5 100644 >--- a/Source/WebKit/Shared/CallbackID.h >+++ b/Source/WebKit/Shared/CallbackID.h >@@ -92,9 +92,8 @@ private: > ASSERT(newID != HashTraits<uint64_t>::emptyValue()); > } > >- friend class CallbackMap; >- template <typename CallbackType> friend class SpecificCallbackMap; >- friend class OptionalCallbackID; >+ template <typename CallbackIDType> friend class CallbackMap; >+ template <typename CallbackIDType> friend class OptionalCallbackID; > friend struct WTF::CallbackIDHash; > friend HashTraits<WebKit::CallbackID>; > >diff --git a/Source/WebKit/Shared/CookieManagerCallbackID.h b/Source/WebKit/Shared/CookieManagerCallbackID.h >new file mode 100644 >index 0000000000000000000000000000000000000000..957f6d5364bde7ecb74836b3a59d867d0c657024 >--- /dev/null >+++ b/Source/WebKit/Shared/CookieManagerCallbackID.h >@@ -0,0 +1,34 @@ >+/* >+ * Copyright (C) 2018 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 "CallbackID.h" >+ >+namespace WebKit { >+ >+using CookieManagerCallbackID = WebKit::CallbackID; >+ >+} // namespace WebKit >diff --git a/Source/WebKit/Shared/DrawingAreaInfo.h b/Source/WebKit/Shared/DrawingAreaInfo.h >index 29bbffc63c49a7f56d2216c26127d073c479ee82..4f04c5c86c59e52eaea69e56843de80dded7813b 100644 >--- a/Source/WebKit/Shared/DrawingAreaInfo.h >+++ b/Source/WebKit/Shared/DrawingAreaInfo.h >@@ -25,6 +25,8 @@ > > #pragma once > >+#include "CallbackID.h" >+ > namespace WebKit { > > enum DrawingAreaType { >@@ -42,5 +44,7 @@ enum { > ActivityStateChangeAsynchronous = 0 > }; > typedef uint64_t ActivityStateChangeID; >+ >+using DrawingAreaCallbackID = WebKit::CallbackID; > > } // namespace WebKit >diff --git a/Source/WebKit/Shared/OptionalCallbackID.h b/Source/WebKit/Shared/OptionalCallbackID.h >index 794e72e0ce65d62d6e0afb63bf0ec258d943da91..71d9f2d930772b921de5f03ab08a98945ce5c55c 100644 >--- a/Source/WebKit/Shared/OptionalCallbackID.h >+++ b/Source/WebKit/Shared/OptionalCallbackID.h >@@ -31,11 +31,12 @@ > > namespace WebKit { > >+template <typename CallbackIDType> > class OptionalCallbackID { > public: > explicit OptionalCallbackID() { } > >- ALWAYS_INLINE explicit OptionalCallbackID(const CallbackID& otherID) >+ ALWAYS_INLINE explicit OptionalCallbackID(const CallbackIDType& otherID) > : m_id(otherID.m_id) > { > } >@@ -47,10 +48,10 @@ public: > } > > uint64_t toInteger() { return m_id; } >- CallbackID callbackID() >+ CallbackIDType callbackID() > { > RELEASE_ASSERT(CallbackID::isValidCallbackID(m_id)); >- return CallbackID(m_id); >+ return CallbackIDType(m_id); > } > > operator bool() { return m_id; } >diff --git a/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h b/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h >index 3e56f50a81a2df9cb12b5084a515353d53121ca6..940471938606ef9cf5a67903542288aa1dd82504 100644 >--- a/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h >+++ b/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.h >@@ -265,9 +265,8 @@ public: > ActivityStateChangeID activityStateChangeID() const { return m_activityStateChangeID; } > void setActivityStateChangeID(ActivityStateChangeID activityStateChangeID) { m_activityStateChangeID = activityStateChangeID; } > >- typedef CallbackID TransactionCallbackID; >- const Vector<TransactionCallbackID>& callbackIDs() const { return m_callbackIDs; } >- void setCallbackIDs(Vector<TransactionCallbackID>&& callbackIDs) { m_callbackIDs = WTFMove(callbackIDs); } >+ const Vector<DrawingAreaCallbackID>& callbackIDs() const { return m_callbackIDs; } >+ void setCallbackIDs(Vector<DrawingAreaCallbackID>&& callbackIDs) { m_callbackIDs = WTFMove(callbackIDs); } > > WebCore::LayoutMilestones newlyReachedLayoutMilestones() const { return m_newlyReachedLayoutMilestones; } > void setNewlyReachedLayoutMilestones(WebCore::LayoutMilestones milestones) { m_newlyReachedLayoutMilestones = milestones; } >@@ -289,7 +288,7 @@ private: > Vector<WebCore::GraphicsLayer::PlatformLayerID> m_videoLayerIDsPendingFullscreen; > Vector<WebCore::GraphicsLayer::PlatformLayerID> m_layerIDsWithNewlyUnreachableBackingStore; > >- Vector<TransactionCallbackID> m_callbackIDs; >+ Vector<DrawingAreaCallbackID> m_callbackIDs; > > WebCore::IntSize m_contentsSize; > WebCore::IntPoint m_scrollOrigin; >diff --git a/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm b/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm >index 4b8d59d2508e2e13af604dee745e5b3f8dfffd19..df4ab640f1ab4aef566a09762486b5ce26f21663 100644 >--- a/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm >+++ b/Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm >@@ -678,7 +678,7 @@ bool RemoteLayerTreeTransaction::decode(IPC::Decoder& decoder, RemoteLayerTreeTr > if (!decoder.decode(result.m_isInStableState)) > return false; > >- std::optional<Vector<TransactionCallbackID>> callbackIDs; >+ std::optional<Vector<DrawingAreaCallbackID>> callbackIDs; > decoder >> callbackIDs; > if (!callbackIDs) > return false; >diff --git a/Source/WebKit/UIProcess/GenericCallback.h b/Source/WebKit/UIProcess/GenericCallback.h >index ef5f8ded1c64bf754f1b765fd314fc4411ff8b37..e43fd0f2e46f5b15c11381cb13eb1dc59d1cd4de 100644 >--- a/Source/WebKit/UIProcess/GenericCallback.h >+++ b/Source/WebKit/UIProcess/GenericCallback.h >@@ -166,6 +166,7 @@ void invalidateCallbackMap(HashMap<uint64_t, T>& callbackMap, CallbackBase::Erro > callback->invalidate(error); > } > >+template<typename CallbackIDType> > class CallbackMap { > public: > CallbackID put(Ref<CallbackBase>&& callback) >@@ -189,14 +190,14 @@ public: > }; > > template<typename... T> >- CallbackID put(Function<void(T...)>&& function, const ProcessThrottler::BackgroundActivityToken& activityToken) >+ CallbackIDType put(Function<void(T...)>&& function, const ProcessThrottler::BackgroundActivityToken& activityToken) > { > auto callback = GenericCallbackType<sizeof...(T), T...>::type::create(WTFMove(function), activityToken); > return put(WTFMove(callback)); > } > > template<class T> >- RefPtr<T> take(CallbackID callbackID) >+ RefPtr<T> take(CallbackIDType callbackID) > { > RELEASE_ASSERT(callbackID.isValid()); > RELEASE_ASSERT(RunLoop::isMain()); >@@ -204,7 +205,7 @@ public: > if (!base) > return nullptr; > >- return adoptRef(base.leakRef()->as<T>()); >+ return adoptRef(base.leakRef()->template as<T>()); > } > > void invalidate(CallbackBase::Error error) >diff --git a/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h b/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h >index 37a8d771cfbcc6274d610e302218cda8ec0aa28c..3d9631e93c44401e7814e7d676c1a7b12bcb0e80 100644 >--- a/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h >+++ b/Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h >@@ -117,7 +117,7 @@ private: > uint64_t m_transactionIDForUnhidingContent { 0 }; > ActivityStateChangeID m_activityStateChangeID { ActivityStateChangeAsynchronous }; > >- CallbackMap m_callbacks; >+ CallbackMap<DrawingAreaCallbackID> m_callbacks; > > RetainPtr<WKOneShotDisplayLinkHandler> m_displayLinkHandler; > }; >diff --git a/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp b/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp >index 06ff06ea8e2f9bb487f430a1bed9ce165a295083..fc1c53161eac52a0429535a262b795e228a86984 100644 >--- a/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp >+++ b/Source/WebKit/UIProcess/WebCookieManagerProxy.cpp >@@ -113,7 +113,7 @@ void WebCookieManagerProxy::getHostnamesWithCookies(PAL::SessionID sessionID, Fu > processPool()->sendToNetworkingProcess(Messages::WebCookieManager::GetHostnamesWithCookies(sessionID, callbackID)); > } > >-void WebCookieManagerProxy::didGetHostnamesWithCookies(const Vector<String>& hostnames, WebKit::CallbackID callbackID) >+void WebCookieManagerProxy::didGetHostnamesWithCookies(const Vector<String>& hostnames, CookieManagerCallbackID callbackID) > { > auto callback = m_callbacks.take<ArrayCallback>(callbackID); > if (!callback) { >@@ -170,17 +170,17 @@ void WebCookieManagerProxy::getCookies(PAL::SessionID sessionID, const URL& url, > processPool()->sendToNetworkingProcess(Messages::WebCookieManager::GetCookies(sessionID, url, callbackID)); > } > >-void WebCookieManagerProxy::didSetCookies(WebKit::CallbackID callbackID) >+void WebCookieManagerProxy::didSetCookies(CookieManagerCallbackID callbackID) > { > m_callbacks.take<VoidCallback>(callbackID)->performCallback(); > } > >-void WebCookieManagerProxy::didGetCookies(const Vector<Cookie>& cookies, WebKit::CallbackID callbackID) >+void WebCookieManagerProxy::didGetCookies(const Vector<Cookie>& cookies, CookieManagerCallbackID callbackID) > { > m_callbacks.take<GetCookiesCallback>(callbackID)->performCallbackWithReturnValue(cookies); > } > >-void WebCookieManagerProxy::didDeleteCookies(WebKit::CallbackID callbackID) >+void WebCookieManagerProxy::didDeleteCookies(CookieManagerCallbackID callbackID) > { > m_callbacks.take<VoidCallback>(callbackID)->performCallback(); > } >@@ -253,7 +253,7 @@ void WebCookieManagerProxy::setHTTPCookieAcceptPolicy(PAL::SessionID, HTTPCookie > #endif > > auto callbackID = m_callbacks.put(WTFMove(callbackFunction), processPool()->ensureNetworkProcess().throttler().backgroundActivityToken()); >- processPool()->sendToNetworkingProcess(Messages::WebCookieManager::SetHTTPCookieAcceptPolicy(policy, OptionalCallbackID(callbackID))); >+ processPool()->sendToNetworkingProcess(Messages::WebCookieManager::SetHTTPCookieAcceptPolicy(policy, OptionalCallbackID<CookieManagerCallbackID>(callbackID))); > } > > void WebCookieManagerProxy::getHTTPCookieAcceptPolicy(PAL::SessionID, Function<void (HTTPCookieAcceptPolicy, CallbackBase::Error)>&& callbackFunction) >diff --git a/Source/WebKit/UIProcess/WebCookieManagerProxy.h b/Source/WebKit/UIProcess/WebCookieManagerProxy.h >index e33167a8950c168f01c032ceb9e5f8f981e51380..2f7db825856443862cbc771b1b390b16c5bbb326 100644 >--- a/Source/WebKit/UIProcess/WebCookieManagerProxy.h >+++ b/Source/WebKit/UIProcess/WebCookieManagerProxy.h >@@ -26,6 +26,7 @@ > #pragma once > > #include "APIObject.h" >+#include "CookieManagerCallbackID.h" > #include "GenericCallback.h" > #include "MessageReceiver.h" > #include "WebContextSupplement.h" >@@ -54,7 +55,7 @@ class WebProcessProxy; > typedef GenericCallback<API::Array*> ArrayCallback; > typedef GenericCallback<HTTPCookieAcceptPolicy> HTTPCookieAcceptPolicyCallback; > typedef GenericCallback<const Vector<WebCore::Cookie>&> GetCookiesCallback; >- >+ > class WebCookieManagerProxy : public API::ObjectImpl<API::Object::Type::CookieManager>, public WebContextSupplement, private IPC::MessageReceiver { > public: > static const char* supplementName(); >@@ -107,13 +108,13 @@ public: > private: > WebCookieManagerProxy(WebProcessPool*); > >- void didGetHostnamesWithCookies(const Vector<String>&, WebKit::CallbackID); >- void didGetHTTPCookieAcceptPolicy(uint32_t policy, WebKit::CallbackID); >+ void didGetHostnamesWithCookies(const Vector<String>&, WebKit::CookieManagerCallbackID); >+ void didGetHTTPCookieAcceptPolicy(uint32_t policy, WebKit::CookieManagerCallbackID); > >- void didSetHTTPCookieAcceptPolicy(WebKit::CallbackID); >- void didSetCookies(WebKit::CallbackID); >- void didGetCookies(const Vector<WebCore::Cookie>&, WebKit::CallbackID); >- void didDeleteCookies(WebKit::CallbackID); >+ void didSetHTTPCookieAcceptPolicy(WebKit::CookieManagerCallbackID); >+ void didSetCookies(WebKit::CookieManagerCallbackID); >+ void didGetCookies(const Vector<WebCore::Cookie>&, WebKit::CookieManagerCallbackID); >+ void didDeleteCookies(WebKit::CookieManagerCallbackID); > > void cookiesDidChange(PAL::SessionID); > >@@ -131,7 +132,7 @@ private: > void persistHTTPCookieAcceptPolicy(HTTPCookieAcceptPolicy); > #endif > >- CallbackMap m_callbacks; >+ CallbackMap<CookieManagerCallbackID> m_callbacks; > > HashMap<PAL::SessionID, WTF::Function<void ()>> m_legacyCookieObservers; > HashMap<PAL::SessionID, HashSet<Observer*>> m_cookieObservers; >diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp >index 7a6f27532f6033914d783c06492e9df7c2ec91a0..f56caa3b333c658d3cca912cc06608eba7ec5065 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.cpp >+++ b/Source/WebKit/UIProcess/WebPageProxy.cpp >@@ -7603,7 +7603,7 @@ void WebPageProxy::getLoadDecisionForIcon(const WebCore::LinkIcon& icon, Callbac > } > > bool decision = (bool)callbackFunction; >- auto newCallbackIdentifier = decision ? OptionalCallbackID(m_callbacks.put(WTFMove(callbackFunction), m_process->throttler().backgroundActivityToken())) : OptionalCallbackID(); >+ auto newCallbackIdentifier = decision ? OptionalCallbackID<CallbackID>(m_callbacks.put(WTFMove(callbackFunction), m_process->throttler().backgroundActivityToken())) : OptionalCallbackID<CallbackID>(); > > m_process->send(Messages::WebPage::DidGetLoadDecisionForIcon(decision, loadIdentifier, newCallbackIdentifier), m_pageID); > }); >diff --git a/Source/WebKit/UIProcess/WebPageProxy.h b/Source/WebKit/UIProcess/WebPageProxy.h >index 6a5b259fcaea6d8928f09889c798045eb10d8815..1f4702b0d623c73495f0c83cabc6216c9fca7b91 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.h >+++ b/Source/WebKit/UIProcess/WebPageProxy.h >@@ -1915,7 +1915,7 @@ private: > std::unique_ptr<WebCredentialsMessengerProxy> m_credentialsMessenger; > #endif > >- CallbackMap m_callbacks; >+ CallbackMap<CallbackID> m_callbacks; > HashSet<CallbackID> m_loadDependentStringCallbackIDs; > > HashSet<WebEditCommandProxy*> m_editCommandSet; >diff --git a/Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h b/Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h >index e4a444790b9710055fdd691ab8d89685eea57977..522059379c1b3c15eef663abe636e7e375f96dbd 100644 >--- a/Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h >+++ b/Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h >@@ -73,7 +73,7 @@ private: > // The last minimum layout size we sent to the web process. > WebCore::IntSize m_lastSentViewLayoutSize; > >- CallbackMap m_callbacks; >+ CallbackMap<DrawingAreaCallbackID> m_callbacks; > }; > > } // namespace WebKit >diff --git a/Source/WebKit/WebKit.xcodeproj/project.pbxproj b/Source/WebKit/WebKit.xcodeproj/project.pbxproj >index 865ada93556cf343fea7511bd88757b7ec0e3774..6aca5301be9c9b18d2031c5515624de744bd4586 100644 >--- a/Source/WebKit/WebKit.xcodeproj/project.pbxproj >+++ b/Source/WebKit/WebKit.xcodeproj/project.pbxproj >@@ -690,6 +690,7 @@ > 2DA1E4FE18C02B6A00DBC929 /* WKLegacyPDFView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DA1E4FC18C02B6A00DBC929 /* WKLegacyPDFView.h */; }; > 2DA1E4FF18C02B6A00DBC929 /* WKLegacyPDFView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2DA1E4FD18C02B6A00DBC929 /* WKLegacyPDFView.mm */; }; > 2DA6731A20C754B1003CB401 /* DynamicViewportSizeUpdate.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DA6731920C754B1003CB401 /* DynamicViewportSizeUpdate.h */; }; >+ 2DA857932124BE65001245F6 /* CookieManagerCallbackID.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DA857922124BE65001245F6 /* CookieManagerCallbackID.h */; }; > 2DA9449E1884E4F000ED86DB /* NativeWebKeyboardEventIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2DA944971884E4F000ED86DB /* NativeWebKeyboardEventIOS.mm */; }; > 2DA9449F1884E4F000ED86DB /* NativeWebTouchEventIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2DA944981884E4F000ED86DB /* NativeWebTouchEventIOS.mm */; }; > 2DA944A01884E4F000ED86DB /* WebIOSEventFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DA944991884E4F000ED86DB /* WebIOSEventFactory.h */; }; >@@ -3166,6 +3167,7 @@ > 2DA1E4FD18C02B6A00DBC929 /* WKLegacyPDFView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKLegacyPDFView.mm; path = ios/WKLegacyPDFView.mm; sourceTree = "<group>"; }; > 2DA6731920C754B1003CB401 /* DynamicViewportSizeUpdate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DynamicViewportSizeUpdate.h; path = ios/DynamicViewportSizeUpdate.h; sourceTree = "<group>"; }; > 2DA7FDCB18F88625008DDED0 /* FindIndicatorOverlayClientIOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FindIndicatorOverlayClientIOS.h; path = ios/FindIndicatorOverlayClientIOS.h; sourceTree = "<group>"; }; >+ 2DA857922124BE65001245F6 /* CookieManagerCallbackID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CookieManagerCallbackID.h; sourceTree = "<group>"; }; > 2DA944971884E4F000ED86DB /* NativeWebKeyboardEventIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = NativeWebKeyboardEventIOS.mm; path = ios/NativeWebKeyboardEventIOS.mm; sourceTree = "<group>"; }; > 2DA944981884E4F000ED86DB /* NativeWebTouchEventIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = NativeWebTouchEventIOS.mm; path = ios/NativeWebTouchEventIOS.mm; sourceTree = "<group>"; }; > 2DA944991884E4F000ED86DB /* WebIOSEventFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebIOSEventFactory.h; path = ios/WebIOSEventFactory.h; sourceTree = "<group>"; }; >@@ -5387,6 +5389,7 @@ > 290F4271172A0C7400939FF0 /* ChildProcessSupplement.h */, > 5106D7BF18BDBE73000AB166 /* ContextMenuContextData.cpp */, > 5106D7C018BDBE73000AB166 /* ContextMenuContextData.h */, >+ 2DA857922124BE65001245F6 /* CookieManagerCallbackID.h */, > 99F642D21FABE378009621E9 /* CoordinateSystem.h */, > C517388012DF8F4F00EE3F47 /* DragControllerAction.h */, > 0FB659221208B4DB0044816C /* DrawingAreaInfo.h */, >@@ -9101,6 +9104,7 @@ > 37C4E9F6131C6E7E0029BD5A /* config.h in Headers */, > BC032DAB10F437D10058C15A /* Connection.h in Headers */, > 5106D7C418BDBE73000AB166 /* ContextMenuContextData.h in Headers */, >+ 2DA857932124BE65001245F6 /* CookieManagerCallbackID.h in Headers */, > CE1A0BD31A48E6C60054EF74 /* CorePDFSPI.h in Headers */, > 37C21CAE1E994C0C0029D5F9 /* CorePredictionSPI.h in Headers */, > B878B615133428DC006888E9 /* CorrectionPanel.h in Headers */, >diff --git a/Source/WebKit/WebProcess/WebPage/DrawingArea.h b/Source/WebKit/WebProcess/WebPage/DrawingArea.h >index 48e9e560692c910ba4fb365f178710e7b3762b2b..9a32994fa5e9e7295075f957610f606f13f1a130 100644 >--- a/Source/WebKit/WebProcess/WebPage/DrawingArea.h >+++ b/Source/WebKit/WebProcess/WebPage/DrawingArea.h >@@ -182,7 +182,7 @@ private: > virtual void adjustTransientZoom(double scale, WebCore::FloatPoint origin) { } > virtual void commitTransientZoom(double scale, WebCore::FloatPoint origin) { } > >- virtual void addTransactionCallbackID(WebKit::CallbackID) { ASSERT_NOT_REACHED(); } >+ virtual void addTransactionCallbackID(DrawingAreaCallbackID) { ASSERT_NOT_REACHED(); } > #endif > > #if USE(TEXTURE_MAPPER_GL) && PLATFORM(GTK) && PLATFORM(X11) && !USE(REDIRECTED_XCOMPOSITE_WINDOW) >diff --git a/Source/WebKit/WebProcess/WebPage/DrawingArea.messages.in b/Source/WebKit/WebProcess/WebPage/DrawingArea.messages.in >index dbfb2945226cf9ea429227db870e193b945ffca0..50017861ad73344c6272b2cc9f43b15d6d1941e7 100644 >--- a/Source/WebKit/WebProcess/WebPage/DrawingArea.messages.in >+++ b/Source/WebKit/WebProcess/WebPage/DrawingArea.messages.in >@@ -37,7 +37,7 @@ messages -> DrawingArea { > AcceleratedAnimationDidStart(uint64_t layerID, String key, MonotonicTime startTime) > AcceleratedAnimationDidEnd(uint64_t layerID, String key) > >- AddTransactionCallbackID(WebKit::CallbackID callbackID) >+ AddTransactionCallbackID(WebKit::DrawingAreaCallbackID callbackID) > #endif > > #if USE(TEXTURE_MAPPER_GL) && PLATFORM(GTK) && PLATFORM(X11) && !USE(REDIRECTED_XCOMPOSITE_WINDOW) >diff --git a/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h b/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h >index faf16aa107d32f3ee3c60f199828eb6780e1d656..46c588df9c3bba9873330bb8bf2de9a7b337dc11 100644 >--- a/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h >+++ b/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h >@@ -67,7 +67,7 @@ private: > void scheduleCompositingLayerFlushImmediately() override; > void attachViewOverlayGraphicsLayer(WebCore::Frame*, WebCore::GraphicsLayer*) override; > >- void addTransactionCallbackID(CallbackID) override; >+ void addTransactionCallbackID(DrawingAreaCallbackID) override; > > RefPtr<WebCore::DisplayRefreshMonitor> createDisplayRefreshMonitor(WebCore::PlatformDisplayID) override; > void willDestroyDisplayRefreshMonitor(WebCore::DisplayRefreshMonitor*); >@@ -162,7 +162,7 @@ private: > HashSet<RemoteLayerTreeDisplayRefreshMonitor*>* m_displayRefreshMonitorsToNotify { nullptr }; > > uint64_t m_currentTransactionID { 0 }; >- Vector<RemoteLayerTreeTransaction::TransactionCallbackID> m_pendingCallbackIDs; >+ Vector<DrawingAreaCallbackID> m_pendingCallbackIDs; > ActivityStateChangeID m_activityStateChangeID { ActivityStateChangeAsynchronous }; > > WebCore::LayoutMilestones m_pendingNewlyReachedLayoutMilestones { 0 }; >diff --git a/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm b/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm >index fe5826cf658807f1fb03db353a6e4d5105e8dd67..335ab06371ca129ee4212f608a36d7397afa28b2 100644 >--- a/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm >+++ b/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm >@@ -499,13 +499,13 @@ void RemoteLayerTreeDrawingArea::activityStateDidChange(ActivityState::Flags, Ac > } > } > >-void RemoteLayerTreeDrawingArea::addTransactionCallbackID(CallbackID callbackID) >+void RemoteLayerTreeDrawingArea::addTransactionCallbackID(DrawingAreaCallbackID callbackID) > { > // Assume that if someone is listening for this transaction's completion, that they want it to > // be a "complete" paint (including images that would normally be asynchronously decoding). > m_nextFlushIsForImmediatePaint = true; > >- m_pendingCallbackIDs.append(static_cast<RemoteLayerTreeTransaction::TransactionCallbackID>(callbackID)); >+ m_pendingCallbackIDs.append(callbackID); > scheduleCompositingLayerFlush(); > } > >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.cpp b/Source/WebKit/WebProcess/WebPage/WebPage.cpp >index d6b96556866d98560b0b2ef4e3da85e5573933ea..f0f43236728a333710f975f2fec5c2280030a65b 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.cpp >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.cpp >@@ -5944,7 +5944,7 @@ void WebPage::didLosePointerLock() > } > #endif > >-void WebPage::didGetLoadDecisionForIcon(bool decision, CallbackID loadIdentifier, OptionalCallbackID newCallbackID) >+void WebPage::didGetLoadDecisionForIcon(bool decision, CallbackID loadIdentifier, OptionalCallbackID<CallbackID> newCallbackID) > { > if (auto* documentLoader = corePage()->mainFrame().loader().documentLoader()) > documentLoader->didGetLoadDecisionForIcon(decision, loadIdentifier.toInteger(), newCallbackID.toInteger()); >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.h b/Source/WebKit/WebProcess/WebPage/WebPage.h >index 408addd08e3c29829625274789c9eb591171451e..a7e4adbbb353594592ab35c22b7cc2f15e841279 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.h >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.h >@@ -1049,7 +1049,7 @@ public: > void didLosePointerLock(); > #endif > >- void didGetLoadDecisionForIcon(bool decision, CallbackID loadIdentifier, OptionalCallbackID); >+ void didGetLoadDecisionForIcon(bool decision, CallbackID loadIdentifier, OptionalCallbackID<CallbackID>); > void setUseIconLoadingClient(bool); > > #if ENABLE(DATA_INTERACTION) >diff --git a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in >index 1c44d77e6524d636623e4246f256a5716b1c0379..147019ee9481514dec3874cd81b9188ad4f8cc8e 100644 >--- a/Source/WebKit/WebProcess/WebPage/WebPage.messages.in >+++ b/Source/WebKit/WebProcess/WebPage/WebPage.messages.in >@@ -483,7 +483,7 @@ messages -> WebPage LegacyReceiver { > > SetUserInterfaceLayoutDirection(uint32_t direction) > >- DidGetLoadDecisionForIcon(bool decision, WebKit::CallbackID loadIdentifier, WebKit::OptionalCallbackID newCallbackID) >+ DidGetLoadDecisionForIcon(bool decision, WebKit::CallbackID loadIdentifier, WebKit::OptionalCallbackID<WebKit::CallbackID> newCallbackID) > SetUseIconLoadingClient(bool useIconLoadingClient) > > #if ENABLE(GAMEPAD) >diff --git a/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h b/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h >index acc0b77a00895f6b133e8e0ce65865fbae0aebff..9279b1eeb18adc2d5f78922a303aa1fcbe30e29d 100644 >--- a/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h >+++ b/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h >@@ -100,7 +100,7 @@ private: > void setColorSpace(const ColorSpaceData&) override; > void addFence(const WTF::MachSendRight&) override; > >- void addTransactionCallbackID(CallbackID) override; >+ void addTransactionCallbackID(DrawingAreaCallbackID) override; > void setShouldScaleViewToFitDocument(bool) override; > > void attachDrawingArea() override; >@@ -163,7 +163,7 @@ private: > WebCore::IntSize m_lastDocumentSizeForScaleToFit; > > WebCore::LayoutMilestones m_pendingNewlyReachedLayoutMilestones { 0 }; >- Vector<CallbackID> m_pendingCallbackIDs; >+ Vector<DrawingAreaCallbackID> m_pendingCallbackIDs; > }; > > } // namespace WebKit >diff --git a/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm b/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm >index 5a80faf815a2165dc0a757a98a33ef7a0ba095e4..6805b9058e5fbf17c17e00f9144e866b5f46ad82 100644 >--- a/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm >+++ b/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm >@@ -407,7 +407,7 @@ void TiledCoreAnimationDrawingArea::sendPendingNewlyReachedLayoutMilestones() > m_pendingNewlyReachedLayoutMilestones = 0; > } > >-void TiledCoreAnimationDrawingArea::addTransactionCallbackID(CallbackID callbackID) >+void TiledCoreAnimationDrawingArea::addTransactionCallbackID(DrawingAreaCallbackID callbackID) > { > m_pendingCallbackIDs.append(callbackID); > scheduleCompositingLayerFlush();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188614
: 347201