Allow encoding of small enum classes
authorachristensen@apple.com <achristensen@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Oct 2018 20:20:15 +0000 (20:20 +0000)
committerachristensen@apple.com <achristensen@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Oct 2018 20:20:15 +0000 (20:20 +0000)
https://bugs.webkit.org/show_bug.cgi?id=190531

Reviewed by Tim Horton.

Source/WebCore:

* Modules/webauthn/PublicKeyCredentialCreationOptions.h:
* dom/Document.h:
* editing/FontAttributeChanges.h:
* history/CachedFrame.h:
* loader/FrameLoaderTypes.h:
* platform/CookiesStrategy.h:
* platform/PasteboardItemInfo.h:
* platform/ReferrerPolicy.h:

Source/WebKit:

* NetworkProcess/NetworkLoadClient.h:
* Scripts/webkit/messages.py:
* Scripts/webkit/parser.py:
(parse_parameters_string):
* UIProcess/API/APINavigation.h:
* UIProcess/WebFramePolicyListenerProxy.h:
* UIProcess/WebNavigationState.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebPage/WebPage.messages.in:

Source/WebKitLegacy/mac:

* WebCoreSupport/WebFrameLoaderClient.mm:
(-[WebFramePolicyListener dealloc]):

Source/WTF:

* wtf/Forward.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@237074 268f45cc-cd09-0410-ab3c-d52691b4dbfc

23 files changed:
Source/WTF/ChangeLog
Source/WTF/wtf/Forward.h
Source/WebCore/ChangeLog
Source/WebCore/Modules/webauthn/PublicKeyCredentialCreationOptions.h
Source/WebCore/dom/Document.h
Source/WebCore/editing/FontAttributeChanges.h
Source/WebCore/history/CachedFrame.h
Source/WebCore/loader/FrameLoaderTypes.h
Source/WebCore/platform/CookiesStrategy.h
Source/WebCore/platform/PasteboardItemInfo.h
Source/WebCore/platform/ReferrerPolicy.h
Source/WebKit/ChangeLog
Source/WebKit/NetworkProcess/NetworkLoadClient.h
Source/WebKit/Scripts/webkit/messages.py
Source/WebKit/Scripts/webkit/parser.py
Source/WebKit/UIProcess/API/APINavigation.h
Source/WebKit/UIProcess/WebFramePolicyListenerProxy.h
Source/WebKit/UIProcess/WebNavigationState.h
Source/WebKit/UIProcess/WebPageProxy.h
Source/WebKit/UIProcess/WebPageProxy.messages.in
Source/WebKit/WebProcess/WebPage/WebPage.messages.in
Source/WebKitLegacy/mac/ChangeLog
Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm

index 1b7a7c6..a54fddf 100644 (file)
@@ -1,3 +1,12 @@
+2018-10-12  Alex Christensen  <achristensen@webkit.org>
+
+        Allow encoding of small enum classes
+        https://bugs.webkit.org/show_bug.cgi?id=190531
+
+        Reviewed by Tim Horton.
+
+        * wtf/Forward.h:
+
 2018-10-11  Alexey Proskuryakov  <ap@apple.com>
 
         Add PLATFORM(IOS_FAMILY) and OS(IOS_FAMILY)
index ee51c73..df0b71b 100644 (file)
@@ -62,6 +62,9 @@ template<typename, typename = void> class StringTypeAdapter;
 template<typename> struct DefaultHash { using Hash = void; };
 template<typename> struct HashTraits;
 
+template<typename> struct EnumTraits;
+template<typename E, E...> struct EnumValues;
+
 template<typename...> class Variant;
 template<typename, size_t = 0, typename = CrashOnOverflow, size_t = 16> class Vector;
 template<typename Value, typename = typename DefaultHash<Value>::Hash, typename = HashTraits<Value>> class HashCountedSet;
