class InspectorCSSId {
public:
- static InspectorCSSId createFromParts(const String& styleSheetId, const String& ordinal) { return InspectorCSSId(styleSheetId + ":" + ordinal); }
-
InspectorCSSId() { }
- explicit InspectorCSSId(const String& id)
+
+ explicit InspectorCSSId(RefPtr<InspectorObject> value)
+ {
+ if (!value->getString("styleSheetId", &m_styleSheetId))
+ return;
+
+ RefPtr<InspectorValue> ordinalValue = value->get("ordinal");
+ if (!ordinalValue || !ordinalValue->asNumber(&m_ordinal))
+ m_styleSheetId = "";
+ }
+
+ InspectorCSSId(const String& styleSheetId, unsigned ordinal)
+ : m_styleSheetId(styleSheetId)
+ , m_ordinal(ordinal)
{
- id.split(':', m_idParts);
- ASSERT(m_idParts.size() == 2);
}
- const String& styleSheetId() const { ASSERT(m_idParts.size() == 2); return m_idParts.at(0); }
- const String& ordinal() const { ASSERT(m_idParts.size() == 2); return m_idParts.at(1); }
- bool isEmpty() const { return m_idParts.isEmpty(); }
- String asString() const
+ bool isEmpty() const { return m_styleSheetId.isEmpty(); }
+
+ const String& styleSheetId() const { return m_styleSheetId; }
+ unsigned ordinal() const { return m_ordinal; }
+
+ PassRefPtr<InspectorValue> asInspectorValue() const
{
if (isEmpty())
- return String();
+ return InspectorValue::null();
- return m_idParts.at(0) + ":" + m_idParts.at(1);
+ RefPtr<InspectorObject> result = InspectorObject::create();
+ result->setString("styleSheetId", m_styleSheetId);
+ result->setNumber("ordinal", m_ordinal);
+ return result.release();
}
private:
- Vector<String> m_idParts;
+ String m_styleSheetId;
+ unsigned m_ordinal;
};
struct InspectorStyleProperty {
InspectorStyleSheet(const String& id, CSSStyleSheet* pageStyleSheet, const String& origin, const String& documentURL);
virtual ~InspectorStyleSheet();
- const String& id() const { return m_id; }
+ String id() const { return m_id; }
+ String finalURL() const;
CSSStyleSheet* pageStyleSheet() const { return m_pageStyleSheet; }
+ void reparseStyleSheet(const String&);
bool setText(const String&);
bool setRuleSelector(const InspectorCSSId&, const String& selector);
CSSStyleRule* addRule(const String& selector);
bool setPropertyText(const InspectorCSSId&, unsigned propertyIndex, const String& text, bool overwrite);
bool toggleProperty(const InspectorCSSId&, unsigned propertyIndex, bool disable);
+ virtual bool text(String* result) const;
virtual CSSStyleDeclaration* styleForId(const InspectorCSSId&) const;
protected:
bool canBind() const { return m_origin != "userAgent" && m_origin != "user"; }
InspectorCSSId ruleOrStyleId(CSSStyleDeclaration* style) const;
- void fixUnparsedPropertyRanges(CSSRuleSourceData* ruleData, const String& styleSheetText);
- virtual bool text(String* result) const;
virtual Document* ownerDocument() const;
virtual RefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration* style) const;
virtual unsigned ruleIndexByStyle(CSSStyleDeclaration*) const;
virtual bool setStyleText(CSSStyleDeclaration*, const String&);
private:
+ static void fixUnparsedPropertyRanges(CSSRuleSourceData* ruleData, const String& styleSheetText);
+ static void collectFlatRules(PassRefPtr<CSSRuleList>, Vector<CSSStyleRule*>* result);
bool ensureText() const;
- bool ensureSourceData(Node* ownerNode);
+ bool ensureSourceData();
+ void ensureFlatRules() const;
bool styleSheetTextWithChangedStyle(CSSStyleDeclaration*, const String& newStyleText, String* result);
- CSSStyleRule* findPageRuleWithStyle(CSSStyleDeclaration*);
InspectorCSSId ruleId(CSSStyleRule* rule) const;
InspectorCSSId styleId(CSSStyleDeclaration* style) const { return ruleOrStyleId(style); }
void revalidateStyle(CSSStyleDeclaration*);
bool inlineStyleSheetText(String* result) const;
PassRefPtr<InspectorArray> buildArrayForRuleList(CSSRuleList*);
-
String m_id;
CSSStyleSheet* m_pageStyleSheet;
String m_origin;
bool m_isRevalidating;
ParsedStyleSheet* m_parsedStyleSheet;
InspectorStyleMap m_inspectorStyles;
+ mutable Vector<CSSStyleRule*> m_flatRules;
friend class InspectorStyle;
};
}
InspectorStyleSheetForInlineStyle(const String& id, Element* element, const String& origin);
- virtual CSSStyleDeclaration* styleForId(const InspectorCSSId& id) const { ASSERT_UNUSED(id, id.ordinal() == "0"); return inlineStyle(); }
+ virtual bool text(String* result) const;
+ virtual CSSStyleDeclaration* styleForId(const InspectorCSSId& id) const { ASSERT_UNUSED(id, !id.ordinal()); return inlineStyle(); }
protected:
- virtual bool text(String* result) const;
virtual Document* ownerDocument() const;
virtual RefPtr<CSSRuleSourceData> ruleSourceDataFor(CSSStyleDeclaration* style) const { ASSERT_UNUSED(style, style == inlineStyle()); return m_ruleSourceData; }
virtual unsigned ruleIndexByStyle(CSSStyleDeclaration*) const { return 0; }