summaryrefslogtreecommitdiff
path: root/Userland
diff options
context:
space:
mode:
authorSam Atkins <atkinssj@gmail.com>2021-08-24 16:27:10 +0100
committerAndreas Kling <kling@serenityos.org>2021-09-02 22:16:41 +0200
commit57ee7b3d561ef1bb24ba899a9eeeaa0c99c60b37 (patch)
tree90a931a844e4b80aa881f1ad341629007d36aa47 /Userland
parent08aa7b77a7b4925c2694b999cadf4cc15a966455 (diff)
downloadserenity-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.cpp23
-rw-r--r--Userland/Libraries/LibWeb/StylePropertiesModel.h27
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;