本文整理汇总了C++中WebLocalFrameImpl::devToolsAgentImpl方法的典型用法代码示例。如果您正苦于以下问题:C++ WebLocalFrameImpl::devToolsAgentImpl方法的具体用法?C++ WebLocalFrameImpl::devToolsAgentImpl怎么用?C++ WebLocalFrameImpl::devToolsAgentImpl使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WebLocalFrameImpl
的用法示例。
在下文中一共展示了WebLocalFrameImpl::devToolsAgentImpl方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: run
void run(LocalFrame* frame) override
{
if (m_running)
return;
m_running = true;
// 0. Flush pending frontend messages.
WebLocalFrameImpl* frameImpl = WebLocalFrameImpl::fromFrame(frame);
WebDevToolsAgentImpl* agent = frameImpl->devToolsAgentImpl();
agent->flushPendingProtocolNotifications();
Vector<WebViewImpl*> views;
Vector<WebFrameWidgetImpl*> widgets;
// 1. Disable input events.
const HashSet<WebViewImpl*>& viewImpls = WebViewImpl::allInstances();
HashSet<WebViewImpl*>::const_iterator viewImplsEnd = viewImpls.end();
for (HashSet<WebViewImpl*>::const_iterator it = viewImpls.begin(); it != viewImplsEnd; ++it) {
WebViewImpl* view = *it;
m_frozenViews.add(view);
views.append(view);
view->setIgnoreInputEvents(true);
}
const HashSet<WebFrameWidgetImpl*>& widgetImpls = WebFrameWidgetImpl::allInstances();
HashSet<WebFrameWidgetImpl*>::const_iterator widgetImplsEnd = widgetImpls.end();
for (HashSet<WebFrameWidgetImpl*>::const_iterator it = widgetImpls.begin(); it != widgetImplsEnd; ++it) {
WebFrameWidgetImpl* widget = *it;
m_frozenWidgets.add(widget);
widgets.append(widget);
widget->setIgnoreInputEvents(true);
}
// 2. Notify embedder about pausing.
agent->client()->willEnterDebugLoop();
// 3. Disable active objects
WebView::willEnterModalLoop();
// 4. Process messages until quitNow is called.
m_messageLoop->run();
// 5. Resume active objects
WebView::didExitModalLoop();
// 6. Resume input events.
for (Vector<WebViewImpl*>::iterator it = views.begin(); it != views.end(); ++it) {
if (m_frozenViews.contains(*it)) {
// The view was not closed during the dispatch.
(*it)->setIgnoreInputEvents(false);
}
}
for (Vector<WebFrameWidgetImpl*>::iterator it = widgets.begin(); it != widgets.end(); ++it) {
if (m_frozenWidgets.contains(*it)) {
// The widget was not closed during the dispatch.
(*it)->setIgnoreInputEvents(false);
}
}
// 7. Notify embedder about resuming.
agent->client()->didExitDebugLoop();
// 8. All views have been resumed, clear the set.
m_frozenViews.clear();
m_frozenWidgets.clear();
m_running = false;
}