OSDN Git Service

Merge WebKit at r73109: Initial merge by git.
[android-x86/external-webkit.git] / WebCore / inspector / InspectorStyleSheet.h
index e671834..b649bed 100644 (file)
@@ -51,28 +51,43 @@ class Node;
 
 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 {
@@ -156,8 +171,10 @@ public:
     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);
@@ -168,13 +185,12 @@ public:
     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;
@@ -187,10 +203,12 @@ protected:
     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*);
@@ -199,7 +217,6 @@ private:
     bool inlineStyleSheetText(String* result) const;
     PassRefPtr<InspectorArray> buildArrayForRuleList(CSSRuleList*);
 
-
     String m_id;
     CSSStyleSheet* m_pageStyleSheet;
     String m_origin;
@@ -207,6 +224,7 @@ private:
     bool m_isRevalidating;
     ParsedStyleSheet* m_parsedStyleSheet;
     InspectorStyleMap m_inspectorStyles;
+    mutable Vector<CSSStyleRule*> m_flatRules;
 
     friend class InspectorStyle;
 };
@@ -219,10 +237,10 @@ public:
     }
 
     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; }