diff options
author | Sam Atkins <atkinssj@gmail.com> | 2021-08-24 16:27:10 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-09-02 22:16:41 +0200 |
commit | 57ee7b3d561ef1bb24ba899a9eeeaa0c99c60b37 (patch) | |
tree | 90a931a844e4b80aa881f1ad341629007d36aa47 /Userland/Libraries/LibWeb/StylePropertiesModel.h | |
parent | 08aa7b77a7b4925c2694b999cadf4cc15a966455 (diff) | |
download | serenity-57ee7b3d561ef1bb24ba899a9eeeaa0c99c60b37.zip |
LibWeb: Modify StylePropertiesModel to work with JSON
Now that the DOM Inspector communicates remotely with the web content,
we can't read the `StyleProperties` object from a `Node` directly, but
will receive JSON over IPC. This updates the model to match.
Diffstat (limited to 'Userland/Libraries/LibWeb/StylePropertiesModel.h')
-rw-r--r-- | Userland/Libraries/LibWeb/StylePropertiesModel.h | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/Userland/Libraries/LibWeb/StylePropertiesModel.h b/Userland/Libraries/LibWeb/StylePropertiesModel.h index a5e84c617a..3b7ae1742c 100644 --- a/Userland/Libraries/LibWeb/StylePropertiesModel.h +++ b/Userland/Libraries/LibWeb/StylePropertiesModel.h @@ -1,19 +1,18 @@ /* * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> + * Copyright (c) 2021, Sam Atkins <atkinssj@gmail.com> * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once -#include <AK/NonnullRefPtrVector.h> +#include <AK/JsonObject.h> #include <LibGUI/Model.h> #include <LibWeb/CSS/StyleProperties.h> namespace Web { -class StyleProperties; - class StylePropertiesModel final : public GUI::Model { public: enum Column { @@ -22,18 +21,26 @@ public: __Count }; - static NonnullRefPtr<StylePropertiesModel> create(const CSS::StyleProperties& properties) { return adopt_ref(*new StylePropertiesModel(properties)); } + static NonnullRefPtr<StylePropertiesModel> create(StringView properties) + { + auto json_or_error = JsonValue::from_string(properties); + if (!json_or_error.has_value()) + VERIFY_NOT_REACHED(); + + return adopt_ref(*new StylePropertiesModel(json_or_error.value().as_object())); + } + + virtual ~StylePropertiesModel() override; - virtual int row_count(const GUI::ModelIndex& = GUI::ModelIndex()) const override; - virtual int column_count(const GUI::ModelIndex& = GUI::ModelIndex()) const override { return Column::__Count; } + virtual int row_count(GUI::ModelIndex const& = GUI::ModelIndex()) const override; + virtual int column_count(GUI::ModelIndex const& = GUI::ModelIndex()) const override { return Column::__Count; } virtual String column_name(int) const override; - virtual GUI::Variant data(const GUI::ModelIndex&, GUI::ModelRole) const override; + virtual GUI::Variant data(GUI::ModelIndex const&, GUI::ModelRole) const override; private: - explicit StylePropertiesModel(const CSS::StyleProperties& properties); - const CSS::StyleProperties& properties() const { return *m_properties; } + explicit StylePropertiesModel(JsonObject); - NonnullRefPtr<CSS::StyleProperties> m_properties; + JsonObject m_properties; struct Value { String name; |