本文整理汇总了C++中RenderEmbeddedObject::setWidget方法的典型用法代码示例。如果您正苦于以下问题:C++ RenderEmbeddedObject::setWidget方法的具体用法?C++ RenderEmbeddedObject::setWidget怎么用?C++ RenderEmbeddedObject::setWidget使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类RenderEmbeddedObject
的用法示例。
在下文中一共展示了RenderEmbeddedObject::setWidget方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadPlugin
bool SubframeLoader::loadPlugin(HTMLPlugInImageElement* pluginElement, const KURL& url, const String& mimeType,
const Vector<String>& paramNames, const Vector<String>& paramValues, bool useFallback)
{
RenderEmbeddedObject* renderer = pluginElement->renderEmbeddedObject();
// FIXME: This code should not depend on renderer!
if (!renderer || useFallback)
return false;
if (!document()->securityOrigin()->canDisplay(url)) {
FrameLoader::reportLocalLoadFailed(m_frame, url.string());
return false;
}
FrameLoader* frameLoader = m_frame->loader();
frameLoader->checkIfRunInsecureContent(document()->securityOrigin(), url);
IntSize contentSize(renderer->contentWidth(), renderer->contentHeight());
bool loadManually = document()->isPluginDocument() && !m_containsPlugins;
RefPtr<Widget> widget = frameLoader->client()->createPlugin(contentSize,
pluginElement, url, paramNames, paramValues, mimeType, loadManually);
if (!widget) {
renderer->setShowsMissingPluginIndicator();
return false;
}
renderer->setWidget(widget);
m_containsPlugins = true;
#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
pluginElement->setNeedsStyleRecalc(SyntheticStyleChange);
#endif
return true;
}
示例2: loadPlugin
bool HTMLPlugInElement::loadPlugin(const KURL& url, const String& mimeType, const Vector<String>& paramNames, const Vector<String>& paramValues, bool useFallback)
{
Frame* frame = document().frame();
if (!frame->loader().allowPlugins(AboutToInstantiatePlugin))
return false;
RenderEmbeddedObject* renderer = renderEmbeddedObject();
// FIXME: This code should not depend on renderer!
if (!renderer || useFallback)
return false;
WTF_LOG(Plugins, "%p Plug-in URL: %s", this, m_url.utf8().data());
WTF_LOG(Plugins, " Loaded URL: %s", url.string().utf8().data());
m_loadedUrl = url;
IntSize contentSize = roundedIntSize(LayoutSize(renderer->contentWidth(), renderer->contentHeight()));
bool loadManually = document().isPluginDocument() && !document().containsPlugins() && toPluginDocument(document()).shouldLoadPluginManually();
RefPtr<Widget> widget = frame->loader().client()->createPlugin(contentSize, this, url, paramNames, paramValues, mimeType, loadManually);
if (!widget) {
if (!renderer->showsUnavailablePluginIndicator())
renderer->setPluginUnavailabilityReason(RenderEmbeddedObject::PluginMissing);
return false;
}
renderer->setWidget(widget);
document().setContainsPlugins();
setNeedsStyleRecalc(LocalStyleChange, StyleChangeFromRenderer);
return true;
}
示例3: loadPlugin
bool SubframeLoader::loadPlugin(HTMLPlugInImageElement* pluginElement, const URL& url, const String& mimeType,
const Vector<String>& paramNames, const Vector<String>& paramValues, bool useFallback)
{
RenderEmbeddedObject* renderer = pluginElement->renderEmbeddedObject();
// FIXME: This code should not depend on renderer!
if (!renderer || useFallback)
return false;
pluginElement->subframeLoaderWillCreatePlugIn(url);
IntSize contentSize = roundedIntSize(LayoutSize(renderer->contentWidth(), renderer->contentHeight()));
bool loadManually = document()->isPluginDocument() && !m_containsPlugins && toPluginDocument(document())->shouldLoadPluginManually();
RefPtr<Widget> widget = m_frame.loader().client().createPlugin(contentSize,
pluginElement, url, paramNames, paramValues, mimeType, loadManually);
if (!widget) {
if (!renderer->isPluginUnavailable())
renderer->setPluginUnavailabilityReason(RenderEmbeddedObject::PluginMissing);
return false;
}
pluginElement->subframeLoaderDidCreatePlugIn(widget.get());
renderer->setWidget(widget);
m_containsPlugins = true;
#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
pluginElement->setNeedsStyleRecalc(SyntheticStyleChange);
#endif
return true;
}
示例4: loadPlugin
bool SubframeLoader::loadPlugin(HTMLPlugInImageElement& pluginElement, const URL& url, const String& mimeType, const Vector<String>& paramNames, const Vector<String>& paramValues, bool useFallback)
{
RenderEmbeddedObject* renderer = pluginElement.renderEmbeddedObject();
// FIXME: This code should not depend on renderer!
if (!renderer || useFallback)
return false;
pluginElement.subframeLoaderWillCreatePlugIn(url);
IntSize contentSize = roundedIntSize(LayoutSize(renderer->contentWidth(), renderer->contentHeight()));
bool loadManually = is<PluginDocument>(*document()) && !m_containsPlugins && downcast<PluginDocument>(*document()).shouldLoadPluginManually();
#if PLATFORM(IOS)
// On iOS, we only tell the plugin to be in full page mode if the containing plugin document is the top level document.
if (document()->ownerElement())
loadManually = false;
#endif
RefPtr<Widget> widget = m_frame.loader().client().createPlugin(contentSize, &pluginElement, url, paramNames, paramValues, mimeType, loadManually);
if (!widget) {
if (!renderer->isPluginUnavailable())
renderer->setPluginUnavailabilityReason(RenderEmbeddedObject::PluginMissing);
return false;
}
pluginElement.subframeLoaderDidCreatePlugIn(*widget);
renderer->setWidget(widget);
m_containsPlugins = true;
return true;
}
示例5: updateWidget
void HTMLAppletElement::updateWidget(PluginCreationOption pluginCreationOption)
{
setNeedsWidgetUpdate(false);
// FIXME: This should ASSERT isFinishedParsingChildren() instead.
if (!isFinishedParsingChildren())
return;
#if PLATFORM(IOS)
UNUSED_PARAM(pluginCreationOption);
#else
// FIXME: It's sadness that we have this special case here.
// See http://trac.webkit.org/changeset/25128 and
// plugins/netscape-plugin-setwindow-size.html
if (pluginCreationOption == CreateOnlyNonNetscapePlugins) {
// Ensure updateWidget() is called again during layout to create the Netscape plug-in.
setNeedsWidgetUpdate(true);
return;
}
RenderEmbeddedObject* renderer = renderEmbeddedObject();
LayoutUnit contentWidth = renderer->style().width().isFixed() ? LayoutUnit(renderer->style().width().value()) :
renderer->width() - renderer->horizontalBorderAndPaddingExtent();
LayoutUnit contentHeight = renderer->style().height().isFixed() ? LayoutUnit(renderer->style().height().value()) :
renderer->height() - renderer->verticalBorderAndPaddingExtent();
Vector<String> paramNames;
Vector<String> paramValues;
paramNames.append("code");
paramValues.append(fastGetAttribute(codeAttr).string());
const AtomicString& codeBase = fastGetAttribute(codebaseAttr);
if (!codeBase.isNull()) {
paramNames.append(ASCIILiteral("codeBase"));
paramValues.append(codeBase.string());
}
const AtomicString& name = document().isHTMLDocument() ? getNameAttribute() : getIdAttribute();
if (!name.isNull()) {
paramNames.append("name");
paramValues.append(name.string());
}
const AtomicString& archive = fastGetAttribute(archiveAttr);
if (!archive.isNull()) {
paramNames.append(ASCIILiteral("archive"));
paramValues.append(archive.string());
}
paramNames.append(ASCIILiteral("baseURL"));
paramValues.append(document().baseURL().string());
const AtomicString& mayScript = fastGetAttribute(mayscriptAttr);
if (!mayScript.isNull()) {
paramNames.append(ASCIILiteral("mayScript"));
paramValues.append(mayScript.string());
}
for (auto& param : childrenOfType<HTMLParamElement>(*this)) {
if (param.name().isEmpty())
continue;
paramNames.append(param.name());
paramValues.append(param.value());
}
Frame* frame = document().frame();
ASSERT(frame);
renderer->setWidget(frame->loader().subframeLoader().createJavaAppletWidget(roundedIntSize(LayoutSize(contentWidth, contentHeight)), *this, paramNames, paramValues));
#endif // !PLATFORM(IOS)
}
示例6: updateWidget
void HTMLAppletElement::updateWidget(PluginCreationOption)
{
setNeedsWidgetUpdate(false);
// FIXME: This should ASSERT isFinishedParsingChildren() instead.
if (!isFinishedParsingChildren())
return;
RenderEmbeddedObject* renderer = renderEmbeddedObject();
Frame* frame = document().frame();
ASSERT(frame);
LayoutUnit contentWidth = renderer->style()->width().isFixed() ? LayoutUnit(renderer->style()->width().value()) :
renderer->width() - renderer->borderAndPaddingWidth();
LayoutUnit contentHeight = renderer->style()->height().isFixed() ? LayoutUnit(renderer->style()->height().value()) :
renderer->height() - renderer->borderAndPaddingHeight();
Vector<String> paramNames;
Vector<String> paramValues;
paramNames.append("code");
paramValues.append(getAttribute(codeAttr).string());
const AtomicString& codeBase = getAttribute(codebaseAttr);
if (!codeBase.isNull()) {
KURL codeBaseURL = document().completeURL(codeBase);
if (!document().securityOrigin()->canDisplay(codeBaseURL)) {
FrameLoader::reportLocalLoadFailed(frame, codeBaseURL.string());
return;
}
const char javaAppletMimeType[] = "application/x-java-applet";
if (!document().contentSecurityPolicy()->allowObjectFromSource(codeBaseURL)
|| !document().contentSecurityPolicy()->allowPluginType(javaAppletMimeType, javaAppletMimeType, codeBaseURL))
return;
paramNames.append("codeBase");
paramValues.append(codeBase.string());
}
const AtomicString& name = document().isHTMLDocument() ? getNameAttribute() : getIdAttribute();
if (!name.isNull()) {
paramNames.append("name");
paramValues.append(name.string());
}
const AtomicString& archive = getAttribute(archiveAttr);
if (!archive.isNull()) {
paramNames.append("archive");
paramValues.append(archive.string());
}
paramNames.append("baseURL");
KURL baseURL = document().baseURL();
paramValues.append(baseURL.string());
const AtomicString& mayScript = getAttribute(mayscriptAttr);
if (!mayScript.isNull()) {
paramNames.append("mayScript");
paramValues.append(mayScript.string());
}
for (Node* child = firstChild(); child; child = child->nextSibling()) {
if (!child->hasTagName(paramTag))
continue;
HTMLParamElement* param = toHTMLParamElement(child);
if (param->name().isEmpty())
continue;
paramNames.append(param->name());
paramValues.append(param->value());
}
RefPtr<Widget> widget;
if (frame->loader()->allowPlugins(AboutToInstantiatePlugin))
widget = frame->loader()->client()->createJavaAppletWidget(roundedIntSize(LayoutSize(contentWidth, contentHeight)), this, baseURL, paramNames, paramValues);
if (!widget) {
if (!renderer->showsUnavailablePluginIndicator())
renderer->setPluginUnavailabilityReason(RenderEmbeddedObject::PluginMissing);
return;
}
frame->loader()->setContainsPlugins();
renderer->setWidget(widget);
}
示例7: updateWidgetInternal
void HTMLAppletElement::updateWidgetInternal()
{
ASSERT(!m_isDelayingLoadEvent);
setNeedsWidgetUpdate(false);
// FIXME: This should ASSERT isFinishedParsingChildren() instead.
if (!isFinishedParsingChildren())
return;
RenderEmbeddedObject* renderer = renderEmbeddedObject();
Frame* frame = document().frame();
ASSERT(frame);
LayoutUnit contentWidth = renderer->style()->width().isFixed() ? LayoutUnit(renderer->style()->width().value()) :
renderer->width() - renderer->borderAndPaddingWidth();
LayoutUnit contentHeight = renderer->style()->height().isFixed() ? LayoutUnit(renderer->style()->height().value()) :
renderer->height() - renderer->borderAndPaddingHeight();
Vector<String> paramNames;
Vector<String> paramValues;
const AtomicString& codeBase = getAttribute(codebaseAttr);
if (!codeBase.isNull()) {
KURL codeBaseURL = document().completeURL(codeBase);
paramNames.append("codeBase");
paramValues.append(codeBase.string());
}
const AtomicString& archive = getAttribute(archiveAttr);
if (!archive.isNull()) {
paramNames.append("archive");
paramValues.append(archive.string());
}
const AtomicString& code = getAttribute(codeAttr);
paramNames.append("code");
paramValues.append(code.string());
// If the 'codebase' attribute is set, it serves as a relative root for the file that the Java
// plugin will load. If the 'code' attribute is set, and the 'archive' is not set, then we need
// to check the url generated by resolving 'code' against 'codebase'. If the 'archive'
// attribute is set, then 'code' points to a class inside the archive, so we need to check the
// url generated by resolving 'archive' against 'codebase'.
KURL urlToCheck;
KURL rootURL = codeBase.isNull() ? document().url() : document().completeURL(codeBase);
if (!archive.isNull())
urlToCheck = KURL(rootURL, archive);
else if (!code.isNull())
urlToCheck = KURL(rootURL, code);
if (!canEmbedURL(urlToCheck))
return;
const AtomicString& name = document().isHTMLDocument() ? getNameAttribute() : getIdAttribute();
if (!name.isNull()) {
paramNames.append("name");
paramValues.append(name.string());
}
paramNames.append("baseURL");
KURL baseURL = document().baseURL();
paramValues.append(baseURL.string());
const AtomicString& mayScript = getAttribute(mayscriptAttr);
if (!mayScript.isNull()) {
paramNames.append("mayScript");
paramValues.append(mayScript.string());
}
for (Node* child = firstChild(); child; child = child->nextSibling()) {
if (!child->hasTagName(paramTag))
continue;
HTMLParamElement* param = toHTMLParamElement(child);
if (param->name().isEmpty())
continue;
paramNames.append(param->name());
paramValues.append(param->value());
}
RefPtr<Widget> widget;
if (frame->loader().allowPlugins(AboutToInstantiatePlugin))
widget = frame->loader().client()->createJavaAppletWidget(roundedIntSize(LayoutSize(contentWidth, contentHeight)), this, baseURL, paramNames, paramValues);
if (!widget) {
if (!renderer->showsUnavailablePluginIndicator())
renderer->setPluginUnavailabilityReason(RenderEmbeddedObject::PluginMissing);
return;
}
document().setContainsPlugins();
renderer->setWidget(widget);
}