index 80e7449..8763a20 100644 (file)
@@ -1,3 +1,19 @@
+2018-10-12  Alex Christensen  <achristensen@webkit.org>
+
+        Allow encoding of small enum classes
+        https://bugs.webkit.org/show_bug.cgi?id=190531
+
+        Reviewed by Tim Horton.
+
+        * Modules/webauthn/PublicKeyCredentialCreationOptions.h:
+        * dom/Document.h:
+        * editing/FontAttributeChanges.h:
+        * history/CachedFrame.h:
+        * loader/FrameLoaderTypes.h:
+        * platform/CookiesStrategy.h:
+        * platform/PasteboardItemInfo.h:
+        * platform/ReferrerPolicy.h:
+
 2018-10-12  Rob Buis  <rbuis@igalia.com>
 
         Solve the confusion around blankURL() and isBlankURL() in URL
index 6a43cca..8afb4dd 100644 (file)
@@ -31,7 +31,6 @@
 #include "PublicKeyCredentialDescriptor.h"
 #include "PublicKeyCredentialType.h"
 #include <wtf/CrossThreadCopier.h>
-#include <wtf/EnumTraits.h>
 #include <wtf/Forward.h>
 
 namespace WebCore {
index 5a3091c..ff5f642 100644 (file)
@@ -200,7 +200,7 @@ class XPathResult;
 template<typename> class ExceptionOr;
 
 enum CollectionType;
-enum class ShouldOpenExternalURLsPolicy;
+enum class ShouldOpenExternalURLsPolicy : uint8_t;
 
 enum class RouteSharingPolicy;
 
index dc18d04..45d768c 100644 (file)
@@ -27,7 +27,6 @@
 
 #include "Color.h"
 #include "FontShadow.h"
-#include <wtf/EnumTraits.h>
 #include <wtf/Forward.h>
 #include <wtf/Optional.h>
 
index e0be571..d9514aa 100644 (file)
@@ -38,7 +38,7 @@ class Document;
 class DocumentLoader;
 class FrameView;
 class Node;
-enum class HasInsecureContent;
+enum class HasInsecureContent : uint8_t;
 
 class CachedFrameBase {
 public:
index bd18391..62898fa 100644 (file)
@@ -40,20 +40,20 @@ enum FrameState {
     FrameStateComplete
 };
 
-enum class PolicyAction {
+enum class PolicyAction : uint8_t {
     Use,
     Download,
     Ignore,
     Suspend,
 };
 
-enum class ReloadOption {
+enum class ReloadOption : uint8_t {
     ExpiredOnly = 1 << 0,
     FromOrigin  = 1 << 1,
     DisableContentBlockers = 1 << 2,
 };
 
-enum class FrameLoadType {
+enum class FrameLoadType : uint8_t {
     Standard,
     Back,
     Forward,
@@ -66,12 +66,12 @@ enum class FrameLoadType {
     ReloadExpiredOnly
 };
 
-enum class NewFrameOpenerPolicy {
+enum class NewFrameOpenerPolicy : uint8_t {
     Suppress,
     Allow
 };
 
-enum class NavigationType {
+enum class NavigationType : uint8_t {
     LinkClicked,
     FormSubmitted,
     BackForward,
@@ -80,13 +80,13 @@ enum class NavigationType {
     Other
 };
 
-enum class ShouldOpenExternalURLsPolicy {
+enum class ShouldOpenExternalURLsPolicy : uint8_t {
     ShouldNotAllow,
     ShouldAllowExternalSchemes,
     ShouldAllow,
 };
 
-enum class InitiatedByMainFrame {
+enum class InitiatedByMainFrame : uint8_t {
     Yes,
     Unknown,
 };
@@ -96,7 +96,7 @@ enum ClearProvisionalItemPolicy {
     ShouldNotClearProvisionalItem
 };
 
-enum class ObjectContentType {
+enum class ObjectContentType : uint8_t {
     None,
     Image,
     Frame,
@@ -129,22 +129,22 @@ enum WebGLLoadPolicy {
     WebGLPendingCreation
 };
 
-enum class LockHistory {
+enum class LockHistory : uint8_t {
     Yes,
     No
 };
 
-enum class LockBackForwardList {
+enum class LockBackForwardList : uint8_t {
     Yes,
     No
 };
 
-enum class AllowNavigationToInvalidURL {
+enum class AllowNavigationToInvalidURL : uint8_t {
     Yes,
     No
 };
 
-enum class HasInsecureContent {
+enum class HasInsecureContent : uint8_t {
     Yes,
     No,
 };
@@ -155,7 +155,7 @@ struct SystemPreviewInfo {
     bool isSystemPreview { false };
 };
 
-enum class LoadCompletionType {
+enum class LoadCompletionType : uint8_t {
     Finish,
     Cancel
 };
@@ -164,9 +164,6 @@ enum class LoadCompletionType {
 
 namespace WTF {
 
-template<typename> struct EnumTraits;
-template<typename E, E...> struct EnumValues;
-
 template<> struct EnumTraits<WebCore::PolicyAction> {
     using values = EnumValues<
         WebCore::PolicyAction,
index b439786..6672053 100644 (file)
@@ -26,7 +26,6 @@
 #pragma once
 
 #include <pal/SessionID.h>
-#include <wtf/EnumTraits.h>
 #include <wtf/Forward.h>
 #include <wtf/text/WTFString.h>
 
index 4dfd674..e11743d 100644 (file)
@@ -80,9 +80,6 @@ std::optional<PasteboardItemInfo> PasteboardItemInfo::decode(Decoder& decoder)
 
 namespace WTF {
 
-template<typename> struct EnumTraits;
-template<typename E, E...> struct EnumValues;
-
 template<> struct EnumTraits<WebCore::PasteboardItemPresentationStyle> {
     using values = EnumValues<
         WebCore::PasteboardItemPresentationStyle,
index a45fb82..2a2a23c 100644 (file)
@@ -32,7 +32,6 @@
 
 #pragma once
 
-#include <wtf/EnumTraits.h>
 #include <wtf/Forward.h>
 #include <wtf/Optional.h>
 
index fa1c5bb..42714ac 100644 (file)
@@ -1,3 +1,21 @@
+2018-10-12  Alex Christensen  <achristensen@webkit.org>
+
+        Allow encoding of small enum classes
+        https://bugs.webkit.org/show_bug.cgi?id=190531
+
+        Reviewed by Tim Horton.
+
+        * NetworkProcess/NetworkLoadClient.h:
+        * Scripts/webkit/messages.py:
+        * Scripts/webkit/parser.py:
+        (parse_parameters_string):
+        * UIProcess/API/APINavigation.h:
+        * UIProcess/WebFramePolicyListenerProxy.h:
+        * UIProcess/WebNavigationState.h:
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebPageProxy.messages.in:
+        * WebProcess/WebPage/WebPage.messages.in:
+
 2018-10-12  Rob Buis  <rbuis@igalia.com>
 
         Solve the confusion around blankURL() and isBlankURL() in URL
index 4692fd7..bbce0d9 100644 (file)
@@ -34,7 +34,7 @@ namespace WebCore {
 class NetworkLoadMetrics;
 class ProtectionSpace;
 class SharedBuffer;
-enum class PolicyAction;
+enum class PolicyAction : uint8_t;
 }
 
 namespace WebKit {
index 22113bb..0535ee8 100644 (file)
@@ -86,7 +86,7 @@ def function_parameter_type(type, kind):
     if type in builtin_types:
         return type
 
-    if kind == 'enum':
+    if kind.startswith('enum'):
         return type
 
     return 'const %s&' % type
@@ -151,8 +151,8 @@ def forward_declaration(namespace, kind_and_type):
     qualified_name = '%s::%s' % (namespace, type)
     if kind == 'struct':
         return 'struct %s' % type
-    elif kind == 'enum':
-        return 'enum class %s' % type
+    elif kind.startswith('enum'):
+        return 'enum class %s %s' % (type, kind[4:])
     else:
         return 'class %s' % type
 
index 18833ab..464f552 100644 (file)
@@ -134,9 +134,9 @@ def parse_parameters_string(parameters_string):
         if split[0].startswith('struct '):
             parameter_kind = 'struct'
             split[0] = split[0][7:]
-        elif split[0].startswith('enum '):
-            parameter_kind = 'enum'
-            split[0] = split[0][5:]
+        elif split[0].startswith('enum'):
+            parameter_kind = split[0][:split[0].find(' ')]
+            split[0] = split[0][split[0].find(' ') + 1:]
 
         parameter_type = split[0]
         parameter_name = split[1]
index 97ee96d..c68e3bf 100644 (file)
@@ -33,7 +33,7 @@
 #include <wtf/Ref.h>
 
 namespace WebCore {
-enum class FrameLoadType;
+enum class FrameLoadType : uint8_t;
 }
 
 namespace WebKit {
index 53075d0..fa1cd2a 100644 (file)
@@ -34,7 +34,7 @@ class WebsitePolicies;
 }
 
 namespace WebCore {
-enum class PolicyAction;
+enum class PolicyAction : uint8_t;
 }
 
 namespace WebKit {
index dffe9e0..0036d22 100644 (file)
@@ -35,7 +35,7 @@ class Navigation;
 namespace WebCore {
 class ResourceRequest;
 
-enum class FrameLoadType;
+enum class FrameLoadType : uint8_t;
 }
 
 namespace WebKit {
index 92a43d6..6f4d480 100644 (file)
@@ -177,7 +177,7 @@ class ValidationBubble;
 enum SelectionDirection : uint8_t;
 
 enum class AutoplayEvent;
-enum class HasInsecureContent;
+enum class HasInsecureContent : uint8_t;
 enum class NotificationDirection;
 enum class ShouldSample;
 enum class ShouldTreatAsContinuingLoad;
index efbb4b1..ab46a8e 100644 (file)
@@ -108,7 +108,7 @@ messages -> WebPageProxy {
     # Policy messages
     DecidePolicyForResponse(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, WebCore::ResourceResponse response, WebCore::ResourceRequest request, bool canShowMIMEType, uint64_t listenerID, WebKit::UserData userData)
     DecidePolicyForNavigationActionAsync(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, struct WebKit::FrameInfoData originatingFrameInfoData, uint64_t originatingPageID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, WebCore::ResourceResponse redirectResponse, WebKit::UserData userData, enum WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, uint64_t listenerID)
-    DecidePolicyForNavigationActionSync(uint64_t frameID, bool isMainFrame, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, struct WebKit::FrameInfoData originatingFrameInfoData, uint64_t originatingPageID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, WebCore::ResourceResponse redirectResponse, WebKit::UserData userData, enum WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck) -> (enum WebCore::PolicyAction policyAction, uint64_t newNavigationID, WebKit::DownloadID downloadID, std::optional<WebKit::WebsitePoliciesData> websitePolicies) Delayed
+    DecidePolicyForNavigationActionSync(uint64_t frameID, bool isMainFrame, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, struct WebKit::FrameInfoData originatingFrameInfoData, uint64_t originatingPageID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, WebCore::ResourceResponse redirectResponse, WebKit::UserData userData, enum WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck) -> (enum:uint8_t WebCore::PolicyAction policyAction, uint64_t newNavigationID, WebKit::DownloadID downloadID, std::optional<WebKit::WebsitePoliciesData> websitePolicies) Delayed
     DecidePolicyForNewWindowAction(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, struct WebKit::NavigationActionData navigationActionData, WebCore::ResourceRequest request, String frameName, uint64_t listenerID, WebKit::UserData userData)
     UnableToImplementPolicy(uint64_t frameID, WebCore::ResourceError error, WebKit::UserData userData)
 
@@ -149,7 +149,7 @@ messages -> WebPageProxy {
     DidChangeMainDocument(uint64_t frameID);
     DidDestroyNavigation(uint64_t navigationID)
 
-    HasInsecureContent() -> (enum WebCore::HasInsecureContent hasInsecureContent)
+    HasInsecureContent() -> (enum:uint8_t WebCore::HasInsecureContent hasInsecureContent)
 
     MainFramePluginHandlesPageScaleGestureDidChange(bool mainFramePluginHandlesPageScaleGesture)
 
index a0a14ef..6ddf8f4 100644 (file)
@@ -140,7 +140,7 @@ messages -> WebPage LegacyReceiver {
     ScrollBy(uint32_t scrollDirection, uint32_t scrollGranularity)
     CenterSelectionInVisibleArea()
 
-    GoToBackForwardItem(uint64_t navigationID, struct WebCore::BackForwardItemIdentifier backForwardItemID, enum WebCore::FrameLoadType backForwardType, enum WebCore::ShouldTreatAsContinuingLoad shouldTreatAsContinuingLoad)
+    GoToBackForwardItem(uint64_t navigationID, struct WebCore::BackForwardItemIdentifier backForwardItemID, enum:uint8_t WebCore::FrameLoadType backForwardType, enum WebCore::ShouldTreatAsContinuingLoad shouldTreatAsContinuingLoad)
     TryRestoreScrollPosition()
 
     LoadURLInFrame(WebCore::URL url, uint64_t frameID)
@@ -161,7 +161,7 @@ messages -> WebPage LegacyReceiver {
     DidRemoveBackForwardItem(struct WebCore::BackForwardItemIdentifier backForwardItemID)
 
     UpdateWebsitePolicies(struct WebKit::WebsitePoliciesData websitePolicies)
-    DidReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, enum WebCore::PolicyAction policyAction, uint64_t navigationID, WebKit::DownloadID downloadID, std::optional<WebKit::WebsitePoliciesData> websitePolicies)
+    DidReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, enum:uint8_t WebCore::PolicyAction policyAction, uint64_t navigationID, WebKit::DownloadID downloadID, std::optional<WebKit::WebsitePoliciesData> websitePolicies)
     ContinueWillSubmitForm(uint64_t frameID, uint64_t listenerID)
 
     ClearSelection()
index a818b5d..ae79b50 100644 (file)
@@ -1,3 +1,13 @@
+2018-10-12  Alex Christensen  <achristensen@webkit.org>
+
+        Allow encoding of small enum classes
+        https://bugs.webkit.org/show_bug.cgi?id=190531
+
+        Reviewed by Tim Horton.
+
+        * WebCoreSupport/WebFrameLoaderClient.mm:
+        (-[WebFramePolicyListener dealloc]):
+
 2018-10-11  Keith Rollin  <krollin@apple.com>
 
         CURRENT_ARCH should not be used in Run Script phase.
index 64d6cf0..f508522 100644 (file)
@@ -2436,7 +2436,7 @@ void WebFrameLoaderClient::finishedLoadingIcon(uint64_t callbackID, SharedBuffer
     // response policy decision, "Ignore" for other policy decisions).
     _frame = nullptr;
     if (auto policyFunction = std::exchange(_policyFunction, nullptr)) {
-        RELEASE_LOG_ERROR(Loading, "Client application failed to make a policy decision via WebPolicyDecisionListener, using defaultPolicy %u", _defaultPolicy);
+        RELEASE_LOG_ERROR(Loading, "Client application failed to make a policy decision via WebPolicyDecisionListener, using defaultPolicy %hhu", _defaultPolicy);
         policyFunction(_defaultPolicy);
     }