Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / inspector / InspectorStyleSheet.h
index 87d06af..557c512 100644 (file)
@@ -39,8 +39,9 @@
 
 class ParsedStyleSheet;
 
-namespace WebCore {
+namespace blink {
 
+class CSSMediaRule;
 class CSSRuleList;
 class CSSStyleDeclaration;
 class CSSStyleRule;
@@ -52,7 +53,7 @@ class InspectorPageAgent;
 class InspectorResourceAgent;
 class InspectorStyleSheetBase;
 
-typedef WillBePersistentHeapVector<RefPtrWillBeMember<CSSRule> > CSSRuleVector;
+typedef WillBeHeapVector<RefPtrWillBeMember<CSSRule> > CSSRuleVector;
 typedef String ErrorString;
 
 class InspectorCSSId {
@@ -111,9 +112,9 @@ public:
     String rawText;
 };
 
-class InspectorStyle FINAL : public RefCounted<InspectorStyle> {
+class InspectorStyle FINAL : public RefCountedWillBeGarbageCollectedFinalized<InspectorStyle> {
 public:
-    static PassRefPtr<InspectorStyle> create(const InspectorCSSId&, PassRefPtrWillBeRawPtr<CSSStyleDeclaration>, InspectorStyleSheetBase* parentStyleSheet);
+    static PassRefPtrWillBeRawPtr<InspectorStyle> create(const InspectorCSSId&, PassRefPtrWillBeRawPtr<CSSStyleDeclaration>, InspectorStyleSheetBase* parentStyleSheet);
 
     CSSStyleDeclaration* cssStyle() const { return m_style.get(); }
     PassRefPtr<TypeBuilder::CSS::CSSStyle> buildObjectForStyle() const;
@@ -121,6 +122,8 @@ public:
     bool setPropertyText(unsigned index, const String& text, bool overwrite, ExceptionState&);
     bool styleText(String* result) const;
 
+    void trace(Visitor*);
+
 private:
     InspectorStyle(const InspectorCSSId&, PassRefPtrWillBeRawPtr<CSSStyleDeclaration>, InspectorStyleSheetBase* parentStyleSheet);
 
@@ -134,13 +137,13 @@ private:
     inline Document* ownerDocument() const;
 
     InspectorCSSId m_styleId;
-    RefPtrWillBePersistent<CSSStyleDeclaration> m_style;
-    InspectorStyleSheetBase* m_parentStyleSheet;
+    RefPtrWillBeMember<CSSStyleDeclaration> m_style;
+    RawPtrWillBeMember<InspectorStyleSheetBase> m_parentStyleSheet;
     mutable std::pair<String, String> m_format;
     mutable bool m_formatAcquired;
 };
 
-class InspectorStyleSheetBase : public RefCounted<InspectorStyleSheetBase> {
+class InspectorStyleSheetBase : public RefCountedWillBeGarbageCollectedFinalized<InspectorStyleSheetBase> {
 public:
     class Listener {
     public:
@@ -151,6 +154,7 @@ public:
         virtual void didReparseStyleSheet() = 0;
     };
     virtual ~InspectorStyleSheetBase() { }
+    virtual void trace(Visitor*) { }
 
     String id() const { return m_id; }
 
@@ -176,7 +180,7 @@ protected:
     void fireStyleSheetChanged();
     PassOwnPtr<Vector<unsigned> > lineEndings();
 
-    virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId&) = 0;
+    virtual PassRefPtrWillBeRawPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId&) = 0;
     virtual unsigned ruleCount() = 0;
 
     // Also accessed by friend class InspectorStyle.
@@ -192,9 +196,10 @@ private:
 
 class InspectorStyleSheet : public InspectorStyleSheetBase {
 public:
-    static PassRefPtr<InspectorStyleSheet> create(InspectorPageAgent*, InspectorResourceAgent*, const String& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum, const String& documentURL, Listener*);
+    static PassRefPtrWillBeRawPtr<InspectorStyleSheet> create(InspectorPageAgent*, InspectorResourceAgent*, const String& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum, const String& documentURL, Listener*);
 
     virtual ~InspectorStyleSheet();
+    virtual void trace(Visitor*) OVERRIDE;
 
     String finalURL() const;
     virtual Document* ownerDocument() const OVERRIDE;
@@ -202,8 +207,8 @@ public:
     virtual bool getText(String* result) const OVERRIDE;
     String ruleSelector(const InspectorCSSId&, ExceptionState&);
     bool setRuleSelector(const InspectorCSSId&, const String& selector, ExceptionState&);
-    CSSStyleRule* addRule(const String& selector, ExceptionState&);
-    bool deleteRule(const InspectorCSSId&, ExceptionState&);
+    CSSStyleRule* addRule(const String& ruleText, const SourceRange& location, ExceptionState&);
+    bool deleteRule(const InspectorCSSId&, const String& oldText, ExceptionState&);
 
     CSSStyleSheet* pageStyleSheet() const { return m_pageStyleSheet.get(); }
 
@@ -224,7 +229,7 @@ public:
     const CSSRuleVector& flatRules();
 
 protected:
-    virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId&) OVERRIDE;
+    virtual PassRefPtrWillBeRawPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId&) OVERRIDE;
     virtual unsigned ruleCount() OVERRIDE;
 
     // Also accessed by friend class InspectorStyle.
@@ -233,7 +238,11 @@ protected:
 
 private:
     InspectorStyleSheet(InspectorPageAgent*, InspectorResourceAgent*, const String& id, PassRefPtrWillBeRawPtr<CSSStyleSheet> pageStyleSheet, TypeBuilder::CSS::StyleSheetOrigin::Enum, const String& documentURL, Listener*);
-
+    unsigned ruleIndexBySourceRange(const CSSMediaRule* parentMediaRule, const SourceRange&);
+    CSSStyleRule* insertCSSOMRuleInStyleSheet(const SourceRange&, const String& ruleText, ExceptionState&);
+    CSSStyleRule* insertCSSOMRuleInMediaRule(CSSMediaRule*, const SourceRange&, const String& ruleText, ExceptionState&);
+    CSSStyleRule* insertCSSOMRuleBySourceRange(const SourceRange&, const String& ruleText, ExceptionState&);
+    bool verifyRuleText(const String& ruleText);
     unsigned ruleIndexByStyle(CSSStyleDeclaration*) const;
     String sourceMapURL() const;
     String sourceURL() const;
@@ -249,9 +258,12 @@ private:
     bool hasSourceURL() const;
     bool startsAtZero() const;
 
-    InspectorPageAgent* m_pageAgent;
-    InspectorResourceAgent* m_resourceAgent;
-    RefPtrWillBePersistent<CSSStyleSheet> m_pageStyleSheet;
+    void updateText(const String& newText);
+    Element* ownerStyleElement() const;
+
+    RawPtrWillBeMember<InspectorPageAgent> m_pageAgent;
+    RawPtrWillBeMember<InspectorResourceAgent> m_resourceAgent;
+    RefPtrWillBeMember<CSSStyleSheet> m_pageStyleSheet;
     TypeBuilder::CSS::StyleSheetOrigin::Enum m_origin;
     String m_documentURL;
     OwnPtr<ParsedStyleSheet> m_parsedStyleSheet;
@@ -261,7 +273,7 @@ private:
 
 class InspectorStyleSheetForInlineStyle FINAL : public InspectorStyleSheetBase {
 public:
-    static PassRefPtr<InspectorStyleSheetForInlineStyle> create(const String& id, PassRefPtrWillBeRawPtr<Element>, Listener*);
+    static PassRefPtrWillBeRawPtr<InspectorStyleSheetForInlineStyle> create(const String& id, PassRefPtrWillBeRawPtr<Element>, Listener*);
 
     void didModifyElementAttribute();
     virtual Document* ownerDocument() const OVERRIDE;
@@ -272,8 +284,10 @@ public:
     virtual InspectorCSSId styleId(CSSStyleDeclaration* style) const OVERRIDE { return InspectorCSSId(id(), 0); }
     virtual bool setStyleText(const InspectorCSSId&, const String&) OVERRIDE;
 
+    virtual void trace(Visitor*) OVERRIDE;
+
 protected:
-    virtual PassRefPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId&) OVERRIDE;
+    virtual PassRefPtrWillBeRawPtr<InspectorStyle> inspectorStyleForId(const InspectorCSSId&) OVERRIDE;
     virtual unsigned ruleCount() OVERRIDE { return 1; }
 
     // Also accessed by friend class InspectorStyle.
@@ -286,9 +300,9 @@ private:
     const String& elementStyleText() const;
     PassRefPtrWillBeRawPtr<CSSRuleSourceData> getStyleAttributeData() const;
 
-    RefPtrWillBePersistent<Element> m_element;
-    RefPtrWillBePersistent<CSSRuleSourceData> m_ruleSourceData;
-    RefPtr<InspectorStyle> m_inspectorStyle;
+    RefPtrWillBeMember<Element> m_element;
+    RefPtrWillBeMember<CSSRuleSourceData> m_ruleSourceData;
+    RefPtrWillBeMember<InspectorStyle> m_inspectorStyle;
 
     // Contains "style" attribute value.
     mutable String m_styleText;
@@ -296,8 +310,8 @@ private:
 };
 
 
-} // namespace WebCore
+} // namespace blink
 
-WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(WebCore::InspectorStyleProperty);
+WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::InspectorStyleProperty);
 
 #endif // !defined(InspectorStyleSheet_h)