OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010, Google Inc. All rights reserved. | 2 * Copyright (C) 2010, Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 24 matching lines...) Expand all Loading... |
35 #include "wtf/HashCountedSet.h" | 35 #include "wtf/HashCountedSet.h" |
36 #include "wtf/HashMap.h" | 36 #include "wtf/HashMap.h" |
37 #include "wtf/HashSet.h" | 37 #include "wtf/HashSet.h" |
38 #include "wtf/PassRefPtr.h" | 38 #include "wtf/PassRefPtr.h" |
39 #include "wtf/RefPtr.h" | 39 #include "wtf/RefPtr.h" |
40 #include "wtf/Vector.h" | 40 #include "wtf/Vector.h" |
41 #include "wtf/text/WTFString.h" | 41 #include "wtf/text/WTFString.h" |
42 | 42 |
43 namespace WebCore { | 43 namespace WebCore { |
44 | 44 |
45 class ChangeRegionOversetTask; | |
46 struct CSSParserString; | 45 struct CSSParserString; |
47 class CSSRule; | 46 class CSSRule; |
48 class CSSRuleList; | 47 class CSSRuleList; |
49 class CSSStyleRule; | 48 class CSSStyleRule; |
50 class CSSStyleSheet; | 49 class CSSStyleSheet; |
51 class Document; | 50 class Document; |
52 class Element; | 51 class Element; |
53 class InspectorFrontend; | 52 class InspectorFrontend; |
54 class InspectorResourceAgent; | 53 class InspectorResourceAgent; |
55 class InstrumentingAgents; | 54 class InstrumentingAgents; |
56 class MediaList; | 55 class MediaList; |
57 class Node; | 56 class Node; |
58 class NodeList; | 57 class NodeList; |
59 class PlatformFontUsage; | 58 class PlatformFontUsage; |
60 class RenderText; | 59 class RenderText; |
61 class StyleResolver; | 60 class StyleResolver; |
62 class UpdateRegionLayoutTask; | |
63 | 61 |
64 class InspectorCSSAgent FINAL | 62 class InspectorCSSAgent FINAL |
65 : public InspectorBaseAgent<InspectorCSSAgent> | 63 : public InspectorBaseAgent<InspectorCSSAgent> |
66 , public InspectorDOMAgent::DOMListener | 64 , public InspectorDOMAgent::DOMListener |
67 , public InspectorBackendDispatcher::CSSCommandHandler | 65 , public InspectorBackendDispatcher::CSSCommandHandler |
68 , public InspectorStyleSheet::Listener { | 66 , public InspectorStyleSheet::Listener { |
69 WTF_MAKE_NONCOPYABLE(InspectorCSSAgent); | 67 WTF_MAKE_NONCOPYABLE(InspectorCSSAgent); |
70 public: | 68 public: |
71 enum MediaListSource { | 69 enum MediaListSource { |
72 MediaListSourceLinkedSheet, | 70 MediaListSourceLinkedSheet, |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 bool forcePseudoState(Element*, CSSSelector::PseudoType); | 106 bool forcePseudoState(Element*, CSSSelector::PseudoType); |
109 virtual void setFrontend(InspectorFrontend*) OVERRIDE; | 107 virtual void setFrontend(InspectorFrontend*) OVERRIDE; |
110 virtual void clearFrontend() OVERRIDE; | 108 virtual void clearFrontend() OVERRIDE; |
111 virtual void discardAgent() OVERRIDE; | 109 virtual void discardAgent() OVERRIDE; |
112 virtual void restore() OVERRIDE; | 110 virtual void restore() OVERRIDE; |
113 virtual void enable(ErrorString*, PassRefPtr<EnableCallback>) OVERRIDE; | 111 virtual void enable(ErrorString*, PassRefPtr<EnableCallback>) OVERRIDE; |
114 virtual void disable(ErrorString*) OVERRIDE; | 112 virtual void disable(ErrorString*) OVERRIDE; |
115 void reset(); | 113 void reset(); |
116 void didCommitLoad(Frame*, DocumentLoader*); | 114 void didCommitLoad(Frame*, DocumentLoader*); |
117 void mediaQueryResultChanged(); | 115 void mediaQueryResultChanged(); |
118 void didCreateNamedFlow(Document*, NamedFlow*); | |
119 void willRemoveNamedFlow(Document*, NamedFlow*); | |
120 void willMutateRules(); | 116 void willMutateRules(); |
121 void didMutateRules(CSSStyleSheet*); | 117 void didMutateRules(CSSStyleSheet*); |
122 void willMutateStyle(); | 118 void willMutateStyle(); |
123 void didMutateStyle(CSSStyleDeclaration*, bool); | 119 void didMutateStyle(CSSStyleDeclaration*, bool); |
124 | 120 |
125 private: | |
126 void regionLayoutUpdated(NamedFlow*, int documentNodeId); | |
127 void regionOversetChanged(NamedFlow*, int documentNodeId); | |
128 | |
129 public: | 121 public: |
130 void didUpdateRegionLayout(Document*, NamedFlow*); | |
131 void didChangeRegionOverset(Document*, NamedFlow*); | |
132 | |
133 void activeStyleSheetsUpdated(Document*); | 122 void activeStyleSheetsUpdated(Document*); |
134 void frameDetachedFromParent(Frame*); | 123 void frameDetachedFromParent(Frame*); |
135 | 124 |
136 virtual void getComputedStyleForNode(ErrorString*, int nodeId, RefPtr<TypeBu
ilder::Array<TypeBuilder::CSS::CSSComputedStyleProperty> >&) OVERRIDE; | 125 virtual void getComputedStyleForNode(ErrorString*, int nodeId, RefPtr<TypeBu
ilder::Array<TypeBuilder::CSS::CSSComputedStyleProperty> >&) OVERRIDE; |
137 virtual void getPlatformFontsForNode(ErrorString*, int nodeId, String* cssFa
milyName, RefPtr<TypeBuilder::Array<TypeBuilder::CSS::PlatformFontUsage> >&) OVE
RRIDE; | 126 virtual void getPlatformFontsForNode(ErrorString*, int nodeId, String* cssFa
milyName, RefPtr<TypeBuilder::Array<TypeBuilder::CSS::PlatformFontUsage> >&) OVE
RRIDE; |
138 virtual void getInlineStylesForNode(ErrorString*, int nodeId, RefPtr<TypeBui
lder::CSS::CSSStyle>& inlineStyle, RefPtr<TypeBuilder::CSS::CSSStyle>& attribute
s) OVERRIDE; | 127 virtual void getInlineStylesForNode(ErrorString*, int nodeId, RefPtr<TypeBui
lder::CSS::CSSStyle>& inlineStyle, RefPtr<TypeBuilder::CSS::CSSStyle>& attribute
s) OVERRIDE; |
139 virtual void getMatchedStylesForNode(ErrorString*, int nodeId, const bool* i
ncludePseudo, const bool* includeInherited, RefPtr<TypeBuilder::Array<TypeBuilde
r::CSS::RuleMatch> >& matchedCSSRules, RefPtr<TypeBuilder::Array<TypeBuilder::CS
S::PseudoIdMatches> >&, RefPtr<TypeBuilder::Array<TypeBuilder::CSS::InheritedSty
leEntry> >& inheritedEntries) OVERRIDE; | 128 virtual void getMatchedStylesForNode(ErrorString*, int nodeId, const bool* i
ncludePseudo, const bool* includeInherited, RefPtr<TypeBuilder::Array<TypeBuilde
r::CSS::RuleMatch> >& matchedCSSRules, RefPtr<TypeBuilder::Array<TypeBuilder::CS
S::PseudoIdMatches> >&, RefPtr<TypeBuilder::Array<TypeBuilder::CSS::InheritedSty
leEntry> >& inheritedEntries) OVERRIDE; |
140 virtual void getAllStyleSheets(ErrorString*, RefPtr<TypeBuilder::Array<TypeB
uilder::CSS::CSSStyleSheetHeader> >& styleSheetInfos) OVERRIDE; | 129 virtual void getAllStyleSheets(ErrorString*, RefPtr<TypeBuilder::Array<TypeB
uilder::CSS::CSSStyleSheetHeader> >& styleSheetInfos) OVERRIDE; |
141 virtual void getStyleSheet(ErrorString*, const String& styleSheetId, RefPtr<
TypeBuilder::CSS::CSSStyleSheetBody>& result) OVERRIDE; | 130 virtual void getStyleSheet(ErrorString*, const String& styleSheetId, RefPtr<
TypeBuilder::CSS::CSSStyleSheetBody>& result) OVERRIDE; |
142 virtual void getStyleSheetText(ErrorString*, const String& styleSheetId, Str
ing* result) OVERRIDE; | 131 virtual void getStyleSheetText(ErrorString*, const String& styleSheetId, Str
ing* result) OVERRIDE; |
143 virtual void setStyleSheetText(ErrorString*, const String& styleSheetId, con
st String& text) OVERRIDE; | 132 virtual void setStyleSheetText(ErrorString*, const String& styleSheetId, con
st String& text) OVERRIDE; |
144 virtual void setStyleText(ErrorString*, const RefPtr<JSONObject>& styleId, c
onst String& text, RefPtr<TypeBuilder::CSS::CSSStyle>& result) OVERRIDE; | 133 virtual void setStyleText(ErrorString*, const RefPtr<JSONObject>& styleId, c
onst String& text, RefPtr<TypeBuilder::CSS::CSSStyle>& result) OVERRIDE; |
145 virtual void setPropertyText(ErrorString*, const RefPtr<JSONObject>& styleId
, int propertyIndex, const String& text, bool overwrite, RefPtr<TypeBuilder::CSS
::CSSStyle>& result) OVERRIDE; | 134 virtual void setPropertyText(ErrorString*, const RefPtr<JSONObject>& styleId
, int propertyIndex, const String& text, bool overwrite, RefPtr<TypeBuilder::CSS
::CSSStyle>& result) OVERRIDE; |
146 virtual void toggleProperty(ErrorString*, const RefPtr<JSONObject>& styleId,
int propertyIndex, bool disable, RefPtr<TypeBuilder::CSS::CSSStyle>& result) OV
ERRIDE; | 135 virtual void toggleProperty(ErrorString*, const RefPtr<JSONObject>& styleId,
int propertyIndex, bool disable, RefPtr<TypeBuilder::CSS::CSSStyle>& result) OV
ERRIDE; |
147 virtual void setRuleSelector(ErrorString*, const RefPtr<JSONObject>& ruleId,
const String& selector, RefPtr<TypeBuilder::CSS::CSSRule>& result) OVERRIDE; | 136 virtual void setRuleSelector(ErrorString*, const RefPtr<JSONObject>& ruleId,
const String& selector, RefPtr<TypeBuilder::CSS::CSSRule>& result) OVERRIDE; |
148 virtual void addRule(ErrorString*, int contextNodeId, const String& selector
, RefPtr<TypeBuilder::CSS::CSSRule>& result) OVERRIDE; | 137 virtual void addRule(ErrorString*, int contextNodeId, const String& selector
, RefPtr<TypeBuilder::CSS::CSSRule>& result) OVERRIDE; |
149 virtual void getSupportedCSSProperties(ErrorString*, RefPtr<TypeBuilder::Arr
ay<TypeBuilder::CSS::CSSPropertyInfo> >& result) OVERRIDE; | 138 virtual void getSupportedCSSProperties(ErrorString*, RefPtr<TypeBuilder::Arr
ay<TypeBuilder::CSS::CSSPropertyInfo> >& result) OVERRIDE; |
150 virtual void forcePseudoState(ErrorString*, int nodeId, const RefPtr<JSONArr
ay>& forcedPseudoClasses) OVERRIDE; | 139 virtual void forcePseudoState(ErrorString*, int nodeId, const RefPtr<JSONArr
ay>& forcedPseudoClasses) OVERRIDE; |
151 virtual void getNamedFlowCollection(ErrorString*, int documentNodeId, RefPtr
<TypeBuilder::Array<TypeBuilder::CSS::NamedFlow> >& result) OVERRIDE; | |
152 | 140 |
153 PassRefPtr<TypeBuilder::CSS::CSSMedia> buildMediaObject(const MediaList*, Me
diaListSource, const String&, CSSStyleSheet*); | 141 PassRefPtr<TypeBuilder::CSS::CSSMedia> buildMediaObject(const MediaList*, Me
diaListSource, const String&, CSSStyleSheet*); |
154 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSMedia> > buildMediaListCh
ain(CSSRule*); | 142 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSMedia> > buildMediaListCh
ain(CSSRule*); |
155 | 143 |
156 private: | 144 private: |
157 class StyleSheetAction; | 145 class StyleSheetAction; |
158 class SetStyleSheetTextAction; | 146 class SetStyleSheetTextAction; |
159 class SetStyleTextAction; | 147 class SetStyleTextAction; |
160 class SetPropertyTextAction; | 148 class SetPropertyTextAction; |
161 class TogglePropertyAction; | 149 class TogglePropertyAction; |
162 class SetRuleSelectorAction; | 150 class SetRuleSelectorAction; |
163 class AddRuleAction; | 151 class AddRuleAction; |
164 class EnableResourceClient; | 152 class EnableResourceClient; |
165 | 153 |
166 InspectorCSSAgent(InspectorDOMAgent*, InspectorPageAgent*, InspectorResource
Agent*); | 154 InspectorCSSAgent(InspectorDOMAgent*, InspectorPageAgent*, InspectorResource
Agent*); |
167 | 155 |
168 typedef HashMap<String, RefPtr<InspectorStyleSheet> > IdToInspectorStyleShee
t; | 156 typedef HashMap<String, RefPtr<InspectorStyleSheet> > IdToInspectorStyleShee
t; |
169 typedef HashMap<Node*, RefPtr<InspectorStyleSheetForInlineStyle> > NodeToIns
pectorStyleSheet; // bogus "stylesheets" with elements' inline styles | 157 typedef HashMap<Node*, RefPtr<InspectorStyleSheetForInlineStyle> > NodeToIns
pectorStyleSheet; // bogus "stylesheets" with elements' inline styles |
170 typedef HashMap<int, unsigned> NodeIdToForcedPseudoState; | 158 typedef HashMap<int, unsigned> NodeIdToForcedPseudoState; |
171 | 159 |
172 void wasEnabled(PassRefPtr<EnableCallback>); | 160 void wasEnabled(PassRefPtr<EnableCallback>); |
173 void resetNonPersistentData(); | 161 void resetNonPersistentData(); |
174 InspectorStyleSheetForInlineStyle* asInspectorStyleSheet(Element* element); | 162 InspectorStyleSheetForInlineStyle* asInspectorStyleSheet(Element* element); |
175 Element* elementForId(ErrorString*, int nodeId); | 163 Element* elementForId(ErrorString*, int nodeId); |
176 int documentNodeWithRequestedFlowsId(Document*); | |
177 void collectAllStyleSheets(Vector<InspectorStyleSheet*>&); | 164 void collectAllStyleSheets(Vector<InspectorStyleSheet*>&); |
178 void collectAllDocumentStyleSheets(Document*, Vector<CSSStyleSheet*>&); | 165 void collectAllDocumentStyleSheets(Document*, Vector<CSSStyleSheet*>&); |
179 void collectStyleSheets(CSSStyleSheet*, Vector<CSSStyleSheet*>&); | 166 void collectStyleSheets(CSSStyleSheet*, Vector<CSSStyleSheet*>&); |
180 | 167 |
181 void updateActiveStyleSheetsForDocument(Document*, StyleSheetsUpdateType); | 168 void updateActiveStyleSheetsForDocument(Document*, StyleSheetsUpdateType); |
182 void updateActiveStyleSheets(Frame*, const Vector<CSSStyleSheet*>&, StyleShe
etsUpdateType); | 169 void updateActiveStyleSheets(Frame*, const Vector<CSSStyleSheet*>&, StyleShe
etsUpdateType); |
183 | 170 |
184 void collectPlatformFontsForRenderer(RenderText*, HashCountedSet<String>*); | 171 void collectPlatformFontsForRenderer(RenderText*, HashCountedSet<String>*); |
185 | 172 |
186 InspectorStyleSheet* bindStyleSheet(CSSStyleSheet*); | 173 InspectorStyleSheet* bindStyleSheet(CSSStyleSheet*); |
187 String unbindStyleSheet(InspectorStyleSheet*); | 174 String unbindStyleSheet(InspectorStyleSheet*); |
188 InspectorStyleSheet* viaInspectorStyleSheet(Document*, bool createIfAbsent); | 175 InspectorStyleSheet* viaInspectorStyleSheet(Document*, bool createIfAbsent); |
189 InspectorStyleSheet* assertStyleSheetForId(ErrorString*, const String&); | 176 InspectorStyleSheet* assertStyleSheetForId(ErrorString*, const String&); |
190 TypeBuilder::CSS::StyleSheetOrigin::Enum detectOrigin(CSSStyleSheet* pageSty
leSheet, Document* ownerDocument); | 177 TypeBuilder::CSS::StyleSheetOrigin::Enum detectOrigin(CSSStyleSheet* pageSty
leSheet, Document* ownerDocument); |
191 bool styleSheetEditInProgress() const { return m_styleSheetsPendingMutation
|| m_styleDeclarationPendingMutation || m_isSettingStyleSheetText; } | 178 bool styleSheetEditInProgress() const { return m_styleSheetsPendingMutation
|| m_styleDeclarationPendingMutation || m_isSettingStyleSheetText; } |
192 | 179 |
193 PassRefPtr<TypeBuilder::CSS::CSSRule> buildObjectForRule(CSSStyleRule*); | 180 PassRefPtr<TypeBuilder::CSS::CSSRule> buildObjectForRule(CSSStyleRule*); |
194 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSRule> > buildArrayForRule
List(CSSRuleList*); | 181 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::CSSRule> > buildArrayForRule
List(CSSRuleList*); |
195 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::RuleMatch> > buildArrayForMa
tchedRuleList(CSSRuleList*, Element*); | 182 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::RuleMatch> > buildArrayForMa
tchedRuleList(CSSRuleList*, Element*); |
196 PassRefPtr<TypeBuilder::CSS::CSSStyle> buildObjectForAttributesStyle(Element
*); | 183 PassRefPtr<TypeBuilder::CSS::CSSStyle> buildObjectForAttributesStyle(Element
*); |
197 PassRefPtr<TypeBuilder::Array<TypeBuilder::CSS::Region> > buildArrayForRegio
ns(ErrorString*, PassRefPtr<NodeList>, int documentNodeId); | |
198 PassRefPtr<TypeBuilder::CSS::NamedFlow> buildObjectForNamedFlow(ErrorString*
, NamedFlow*, int documentNodeId); | |
199 | 184 |
200 // InspectorDOMAgent::DOMListener implementation | 185 // InspectorDOMAgent::DOMListener implementation |
201 virtual void didRemoveDocument(Document*) OVERRIDE; | 186 virtual void didRemoveDocument(Document*) OVERRIDE; |
202 virtual void didRemoveDOMNode(Node*) OVERRIDE; | 187 virtual void didRemoveDOMNode(Node*) OVERRIDE; |
203 virtual void didModifyDOMAttr(Element*) OVERRIDE; | 188 virtual void didModifyDOMAttr(Element*) OVERRIDE; |
204 | 189 |
205 // InspectorStyleSheet::Listener implementation | 190 // InspectorStyleSheet::Listener implementation |
206 virtual void styleSheetChanged(InspectorStyleSheet*) OVERRIDE; | 191 virtual void styleSheetChanged(InspectorStyleSheet*) OVERRIDE; |
207 virtual void willReparseStyleSheet() OVERRIDE; | 192 virtual void willReparseStyleSheet() OVERRIDE; |
208 virtual void didReparseStyleSheet() OVERRIDE; | 193 virtual void didReparseStyleSheet() OVERRIDE; |
209 | 194 |
210 void resetPseudoStates(); | 195 void resetPseudoStates(); |
211 | 196 |
212 InspectorFrontend::CSS* m_frontend; | 197 InspectorFrontend::CSS* m_frontend; |
213 InspectorDOMAgent* m_domAgent; | 198 InspectorDOMAgent* m_domAgent; |
214 InspectorPageAgent* m_pageAgent; | 199 InspectorPageAgent* m_pageAgent; |
215 InspectorResourceAgent* m_resourceAgent; | 200 InspectorResourceAgent* m_resourceAgent; |
216 | 201 |
217 IdToInspectorStyleSheet m_idToInspectorStyleSheet; | 202 IdToInspectorStyleSheet m_idToInspectorStyleSheet; |
218 HashMap<CSSStyleSheet*, RefPtr<InspectorStyleSheet> > m_cssStyleSheetToInspe
ctorStyleSheet; | 203 HashMap<CSSStyleSheet*, RefPtr<InspectorStyleSheet> > m_cssStyleSheetToInspe
ctorStyleSheet; |
219 HashMap<Frame*, OwnPtr<HashSet<CSSStyleSheet*> > > m_frameToCSSStyleSheets; | 204 HashMap<Frame*, OwnPtr<HashSet<CSSStyleSheet*> > > m_frameToCSSStyleSheets; |
220 | 205 |
221 NodeToInspectorStyleSheet m_nodeToInspectorStyleSheet; | 206 NodeToInspectorStyleSheet m_nodeToInspectorStyleSheet; |
222 HashMap<RefPtr<Document>, RefPtr<InspectorStyleSheet> > m_documentToViaInspe
ctorStyleSheet; // "via inspector" stylesheets | 207 HashMap<RefPtr<Document>, RefPtr<InspectorStyleSheet> > m_documentToViaInspe
ctorStyleSheet; // "via inspector" stylesheets |
223 NodeIdToForcedPseudoState m_nodeIdToForcedPseudoState; | 208 NodeIdToForcedPseudoState m_nodeIdToForcedPseudoState; |
224 HashSet<int> m_namedFlowCollectionsRequested; | |
225 OwnPtr<UpdateRegionLayoutTask> m_updateRegionLayoutTask; | |
226 OwnPtr<ChangeRegionOversetTask> m_changeRegionOversetTask; | |
227 | 209 |
228 RefPtr<CSSStyleSheet> m_inspectorUserAgentStyleSheet; | 210 RefPtr<CSSStyleSheet> m_inspectorUserAgentStyleSheet; |
229 | 211 |
230 int m_lastStyleSheetId; | 212 int m_lastStyleSheetId; |
231 int m_styleSheetsPendingMutation; | 213 int m_styleSheetsPendingMutation; |
232 bool m_styleDeclarationPendingMutation; | 214 bool m_styleDeclarationPendingMutation; |
233 bool m_creatingViaInspectorStyleSheet; | 215 bool m_creatingViaInspectorStyleSheet; |
234 bool m_isSettingStyleSheetText; | 216 bool m_isSettingStyleSheetText; |
235 | 217 |
236 friend class ChangeRegionOversetTask; | |
237 friend class EnableResourceClient; | 218 friend class EnableResourceClient; |
238 friend class StyleSheetBinder; | 219 friend class StyleSheetBinder; |
239 friend class UpdateRegionLayoutTask; | |
240 }; | 220 }; |
241 | 221 |
242 | 222 |
243 } // namespace WebCore | 223 } // namespace WebCore |
244 | 224 |
245 #endif // !defined(InspectorCSSAgent_h) | 225 #endif // !defined(InspectorCSSAgent_h) |
OLD | NEW |