DevTools: refactor InspectorStyleSheet

Introduce InspectorStyleSheetBase, inherit InspectorStyleSheet and InspectorStyleSheetForInlineStyle from it.

BUG=341506

Review URL: https://codereview.chromium.org/202103002

git-svn-id: svn://svn.chromium.org/blink/trunk@169550 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 91fae4bb
...@@ -121,14 +121,10 @@ static unsigned computePseudoClassMask(JSONArray* pseudoClassArray) ...@@ -121,14 +121,10 @@ static unsigned computePseudoClassMask(JSONArray* pseudoClassArray)
class InspectorCSSAgent::StyleSheetAction : public InspectorHistory::Action { class InspectorCSSAgent::StyleSheetAction : public InspectorHistory::Action {
WTF_MAKE_NONCOPYABLE(StyleSheetAction); WTF_MAKE_NONCOPYABLE(StyleSheetAction);
public: public:
StyleSheetAction(const String& name, InspectorStyleSheet* styleSheet) StyleSheetAction(const String& name)
: InspectorHistory::Action(name) : InspectorHistory::Action(name)
, m_styleSheet(styleSheet)
{ {
} }
protected:
RefPtr<InspectorStyleSheet> m_styleSheet;
}; };
class InspectorCSSAgent::EnableResourceClient FINAL : public StyleSheetResourceClient { class InspectorCSSAgent::EnableResourceClient FINAL : public StyleSheetResourceClient {
...@@ -175,8 +171,9 @@ void InspectorCSSAgent::EnableResourceClient::setCSSStyleSheet(const String&, co ...@@ -175,8 +171,9 @@ void InspectorCSSAgent::EnableResourceClient::setCSSStyleSheet(const String&, co
class InspectorCSSAgent::SetStyleSheetTextAction FINAL : public InspectorCSSAgent::StyleSheetAction { class InspectorCSSAgent::SetStyleSheetTextAction FINAL : public InspectorCSSAgent::StyleSheetAction {
WTF_MAKE_NONCOPYABLE(SetStyleSheetTextAction); WTF_MAKE_NONCOPYABLE(SetStyleSheetTextAction);
public: public:
SetStyleSheetTextAction(InspectorStyleSheet* styleSheet, const String& text) SetStyleSheetTextAction(InspectorStyleSheetBase* styleSheet, const String& text)
: InspectorCSSAgent::StyleSheetAction("SetStyleSheetText", styleSheet) : InspectorCSSAgent::StyleSheetAction("SetStyleSheetText")
, m_styleSheet(styleSheet)
, m_text(text) , m_text(text)
{ {
} }
...@@ -220,6 +217,7 @@ public: ...@@ -220,6 +217,7 @@ public:
} }
private: private:
RefPtr<InspectorStyleSheetBase> m_styleSheet;
String m_text; String m_text;
String m_oldText; String m_oldText;
}; };
...@@ -227,8 +225,9 @@ private: ...@@ -227,8 +225,9 @@ private:
class InspectorCSSAgent::SetPropertyTextAction FINAL : public InspectorCSSAgent::StyleSheetAction { class InspectorCSSAgent::SetPropertyTextAction FINAL : public InspectorCSSAgent::StyleSheetAction {
WTF_MAKE_NONCOPYABLE(SetPropertyTextAction); WTF_MAKE_NONCOPYABLE(SetPropertyTextAction);
public: public:
SetPropertyTextAction(InspectorStyleSheet* styleSheet, const InspectorCSSId& cssId, unsigned propertyIndex, const String& text, bool overwrite) SetPropertyTextAction(InspectorStyleSheetBase* styleSheet, const InspectorCSSId& cssId, unsigned propertyIndex, const String& text, bool overwrite)
: InspectorCSSAgent::StyleSheetAction("SetPropertyText", styleSheet) : InspectorCSSAgent::StyleSheetAction("SetPropertyText")
, m_styleSheet(styleSheet)
, m_cssId(cssId) , m_cssId(cssId)
, m_propertyIndex(propertyIndex) , m_propertyIndex(propertyIndex)
, m_text(text) , m_text(text)
...@@ -274,6 +273,7 @@ public: ...@@ -274,6 +273,7 @@ public:
} }
private: private:
RefPtr<InspectorStyleSheetBase> m_styleSheet;
InspectorCSSId m_cssId; InspectorCSSId m_cssId;
unsigned m_propertyIndex; unsigned m_propertyIndex;
String m_text; String m_text;
...@@ -285,7 +285,8 @@ class InspectorCSSAgent::SetRuleSelectorAction FINAL : public InspectorCSSAgent: ...@@ -285,7 +285,8 @@ class InspectorCSSAgent::SetRuleSelectorAction FINAL : public InspectorCSSAgent:
WTF_MAKE_NONCOPYABLE(SetRuleSelectorAction); WTF_MAKE_NONCOPYABLE(SetRuleSelectorAction);
public: public:
SetRuleSelectorAction(InspectorStyleSheet* styleSheet, const InspectorCSSId& cssId, const String& selector) SetRuleSelectorAction(InspectorStyleSheet* styleSheet, const InspectorCSSId& cssId, const String& selector)
: InspectorCSSAgent::StyleSheetAction("SetRuleSelector", styleSheet) : InspectorCSSAgent::StyleSheetAction("SetRuleSelector")
, m_styleSheet(styleSheet)
, m_cssId(cssId) , m_cssId(cssId)
, m_selector(selector) , m_selector(selector)
{ {
...@@ -310,6 +311,7 @@ public: ...@@ -310,6 +311,7 @@ public:
} }
private: private:
RefPtr<InspectorStyleSheet> m_styleSheet;
InspectorCSSId m_cssId; InspectorCSSId m_cssId;
String m_selector; String m_selector;
String m_oldSelector; String m_oldSelector;
...@@ -319,7 +321,8 @@ class InspectorCSSAgent::AddRuleAction FINAL : public InspectorCSSAgent::StyleSh ...@@ -319,7 +321,8 @@ class InspectorCSSAgent::AddRuleAction FINAL : public InspectorCSSAgent::StyleSh
WTF_MAKE_NONCOPYABLE(AddRuleAction); WTF_MAKE_NONCOPYABLE(AddRuleAction);
public: public:
AddRuleAction(InspectorStyleSheet* styleSheet, const String& selector) AddRuleAction(InspectorStyleSheet* styleSheet, const String& selector)
: InspectorCSSAgent::StyleSheetAction("AddRule", styleSheet) : InspectorCSSAgent::StyleSheetAction("AddRule")
, m_styleSheet(styleSheet)
, m_selector(selector) , m_selector(selector)
{ {
} }
...@@ -346,6 +349,7 @@ public: ...@@ -346,6 +349,7 @@ public:
InspectorCSSId newRuleId() { return m_newId; } InspectorCSSId newRuleId() { return m_newId; }
private: private:
RefPtr<InspectorStyleSheet> m_styleSheet;
InspectorCSSId m_newId; InspectorCSSId m_newId;
String m_selector; String m_selector;
String m_oldSelector; String m_oldSelector;
...@@ -444,6 +448,7 @@ void InspectorCSSAgent::flushPendingFrontendMessages() ...@@ -444,6 +448,7 @@ void InspectorCSSAgent::flushPendingFrontendMessages()
void InspectorCSSAgent::reset() void InspectorCSSAgent::reset()
{ {
m_idToInspectorStyleSheet.clear(); m_idToInspectorStyleSheet.clear();
m_idToInspectorStyleSheetForInlineStyle.clear();
m_cssStyleSheetToInspectorStyleSheet.clear(); m_cssStyleSheetToInspectorStyleSheet.clear();
m_documentToCSSStyleSheets.clear(); m_documentToCSSStyleSheets.clear();
m_invalidatedDocuments.clear(); m_invalidatedDocuments.clear();
...@@ -819,7 +824,7 @@ void InspectorCSSAgent::getPlatformFontsForNode(ErrorString* errorString, int no ...@@ -819,7 +824,7 @@ void InspectorCSSAgent::getPlatformFontsForNode(ErrorString* errorString, int no
void InspectorCSSAgent::getStyleSheetText(ErrorString* errorString, const String& styleSheetId, String* result) void InspectorCSSAgent::getStyleSheetText(ErrorString* errorString, const String& styleSheetId, String* result)
{ {
InspectorStyleSheet* inspectorStyleSheet = assertStyleSheetForId(errorString, styleSheetId); InspectorStyleSheetBase* inspectorStyleSheet = assertStyleSheetForId(errorString, styleSheetId);
if (!inspectorStyleSheet) if (!inspectorStyleSheet)
return; return;
...@@ -828,7 +833,7 @@ void InspectorCSSAgent::getStyleSheetText(ErrorString* errorString, const String ...@@ -828,7 +833,7 @@ void InspectorCSSAgent::getStyleSheetText(ErrorString* errorString, const String
void InspectorCSSAgent::setStyleSheetText(ErrorString* errorString, const String& styleSheetId, const String& text) void InspectorCSSAgent::setStyleSheetText(ErrorString* errorString, const String& styleSheetId, const String& text)
{ {
InspectorStyleSheet* inspectorStyleSheet = assertStyleSheetForId(errorString, styleSheetId); InspectorStyleSheetBase* inspectorStyleSheet = assertStyleSheetForId(errorString, styleSheetId);
if (!inspectorStyleSheet) { if (!inspectorStyleSheet) {
*errorString = "Style sheet with id " + styleSheetId + " not found."; *errorString = "Style sheet with id " + styleSheetId + " not found.";
return; return;
...@@ -844,7 +849,7 @@ void InspectorCSSAgent::setPropertyText(ErrorString* errorString, const RefPtr<J ...@@ -844,7 +849,7 @@ void InspectorCSSAgent::setPropertyText(ErrorString* errorString, const RefPtr<J
InspectorCSSId compoundId(fullStyleId); InspectorCSSId compoundId(fullStyleId);
ASSERT(!compoundId.isEmpty()); ASSERT(!compoundId.isEmpty());
InspectorStyleSheet* inspectorStyleSheet = assertStyleSheetForId(errorString, compoundId.styleSheetId()); InspectorStyleSheetBase* inspectorStyleSheet = assertStyleSheetForId(errorString, compoundId.styleSheetId());
if (!inspectorStyleSheet) if (!inspectorStyleSheet)
return; return;
...@@ -860,7 +865,7 @@ void InspectorCSSAgent::setRuleSelector(ErrorString* errorString, const RefPtr<J ...@@ -860,7 +865,7 @@ void InspectorCSSAgent::setRuleSelector(ErrorString* errorString, const RefPtr<J
InspectorCSSId compoundId(fullRuleId); InspectorCSSId compoundId(fullRuleId);
ASSERT(!compoundId.isEmpty()); ASSERT(!compoundId.isEmpty());
InspectorStyleSheet* inspectorStyleSheet = assertStyleSheetForId(errorString, compoundId.styleSheetId()); InspectorStyleSheet* inspectorStyleSheet = assertInspectorStyleSheetForId(errorString, compoundId.styleSheetId());
if (!inspectorStyleSheet) if (!inspectorStyleSheet)
return; return;
...@@ -901,7 +906,7 @@ void InspectorCSSAgent::createStyleSheet(ErrorString* errorString, const String& ...@@ -901,7 +906,7 @@ void InspectorCSSAgent::createStyleSheet(ErrorString* errorString, const String&
void InspectorCSSAgent::addRule(ErrorString* errorString, const String& styleSheetId, const String& selector, RefPtr<TypeBuilder::CSS::CSSRule>& result) void InspectorCSSAgent::addRule(ErrorString* errorString, const String& styleSheetId, const String& selector, RefPtr<TypeBuilder::CSS::CSSRule>& result)
{ {
InspectorStyleSheet* inspectorStyleSheet = assertStyleSheetForId(errorString, styleSheetId); InspectorStyleSheet* inspectorStyleSheet = assertInspectorStyleSheetForId(errorString, styleSheetId);
if (!inspectorStyleSheet) if (!inspectorStyleSheet)
return; return;
...@@ -1056,8 +1061,8 @@ InspectorStyleSheetForInlineStyle* InspectorCSSAgent::asInspectorStyleSheet(Elem ...@@ -1056,8 +1061,8 @@ InspectorStyleSheetForInlineStyle* InspectorCSSAgent::asInspectorStyleSheet(Elem
return 0; return 0;
String newStyleSheetId = String::number(m_lastStyleSheetId++); String newStyleSheetId = String::number(m_lastStyleSheetId++);
RefPtr<InspectorStyleSheetForInlineStyle> inspectorStyleSheet = InspectorStyleSheetForInlineStyle::create(m_pageAgent, m_resourceAgent, newStyleSheetId, element, this); RefPtr<InspectorStyleSheetForInlineStyle> inspectorStyleSheet = InspectorStyleSheetForInlineStyle::create(newStyleSheetId, element, this);
m_idToInspectorStyleSheet.set(newStyleSheetId, inspectorStyleSheet); m_idToInspectorStyleSheetForInlineStyle.set(newStyleSheetId, inspectorStyleSheet);
m_nodeToInspectorStyleSheet.set(element, inspectorStyleSheet); m_nodeToInspectorStyleSheet.set(element, inspectorStyleSheet);
return inspectorStyleSheet.get(); return inspectorStyleSheet.get();
} }
...@@ -1174,7 +1179,7 @@ InspectorStyleSheet* InspectorCSSAgent::viaInspectorStyleSheet(Document* documen ...@@ -1174,7 +1179,7 @@ InspectorStyleSheet* InspectorCSSAgent::viaInspectorStyleSheet(Document* documen
return m_documentToViaInspectorStyleSheet.get(document); return m_documentToViaInspectorStyleSheet.get(document);
} }
InspectorStyleSheet* InspectorCSSAgent::assertStyleSheetForId(ErrorString* errorString, const String& styleSheetId) InspectorStyleSheet* InspectorCSSAgent::assertInspectorStyleSheetForId(ErrorString* errorString, const String& styleSheetId)
{ {
IdToInspectorStyleSheet::iterator it = m_idToInspectorStyleSheet.find(styleSheetId); IdToInspectorStyleSheet::iterator it = m_idToInspectorStyleSheet.find(styleSheetId);
if (it == m_idToInspectorStyleSheet.end()) { if (it == m_idToInspectorStyleSheet.end()) {
...@@ -1184,6 +1189,20 @@ InspectorStyleSheet* InspectorCSSAgent::assertStyleSheetForId(ErrorString* error ...@@ -1184,6 +1189,20 @@ InspectorStyleSheet* InspectorCSSAgent::assertStyleSheetForId(ErrorString* error
return it->value.get(); return it->value.get();
} }
InspectorStyleSheetBase* InspectorCSSAgent::assertStyleSheetForId(ErrorString* errorString, const String& styleSheetId)
{
String placeholder;
InspectorStyleSheetBase* result = assertInspectorStyleSheetForId(&placeholder, styleSheetId);
if (result)
return result;
IdToInspectorStyleSheetForInlineStyle::iterator it = m_idToInspectorStyleSheetForInlineStyle.find(styleSheetId);
if (it == m_idToInspectorStyleSheetForInlineStyle.end()) {
*errorString = "No style sheet with given id found";
return 0;
}
return it->value.get();
}
TypeBuilder::CSS::StyleSheetOrigin::Enum InspectorCSSAgent::detectOrigin(CSSStyleSheet* pageStyleSheet, Document* ownerDocument) TypeBuilder::CSS::StyleSheetOrigin::Enum InspectorCSSAgent::detectOrigin(CSSStyleSheet* pageStyleSheet, Document* ownerDocument)
{ {
if (m_creatingViaInspectorStyleSheet) if (m_creatingViaInspectorStyleSheet)
...@@ -1298,7 +1317,7 @@ void InspectorCSSAgent::didRemoveDOMNode(Node* node) ...@@ -1298,7 +1317,7 @@ void InspectorCSSAgent::didRemoveDOMNode(Node* node)
if (it == m_nodeToInspectorStyleSheet.end()) if (it == m_nodeToInspectorStyleSheet.end())
return; return;
m_idToInspectorStyleSheet.remove(it->value->id()); m_idToInspectorStyleSheetForInlineStyle.remove(it->value->id());
m_nodeToInspectorStyleSheet.remove(node); m_nodeToInspectorStyleSheet.remove(node);
} }
...@@ -1314,7 +1333,7 @@ void InspectorCSSAgent::didModifyDOMAttr(Element* element) ...@@ -1314,7 +1333,7 @@ void InspectorCSSAgent::didModifyDOMAttr(Element* element)
it->value->didModifyElementAttribute(); it->value->didModifyElementAttribute();
} }
void InspectorCSSAgent::styleSheetChanged(InspectorStyleSheet* styleSheet) void InspectorCSSAgent::styleSheetChanged(InspectorStyleSheetBase* styleSheet)
{ {
flushPendingFrontendMessages(); flushPendingFrontendMessages();
m_frontend->styleSheetChanged(styleSheet->id()); m_frontend->styleSheetChanged(styleSheet->id());
......
...@@ -63,7 +63,7 @@ class InspectorCSSAgent FINAL ...@@ -63,7 +63,7 @@ class InspectorCSSAgent FINAL
: public InspectorBaseAgent<InspectorCSSAgent> : public InspectorBaseAgent<InspectorCSSAgent>
, public InspectorDOMAgent::DOMListener , public InspectorDOMAgent::DOMListener
, public InspectorBackendDispatcher::CSSCommandHandler , public InspectorBackendDispatcher::CSSCommandHandler
, public InspectorStyleSheet::Listener { , public InspectorStyleSheetBase::Listener {
WTF_MAKE_NONCOPYABLE(InspectorCSSAgent); WTF_MAKE_NONCOPYABLE(InspectorCSSAgent);
public: public:
enum MediaListSource { enum MediaListSource {
...@@ -148,6 +148,7 @@ private: ...@@ -148,6 +148,7 @@ private:
InspectorCSSAgent(InspectorDOMAgent*, InspectorPageAgent*, InspectorResourceAgent*); InspectorCSSAgent(InspectorDOMAgent*, InspectorPageAgent*, InspectorResourceAgent*);
typedef HashMap<String, RefPtr<InspectorStyleSheet> > IdToInspectorStyleSheet; typedef HashMap<String, RefPtr<InspectorStyleSheet> > IdToInspectorStyleSheet;
typedef HashMap<String, RefPtr<InspectorStyleSheetForInlineStyle> > IdToInspectorStyleSheetForInlineStyle;
typedef HashMap<Node*, RefPtr<InspectorStyleSheetForInlineStyle> > NodeToInspectorStyleSheet; // bogus "stylesheets" with elements' inline styles typedef HashMap<Node*, RefPtr<InspectorStyleSheetForInlineStyle> > NodeToInspectorStyleSheet; // bogus "stylesheets" with elements' inline styles
typedef HashMap<int, unsigned> NodeIdToForcedPseudoState; typedef HashMap<int, unsigned> NodeIdToForcedPseudoState;
...@@ -167,7 +168,8 @@ private: ...@@ -167,7 +168,8 @@ private:
InspectorStyleSheet* bindStyleSheet(CSSStyleSheet*); InspectorStyleSheet* bindStyleSheet(CSSStyleSheet*);
String unbindStyleSheet(InspectorStyleSheet*); String unbindStyleSheet(InspectorStyleSheet*);
InspectorStyleSheet* viaInspectorStyleSheet(Document*, bool createIfAbsent); InspectorStyleSheet* viaInspectorStyleSheet(Document*, bool createIfAbsent);
InspectorStyleSheet* assertStyleSheetForId(ErrorString*, const String&); InspectorStyleSheet* assertInspectorStyleSheetForId(ErrorString*, const String&);
InspectorStyleSheetBase* assertStyleSheetForId(ErrorString*, const String&);
TypeBuilder::CSS::StyleSheetOrigin::Enum detectOrigin(CSSStyleSheet* pageStyleSheet, Document* ownerDocument); TypeBuilder::CSS::StyleSheetOrigin::Enum detectOrigin(CSSStyleSheet* pageStyleSheet, Document* ownerDocument);
bool styleSheetEditInProgress() const { return m_styleSheetsPendingMutation || m_styleDeclarationPendingMutation || m_isSettingStyleSheetText; } bool styleSheetEditInProgress() const { return m_styleSheetsPendingMutation || m_styleDeclarationPendingMutation || m_isSettingStyleSheetText; }
...@@ -181,7 +183,7 @@ private: ...@@ -181,7 +183,7 @@ private:
virtual void didModifyDOMAttr(Element*) OVERRIDE; virtual void didModifyDOMAttr(Element*) OVERRIDE;
// InspectorStyleSheet::Listener implementation // InspectorStyleSheet::Listener implementation
virtual void styleSheetChanged(InspectorStyleSheet*) OVERRIDE; virtual void styleSheetChanged(InspectorStyleSheetBase*) OVERRIDE;
virtual void willReparseStyleSheet() OVERRIDE; virtual void willReparseStyleSheet() OVERRIDE;
virtual void didReparseStyleSheet() OVERRIDE; virtual void didReparseStyleSheet() OVERRIDE;
...@@ -193,6 +195,7 @@ private: ...@@ -193,6 +195,7 @@ private:
InspectorResourceAgent* m_resourceAgent; InspectorResourceAgent* m_resourceAgent;
IdToInspectorStyleSheet m_idToInspectorStyleSheet; IdToInspectorStyleSheet m_idToInspectorStyleSheet;
IdToInspectorStyleSheetForInlineStyle m_idToInspectorStyleSheetForInlineStyle;
HashMap<CSSStyleSheet*, RefPtr<InspectorStyleSheet> > m_cssStyleSheetToInspectorStyleSheet; HashMap<CSSStyleSheet*, RefPtr<InspectorStyleSheet> > m_cssStyleSheetToInspectorStyleSheet;
typedef HashMap<Document*, OwnPtr<HashSet<CSSStyleSheet*> > > DocumentStyleSheets; typedef HashMap<Document*, OwnPtr<HashSet<CSSStyleSheet*> > > DocumentStyleSheets;
DocumentStyleSheets m_documentToCSSStyleSheets; DocumentStyleSheets m_documentToCSSStyleSheets;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment