当前位置: 首页>>代码示例>>C++>>正文


C++ LocalFrame::contentLayoutItem方法代码示例

本文整理汇总了C++中LocalFrame::contentLayoutItem方法的典型用法代码示例。如果您正苦于以下问题:C++ LocalFrame::contentLayoutItem方法的具体用法?C++ LocalFrame::contentLayoutItem怎么用?C++ LocalFrame::contentLayoutItem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在LocalFrame的用法示例。


在下文中一共展示了LocalFrame::contentLayoutItem方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: handleMouseMove

bool InspectorOverlay::handleMouseMove(const PlatformMouseEvent& event) {
  if (!shouldSearchForNode())
    return false;

  LocalFrame* frame = m_frameImpl->frame();
  if (!frame || !frame->view() || frame->contentLayoutItem().isNull())
    return false;
  Node* node = hoveredNodeForEvent(frame, event, event.shiftKey());

  // Do not highlight within user agent shadow root unless requested.
  if (m_inspectMode != InspectorDOMAgent::SearchingForUAShadow) {
    ShadowRoot* shadowRoot = InspectorDOMAgent::userAgentShadowRoot(node);
    if (shadowRoot)
      node = &shadowRoot->host();
  }

  // Shadow roots don't have boxes - use host element instead.
  if (node && node->isShadowRoot())
    node = node->parentOrShadowHostNode();

  if (!node)
    return true;

  Node* eventTarget =
      event.shiftKey() ? hoveredNodeForEvent(frame, event, false) : nullptr;
  if (eventTarget == node)
    eventTarget = nullptr;

  if (node && m_inspectModeHighlightConfig) {
    m_hoveredNodeForInspectMode = node;
    if (m_domAgent)
      m_domAgent->nodeHighlightedInOverlay(node);
    highlightNode(node, eventTarget, *m_inspectModeHighlightConfig,
                  event.ctrlKey() || event.metaKey());
  }
  return true;
}
开发者ID:,项目名称:,代码行数:37,代码来源:

示例2: frameContentAsPlainText

static void frameContentAsPlainText(size_t maxChars,
                                    LocalFrame* frame,
                                    StringBuilder& output) {
  Document* document = frame->document();
  if (!document)
    return;

  if (!frame->view() || frame->view()->shouldThrottleRendering())
    return;

  DCHECK(!frame->view()->needsLayout());
  DCHECK(!document->needsLayoutTreeUpdate());

  // Select the document body.
  if (document->body()) {
    const EphemeralRange range =
        EphemeralRange::rangeOfContents(*document->body());

    // The text iterator will walk nodes giving us text. This is similar to
    // the plainText() function in core/editing/TextIterator.h, but we
    // implement the maximum size and also copy the results directly into a
    // wstring, avoiding the string conversion.
    for (TextIterator it(range.startPosition(), range.endPosition());
         !it.atEnd(); it.advance()) {
      it.text().appendTextToStringBuilder(output, 0,
                                          maxChars - output.length());
      if (output.length() >= maxChars)
        return;  // Filled up the buffer.
    }
  }

  // The separator between frames when the frames are converted to plain text.
  const LChar frameSeparator[] = {'\n', '\n'};
  const size_t frameSeparatorLength = WTF_ARRAY_LENGTH(frameSeparator);

  // Recursively walk the children.
  const FrameTree& frameTree = frame->tree();
  for (Frame* curChild = frameTree.firstChild(); curChild;
       curChild = curChild->tree().nextSibling()) {
    if (!curChild->isLocalFrame())
      continue;
    LocalFrame* curLocalChild = toLocalFrame(curChild);
    // Ignore the text of non-visible frames.
    LayoutViewItem contentLayoutItem = curLocalChild->contentLayoutItem();
    LayoutPart* ownerLayoutObject = curLocalChild->ownerLayoutObject();
    if (contentLayoutItem.isNull() || !contentLayoutItem.size().width() ||
        !contentLayoutItem.size().height() ||
        (contentLayoutItem.location().x() + contentLayoutItem.size().width() <=
         0) ||
        (contentLayoutItem.location().y() + contentLayoutItem.size().height() <=
         0) ||
        (ownerLayoutObject && ownerLayoutObject->style() &&
         ownerLayoutObject->style()->visibility() != EVisibility::Visible)) {
      continue;
    }

    // Make sure the frame separator won't fill up the buffer, and give up if
    // it will. The danger is if the separator will make the buffer longer than
    // maxChars. This will cause the computation above:
    //   maxChars - output->size()
    // to be a negative number which will crash when the subframe is added.
    if (output.length() >= maxChars - frameSeparatorLength)
      return;

    output.append(frameSeparator, frameSeparatorLength);
    frameContentAsPlainText(maxChars, curLocalChild, output);
    if (output.length() >= maxChars)
      return;  // Filled up the buffer.
  }
}
开发者ID:ollie314,项目名称:chromium,代码行数:70,代码来源:WebFrameContentDumper.cpp


注:本文中的LocalFrame::contentLayoutItem方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。