本文整理汇总了C++中HTMLObjectElement::renderFallbackContent方法的典型用法代码示例。如果您正苦于以下问题:C++ HTMLObjectElement::renderFallbackContent方法的具体用法?C++ HTMLObjectElement::renderFallbackContent怎么用?C++ HTMLObjectElement::renderFallbackContent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HTMLObjectElement
的用法示例。
在下文中一共展示了HTMLObjectElement::renderFallbackContent方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateWidget
//.........这里部分代码省略.........
if (serviceType.isEmpty() && name == "type") {
serviceType = p->value();
int pos = serviceType.find(";");
if (pos != -1)
serviceType = serviceType.left(pos);
}
if (!embed && !name.isEmpty()) {
uniqueParamNames.add(p->name().impl());
paramNames.append(p->name());
paramValues.append(p->value());
}
}
child = child->nextSibling();
}
// When OBJECT is used for an applet via Sun's Java plugin, the CODEBASE attribute in the tag
// points to the Java plugin itself (an ActiveX component) while the actual applet CODEBASE is
// in a PARAM tag. See <http://java.sun.com/products/plugin/1.2/docs/tags.html>. This means
// we have to explicitly suppress the tag's CODEBASE attribute if there is none in a PARAM,
// else our Java plugin will misinterpret it. [4004531]
String codebase;
if (!embed && MIMETypeRegistry::isJavaAppletMIMEType(serviceType)) {
codebase = "codebase";
uniqueParamNames.add(codebase.impl()); // pretend we found it in a PARAM already
}
// Turn the attributes of either the EMBED tag or OBJECT tag into arrays, but don't override PARAM values.
NamedAttrMap* attributes = embedOrObject->attributes();
if (attributes) {
for (unsigned i = 0; i < attributes->length(); ++i) {
Attribute* it = attributes->attributeItem(i);
const AtomicString& name = it->name().localName();
if (embed || !uniqueParamNames.contains(name.impl())) {
paramNames.append(name.string());
paramValues.append(it->value().string());
}
}
}
// If we still don't have a type, try to map from a specific CLASSID to a type.
if (serviceType.isEmpty() && !o->m_classId.isEmpty())
mapClassIdToServiceType(o->m_classId, serviceType);
if (!isURLAllowed(document(), url))
return;
// Find out if we support fallback content.
m_hasFallbackContent = false;
for (Node *child = o->firstChild(); child && !m_hasFallbackContent; child = child->nextSibling()) {
if ((!child->isTextNode() && !child->hasTagName(embedTag) && !child->hasTagName(paramTag)) || // Discount <embed> and <param>
(child->isTextNode() && !static_cast<Text*>(child)->containsOnlyWhitespace()))
m_hasFallbackContent = true;
}
if (onlyCreateNonNetscapePlugins) {
KURL completedURL;
if (!url.isEmpty())
completedURL = frame->loader()->completeURL(url);
if (frame->loader()->client()->objectContentType(completedURL, serviceType) == ObjectContentNetscapePlugin)
return;
}
bool success = frame->loader()->requestObject(this, url, AtomicString(o->name()), serviceType, paramNames, paramValues);
if (!success && m_hasFallbackContent)
o->renderFallbackContent();
} else if (element()->hasTagName(embedTag)) {
HTMLEmbedElement *o = static_cast<HTMLEmbedElement*>(element());
o->setNeedWidgetUpdate(false);
url = o->url();
serviceType = o->serviceType();
if (url.isEmpty() && serviceType.isEmpty())
return;
if (!isURLAllowed(document(), url))
return;
// add all attributes set on the embed object
NamedAttrMap* a = o->attributes();
if (a) {
for (unsigned i = 0; i < a->length(); ++i) {
Attribute* it = a->attributeItem(i);
paramNames.append(it->name().localName().string());
paramValues.append(it->value().string());
}
}
if (onlyCreateNonNetscapePlugins) {
KURL completedURL;
if (!url.isEmpty())
completedURL = frame->loader()->completeURL(url);
if (frame->loader()->client()->objectContentType(completedURL, serviceType) == ObjectContentNetscapePlugin)
return;
}
frame->loader()->requestObject(this, url, o->getAttribute(nameAttr), serviceType, paramNames, paramValues);
}
}
示例2: updateWidget
//.........这里部分代码省略.........
codebase = "codebase";
uniqueParamNames.add(codebase.impl()); // pretend we found it in a PARAM already
}
// Turn the attributes of either the EMBED tag or OBJECT tag into arrays, but don't override PARAM values.
NamedNodeMap* attributes = embedOrObject->attributes();
if (attributes) {
for (unsigned i = 0; i < attributes->length(); ++i) {
Attribute* it = attributes->attributeItem(i);
const AtomicString& name = it->name().localName();
if (embed || !uniqueParamNames.contains(name.impl())) {
paramNames.append(name.string());
paramValues.append(it->value().string());
}
}
}
mapDataParamToSrc(¶mNames, ¶mValues);
// If we still don't have a type, try to map from a specific CLASSID to a type.
if (serviceType.isEmpty())
serviceType = serviceTypeForClassId(objectElement->classId());
if (!isURLAllowed(document(), url))
return;
// Find out if we support fallback content.
m_hasFallbackContent = false;
for (Node* child = objectElement->firstChild(); child && !m_hasFallbackContent; child = child->nextSibling()) {
if ((!child->isTextNode() && !child->hasTagName(embedTag) && !child->hasTagName(paramTag)) // Discount <embed> and <param>
|| (child->isTextNode() && !static_cast<Text*>(child)->containsOnlyWhitespace()))
m_hasFallbackContent = true;
}
if (onlyCreateNonNetscapePlugins) {
KURL completedURL;
if (!url.isEmpty())
completedURL = frame->loader()->completeURL(url);
if (frame->loader()->client()->objectContentType(completedURL, serviceType) == ObjectContentNetscapePlugin)
return;
}
bool beforeLoadAllowedLoad = objectElement->dispatchBeforeLoadEvent(url);
// beforeload events can modify the DOM, potentially causing
// RenderWidget::destroy() to be called. Ensure we haven't been
// destroyed before continuing.
if (!node())
return;
bool success = beforeLoadAllowedLoad && frame->loader()->subframeLoader()->requestObject(this, url, objectElement->getAttribute(nameAttr), serviceType, paramNames, paramValues);
if (!success && m_hasFallbackContent)
objectElement->renderFallbackContent();
} else if (node()->hasTagName(embedTag)) {
HTMLEmbedElement* embedElement = static_cast<HTMLEmbedElement*>(node());
embedElement->setNeedWidgetUpdate(false);
url = embedElement->url();
serviceType = embedElement->serviceType();
if (url.isEmpty() && serviceType.isEmpty())
return;
if (!isURLAllowed(document(), url))
return;
// add all attributes set on the embed object
NamedNodeMap* attributes = embedElement->attributes();
if (attributes) {
for (unsigned i = 0; i < attributes->length(); ++i) {
Attribute* it = attributes->attributeItem(i);
paramNames.append(it->name().localName().string());
paramValues.append(it->value().string());
}
}
if (onlyCreateNonNetscapePlugins) {
KURL completedURL;
if (!url.isEmpty())
completedURL = frame->loader()->completeURL(url);
if (frame->loader()->client()->objectContentType(completedURL, serviceType) == ObjectContentNetscapePlugin)
return;
}
if (embedElement->dispatchBeforeLoadEvent(url))
frame->loader()->subframeLoader()->requestObject(this, url, embedElement->getAttribute(nameAttr), serviceType, paramNames, paramValues);
}
#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
else if (node()->hasTagName(videoTag) || node()->hasTagName(audioTag)) {
HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(node());
KURL kurl;
mediaElement->getPluginProxyParams(kurl, paramNames, paramValues);
mediaElement->setNeedWidgetUpdate(false);
frame->loader()->subframeLoader()->loadMediaPlayerProxyPlugin(node(), kurl, paramNames, paramValues);
}
#endif
}