Skip to content

Commit

Permalink
Generate IPC serialization for enumerations under WebKit/UIProcess/Ex…
Browse files Browse the repository at this point in the history
…tensions

https://bugs.webkit.org/show_bug.cgi?id=264801

Reviewed by Timothy Hatcher and Chris Dumez.

Adjust IPC serialization specification for WebExtensionTab::ImageFormat and
WebExtensionWindow::TypeFilter enums so that the generated code can also cover
all cases even when the EnumTraits for the two enums are removed.

WebExtensionContext::InstallReason enum is similarly adjusted, along with the
new serialization input file.

WebExtension::ModifierFlags enum is left there for now since it's been added
only a few days ago, so removing it could unintentionally break some ongoing
changes.

* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/Shared/Extensions/WebExtensionContext.serialization.in: Copied from Source/WebKit/Shared/Extensions/WebExtensionWindow.serialization.in.
* Source/WebKit/Shared/Extensions/WebExtensionTab.serialization.in:
* Source/WebKit/Shared/Extensions/WebExtensionWindow.serialization.in:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionTab.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionWindow.h:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:

Canonical link: https://commits.webkit.org/270725@main
  • Loading branch information
zdobersek committed Nov 14, 2023
1 parent 72e51ec commit ec22469
Show file tree
Hide file tree
Showing 9 changed files with 62 additions and 58 deletions.
1 change: 1 addition & 0 deletions Source/WebKit/DerivedSources-input.xcfilelist
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,7 @@ $(PROJECT_DIR)/Shared/EditorState.serialization.in
$(PROJECT_DIR)/Shared/Extensions/WebExtensionAlarmParameters.serialization.in
$(PROJECT_DIR)/Shared/Extensions/WebExtensionCommandParameters.serialization.in
$(PROJECT_DIR)/Shared/Extensions/WebExtensionContentWorldType.serialization.in
$(PROJECT_DIR)/Shared/Extensions/WebExtensionContext.serialization.in
$(PROJECT_DIR)/Shared/Extensions/WebExtensionContextParameters.serialization.in
$(PROJECT_DIR)/Shared/Extensions/WebExtensionControllerParameters.serialization.in
$(PROJECT_DIR)/Shared/Extensions/WebExtensionDynamicScripts.serialization.in
Expand Down
1 change: 1 addition & 0 deletions Source/WebKit/DerivedSources.make
Original file line number Diff line number Diff line change
Expand Up @@ -539,6 +539,7 @@ SERIALIZATION_DESCRIPTION_FILES = \
Shared/Extensions/WebExtensionAlarmParameters.serialization.in \
Shared/Extensions/WebExtensionCommandParameters.serialization.in \
Shared/Extensions/WebExtensionContentWorldType.serialization.in \
Shared/Extensions/WebExtensionContext.serialization.in \
Shared/Extensions/WebExtensionContextParameters.serialization.in \
Shared/Extensions/WebExtensionControllerParameters.serialization.in \
Shared/Extensions/WebExtensionDynamicScripts.serialization.in \
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright (C) 2022-2023 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.

#if ENABLE(WK_WEB_EXTENSIONS)

headers: "WebExtensionContext.h"

enum class WebKit::WebExtensionContextInstallReason : uint8_t {
None,
ExtensionInstall,
ExtensionUpdate,
BrowserUpdate,
};

#endif
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ struct WebKit::WebExtensionTabQueryParameters {
std::optional<bool> selected;
}

