| // Copyright 2016 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef COMPONENTS_UI_DEVTOOLS_CSS_AGENT_H_ | |
| #define COMPONENTS_UI_DEVTOOLS_CSS_AGENT_H_ | |
| #include "base/memory/raw_ptr.h" | |
| #include "components/ui_devtools/css.h" | |
| #include "components/ui_devtools/dom_agent.h" | |
| namespace gfx { | |
| class Rect; | |
| } | |
| namespace ui_devtools { | |
| class UIElement; | |
| class UI_DEVTOOLS_EXPORT CSSAgent | |
| : public UiDevToolsBaseAgent<protocol::CSS::Metainfo>, | |
| public DOMAgentObserver { | |
| public: | |
| explicit CSSAgent(DOMAgent* dom_agent); | |
| CSSAgent(const CSSAgent&) = delete; | |
| CSSAgent& operator=(const CSSAgent&) = delete; | |
| ~CSSAgent() override; | |
| // CSS::Backend: | |
| protocol::Response enable() override; | |
| protocol::Response disable() override; | |
| protocol::Response getMatchedStylesForNode( | |
| int node_id, | |
| std::unique_ptr<protocol::Array<protocol::CSS::RuleMatch>>* | |
| matched_css_rules) override; | |
| protocol::Response getStyleSheetText(const protocol::String& style_sheet_id, | |
| protocol::String* text) override; | |
| protocol::Response setStyleTexts( | |
| std::unique_ptr<protocol::Array<protocol::CSS::StyleDeclarationEdit>> | |
| edits, | |
| std::unique_ptr<protocol::Array<protocol::CSS::CSSStyle>>* result) | |
| override; | |
| // DOMAgentObserver: | |
| void OnElementBoundsChanged(UIElement* ui_element) override; | |
| private: | |
| std::unique_ptr<protocol::CSS::CSSStyle> GetStylesForUIElement( | |
| UIElement* ui_element); | |
| void InvalidateStyleSheet(UIElement* ui_element); | |
| bool GetPropertiesForUIElement(UIElement* ui_element, | |
| gfx::Rect* bounds, | |
| bool* visible); | |
| bool SetPropertiesForUIElement(UIElement* ui_element, | |
| const gfx::Rect& bounds, | |
| bool visible); | |
| std::unique_ptr<protocol::Array<protocol::CSS::RuleMatch>> BuildMatchedStyles( | |
| UIElement* ui_element); | |
| // Sends header to frontend for each section in properties panel. | |
| void InitStylesheetHeaders(UIElement* ui_element); | |
| const raw_ptr<DOMAgent> dom_agent_; | |
| }; | |
| } // namespace ui_devtools | |
| #endif // COMPONENTS_UI_DEVTOOLS_CSS_AGENT_H_ |