зеркало из https://github.com/mozilla/pjs.git
r=peterl
sr=waterson a=asa modules/plugin/base/src/nsIPluginInstanceOwner.h modules/plugin/base/src/nsPluginHostImpl.cpp modules/plugin/base/src/nsPluginHostImpl.h modules/plugin/base/src/nsPluginViewer.cpp modules/oji/src/nsJVMManager.cpp modules/oji/src/nsJVMManager.h layout/html/base/src/nsObjectFrame.cpp xpfe/global/resources/locale/en-US/region.properties Here's what I did to fix this bug. I pestered Rick Potts about the problem of nsIWebBrowserChrome->SetStatus() not being synchronous. He fixed that under bug 97227. Taking advantage of Rick's fix to 97227, I modified nsIPluginInstanceOwner to have new method, ShowStatus(const PRUnichar *aStatusMsg). This is necessary to allow for localized messages to be posted from the plugin, such as "Starting plugin for type application/x-java-vm" or "Beginnen steckbar f�r Art application/x-java-vm". I modified all the implementations of nsIPluginInstanceOwner: layout/html/base/src/nsObjectFrame.cpp modules/plugin/base/src/nsPluginViewer.cpp I inserted a call to nsIPluginInstanceOwner->ShowStatus() at the part just before the big "whole damn app freezes when starting java" thing happens. I also modifed nsJVMManager.cpp ShowJavaConsole() to do the same. These are the two places I know of now that can start java.
This commit is contained in:
Родитель
f78284509b
Коммит
988c747a4f
|
@ -145,6 +145,8 @@ public:
|
|||
PRUint32 aHeadersDataLen);
|
||||
|
||||
NS_IMETHOD ShowStatus(const char *aStatusMsg);
|
||||
|
||||
NS_IMETHOD ShowStatus(const PRUnichar *aStatusMsg);
|
||||
|
||||
NS_IMETHOD GetDocument(nsIDocument* *aDocument);
|
||||
|
||||
|
@ -2063,34 +2065,43 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, const char *aTarge
|
|||
NS_IMETHODIMP nsPluginInstanceOwner::ShowStatus(const char *aStatusMsg)
|
||||
{
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
|
||||
rv = this->ShowStatus(NS_ConvertUTF8toUCS2(aStatusMsg).get());
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (nsnull != mContext)
|
||||
{
|
||||
nsCOMPtr<nsISupports> cont;
|
||||
NS_IMETHODIMP nsPluginInstanceOwner::ShowStatus(const PRUnichar *aStatusMsg)
|
||||
{
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
|
||||
rv = mContext->GetContainer(getter_AddRefs(cont));
|
||||
|
||||
if ((NS_OK == rv) && (nsnull != cont))
|
||||
{
|
||||
nsCOMPtr<nsIDocShellTreeItem> docShellItem(do_QueryInterface(cont));
|
||||
if (docShellItem)
|
||||
{
|
||||
nsCOMPtr<nsIDocShellTreeOwner> treeOwner;
|
||||
docShellItem->GetTreeOwner(getter_AddRefs(treeOwner));
|
||||
|
||||
if(treeOwner)
|
||||
{
|
||||
nsCOMPtr<nsIWebBrowserChrome> browserChrome(do_GetInterface(treeOwner));
|
||||
|
||||
if(browserChrome)
|
||||
{
|
||||
nsAutoString msg; msg.AssignWithConversion(aStatusMsg);
|
||||
browserChrome->SetStatus(nsIWebBrowserChrome::STATUS_SCRIPT, msg.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!mContext) {
|
||||
return rv;
|
||||
}
|
||||
nsCOMPtr<nsISupports> cont;
|
||||
nsCOMPtr<nsIDocShellTreeOwner> treeOwner;
|
||||
|
||||
rv = mContext->GetContainer(getter_AddRefs(cont));
|
||||
if (NS_FAILED(rv) || !cont) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDocShellTreeItem> docShellItem(do_QueryInterface(cont, &rv));
|
||||
if (NS_FAILED(rv) || !docShellItem) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
rv = docShellItem->GetTreeOwner(getter_AddRefs(treeOwner));
|
||||
if (NS_FAILED(rv) || !treeOwner) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIWebBrowserChrome> browserChrome(do_GetInterface(treeOwner, &rv));
|
||||
if (NS_FAILED(rv) || !browserChrome) {
|
||||
return rv;
|
||||
}
|
||||
rv = browserChrome->SetStatus(nsIWebBrowserChrome::STATUS_SCRIPT,
|
||||
aStatusMsg);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
|
|
@ -145,6 +145,8 @@ public:
|
|||
PRUint32 aHeadersDataLen);
|
||||
|
||||
NS_IMETHOD ShowStatus(const char *aStatusMsg);
|
||||
|
||||
NS_IMETHOD ShowStatus(const PRUnichar *aStatusMsg);
|
||||
|
||||
NS_IMETHOD GetDocument(nsIDocument* *aDocument);
|
||||
|
||||
|
@ -2063,34 +2065,43 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, const char *aTarge
|
|||
NS_IMETHODIMP nsPluginInstanceOwner::ShowStatus(const char *aStatusMsg)
|
||||
{
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
|
||||
rv = this->ShowStatus(NS_ConvertUTF8toUCS2(aStatusMsg).get());
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (nsnull != mContext)
|
||||
{
|
||||
nsCOMPtr<nsISupports> cont;
|
||||
NS_IMETHODIMP nsPluginInstanceOwner::ShowStatus(const PRUnichar *aStatusMsg)
|
||||
{
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
|
||||
rv = mContext->GetContainer(getter_AddRefs(cont));
|
||||
|
||||
if ((NS_OK == rv) && (nsnull != cont))
|
||||
{
|
||||
nsCOMPtr<nsIDocShellTreeItem> docShellItem(do_QueryInterface(cont));
|
||||
if (docShellItem)
|
||||
{
|
||||
nsCOMPtr<nsIDocShellTreeOwner> treeOwner;
|
||||
docShellItem->GetTreeOwner(getter_AddRefs(treeOwner));
|
||||
|
||||
if(treeOwner)
|
||||
{
|
||||
nsCOMPtr<nsIWebBrowserChrome> browserChrome(do_GetInterface(treeOwner));
|
||||
|
||||
if(browserChrome)
|
||||
{
|
||||
nsAutoString msg; msg.AssignWithConversion(aStatusMsg);
|
||||
browserChrome->SetStatus(nsIWebBrowserChrome::STATUS_SCRIPT, msg.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!mContext) {
|
||||
return rv;
|
||||
}
|
||||
nsCOMPtr<nsISupports> cont;
|
||||
nsCOMPtr<nsIDocShellTreeOwner> treeOwner;
|
||||
|
||||
rv = mContext->GetContainer(getter_AddRefs(cont));
|
||||
if (NS_FAILED(rv) || !cont) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDocShellTreeItem> docShellItem(do_QueryInterface(cont, &rv));
|
||||
if (NS_FAILED(rv) || !docShellItem) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
rv = docShellItem->GetTreeOwner(getter_AddRefs(treeOwner));
|
||||
if (NS_FAILED(rv) || !treeOwner) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIWebBrowserChrome> browserChrome(do_GetInterface(treeOwner, &rv));
|
||||
if (NS_FAILED(rv) || !browserChrome) {
|
||||
return rv;
|
||||
}
|
||||
rv = browserChrome->SetStatus(nsIWebBrowserChrome::STATUS_SCRIPT,
|
||||
aStatusMsg);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
|
|
@ -45,6 +45,23 @@
|
|||
#include "nsIPluginHost.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIEventQueueService.h"
|
||||
|
||||
// All these interfaces are necessary just to get the damn
|
||||
// nsIWebBrowserChrome to send the "Starting Java" message to the status
|
||||
// bar.
|
||||
#include "nsIWindowWatcher.h"
|
||||
#include "nsIDOMWindow.h"
|
||||
#include "nsIScriptGlobalObject.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIDocShell.h"
|
||||
#include "nsIDocShellTreeItem.h"
|
||||
#include "nsIDocShellTreeOwner.h"
|
||||
#include "nsIWebBrowserChrome.h"
|
||||
#include "nsIInterfaceRequestor.h"
|
||||
|
||||
#include "nsIStringBundle.h"
|
||||
|
||||
#include "nsIPref.h"
|
||||
#include "lcglue.h"
|
||||
|
||||
|
@ -67,6 +84,8 @@ extern "C" int XP_JAVA_GENERAL_FAILURE;
|
|||
extern "C" int XP_JAVA_STARTUP_FAILED;
|
||||
extern "C" int XP_JAVA_DEBUGGER_FAILED;
|
||||
|
||||
static NS_DEFINE_CID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID);
|
||||
|
||||
static NS_DEFINE_CID(kPrefCID, NS_PREF_CID);
|
||||
static NS_DEFINE_CID(kJVMManagerCID, NS_JVMMANAGER_CID);
|
||||
|
||||
|
@ -95,6 +114,7 @@ static NS_DEFINE_IID(kIPluginIID, NS_IPLUGIN_IID);
|
|||
static NS_DEFINE_IID(kISymantecDebugManagerIID, NS_ISYMANTECDEBUGMANAGER_IID);
|
||||
static NS_DEFINE_IID(kIPluginManagerIID, NS_IPLUGINMANAGER_IID);
|
||||
|
||||
#define PLUGIN_REGIONAL_URL "chrome://global-region/locale/region.properties"
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -158,7 +178,47 @@ nsJVMManager::GetJavaEnabled(PRBool* outEnabled)
|
|||
NS_METHOD
|
||||
nsJVMManager::ShowJavaConsole(void)
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIWebBrowserChrome> chrome;
|
||||
nsAutoString msg;
|
||||
|
||||
if (!fStartupMessagePosted) {
|
||||
PRUnichar *messageUni;
|
||||
nsCOMPtr<nsIStringBundleService> strings(do_GetService(kStringBundleServiceCID));
|
||||
nsCOMPtr<nsIStringBundle> regionalBundle;
|
||||
|
||||
rv = this->GetChrome(getter_AddRefs(chrome));
|
||||
if (NS_SUCCEEDED(rv) && chrome && strings) {
|
||||
rv = strings->CreateBundle(PLUGIN_REGIONAL_URL,
|
||||
getter_AddRefs(regionalBundle));
|
||||
if (NS_SUCCEEDED(rv) && regionalBundle) {
|
||||
// pluginStartupMessage is something like "Starting
|
||||
// plugin for type"
|
||||
rv = regionalBundle->GetStringFromName(NS_LITERAL_STRING("pluginStartupMessage").get(),
|
||||
&messageUni);
|
||||
if (NS_SUCCEEDED(rv) && messageUni) {
|
||||
msg = messageUni;
|
||||
nsMemory::Free((void *)messageUni);
|
||||
|
||||
msg.AppendWithConversion(" ", 1);
|
||||
msg.AppendWithConversion("application/x-java-vm",
|
||||
PL_strlen("application/x-java-vm"));
|
||||
chrome->SetStatus(nsIWebBrowserChrome::STATUS_SCRIPT,
|
||||
msg.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
} // !fStartupMessagePosted
|
||||
|
||||
JVM_ShowConsole();
|
||||
// clear the startup message, if one was posted
|
||||
if (!fStartupMessagePosted && chrome) {
|
||||
msg.Truncate();
|
||||
chrome->SetStatus(nsIWebBrowserChrome::STATUS_SCRIPT,
|
||||
msg.get());
|
||||
fStartupMessagePosted = PR_TRUE;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -302,7 +362,8 @@ nsJVMManager::Create(nsISupports* outer, const nsIID& aIID, void* *aInstancePtr)
|
|||
nsJVMManager::nsJVMManager(nsISupports* outer)
|
||||
: fJVM(NULL), fStatus(nsJVMStatus_Enabled),
|
||||
fRegisteredJavaPrefChanged(PR_FALSE), fDebugManager(NULL), fJSJavaVM(NULL),
|
||||
fClassPathAdditions(new nsVoidArray()), fClassPathAdditionsString(NULL)
|
||||
fClassPathAdditions(new nsVoidArray()), fClassPathAdditionsString(NULL),
|
||||
fStartupMessagePosted(PR_FALSE)
|
||||
{
|
||||
NS_INIT_AGGREGATED(outer);
|
||||
}
|
||||
|
@ -765,6 +826,61 @@ nsJVMManager::EnsurePrefCallbackRegistered(void)
|
|||
}
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsJVMManager::GetChrome(nsIWebBrowserChrome **theChrome)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(theChrome);
|
||||
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
nsCOMPtr<nsIWindowWatcher> windowWatcher;
|
||||
nsCOMPtr<nsIDOMWindow> domWindow;
|
||||
nsCOMPtr<nsIDocShell> docShell;
|
||||
nsCOMPtr<nsIScriptGlobalObject> scriptObject;
|
||||
nsCOMPtr<nsIPresContext> presContext;
|
||||
nsCOMPtr<nsIDocShellTreeItem> treeItem;
|
||||
nsCOMPtr<nsIDocShellTreeOwner> treeOwner;
|
||||
nsCOMPtr<nsISupports> cont;
|
||||
nsCOMPtr<nsIWebBrowserChrome> chrome;
|
||||
|
||||
windowWatcher =
|
||||
do_GetService("@mozilla.org/embedcomp/window-watcher;1", &rv);
|
||||
if (!windowWatcher) {
|
||||
return rv;
|
||||
}
|
||||
rv = windowWatcher->GetActiveWindow(getter_AddRefs(domWindow));
|
||||
if (!domWindow) {
|
||||
return rv;
|
||||
}
|
||||
scriptObject = do_QueryInterface(domWindow, &rv);
|
||||
if (!scriptObject) {
|
||||
return rv;
|
||||
}
|
||||
rv = scriptObject->GetDocShell(getter_AddRefs(docShell));
|
||||
if (!docShell) {
|
||||
return rv;
|
||||
}
|
||||
rv = docShell->GetPresContext(getter_AddRefs(presContext));
|
||||
if (!presContext) {
|
||||
return rv;
|
||||
}
|
||||
rv = presContext->GetContainer(getter_AddRefs(cont));
|
||||
if (!cont) {
|
||||
return rv;
|
||||
}
|
||||
treeItem = do_QueryInterface(cont, &rv);
|
||||
if (!treeItem) {
|
||||
return rv;
|
||||
}
|
||||
rv = treeItem->GetTreeOwner(getter_AddRefs(treeOwner));
|
||||
if (!treeOwner) {
|
||||
return rv;
|
||||
}
|
||||
chrome = do_GetInterface(treeOwner, &rv);
|
||||
*theChrome = (nsIWebBrowserChrome *) chrome.get();
|
||||
NS_IF_ADDREF(*theChrome);
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsJVMStatus
|
||||
nsJVMManager::GetJVMStatus(void)
|
||||
{
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include "nsILiveConnectManager.h"
|
||||
|
||||
class nsSymantecDebugManager;
|
||||
class nsIWebBrowserChrome;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
|
@ -197,6 +198,15 @@ public:
|
|||
protected:
|
||||
|
||||
void EnsurePrefCallbackRegistered(void);
|
||||
|
||||
/**
|
||||
|
||||
* @return conjure up THE nsIWebBrowserChrome instance from thin
|
||||
* air!
|
||||
|
||||
*/
|
||||
|
||||
nsresult GetChrome(nsIWebBrowserChrome **theChrome);
|
||||
const char* GetJavaErrorString(JRIEnv* env);
|
||||
|
||||
nsIJVMPlugin* fJVM;
|
||||
|
@ -206,6 +216,7 @@ protected:
|
|||
JSJavaVM * fJSJavaVM;
|
||||
nsVoidArray* fClassPathAdditions;
|
||||
char* fClassPathAdditionsString;
|
||||
PRBool fStartupMessagePosted;
|
||||
};
|
||||
|
||||
/*******************************************************************************
|
||||
|
|
|
@ -92,6 +92,9 @@ public:
|
|||
NS_IMETHOD
|
||||
ShowStatus(const char *aStatusMsg) = 0;
|
||||
|
||||
NS_IMETHOD
|
||||
ShowStatus(const PRUnichar *aStatusMsg) = 0;
|
||||
|
||||
/**
|
||||
* Get the associated document.
|
||||
*/
|
||||
|
|
|
@ -3541,6 +3541,7 @@ NS_IMETHODIMP nsPluginHostImpl::SetUpPluginInstance(const char *aMimeType,
|
|||
}
|
||||
}
|
||||
#endif
|
||||
this->PostStartupMessageForType(aMimeType, aOwner);
|
||||
result = plugin->CreateInstance(NULL, kIPluginInstanceIID, (void **)&instance);
|
||||
|
||||
#ifdef XP_WIN
|
||||
|
@ -4004,6 +4005,49 @@ nsPluginHostImpl::FindPluginEnabledForType(const char* aMimeType,
|
|||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsPluginHostImpl::PostStartupMessageForType(const char* aMimeType,
|
||||
nsIPluginInstanceOwner* aOwner)
|
||||
{
|
||||
nsresult rv;
|
||||
NS_ASSERTION(aOwner && aMimeType,
|
||||
"PostStartupMessageForType: invalid arguments");
|
||||
|
||||
PRUnichar *messageUni = nsnull;
|
||||
nsAutoString msg;
|
||||
nsCOMPtr<nsIStringBundle> regionalBundle;
|
||||
nsCOMPtr<nsIStringBundleService> strings(do_GetService(kStringBundleServiceCID,
|
||||
&rv));
|
||||
if (!strings) {
|
||||
return rv;
|
||||
}
|
||||
rv = strings->CreateBundle(PLUGIN_REGIONAL_URL,
|
||||
getter_AddRefs(regionalBundle));
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
rv = regionalBundle->GetStringFromName(NS_LITERAL_STRING("pluginStartupMessage").get(),
|
||||
&messageUni);
|
||||
if (NS_FAILED(rv)){
|
||||
return rv;
|
||||
}
|
||||
msg = messageUni;
|
||||
nsMemory::Free((void *)messageUni);
|
||||
|
||||
msg.AppendWithConversion(" ", 1);
|
||||
msg.AppendWithConversion(aMimeType, PL_strlen(aMimeType));
|
||||
#ifdef PLUGIN_LOGGING
|
||||
PR_LOG(nsPluginLogging::gPluginLog, PLUGIN_LOG_ALWAYS,
|
||||
("nsPluginHostImpl::PostStartupMessageForType(aMimeType=%s)\n",
|
||||
aMimeType));
|
||||
|
||||
PR_LogFlush();
|
||||
#endif
|
||||
|
||||
rv = aOwner->ShowStatus(msg.get());
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
NS_IMETHODIMP nsPluginHostImpl::GetPluginFactory(const char *aMimeType, nsIPlugin** aPlugin)
|
||||
|
|
|
@ -397,6 +397,10 @@ private:
|
|||
nsresult
|
||||
FindPluginEnabledForType(const char* aMimeType, nsPluginTag* &aPlugin);
|
||||
|
||||
nsresult
|
||||
PostStartupMessageForType(const char* aMimeType,
|
||||
nsIPluginInstanceOwner* aOwner);
|
||||
|
||||
nsresult
|
||||
FindStoppedPluginForURL(nsIURI* aURL, nsIPluginInstanceOwner *aOwner);
|
||||
|
||||
|
|
|
@ -111,6 +111,8 @@ public:
|
|||
|
||||
NS_IMETHOD ShowStatus(const char *aStatusMsg);
|
||||
|
||||
NS_IMETHOD ShowStatus(const PRUnichar *aStatusMsg);
|
||||
|
||||
NS_IMETHOD GetDocument(nsIDocument* *aDocument);
|
||||
|
||||
NS_IMETHOD InvalidateRect(nsPluginRect *invalidRect);
|
||||
|
@ -1049,36 +1051,43 @@ NS_IMETHODIMP pluginInstanceOwner :: GetURL(const char *aURL, const char *aTarge
|
|||
NS_IMETHODIMP pluginInstanceOwner :: ShowStatus(const char *aStatusMsg)
|
||||
{
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
|
||||
rv = this->ShowStatus(NS_ConvertUTF8toUCS2(aStatusMsg).get());
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (nsnull != mViewer)
|
||||
{
|
||||
nsCOMPtr<nsISupports> cont;
|
||||
|
||||
rv = mViewer->GetContainer(getter_AddRefs(cont));
|
||||
|
||||
if ((NS_OK == rv) && (nsnull != cont))
|
||||
{
|
||||
nsCOMPtr<nsIDocShellTreeItem> docShellItem(do_QueryInterface(cont));
|
||||
|
||||
if (docShellItem)
|
||||
{
|
||||
nsCOMPtr<nsIDocShellTreeOwner> treeOwner;
|
||||
docShellItem->GetTreeOwner(getter_AddRefs(treeOwner));
|
||||
|
||||
if(treeOwner)
|
||||
{
|
||||
nsCOMPtr<nsIWebBrowserChrome> browserChrome(do_GetInterface(treeOwner));
|
||||
|
||||
if(browserChrome)
|
||||
{
|
||||
nsAutoString msg; msg.AssignWithConversion(aStatusMsg);
|
||||
browserChrome->SetStatus(nsIWebBrowserChrome::STATUS_SCRIPT, msg.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
NS_IMETHODIMP pluginInstanceOwner::ShowStatus(const PRUnichar *aStatusMsg)
|
||||
{
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
|
||||
if (!mViewer) {
|
||||
return rv;
|
||||
}
|
||||
nsCOMPtr<nsISupports> cont;
|
||||
nsCOMPtr<nsIDocShellTreeOwner> treeOwner;
|
||||
|
||||
rv = mViewer->GetContainer(getter_AddRefs(cont));
|
||||
if (NS_FAILED(rv) || !cont) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDocShellTreeItem> docShellItem(do_QueryInterface(cont, &rv));
|
||||
if (NS_FAILED(rv) || !docShellItem) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
rv = docShellItem->GetTreeOwner(getter_AddRefs(treeOwner));
|
||||
if (NS_FAILED(rv) || !treeOwner) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIWebBrowserChrome> browserChrome(do_GetInterface(treeOwner, &rv));
|
||||
if (NS_FAILED(rv) || !browserChrome) {
|
||||
return rv;
|
||||
}
|
||||
rv = browserChrome->SetStatus(nsIWebBrowserChrome::STATUS_SCRIPT,
|
||||
aStatusMsg);
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
# Localizable URLs
|
||||
#
|
||||
noDefaultPluginMessage=Netscape cannot find the Plugin Downloader Plugin. Without the Plugin Downloader Plugin, you cannot automatically download and install plugins. Please visit http://www.netscape.com/ to install the Plugin Downloader Plugin.
|
||||
pluginStartupMessage=Starting Plugin for type
|
||||
#
|
||||
# brand.properties
|
||||
#
|
||||
|
|
Загрузка…
Ссылка в новой задаче