Bug 281286 Remove nsIPref usage from OJI

p=bugmail@q1n.org r=timeless sr=roc
This commit is contained in:
bugzilla%arlen.demon.co.uk 2005-02-08 16:53:26 +00:00
Родитель 8d3d9643dc
Коммит e9112b4e29
2 изменённых файлов: 41 добавлений и 83 удалений

Просмотреть файл

@ -69,7 +69,6 @@
#include "nsIDOMWindow.h"
#include "nsIScriptGlobalObject.h"
#include "nsPresContext.h"
#include "nsPresContext.h"
#include "nsIDocShell.h"
#include "nsIDocShellTreeItem.h"
#include "nsIDocShellTreeOwner.h"
@ -79,7 +78,10 @@
#include "nsIStringBundle.h"
#include "nsIPref.h"
#include "nsIObserver.h"
#include "nsIPrefBranch.h"
#include "nsIPrefBranchInternal.h"
#include "nsIPrefService.h"
#include "lcglue.h"
#include "nspr.h"
@ -99,7 +101,6 @@ 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);
static NS_DEFINE_CID(kPluginManagerCID, NS_PLUGINMANAGER_CID);
@ -123,7 +124,6 @@ static NS_DEFINE_IID(kIJVMPluginIID, NS_IJVMPLUGIN_IID);
#define PLUGIN_REGIONAL_URL "chrome://global-region/locale/region.properties"
////////////////////////////////////////////////////////////////////////////////
NS_IMPL_AGGREGATED(nsJVMManager)
@ -367,11 +367,15 @@ 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),
fDebugManager(NULL), fJSJavaVM(NULL),
fClassPathAdditions(new nsVoidArray()), fClassPathAdditionsString(NULL),
fStartupMessagePosted(PR_FALSE)
{
NS_INIT_AGGREGATED(outer);
nsCOMPtr<nsIPrefBranchInternal> branch = do_GetService(NS_PREFSERVICE_CONTRACTID);
if (branch)
branch->AddObserver("security.enable_java", this, PR_FALSE);
}
nsJVMManager::~nsJVMManager()
@ -394,17 +398,17 @@ nsJVMManager::AggregatedQueryInterface(const nsIID& aIID, void** aInstancePtr)
{
if (aIID.Equals(kIJVMManagerIID)) {
*aInstancePtr = this;
AddRef();
NS_ADDREF_THIS();
return NS_OK;
}
if (aIID.Equals(kIThreadManagerIID)) {
*aInstancePtr = (void*) NS_STATIC_CAST(nsIThreadManager*, this);
AddRef();
NS_ADDREF_THIS();
return NS_OK;
}
if (aIID.Equals(kILiveConnectManagerIID)) {
*aInstancePtr = (void*) NS_STATIC_CAST(nsILiveConnectManager*, this);
AddRef();
NS_ADDREF_THIS();
return NS_OK;
}
if (aIID.Equals(kISupportsIID)) {
@ -412,6 +416,11 @@ nsJVMManager::AggregatedQueryInterface(const nsIID& aIID, void** aInstancePtr)
NS_ADDREF((nsISupports*)*aInstancePtr);
return NS_OK;
}
if (aIID.Equals(NS_GET_IID(nsIObserver))) {
*aInstancePtr = (void*) NS_STATIC_CAST(nsIObserver*, this);
NS_ADDREF_THIS();
return NS_OK;
}
#if defined(XP_WIN) || defined(XP_OS2)
// Aggregates...
if (fDebugManager == NULL) {
@ -750,33 +759,6 @@ nsJVMManager::ShutdownJVM(PRBool fullShutdown)
////////////////////////////////////////////////////////////////////////////////
/**
* This is called when the user changes the state of the
* security.enable_java preference.
*/
static int PR_CALLBACK
JavaPrefChanged(const char *prefStr, void* data)
{
nsJVMManager* mgr = (nsJVMManager*)data;
PRBool prefBool = PR_TRUE;
nsCOMPtr<nsIPref> prefs(do_GetService(kPrefCID));
nsresult rv;
// check for success
if (!prefs) {
return 0;
}
rv = prefs->GetBoolPref("security.enable_java", &prefBool);
if (NS_SUCCEEDED(rv)) {
mgr->SetJVMEnabled(prefBool);
}
return 0;
}
void
nsJVMManager::SetJVMEnabled(PRBool enabled)
{
@ -792,46 +774,6 @@ nsJVMManager::SetJVMEnabled(PRBool enabled)
}
}
/**
* Called from GetJVMStatus. <P>
* We only take action once per nsJVMManager instance.
*/
void
nsJVMManager::EnsurePrefCallbackRegistered(void)
{
if (fRegisteredJavaPrefChanged != PR_TRUE) {
nsCOMPtr<nsIPref> prefs(do_GetService(kPrefCID));
PRBool isJavaEnabled = PR_TRUE;
nsresult rv;
// check for success
if (!prefs) {
return;
}
// step one, register the callback for the pref changing.
rv = prefs->RegisterCallback("security.enable_java",
JavaPrefChanged, this);
if (NS_SUCCEEDED(rv)) {
fRegisteredJavaPrefChanged = PR_TRUE;
}
// step two, update our fStatus ivar with the current value of the
// pref
rv = prefs->GetBoolPref("security.enable_java", &isJavaEnabled);
if (NS_SUCCEEDED(rv)) {
if (!isJavaEnabled) {
fStatus = nsJVMStatus_Disabled;
}
// else, we leave it with the value it had at construction
}
}
}
nsresult
nsJVMManager::GetChrome(nsIWebBrowserChrome **theChrome)
{
@ -873,10 +815,27 @@ nsJVMManager::GetChrome(nsIWebBrowserChrome **theChrome)
return rv;
}
NS_IMETHODIMP
nsJVMManager::Observe(nsISupports* subject,
const char* topic,
const PRUnichar* data_unicode)
{
nsresult rv;
nsCOMPtr<nsIPrefBranch> branch = do_QueryInterface(subject, &rv);
if (NS_FAILED(rv)) return rv;
PRBool prefBool = PR_TRUE;
rv = branch->GetBoolPref("security.enable_java", &prefBool);
if (NS_SUCCEEDED(rv)) {
SetJVMEnabled(prefBool);
}
return rv;
}
nsJVMStatus
nsJVMManager::GetJVMStatus(void)
{
EnsurePrefCallbackRegistered();
return fStatus;
}

Просмотреть файл

@ -45,30 +45,32 @@
#include "jsdbgapi.h"
#include "nsError.h"
#include "nsjvm.h"
#include "nsAgg.h"
#include "jsjava.h"
#include "nsVoidArray.h"
#include "nsILiveConnectManager.h"
#include "nsIObserver.h"
class nsSymantecDebugManager;
class nsIWebBrowserChrome;
/*******************************************************************************
* NsJVMManager is the interface to the JVM manager that the browser sees. All
* files that want to include java services should include this header file.
* nsIJVMManager is the more limited interface what the JVM plugin sees.
******************************************************************************/
struct nsJVMManager : public nsIJVMManager, public nsIThreadManager, public nsILiveConnectManager {
struct nsJVMManager : public nsIJVMManager, public nsIThreadManager, public nsILiveConnectManager, public nsIObserver {
public:
NS_DECL_AGGREGATED
NS_DECL_NSIJVMMANAGER
NS_DECL_NSIOBSERVER
/* from nsIThreadManager: */
/**
@ -211,8 +213,6 @@ public:
protected:
void EnsurePrefCallbackRegistered(void);
/**
* @return conjure up THE nsIWebBrowserChrome instance from thin
@ -225,7 +225,6 @@ protected:
nsIJVMPlugin* fJVM;
nsJVMStatus fStatus;
PRBool fRegisteredJavaPrefChanged;
nsISupports* fDebugManager;
JSJavaVM * fJSJavaVM;
nsVoidArray* fClassPathAdditions;