diff --git a/Libraries/LibDevTools/Actors/CookiesActor.cpp b/Libraries/LibDevTools/Actors/CookiesActor.cpp index 73962eb324..a390f1d281 100644 --- a/Libraries/LibDevTools/Actors/CookiesActor.cpp +++ b/Libraries/LibDevTools/Actors/CookiesActor.cpp @@ -270,37 +270,22 @@ void CookiesActor::handle_message(Message const& message) void CookiesActor::get_fields(Message const& message) { - enum class FieldState : u8 { - Immutable, - Editable, - Hidden, - Private, - }; - auto make_field = [](StringView name, FieldState state) { - JsonObject field; - field.set("name"sv, name); - field.set("editable"sv, state == FieldState::Editable); - field.set("hidden"sv, state == FieldState::Hidden); - field.set("private"sv, state == FieldState::Private); - return field; - }; - JsonArray fields; - fields.must_append(make_field("uniqueKey"sv, FieldState::Private)); - fields.must_append(make_field("name"sv, FieldState::Editable)); - fields.must_append(make_field("value"sv, FieldState::Editable)); - fields.must_append(make_field("host"sv, FieldState::Editable)); - fields.must_append(make_field("path"sv, FieldState::Editable)); - fields.must_append(make_field("expires"sv, FieldState::Editable)); - fields.must_append(make_field("size"sv, FieldState::Immutable)); - fields.must_append(make_field("isHttpOnly"sv, FieldState::Editable)); - fields.must_append(make_field("isSecure"sv, FieldState::Editable)); - fields.must_append(make_field("sameSite"sv, FieldState::Immutable)); - fields.must_append(make_field("lastAccessed"sv, FieldState::Immutable)); - fields.must_append(make_field("creationTime"sv, FieldState::Hidden)); - fields.must_append(make_field("updateTime"sv, FieldState::Hidden)); - fields.must_append(make_field("hostOnly"sv, FieldState::Hidden)); - fields.must_append(make_field("partitionKey"sv, FieldState::Immutable)); + fields.must_append(define_storage_field("uniqueKey"sv, StorageFieldType::Private)); + fields.must_append(define_storage_field("name"sv, StorageFieldType::Mutable)); + fields.must_append(define_storage_field("value"sv, StorageFieldType::Mutable)); + fields.must_append(define_storage_field("host"sv, StorageFieldType::Mutable)); + fields.must_append(define_storage_field("path"sv, StorageFieldType::Mutable)); + fields.must_append(define_storage_field("expires"sv, StorageFieldType::Mutable)); + fields.must_append(define_storage_field("size"sv, StorageFieldType::Immutable)); + fields.must_append(define_storage_field("isHttpOnly"sv, StorageFieldType::Mutable)); + fields.must_append(define_storage_field("isSecure"sv, StorageFieldType::Mutable)); + fields.must_append(define_storage_field("sameSite"sv, StorageFieldType::Immutable)); + fields.must_append(define_storage_field("lastAccessed"sv, StorageFieldType::Immutable)); + fields.must_append(define_storage_field("creationTime"sv, StorageFieldType::Hidden)); + fields.must_append(define_storage_field("updateTime"sv, StorageFieldType::Hidden)); + fields.must_append(define_storage_field("hostOnly"sv, StorageFieldType::Hidden)); + fields.must_append(define_storage_field("partitionKey"sv, StorageFieldType::Immutable)); JsonObject response; response.set("value"sv, move(fields)); diff --git a/Libraries/LibDevTools/Actors/StorageActor.cpp b/Libraries/LibDevTools/Actors/StorageActor.cpp index 6c087ec125..bce026d2c9 100644 --- a/Libraries/LibDevTools/Actors/StorageActor.cpp +++ b/Libraries/LibDevTools/Actors/StorageActor.cpp @@ -17,14 +17,6 @@ namespace DevTools { static constexpr auto max_store_object_count = 50uz; -static JsonObject storage_field(StringView name) -{ - JsonObject field; - field.set("name"sv, name); - field.set("editable"sv, true); - return field; -} - static JsonObject serialize_storage_item(DevToolsDelegate::StorageItem const& item) { JsonObject object; @@ -161,8 +153,8 @@ void StorageActor::handle_message(Message const& message) void StorageActor::get_fields(Message const& message) { JsonArray fields; - fields.must_append(storage_field("name"sv)); - fields.must_append(storage_field("value"sv)); + fields.must_append(define_storage_field("name"sv, StorageFieldType::Mutable)); + fields.must_append(define_storage_field("value"sv, StorageFieldType::Mutable)); JsonObject response; response.set("value"sv, move(fields)); diff --git a/Libraries/LibDevTools/StorageHelpers.cpp b/Libraries/LibDevTools/StorageHelpers.cpp index cbdd078448..3a77b6abbc 100644 --- a/Libraries/LibDevTools/StorageHelpers.cpp +++ b/Libraries/LibDevTools/StorageHelpers.cpp @@ -11,6 +11,20 @@ namespace DevTools { +JsonObject define_storage_field(StringView name, StorageFieldType state) +{ + JsonObject field; + field.set("name"sv, name); + field.set("editable"sv, state == StorageFieldType::Mutable); + + if (state == StorageFieldType::Hidden) + field.set("hidden"sv, true); + else if (state == StorageFieldType::Private) + field.set("private"sv, true); + + return field; +} + Optional storage_host_for_url(String const& url_string) { auto url = URL::Parser::basic_parse(url_string); diff --git a/Libraries/LibDevTools/StorageHelpers.h b/Libraries/LibDevTools/StorageHelpers.h index a0bd0f0da3..0f91c80a54 100644 --- a/Libraries/LibDevTools/StorageHelpers.h +++ b/Libraries/LibDevTools/StorageHelpers.h @@ -17,6 +17,14 @@ namespace DevTools { DEVTOOLS_API Optional storage_host_for_url(String const&); DEVTOOLS_API Optional storage_host_name(String const&); +enum class StorageFieldType : u8 { + Immutable, + Mutable, + Hidden, + Private, +}; +JsonObject define_storage_field(StringView name, StorageFieldType); + JsonObject to_storage_operation_result(Optional const& error_string); JsonObject to_storage_operation_result(ErrorOr const& result);