[Nested, CustomHeader] enum class WebKit::WebExtensionTab::ImageFormat : uint8_t {
enum class WebKit::WebExtensionTabImageFormat : uint8_t {
PNG,
JPEG,
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ struct WebKit::WebExtensionWindowParameters {
Popup,
};

[Nested, OptionSet] enum class WebKit::WebExtensionWindow::TypeFilter : uint8_t {
[OptionSet] enum class WebKit::WebExtensionWindowTypeFilter : uint8_t {
None,
Normal,
Popup,
Expand Down
28 changes: 8 additions & 20 deletions Source/WebKit/UIProcess/Extensions/WebExtensionContext.h
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,13 @@ class WebExtension;
class WebUserContentControllerProxy;
struct WebExtensionContextParameters;

enum class WebExtensionContextInstallReason : uint8_t {
None,
ExtensionInstall,
ExtensionUpdate,
BrowserUpdate,
};

class WebExtensionContext : public API::ObjectImpl<API::Object::Type::WebExtensionContext>, public IPC::MessageReceiver {
WTF_MAKE_NONCOPYABLE(WebExtensionContext);

Expand Down Expand Up @@ -168,12 +175,7 @@ class WebExtensionContext : public API::ObjectImpl<API::Object::Type::WebExtensi
SkipRequestedPermissions = 1 << 1, // Don't check requested permissions.
};

enum class InstallReason : uint8_t {
None,
ExtensionInstall,
ExtensionUpdate,
BrowserUpdate,
};
using InstallReason = WebExtensionContextInstallReason;

enum class WebViewPurpose : uint8_t {
Any,
Expand Down Expand Up @@ -631,18 +633,4 @@ void WebExtensionContext::sendToContentScriptProcessesForEvent(WebExtensionEvent

} // namespace WebKit

namespace WTF {

template<> struct EnumTraits<WebKit::WebExtensionContext::InstallReason> {
using values = EnumValues<
WebKit::WebExtensionContext::InstallReason,
WebKit::WebExtensionContext::InstallReason::None,
WebKit::WebExtensionContext::InstallReason::ExtensionInstall,
WebKit::WebExtensionContext::InstallReason::ExtensionUpdate,
WebKit::WebExtensionContext::InstallReason::BrowserUpdate
>;
};

} // namespace WTF

#endif // ENABLE(WK_WEB_EXTENSIONS)
22 changes: 6 additions & 16 deletions Source/WebKit/UIProcess/Extensions/WebExtensionTab.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ class WebProcessProxy;
struct WebExtensionTabParameters;
struct WebExtensionTabQueryParameters;

enum class WebExtensionTabImageFormat : uint8_t {
PNG,
JPEG,
};

class WebExtensionTab : public RefCounted<WebExtensionTab>, public CanMakeWeakPtr<WebExtensionTab> {
WTF_MAKE_NONCOPYABLE(WebExtensionTab);
WTF_MAKE_FAST_ALLOCATED;
Expand Down Expand Up @@ -75,10 +80,7 @@ class WebExtensionTab : public RefCounted<WebExtensionTab>, public CanMakeWeakPt
All = Audible | Loading | Muted | Pinned | ReaderMode | Size | Title | URL | ZoomFactor,
};

enum class ImageFormat : uint8_t {
PNG,
JPEG,
};
using ImageFormat = WebExtensionTabImageFormat;

enum class AssumeWindowMatches : bool { No, Yes };
enum class SkipContainsCheck : bool { No, Yes };
Expand Down Expand Up @@ -226,16 +228,4 @@ class WebExtensionTab : public RefCounted<WebExtensionTab>, public CanMakeWeakPt

} // namespace WebKit

namespace WTF {

template<> struct EnumTraits<WebKit::WebExtensionTab::ImageFormat> {
using values = EnumValues<
WebKit::WebExtensionTab::ImageFormat,
WebKit::WebExtensionTab::ImageFormat::PNG,
WebKit::WebExtensionTab::ImageFormat::JPEG
>;
};

} // namespace WTF

#endif // ENABLE(WK_WEB_EXTENSIONS)
28 changes: 8 additions & 20 deletions Source/WebKit/UIProcess/Extensions/WebExtensionWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,13 @@ class WebExtensionTab;
struct WebExtensionTabQueryParameters;
struct WebExtensionWindowParameters;

enum class WebExtensionWindowTypeFilter : uint8_t {
None = 0,
Normal = 1 << 0,
Popup = 1 << 1,
All = Normal | Popup,
};

class WebExtensionWindow : public RefCounted<WebExtensionWindow>, public CanMakeWeakPtr<WebExtensionWindow> {
WTF_MAKE_NONCOPYABLE(WebExtensionWindow);
WTF_MAKE_FAST_ALLOCATED;
Expand All @@ -63,12 +70,7 @@ class WebExtensionWindow : public RefCounted<WebExtensionWindow>, public CanMake
Popup,
};

enum class TypeFilter : uint8_t {
None = 0,
Normal = 1 << 0,
Popup = 1 << 1,
All = Normal | Popup,
};
using TypeFilter = WebExtensionWindowTypeFilter;

enum class State : uint8_t {
Normal,
Expand Down Expand Up @@ -152,18 +154,4 @@ _WKWebExtensionWindowState toAPI(WebExtensionWindow::State);

} // namespace WebKit

namespace WTF {

template<> struct EnumTraits<WebKit::WebExtensionWindow::TypeFilter> {
using values = EnumValues<
WebKit::WebExtensionWindow::TypeFilter,
WebKit::WebExtensionWindow::TypeFilter::None,
WebKit::WebExtensionWindow::TypeFilter::Normal,
WebKit::WebExtensionWindow::TypeFilter::Popup,
WebKit::WebExtensionWindow::TypeFilter::All
>;
};

} // namespace WTF

#endif // ENABLE(WK_WEB_EXTENSIONS)
2 changes: 2 additions & 0 deletions Source/WebKit/WebKit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -4444,6 +4444,7 @@
2DA049B2180CCCD300AAFA9E /* PlatformCALayerRemote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformCALayerRemote.h; sourceTree = "<group>"; };
2DA049B5180CCD0A00AAFA9E /* GraphicsLayerCARemote.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GraphicsLayerCARemote.mm; sourceTree = "<group>"; };
2DA049B6180CCD0A00AAFA9E /* GraphicsLayerCARemote.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GraphicsLayerCARemote.h; sourceTree = "<group>"; };
2DA301A92B036CDA00F3B129 /* WebExtensionContext.serialization.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebExtensionContext.serialization.in; sourceTree = "<group>"; };
2DA3E37D2A33C98900F7799D /* UserInterfaceIdiom.serialization.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = UserInterfaceIdiom.serialization.in; 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>"; };
Expand Down Expand Up @@ -12483,6 +12484,7 @@
1C8ECFEF2AFC8363007BAA62 /* WebExtensionCommandParameters.serialization.in */,
1C4A14C92ABCB8F500A1018C /* WebExtensionContentWorldType.h */,
1C4A14CC2ABCB94400A1018C /* WebExtensionContentWorldType.serialization.in */,
2DA301A92B036CDA00F3B129 /* WebExtensionContext.serialization.in */,
1C0234BF28A00DCF00AC1E5B /* WebExtensionContextIdentifier.h */,
1C0234BE28A00DCF00AC1E5B /* WebExtensionContextParameters.h */,
1C3BEB482887415100E66E38 /* WebExtensionControllerIdentifier.h */,
Expand Down

0 comments on commit ec22469

Please sign in to comment.