mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 20:05:49 +00:00
Fixed bug with Java-targeted object tags.
This commit is contained in:
parent
28add8ce53
commit
765491b880
@ -150,6 +150,8 @@ public:
|
|||||||
nsPluginPort* GetPluginPort();
|
nsPluginPort* GetPluginPort();
|
||||||
void ReleasePluginPort();//~~~
|
void ReleasePluginPort();//~~~
|
||||||
|
|
||||||
|
void SetPluginHost(nsIPluginHost* aHost);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
nsPluginWindow mPluginWindow;
|
nsPluginWindow mPluginWindow;
|
||||||
nsIPluginInstance *mInstance;
|
nsIPluginInstance *mInstance;
|
||||||
@ -162,7 +164,8 @@ private:
|
|||||||
char **mParamVals;
|
char **mParamVals;
|
||||||
nsIWidget *mWidget;
|
nsIWidget *mWidget;
|
||||||
nsIPresContext *mContext;
|
nsIPresContext *mContext;
|
||||||
nsITimer *mPluginTimer;
|
nsITimer *mPluginTimer;
|
||||||
|
nsIPluginHost *mPluginHost;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define nsObjectFrameSuper nsHTMLContainerFrame
|
#define nsObjectFrameSuper nsHTMLContainerFrame
|
||||||
@ -244,7 +247,7 @@ private:
|
|||||||
nsPluginInstanceOwner *mInstanceOwner;
|
nsPluginInstanceOwner *mInstanceOwner;
|
||||||
nsIURL *mFullURL;
|
nsIURL *mFullURL;
|
||||||
nsIFrame *mFirstChild;
|
nsIFrame *mFirstChild;
|
||||||
nsIWidget *mWidget;
|
nsIWidget *mWidget;
|
||||||
};
|
};
|
||||||
|
|
||||||
nsObjectFrame::~nsObjectFrame()
|
nsObjectFrame::~nsObjectFrame()
|
||||||
@ -888,8 +891,6 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
|
|||||||
if (NS_CONTENT_ATTR_HAS_VALUE == mContent->GetAttribute(nameSpaceID, nsHTMLAtoms::classid, classid))
|
if (NS_CONTENT_ATTR_HAS_VALUE == mContent->GetAttribute(nameSpaceID, nsHTMLAtoms::classid, classid))
|
||||||
{
|
{
|
||||||
nsCID widgetCID;
|
nsCID widgetCID;
|
||||||
|
|
||||||
classid.Cut(0, 6); // Strip off the "clsid:". What's left is the class ID.
|
|
||||||
|
|
||||||
// if we find "java:" in the class id, or we match the Java classid number, we have a java applet
|
// if we find "java:" in the class id, or we match the Java classid number, we have a java applet
|
||||||
if((classid.Find("java:") != -1) || classid == JAVA_CLASS_ID)
|
if((classid.Find("java:") != -1) || classid == JAVA_CLASS_ID)
|
||||||
@ -949,6 +950,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mInstanceOwner->SetPluginHost(pluginHost);
|
||||||
rv = InstantiatePlugin(aPresContext, aMetrics, aReflowState, pluginHost, mimeType, fullURL);
|
rv = InstantiatePlugin(aPresContext, aMetrics, aReflowState, pluginHost, mimeType, fullURL);
|
||||||
}
|
}
|
||||||
else // otherwise, we're either an ActiveX control or an internal widget
|
else // otherwise, we're either an ActiveX control or an internal widget
|
||||||
@ -1004,6 +1006,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mInstanceOwner->SetPluginHost(pluginHost);
|
||||||
if(pluginHost->IsPluginEnabledForType("application/x-oleobject") == NS_OK)
|
if(pluginHost->IsPluginEnabledForType("application/x-oleobject") == NS_OK)
|
||||||
rv = InstantiatePlugin(aPresContext, aMetrics, aReflowState, pluginHost, "application/x-oleobject", fullURL);
|
rv = InstantiatePlugin(aPresContext, aMetrics, aReflowState, pluginHost, "application/x-oleobject", fullURL);
|
||||||
else if(pluginHost->IsPluginEnabledForType("application/oleobject") == NS_OK)
|
else if(pluginHost->IsPluginEnabledForType("application/oleobject") == NS_OK)
|
||||||
@ -1058,6 +1061,8 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mInstanceOwner->SetPluginHost(pluginHost);
|
||||||
|
|
||||||
mContent->GetTag(atom);
|
mContent->GetTag(atom);
|
||||||
// check if it's an applet
|
// check if it's an applet
|
||||||
if (atom == nsHTMLAtoms::applet && atom)
|
if (atom == nsHTMLAtoms::applet && atom)
|
||||||
@ -1138,9 +1143,9 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
|
|||||||
if(extension)
|
if(extension)
|
||||||
++extension;
|
++extension;
|
||||||
|
|
||||||
delete [] cString;
|
|
||||||
|
|
||||||
pluginHost->IsPluginEnabledForExtension((const char *)extension, (const char *&)mimeType);
|
pluginHost->IsPluginEnabledForExtension((const char *)extension, (const char *&)mimeType);
|
||||||
|
|
||||||
|
delete [] cString;
|
||||||
}
|
}
|
||||||
|
|
||||||
rv = InstantiatePlugin(aPresContext, aMetrics, aReflowState, pluginHost, mimeType, fullURL);
|
rv = InstantiatePlugin(aPresContext, aMetrics, aReflowState, pluginHost, mimeType, fullURL);
|
||||||
@ -1587,6 +1592,7 @@ nsPluginInstanceOwner::nsPluginInstanceOwner()
|
|||||||
mParamNames = nsnull;
|
mParamNames = nsnull;
|
||||||
mParamVals = nsnull;
|
mParamVals = nsnull;
|
||||||
mPluginTimer = nsnull;
|
mPluginTimer = nsnull;
|
||||||
|
mPluginHost = nsnull;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsPluginInstanceOwner::~nsPluginInstanceOwner()
|
nsPluginInstanceOwner::~nsPluginInstanceOwner()
|
||||||
@ -1601,12 +1607,13 @@ nsPluginInstanceOwner::~nsPluginInstanceOwner()
|
|||||||
|
|
||||||
if (nsnull != mInstance)
|
if (nsnull != mInstance)
|
||||||
{
|
{
|
||||||
|
mPluginHost->StopPluginInstance(mInstance);
|
||||||
mInstance->Stop();
|
mInstance->Stop();
|
||||||
mInstance->SetWindow(nsnull);
|
mInstance->SetWindow(nsnull);
|
||||||
//mInstance->Destroy();
|
|
||||||
NS_RELEASE(mInstance);
|
NS_RELEASE(mInstance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_RELEASE(mPluginHost);
|
||||||
mOwner = nsnull;
|
mOwner = nsnull;
|
||||||
|
|
||||||
for (cnt = 0; cnt < mNumAttrs; cnt++)
|
for (cnt = 0; cnt < mNumAttrs; cnt++)
|
||||||
@ -2522,3 +2529,12 @@ NS_IMETHODIMP nsPluginInstanceOwner::CreateWidget(void)
|
|||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nsPluginInstanceOwner::SetPluginHost(nsIPluginHost* aHost)
|
||||||
|
{
|
||||||
|
if(mPluginHost != nsnull)
|
||||||
|
NS_RELEASE(mPluginHost);
|
||||||
|
|
||||||
|
mPluginHost = aHost;
|
||||||
|
NS_ADDREF(mPluginHost);
|
||||||
|
}
|
||||||
|
@ -150,6 +150,8 @@ public:
|
|||||||
nsPluginPort* GetPluginPort();
|
nsPluginPort* GetPluginPort();
|
||||||
void ReleasePluginPort();//~~~
|
void ReleasePluginPort();//~~~
|
||||||
|
|
||||||
|
void SetPluginHost(nsIPluginHost* aHost);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
nsPluginWindow mPluginWindow;
|
nsPluginWindow mPluginWindow;
|
||||||
nsIPluginInstance *mInstance;
|
nsIPluginInstance *mInstance;
|
||||||
@ -162,7 +164,8 @@ private:
|
|||||||
char **mParamVals;
|
char **mParamVals;
|
||||||
nsIWidget *mWidget;
|
nsIWidget *mWidget;
|
||||||
nsIPresContext *mContext;
|
nsIPresContext *mContext;
|
||||||
nsITimer *mPluginTimer;
|
nsITimer *mPluginTimer;
|
||||||
|
nsIPluginHost *mPluginHost;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define nsObjectFrameSuper nsHTMLContainerFrame
|
#define nsObjectFrameSuper nsHTMLContainerFrame
|
||||||
@ -244,7 +247,7 @@ private:
|
|||||||
nsPluginInstanceOwner *mInstanceOwner;
|
nsPluginInstanceOwner *mInstanceOwner;
|
||||||
nsIURL *mFullURL;
|
nsIURL *mFullURL;
|
||||||
nsIFrame *mFirstChild;
|
nsIFrame *mFirstChild;
|
||||||
nsIWidget *mWidget;
|
nsIWidget *mWidget;
|
||||||
};
|
};
|
||||||
|
|
||||||
nsObjectFrame::~nsObjectFrame()
|
nsObjectFrame::~nsObjectFrame()
|
||||||
@ -888,8 +891,6 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
|
|||||||
if (NS_CONTENT_ATTR_HAS_VALUE == mContent->GetAttribute(nameSpaceID, nsHTMLAtoms::classid, classid))
|
if (NS_CONTENT_ATTR_HAS_VALUE == mContent->GetAttribute(nameSpaceID, nsHTMLAtoms::classid, classid))
|
||||||
{
|
{
|
||||||
nsCID widgetCID;
|
nsCID widgetCID;
|
||||||
|
|
||||||
classid.Cut(0, 6); // Strip off the "clsid:". What's left is the class ID.
|
|
||||||
|
|
||||||
// if we find "java:" in the class id, or we match the Java classid number, we have a java applet
|
// if we find "java:" in the class id, or we match the Java classid number, we have a java applet
|
||||||
if((classid.Find("java:") != -1) || classid == JAVA_CLASS_ID)
|
if((classid.Find("java:") != -1) || classid == JAVA_CLASS_ID)
|
||||||
@ -949,6 +950,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mInstanceOwner->SetPluginHost(pluginHost);
|
||||||
rv = InstantiatePlugin(aPresContext, aMetrics, aReflowState, pluginHost, mimeType, fullURL);
|
rv = InstantiatePlugin(aPresContext, aMetrics, aReflowState, pluginHost, mimeType, fullURL);
|
||||||
}
|
}
|
||||||
else // otherwise, we're either an ActiveX control or an internal widget
|
else // otherwise, we're either an ActiveX control or an internal widget
|
||||||
@ -1004,6 +1006,7 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mInstanceOwner->SetPluginHost(pluginHost);
|
||||||
if(pluginHost->IsPluginEnabledForType("application/x-oleobject") == NS_OK)
|
if(pluginHost->IsPluginEnabledForType("application/x-oleobject") == NS_OK)
|
||||||
rv = InstantiatePlugin(aPresContext, aMetrics, aReflowState, pluginHost, "application/x-oleobject", fullURL);
|
rv = InstantiatePlugin(aPresContext, aMetrics, aReflowState, pluginHost, "application/x-oleobject", fullURL);
|
||||||
else if(pluginHost->IsPluginEnabledForType("application/oleobject") == NS_OK)
|
else if(pluginHost->IsPluginEnabledForType("application/oleobject") == NS_OK)
|
||||||
@ -1058,6 +1061,8 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
|
|||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mInstanceOwner->SetPluginHost(pluginHost);
|
||||||
|
|
||||||
mContent->GetTag(atom);
|
mContent->GetTag(atom);
|
||||||
// check if it's an applet
|
// check if it's an applet
|
||||||
if (atom == nsHTMLAtoms::applet && atom)
|
if (atom == nsHTMLAtoms::applet && atom)
|
||||||
@ -1138,9 +1143,9 @@ nsObjectFrame::Reflow(nsIPresContext& aPresContext,
|
|||||||
if(extension)
|
if(extension)
|
||||||
++extension;
|
++extension;
|
||||||
|
|
||||||
delete [] cString;
|
|
||||||
|
|
||||||
pluginHost->IsPluginEnabledForExtension((const char *)extension, (const char *&)mimeType);
|
pluginHost->IsPluginEnabledForExtension((const char *)extension, (const char *&)mimeType);
|
||||||
|
|
||||||
|
delete [] cString;
|
||||||
}
|
}
|
||||||
|
|
||||||
rv = InstantiatePlugin(aPresContext, aMetrics, aReflowState, pluginHost, mimeType, fullURL);
|
rv = InstantiatePlugin(aPresContext, aMetrics, aReflowState, pluginHost, mimeType, fullURL);
|
||||||
@ -1587,6 +1592,7 @@ nsPluginInstanceOwner::nsPluginInstanceOwner()
|
|||||||
mParamNames = nsnull;
|
mParamNames = nsnull;
|
||||||
mParamVals = nsnull;
|
mParamVals = nsnull;
|
||||||
mPluginTimer = nsnull;
|
mPluginTimer = nsnull;
|
||||||
|
mPluginHost = nsnull;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsPluginInstanceOwner::~nsPluginInstanceOwner()
|
nsPluginInstanceOwner::~nsPluginInstanceOwner()
|
||||||
@ -1601,12 +1607,13 @@ nsPluginInstanceOwner::~nsPluginInstanceOwner()
|
|||||||
|
|
||||||
if (nsnull != mInstance)
|
if (nsnull != mInstance)
|
||||||
{
|
{
|
||||||
|
mPluginHost->StopPluginInstance(mInstance);
|
||||||
mInstance->Stop();
|
mInstance->Stop();
|
||||||
mInstance->SetWindow(nsnull);
|
mInstance->SetWindow(nsnull);
|
||||||
//mInstance->Destroy();
|
|
||||||
NS_RELEASE(mInstance);
|
NS_RELEASE(mInstance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NS_RELEASE(mPluginHost);
|
||||||
mOwner = nsnull;
|
mOwner = nsnull;
|
||||||
|
|
||||||
for (cnt = 0; cnt < mNumAttrs; cnt++)
|
for (cnt = 0; cnt < mNumAttrs; cnt++)
|
||||||
@ -2522,3 +2529,12 @@ NS_IMETHODIMP nsPluginInstanceOwner::CreateWidget(void)
|
|||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nsPluginInstanceOwner::SetPluginHost(nsIPluginHost* aHost)
|
||||||
|
{
|
||||||
|
if(mPluginHost != nsnull)
|
||||||
|
NS_RELEASE(mPluginHost);
|
||||||
|
|
||||||
|
mPluginHost = aHost;
|
||||||
|
NS_ADDREF(mPluginHost);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user