Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1381)

Unified Diff: Source/core/inspector/InspectorCSSAgent.cpp

Issue 17848002: Web Inspector: Integrate new regionOversetChange event into inspector (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/inspector/InspectorCSSAgent.cpp
diff --git a/Source/core/inspector/InspectorCSSAgent.cpp b/Source/core/inspector/InspectorCSSAgent.cpp
index 2312fc28539c9e47fd2db5d9e641062bf33d01f2..7773dd9d2ab848d0fff389860a6e860e144326a4 100644
--- a/Source/core/inspector/InspectorCSSAgent.cpp
+++ b/Source/core/inspector/InspectorCSSAgent.cpp
@@ -322,6 +322,54 @@ void UpdateRegionLayoutTask::onTimer(Timer<UpdateRegionLayoutTask>*)
m_timer.startOneShot(0);
}
+class ChangeRegionOversetTask {
pfeldman 2013/06/26 14:37:41 I think it is time to spin a Regions agent so that
+public:
+ ChangeRegionOversetTask(InspectorCSSAgent*);
+ void scheduleFor(NamedFlow*, int documentNodeId);
+ void unschedule(NamedFlow*);
+ void reset();
+ void onTimer(Timer<ChangeRegionOversetTask>*);
+
+private:
+ InspectorCSSAgent* m_cssAgent;
+ Timer<ChangeRegionOversetTask> m_timer;
+ HashMap<NamedFlow*, int> m_namedFlows;
+};
+
+ChangeRegionOversetTask::ChangeRegionOversetTask(InspectorCSSAgent* cssAgent)
+ : m_cssAgent(cssAgent)
+ , m_timer(this, &ChangeRegionOversetTask::onTimer)
+{
+}
+
+void ChangeRegionOversetTask::scheduleFor(NamedFlow* namedFlow, int documentNodeId)
+{
+ m_namedFlows.add(namedFlow, documentNodeId);
+
+ if (!m_timer.isActive())
+ m_timer.startOneShot(0);
+}
+
+void ChangeRegionOversetTask::unschedule(NamedFlow* namedFlow)
+{
+ m_namedFlows.remove(namedFlow);
+}
+
+void ChangeRegionOversetTask::reset()
+{
+ m_timer.stop();
+ m_namedFlows.clear();
+}
+
+void ChangeRegionOversetTask::onTimer(Timer<ChangeRegionOversetTask>*)
+{
+ // The timer is stopped on m_cssAgent destruction, so this method will never be called after m_cssAgent has been destroyed.
+ for (HashMap<NamedFlow*, int>::iterator it = m_namedFlows.begin(), end = m_namedFlows.end(); it != end; ++it)
+ m_cssAgent->regionOversetChanged(it->key, it->value);
+
+ m_namedFlows.clear();
+}
+
class InspectorCSSAgent::StyleSheetAction : public InspectorHistory::Action {
WTF_MAKE_NONCOPYABLE(StyleSheetAction);
public:
@@ -780,6 +828,8 @@ void InspectorCSSAgent::resetNonPersistentData()
m_namedFlowCollectionsRequested.clear();
if (m_updateRegionLayoutTask)
m_updateRegionLayoutTask->reset();
+ if (m_changeRegionOversetTask)
+ m_changeRegionOversetTask->reset();
resetPseudoStates();
}
@@ -861,6 +911,28 @@ void InspectorCSSAgent::regionLayoutUpdated(NamedFlow* namedFlow, int documentNo
m_frontend->regionLayoutUpdated(buildObjectForNamedFlow(&errorString, namedFlow, documentNodeId));
}
+void InspectorCSSAgent::didChangeRegionOverset(Document* document, NamedFlow* namedFlow)
+{
+ int documentNodeId = documentNodeWithRequestedFlowsId(document);
+ if (!documentNodeId)
+ return;
+
+ if (!m_changeRegionOversetTask)
+ m_changeRegionOversetTask = adoptPtr(new ChangeRegionOversetTask(this));
+ m_changeRegionOversetTask->scheduleFor(namedFlow, documentNodeId);
+}
+
+void InspectorCSSAgent::regionOversetChanged(NamedFlow* namedFlow, int documentNodeId)
+{
+ if (namedFlow->flowState() == NamedFlow::FlowStateNull)
+ return;
+
+ ErrorString errorString;
+ RefPtr<NamedFlow> protector(namedFlow);
+
+ m_frontend->regionOversetChanged(buildObjectForNamedFlow(&errorString, namedFlow, documentNodeId));
+}
+
void InspectorCSSAgent::activeStyleSheetsUpdated(Document* document, const Vector<RefPtr<StyleSheet> >& newSheets)
{
HashSet<CSSStyleSheet*> removedSheets;

Powered by Google App Engine
This is Rietveld 408576698