本文整理汇总了C++中HTMLTextFormControlElement类的典型用法代码示例。如果您正苦于以下问题:C++ HTMLTextFormControlElement类的具体用法?C++ HTMLTextFormControlElement怎么用?C++ HTMLTextFormControlElement使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了HTMLTextFormControlElement类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: enclosingTextFormControl
Position HTMLTextFormControlElement::startOfSentence(const Position& position)
{
HTMLTextFormControlElement* textFormControl = enclosingTextFormControl(position);
ASSERT(textFormControl);
HTMLElement* innerEditor = textFormControl->innerEditorElement();
if (!innerEditor->childNodes()->length())
return startOfInnerText(textFormControl);
const Position innerPosition = position.anchorNode() == innerEditor ? innerNodePosition(position) : position;
const Position pivotPosition = previousIfPositionIsAfterLineBreak(innerPosition, innerEditor);
if (pivotPosition.isNull())
return startOfInnerText(textFormControl);
for (Node* node = pivotPosition.anchorNode(); node; node = NodeTraversal::previous(*node, innerEditor)) {
bool isPivotNode = (node == pivotPosition.anchorNode());
if (isHTMLBRElement(node) && (!isPivotNode || pivotPosition.isAfterAnchor()))
return Position(node, PositionAnchorType::AfterAnchor);
if (node->isTextNode()) {
Text* textNode = toText(node);
size_t lastLineBreak = textNode->data().substring(0, isPivotNode ? pivotPosition.offsetInContainerNode() : textNode->length()).reverseFind('\n');
if (lastLineBreak != kNotFound)
return Position(textNode, lastLineBreak + 1);
}
}
return startOfInnerText(textFormControl);
}
示例2: toTextFormControl
String Internals::visiblePlaceholder(Element* element)
{
HTMLTextFormControlElement* textControl = toTextFormControl(element);
if (textControl && textControl->placeholderShouldBeVisible())
return textControl->placeholderElement()->textContent();
return String();
}
示例3: testBoundary
void testBoundary(Document& document, HTMLTextFormControlElement& textControl) {
document.updateStyleAndLayout();
for (unsigned i = 0; i < textControl.innerEditorValue().length(); i++) {
textControl.setSelectionRange(i, i);
Position position = document.frame()->selection().start();
SCOPED_TRACE(::testing::Message()
<< "offset " << position.computeEditingOffset() << " of "
<< nodePositionAsStringForTesting(position.anchorNode())
.ascii()
.data());
{
SCOPED_TRACE("HTMLTextFormControlElement::startOfWord");
testFunctionEquivalence(position, HTMLTextFormControlElement::startOfWord,
startOfWord);
}
{
SCOPED_TRACE("HTMLTextFormControlElement::endOfWord");
testFunctionEquivalence(position, HTMLTextFormControlElement::endOfWord,
endOfWord);
}
{
SCOPED_TRACE("HTMLTextFormControlElement::startOfSentence");
testFunctionEquivalence(position,
HTMLTextFormControlElement::startOfSentence,
startOfSentence);
}
{
SCOPED_TRACE("HTMLTextFormControlElement::endOfSentence");
testFunctionEquivalence(
position, HTMLTextFormControlElement::endOfSentence, endOfSentence);
}
}
}
示例4: updateUserModifyProperty
static inline bool updateUserModifyProperty(const HTMLTextFormControlElement& element, RenderStyle* style)
{
bool isDisabled = element.isDisabledFormControl();
bool isReadOnlyControl = element.isReadOnly();
style->setUserModify((isReadOnlyControl || isDisabled) ? READ_ONLY : READ_WRITE_PLAINTEXT_ONLY);
return isDisabled;
}
示例5: toHTMLTextFormControlElement
TextDirection HTMLElement::directionality(Node** strongDirectionalityTextNode) const
{
if (isHTMLTextFormControlElement(this)) {
HTMLTextFormControlElement* textElement = toHTMLTextFormControlElement(const_cast<HTMLElement*>(this));
bool hasStrongDirectionality;
Unicode::Direction textDirection = textElement->value().defaultWritingDirection(&hasStrongDirectionality);
if (strongDirectionalityTextNode)
*strongDirectionalityTextNode = hasStrongDirectionality ? textElement : 0;
return (textDirection == Unicode::LeftToRight) ? LTR : RTL;
}
Node* node = firstChild();
while (node) {
// Skip bdi, script, style and text form controls.
if (equalIgnoringCase(node->nodeName(), "bdi") || node->hasTagName(scriptTag) || node->hasTagName(styleTag)
|| (node->isElementNode() && toElement(node)->isTextFormControl())) {
node = NodeTraversal::nextSkippingChildren(node, this);
continue;
}
// Skip elements with valid dir attribute
if (node->isElementNode()) {
AtomicString dirAttributeValue = toElement(node)->fastGetAttribute(dirAttr);
if (equalIgnoringCase(dirAttributeValue, "rtl") || equalIgnoringCase(dirAttributeValue, "ltr") || equalIgnoringCase(dirAttributeValue, "auto")) {
node = NodeTraversal::nextSkippingChildren(node, this);
continue;
}
}
if (node->isTextNode()) {
bool hasStrongDirectionality;
WTF::Unicode::Direction textDirection = node->textContent(true).defaultWritingDirection(&hasStrongDirectionality);
if (hasStrongDirectionality) {
if (strongDirectionalityTextNode)
*strongDirectionalityTextNode = node;
return (textDirection == WTF::Unicode::LeftToRight) ? LTR : RTL;
}
}
node = NodeTraversal::next(node, this);
}
if (strongDirectionalityTextNode)
*strongDirectionalityTextNode = 0;
return LTR;
}
示例6: updateUserModifyProperty
static inline void updateUserModifyProperty(HTMLTextFormControlElement& node, ComputedStyle& style)
{
style.setUserModify(node.isDisabledOrReadOnly() ? READ_ONLY : READ_WRITE_PLAINTEXT_ONLY);
}
示例7: if
//.........这里部分代码省略.........
(data.mediaType == WebContextMenuData::MediaTypeImage) && !r.image();
// If it's not a link, an image, a media element, or an image/media link,
// show a selection menu or a more generic page menu.
if (selectedFrame->document()->loader())
data.frameEncoding = selectedFrame->document()->encoding();
// Send the frame and page URLs in any case.
data.pageURL = urlFromFrame(m_webView->mainFrameImpl()->frame());
if (selectedFrame != m_webView->mainFrameImpl()->frame()) {
data.frameURL = urlFromFrame(selectedFrame);
RefPtr<HistoryItem> historyItem = selectedFrame->loader()->history()->currentItem();
if (historyItem)
data.frameHistoryItem = WebHistoryItem(historyItem);
}
if (r.isSelected()) {
if (!r.innerNonSharedNode()->hasTagName(HTMLNames::inputTag) || !toHTMLInputElement(r.innerNonSharedNode())->isPasswordField())
data.selectedText = selectedFrame->editor()->selectedText().stripWhiteSpace();
}
if (r.isContentEditable()) {
data.isEditable = true;
#if ENABLE(INPUT_SPEECH)
if (r.innerNonSharedNode()->hasTagName(HTMLNames::inputTag))
data.isSpeechInputEnabled = toHTMLInputElement(r.innerNonSharedNode())->isSpeechEnabled();
#endif
// When Chrome enables asynchronous spellchecking, its spellchecker adds spelling markers to misspelled
// words and attaches suggestions to these markers in the background. Therefore, when a user right-clicks
// a mouse on a word, Chrome just needs to find a spelling marker on the word instead of spellchecking it.
if (selectedFrame->settings() && selectedFrame->settings()->asynchronousSpellCheckingEnabled()) {
DocumentMarker marker;
data.misspelledWord = selectMisspellingAsync(selectedFrame, marker);
data.misspellingHash = marker.hash();
if (marker.description().length()) {
Vector<String> suggestions;
marker.description().split('\n', suggestions);
data.dictionarySuggestions = suggestions;
} else if (m_webView->spellCheckClient()) {
int misspelledOffset, misspelledLength;
m_webView->spellCheckClient()->spellCheck(data.misspelledWord, misspelledOffset, misspelledLength, &data.dictionarySuggestions);
}
} else {
data.isSpellCheckingEnabled =
m_webView->focusedWebCoreFrame()->editor()->isContinuousSpellCheckingEnabled();
// Spellchecking might be enabled for the field, but could be disabled on the node.
if (m_webView->focusedWebCoreFrame()->editor()->isSpellCheckingEnabledInFocusedNode()) {
data.misspelledWord = selectMisspelledWord(selectedFrame);
if (m_webView->spellCheckClient()) {
int misspelledOffset, misspelledLength;
m_webView->spellCheckClient()->spellCheck(
data.misspelledWord, misspelledOffset, misspelledLength,
&data.dictionarySuggestions);
if (!misspelledLength)
data.misspelledWord.reset();
}
}
}
HTMLFormElement* form = selectedFrame->selection()->currentForm();
if (form && r.innerNonSharedNode()->hasTagName(HTMLNames::inputTag)) {
HTMLInputElement* selectedElement = toHTMLInputElement(r.innerNonSharedNode());
if (selectedElement) {
WebSearchableFormData ws = WebSearchableFormData(WebFormElement(form), WebInputElement(selectedElement));
if (ws.url().isValid())
data.keywordURL = ws.url();
}
}
if (r.innerNonSharedNode()->isElementNode()) {
HTMLElement* element = toHTMLElement(r.innerNonSharedNode());
if (element->isTextFormControl()) {
HTMLTextFormControlElement* textElement = toHTMLTextFormControlElement(element);
data.isEditFieldEmpty = textElement->value().isEmpty();
}
}
}
#if OS(DARWIN)
if (selectedFrame->editor()->selectionHasStyle(CSSPropertyDirection, "ltr") != FalseTriState)
data.writingDirectionLeftToRight |= WebContextMenuData::CheckableMenuItemChecked;
if (selectedFrame->editor()->selectionHasStyle(CSSPropertyDirection, "rtl") != FalseTriState)
data.writingDirectionRightToLeft |= WebContextMenuData::CheckableMenuItemChecked;
#endif // OS(DARWIN)
// Now retrieve the security info.
DocumentLoader* dl = selectedFrame->loader()->documentLoader();
WebDataSource* ds = WebDataSourceImpl::fromDocumentLoader(dl);
if (ds)
data.securityInfo = ds->response().securityInfo();
data.referrerPolicy = static_cast<WebReferrerPolicy>(selectedFrame->document()->referrerPolicy());
// Filter out custom menu elements and add them into the data.
populateCustomMenuItems(defaultMenu, &data);
data.node = r.innerNonSharedNode();
WebFrame* selected_web_frame = WebFrameImpl::fromFrame(selectedFrame);
if (m_webView->client())
m_webView->client()->showContextMenu(selected_web_frame, data);
}