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 | |
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')
-rw-r--r-- | Userland/Libraries/LibWeb/StylePropertiesModel.cpp | 23 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/StylePropertiesModel.h | 27 |
2 files changed, 30 insertions, 20 deletions
diff --git a/Userland/Libraries/LibWeb/StylePropertiesModel.cpp b/Userland/Libraries/LibWeb/StylePropertiesModel.cpp index 50ebd5b5e7..f2146d5f47 100644 --- a/Userland/Libraries/LibWeb/StylePropertiesModel.cpp +++ b/Userland/Libraries/LibWeb/StylePropertiesModel.cpp @@ -1,23 +1,21 @@ /* * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> + * Copyright (c) 2021, Sam Atkins <atkinssj@gmail.com> * * SPDX-License-Identifier: BSD-2-Clause */ +#include "StylePropertiesModel.h" #include <AK/QuickSort.h> -#include <LibWeb/CSS/PropertyID.h> -#include <LibWeb/CSS/StyleProperties.h> -#include <LibWeb/DOM/Document.h> -#include <LibWeb/StylePropertiesModel.h> namespace Web { -StylePropertiesModel::StylePropertiesModel(const CSS::StyleProperties& properties) - : m_properties(properties) +StylePropertiesModel::StylePropertiesModel(JsonObject properties) + : m_properties(move(properties)) { - properties.for_each_property([&](auto property_id, auto& property_value) { + m_properties.for_each_member([&](auto& property_name, auto& property_value) { Value value; - value.name = CSS::string_from_property_id(property_id); + value.name = property_name; value.value = property_value.to_string(); m_values.append(value); }); @@ -25,7 +23,11 @@ StylePropertiesModel::StylePropertiesModel(const CSS::StyleProperties& propertie quick_sort(m_values, [](auto& a, auto& b) { return a.name < b.name; }); } -int StylePropertiesModel::row_count(const GUI::ModelIndex&) const +StylePropertiesModel::~StylePropertiesModel() +{ +} + +int StylePropertiesModel::row_count(GUI::ModelIndex const&) const { return m_values.size(); } @@ -41,7 +43,8 @@ String StylePropertiesModel::column_name(int column_index) const VERIFY_NOT_REACHED(); } } -GUI::Variant StylePropertiesModel::data(const GUI::ModelIndex& index, GUI::ModelRole role) const + +GUI::Variant StylePropertiesModel::data(GUI::ModelIndex const& index, GUI::ModelRole role) const { auto& value = m_values[index.row()]; if (role == GUI::ModelRole::Display) { 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; |