本文整理汇总了C++中NS_GET_IID函数的典型用法代码示例。如果您正苦于以下问题:C++ NS_GET_IID函数的具体用法?C++ NS_GET_IID怎么用?C++ NS_GET_IID使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NS_GET_IID函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: LOG
NS_IMETHODIMP
nsJavaXPTCStub::QueryInterface(const nsID &aIID, void **aInstancePtr)
{
nsresult rv;
LOG(("JavaStub::QueryInterface()\n"));
*aInstancePtr = nsnull;
nsJavaXPTCStub *master = mMaster ? mMaster : this;
// This helps us differentiate between the help classes.
if (aIID.Equals(NS_GET_IID(nsJavaXPTCStub)))
{
*aInstancePtr = master;
NS_ADDREF(this);
return NS_OK;
}
// always return the master stub for nsISupports
if (aIID.Equals(NS_GET_IID(nsISupports)))
{
*aInstancePtr = master->mXPTCStub;
NS_ADDREF(master);
return NS_OK;
}
// All Java objects support weak references
if (aIID.Equals(NS_GET_IID(nsISupportsWeakReference)))
{
*aInstancePtr = static_cast<nsISupportsWeakReference*>(master);
NS_ADDREF(master);
return NS_OK;
}
// does any existing stub support the requested IID?
nsJavaXPTCStub *stub = master->FindStubSupportingIID(aIID);
if (stub)
{
*aInstancePtr = stub->mXPTCStub;
NS_ADDREF(stub);
return NS_OK;
}
JNIEnv* env = GetJNIEnv();
// Query Java object
LOG(("\tCalling Java object queryInterface\n"));
jobject javaObject = env->CallObjectMethod(mJavaWeakRef, getReferentMID);
jmethodID qiMID = 0;
jclass clazz = env->GetObjectClass(javaObject);
if (clazz) {
char* sig = "(Ljava/lang/String;)Lorg/mozilla/interfaces/nsISupports;";
qiMID = env->GetMethodID(clazz, "queryInterface", sig);
NS_ASSERTION(qiMID, "Failed to get queryInterface method ID");
}
if (qiMID == 0) {
env->ExceptionClear();
return NS_NOINTERFACE;
}
// construct IID string
jstring iid_jstr = nsnull;
char* iid_str = aIID.ToString();
if (iid_str) {
iid_jstr = env->NewStringUTF(iid_str);
}
if (!iid_str || !iid_jstr) {
env->ExceptionClear();
return NS_ERROR_OUT_OF_MEMORY;
}
PR_Free(iid_str);
// call queryInterface method
jobject obj = env->CallObjectMethod(javaObject, qiMID, iid_jstr);
if (env->ExceptionCheck()) {
env->ExceptionClear();
return NS_ERROR_FAILURE;
}
if (!obj)
return NS_NOINTERFACE;
// Get interface info for new java object
nsCOMPtr<nsIInterfaceInfoManager>
iim(do_GetService(NS_INTERFACEINFOMANAGER_SERVICE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIInterfaceInfo> iinfo;
rv = iim->GetInfoForIID(&aIID, getter_AddRefs(iinfo));
if (NS_FAILED(rv))
return rv;
stub = new nsJavaXPTCStub(obj, iinfo, &rv);
if (!stub)
return NS_ERROR_OUT_OF_MEMORY;
if (NS_FAILED(rv)) {
delete stub;
return rv;
}
//.........这里部分代码省略.........
开发者ID:bringhurst,项目名称:vbox,代码行数:101,代码来源:nsJavaXPTCStub.cpp
示例2: if
nsresult nsMsgTagService::MigrateLabelsToTags()
{
nsCString prefString;
int32_t prefVersion = 0;
nsresult rv = m_tagPrefBranch->GetIntPref(TAG_PREF_VERSION, &prefVersion);
if (NS_SUCCEEDED(rv) && prefVersion > 1)
return rv;
else if (prefVersion == 1)
{
gMigratingKeys = true;
// need to convert the keys to lower case
nsIMsgTag **tagArray;
uint32_t numTags;
GetAllTags(&numTags, &tagArray);
for (uint32_t tagIndex = 0; tagIndex < numTags; tagIndex++)
{
nsAutoCString key, color, ordinal;
nsAutoString tagStr;
nsIMsgTag *tag = tagArray[tagIndex];
tag->GetKey(key);
tag->GetTag(tagStr);
tag->GetOrdinal(ordinal);
tag->GetColor(color);
DeleteKey(key);
ToLowerCase(key);
AddTagForKey(key, tagStr, color, ordinal);
}
NS_FREE_XPCOM_ISUPPORTS_POINTER_ARRAY(numTags, tagArray);
gMigratingKeys = false;
}
else
{
nsCOMPtr<nsIPrefBranch> prefRoot(do_GetService(NS_PREFSERVICE_CONTRACTID));
nsCOMPtr<nsIPrefLocalizedString> pls;
nsString ucsval;
nsAutoCString labelKey("$label1");
for(int32_t i = 0; i < PREF_LABELS_MAX; )
{
prefString.Assign(PREF_LABELS_DESCRIPTION);
prefString.AppendInt(i + 1);
rv = prefRoot->GetComplexValue(prefString.get(),
NS_GET_IID(nsIPrefLocalizedString),
getter_AddRefs(pls));
NS_ENSURE_SUCCESS(rv, rv);
pls->ToString(getter_Copies(ucsval));
prefString.Assign(PREF_LABELS_COLOR);
prefString.AppendInt(i + 1);
nsCString csval;
rv = prefRoot->GetCharPref(prefString.get(), getter_Copies(csval));
NS_ENSURE_SUCCESS(rv, rv);
rv = AddTagForKey(labelKey, ucsval, csval, EmptyCString());
NS_ENSURE_SUCCESS(rv, rv);
labelKey.SetCharAt(++i + '1', 6);
}
}
m_tagPrefBranch->SetIntPref(TAG_PREF_VERSION, 2);
return rv;
}
开发者ID:MoonchildProductions,项目名称:FossaMail,代码行数:61,代码来源:nsMsgTagService.cpp
示例3: ShouldWaiveXray
//.........这里部分代码省略.........
// Note: this penalizes objects that only have one wrapper, but are
// being accessed across compartments. We would really prefer to
// replace the above code with a test that says "do you only have one
// wrapper?"
nsresult rv = wn->GetScriptableInfo()->GetCallback()->
PreCreate(wn->Native(), cx, scope, wrapScope.address());
NS_ENSURE_SUCCESS(rv, waive ? WaiveXray(cx, obj) : obj);
// If the handed back scope differs from the passed-in scope and is in
// a separate compartment, then this object is explicitly requesting
// that we don't create a second JS object for it: create a security
// wrapper.
if (js::GetObjectCompartment(scope) != js::GetObjectCompartment(wrapScope))
return waive ? WaiveXray(cx, obj) : obj;
RootedObject currentScope(cx, JS_GetGlobalForObject(cx, obj));
if (MOZ_UNLIKELY(wrapScope != currentScope)) {
// The wrapper claims it wants to be in the new scope, but
// currently has a reflection that lives in the old scope. This
// can mean one of two things, both of which are rare:
//
// 1 - The object has a PreCreate hook (we checked for it above),
// but is deciding to request one-wrapper-per-scope (rather than
// one-wrapper-per-native) for some reason. Usually, a PreCreate
// hook indicates one-wrapper-per-native. In this case we want to
// make a new wrapper in the new scope.
//
// 2 - We're midway through wrapper reparenting. The document has
// moved to a new scope, but |wn| hasn't been moved yet, and
// we ended up calling JS_WrapObject() on its JS object. In this
// case, we want to return the existing wrapper.
//
// So we do a trick: call PreCreate _again_, but say that we're
// wrapping for the old scope, rather than the new one. If (1) is
// the case, then PreCreate will return the scope we pass to it
// (the old scope). If (2) is the case, PreCreate will return the
// scope of the document (the new scope).
RootedObject probe(cx);
rv = wn->GetScriptableInfo()->GetCallback()->
PreCreate(wn->Native(), cx, currentScope, probe.address());
// Check for case (2).
if (probe != currentScope) {
MOZ_ASSERT(probe == wrapScope);
return waive ? WaiveXray(cx, obj) : obj;
}
// Ok, must be case (1). Fall through and create a new wrapper.
}
// Nasty hack for late-breaking bug 781476. This will confuse identity checks,
// but it's probably better than any of our alternatives.
//
// Note: We have to ignore domain here. The JS engine assumes that, given a
// compartment c, if c->wrap(x) returns a cross-compartment wrapper at time t0,
// it will also return a cross-compartment wrapper for any time t1 > t0 unless
// an explicit transplant is performed. In particular, wrapper recomputation
// assumes that recomputing a wrapper will always result in a wrapper.
//
// This doesn't actually pose a security issue, because we'll still compute
// the correct (opaque) wrapper for the object below given the security
// characteristics of the two compartments.
if (!AccessCheck::isChrome(js::GetObjectCompartment(wrapScope)) &&
AccessCheck::subsumes(js::GetObjectCompartment(wrapScope),
js::GetObjectCompartment(obj)))
{
return waive ? WaiveXray(cx, obj) : obj;
}
}
}
// This public WrapNativeToJSVal API enters the compartment of 'wrapScope'
// so we don't have to.
RootedValue v(cx);
nsresult rv =
nsXPConnect::XPConnect()->WrapNativeToJSVal(cx, wrapScope, wn->Native(), nullptr,
&NS_GET_IID(nsISupports), false, &v);
NS_ENSURE_SUCCESS(rv, nullptr);
obj.set(&v.toObject());
MOZ_ASSERT(IS_WN_REFLECTOR(obj), "bad object");
// Because the underlying native didn't have a PreCreate hook, we had
// to a new (or possibly pre-existing) XPCWN in our compartment.
// This could be a problem for chrome code that passes XPCOM objects
// across compartments, because the effects of QI would disappear across
// compartments.
//
// So whenever we pull an XPCWN across compartments in this manner, we
// give the destination object the union of the two native sets. We try
// to do this cleverly in the common case to avoid too much overhead.
XPCWrappedNative *newwn = XPCWrappedNative::Get(obj);
XPCNativeSet *unionSet = XPCNativeSet::GetNewOrUsed(newwn->GetSet(),
wn->GetSet(), false);
if (!unionSet)
return nullptr;
newwn->SetSet(unionSet);
return waive ? WaiveXray(cx, obj) : obj;
}
开发者ID:mlasak,项目名称:gecko-dev,代码行数:101,代码来源:WrapperFactory.cpp
示例4: dlopen
nsresult
nsWifiMonitor::DoScan()
{
void* iwlib_handle = dlopen("libiw.so", RTLD_NOW);
if (!iwlib_handle) {
iwlib_handle = dlopen("libiw.so.29", RTLD_NOW);
if (!iwlib_handle) {
iwlib_handle = dlopen("libiw.so.30", RTLD_NOW);
if (!iwlib_handle) {
LOG(("Could not load libiw\n"));
return NS_ERROR_NOT_AVAILABLE;
}
}
}
else {
LOG(("Loaded libiw\n"));
}
iw_open_t iw_open = (iw_open_t) dlsym(iwlib_handle, "iw_sockets_open");
iw_enum_t iw_enum = (iw_enum_t) dlsym(iwlib_handle, "iw_enum_devices");
iw_stats_t iw_stats = (iw_stats_t)dlsym(iwlib_handle, "iw_get_stats");
if (!iw_open || !iw_enum || !iw_stats) {
dlclose(iwlib_handle);
LOG(("Could not load a symbol from iwlib.so\n"));
return NS_ERROR_FAILURE;
}
int skfd = (*iw_open)();
if (skfd < 0) {
dlclose(iwlib_handle);
return NS_ERROR_FAILURE;
}
nsCOMArray<nsWifiAccessPoint> lastAccessPoints;
nsCOMArray<nsWifiAccessPoint> accessPoints;
char* args[] = {(char*) &accessPoints, (char*) iw_stats, nsnull };
while (mKeepGoing) {
accessPoints.Clear();
(*iw_enum)(skfd, &scan_wifi, args, 1);
PRBool accessPointsChanged = !AccessPointsEqual(accessPoints, lastAccessPoints);
nsCOMArray<nsIWifiListener> currentListeners;
{
nsAutoMonitor mon(mMonitor);
for (PRUint32 i = 0; i < mListeners.Length(); i++) {
if (!mListeners[i].mHasSentData || accessPointsChanged) {
mListeners[i].mHasSentData = PR_TRUE;
currentListeners.AppendObject(mListeners[i].mListener);
}
}
}
ReplaceArray(lastAccessPoints, accessPoints);
if (currentListeners.Count() > 0)
{
PRUint32 resultCount = lastAccessPoints.Count();
nsIWifiAccessPoint** result = static_cast<nsIWifiAccessPoint**> (nsMemory::Alloc(sizeof(nsIWifiAccessPoint*) * resultCount));
if (!result) {
dlclose(iwlib_handle);
return NS_ERROR_OUT_OF_MEMORY;
}
for (PRUint32 i = 0; i < resultCount; i++)
result[i] = lastAccessPoints[i];
for (PRInt32 i = 0; i < currentListeners.Count(); i++) {
LOG(("About to send data to the wifi listeners\n"));
nsCOMPtr<nsIWifiListener> proxy;
nsCOMPtr<nsIProxyObjectManager> proxyObjMgr = do_GetService("@mozilla.org/xpcomproxy;1");
proxyObjMgr->GetProxyForObject(NS_PROXY_TO_MAIN_THREAD,
NS_GET_IID(nsIWifiListener),
currentListeners[i],
NS_PROXY_SYNC | NS_PROXY_ALWAYS,
getter_AddRefs(proxy));
if (!proxy) {
LOG(("There is no proxy available. this should never happen\n"));
}
else
{
nsresult rv = proxy->OnChange(result, resultCount);
LOG( ("... sent %d\n", rv));
}
}
nsMemory::Free(result);
}
LOG(("waiting on monitor\n"));
//.........这里部分代码省略.........
开发者ID:lofter2011,项目名称:Icefox,代码行数:101,代码来源:nsWifiScannerUnix.cpp
示例5: main
int main(int argc, char *argv[])
{
/*
* Check that PRUnichar is equal in size to what compiler composes L""
* strings from; otherwise NS_LITERAL_STRING macros won't work correctly
* and we will get a meaningless SIGSEGV. This, of course, must be checked
* at compile time in xpcom/string/nsTDependentString.h, but XPCOM lacks
* compile-time assert macros and I'm not going to add them now.
*/
if (sizeof(PRUnichar) != sizeof(wchar_t))
{
printf("Error: sizeof(PRUnichar) {%lu} != sizeof(wchar_t) {%lu}!\n"
"Probably, you forgot the -fshort-wchar compiler option.\n",
(unsigned long) sizeof(PRUnichar),
(unsigned long) sizeof(wchar_t));
return -1;
}
nsresult rc;
/*
* This is the standard XPCOM init procedure.
* What we do is just follow the required steps to get an instance
* of our main interface, which is IVirtualBox.
*/
#if defined(XPCOM_GLUE)
XPCOMGlueStartup(nsnull);
#endif
/*
* Note that we scope all nsCOMPtr variables in order to have all XPCOM
* objects automatically released before we call NS_ShutdownXPCOM at the
* end. This is an XPCOM requirement.
*/
{
nsCOMPtr<nsIServiceManager> serviceManager;
rc = NS_InitXPCOM2(getter_AddRefs(serviceManager), nsnull, nsnull);
if (NS_FAILED(rc))
{
printf("Error: XPCOM could not be initialized! rc=0x%x\n", rc);
return -1;
}
#if 0
/*
* Register our components. This step is only necessary if this executable
* implements XPCOM components itself which is not the case for this
* simple example.
*/
nsCOMPtr<nsIComponentRegistrar> registrar = do_QueryInterface(serviceManager);
if (!registrar)
{
printf("Error: could not query nsIComponentRegistrar interface!\n");
return -1;
}
registrar->AutoRegister(nsnull);
#endif
/*
* Make sure the main event queue is created. This event queue is
* responsible for dispatching incoming XPCOM IPC messages. The main
* thread should run this event queue's loop during lengthy non-XPCOM
* operations to ensure messages from the VirtualBox server and other
* XPCOM IPC clients are processed. This use case doesn't perform such
* operations so it doesn't run the event loop.
*/
nsCOMPtr<nsIEventQueue> eventQ;
rc = NS_GetMainEventQ(getter_AddRefs (eventQ));
if (NS_FAILED(rc))
{
printf("Error: could not get main event queue! rc=%08X\n", rc);
return -1;
}
/*
* Now XPCOM is ready and we can start to do real work.
* IVirtualBox is the root interface of VirtualBox and will be
* retrieved from the XPCOM component manager. We use the
* XPCOM provided smart pointer nsCOMPtr for all objects because
* that's very convenient and removes the need deal with reference
* counting and freeing.
*/
nsCOMPtr<nsIComponentManager> manager;
rc = NS_GetComponentManager (getter_AddRefs (manager));
if (NS_FAILED(rc))
{
printf("Error: could not get component manager! rc=%08X\n", rc);
return -1;
}
nsCOMPtr<IVirtualBox> virtualBox;
rc = manager->CreateInstanceByContractID (NS_VIRTUALBOX_CONTRACTID,
nsnull,
NS_GET_IID(IVirtualBox),
getter_AddRefs(virtualBox));
if (NS_FAILED(rc))
{
printf("Error, could not instantiate VirtualBox object! rc=0x%x\n", rc);
return -1;
}
//.........这里部分代码省略.........
开发者ID:apaka,项目名称:vbox,代码行数:101,代码来源:tstVBoxAPILinux.cpp
示例6: NS_IMPL_CYCLE_COLLECTION_UNLINK
NS_IMPL_CYCLE_COLLECTION_UNLINK(mParent)
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(Blob)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mParent)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(Blob)
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_TRACE_END
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(Blob)
// This class should not receive any nsIRemoteBlob QI!
MOZ_ASSERT(!aIID.Equals(NS_GET_IID(nsIRemoteBlob)));
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMBlob)
NS_INTERFACE_MAP_ENTRY(nsIDOMBlob)
NS_INTERFACE_MAP_ENTRY(nsIXHRSendable)
NS_INTERFACE_MAP_ENTRY(nsIMutable)
NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
NS_INTERFACE_MAP_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(Blob)
NS_IMPL_CYCLE_COLLECTING_RELEASE(Blob)
/* static */ Blob*
Blob::Create(nsISupports* aParent, BlobImpl* aImpl)
{
开发者ID:subsevenx2001,项目名称:gecko-dev,代码行数:31,代码来源:File.cpp
示例7: nssComponent
//.........这里部分代码省略.........
if(!doSilentDonwload) {
if (!importSuccessful) {
nsString message;
nsString temp;
nsCOMPtr<nsIWindowWatcher> wwatch(do_GetService(NS_WINDOWWATCHER_CONTRACTID));
nsCOMPtr<nsIPrompt> prompter;
if (wwatch) {
wwatch->GetNewPrompter(0, getter_AddRefs(prompter));
nssComponent->GetPIPNSSBundleString("CrlImportFailure1x", message);
message.Append(NS_LITERAL_STRING("\n").get());
message.Append(errorMessage);
nssComponent->GetPIPNSSBundleString("CrlImportFailure2", temp);
message.Append(NS_LITERAL_STRING("\n").get());
message.Append(temp);
if(prompter) {
nsPSMUITracker tracker;
if (!tracker.isUIForbidden()) {
prompter->Alert(0, message.get());
}
}
}
} else {
nsCOMPtr<nsICertificateDialogs> certDialogs;
// Not being able to display the success dialog should not
// be a fatal error, so don't return a failure code.
{
nsPSMUITracker tracker;
if (tracker.isUIForbidden()) {
rv = NS_ERROR_NOT_AVAILABLE;
}
else {
rv = ::getNSSDialogs(getter_AddRefs(certDialogs),
NS_GET_IID(nsICertificateDialogs), NS_CERTIFICATEDIALOGS_CONTRACTID);
}
}
if (NS_SUCCEEDED(rv)) {
nsCOMPtr<nsIInterfaceRequestor> cxt = new PipUIContext();
certDialogs->CrlImportStatusDialog(cxt, crlData);
}
}
} else {
if(crlKey == nsnull) {
return NS_ERROR_FAILURE;
}
nsCOMPtr<nsIPrefService> prefSvc = do_GetService(NS_PREFSERVICE_CONTRACTID,&rv);
nsCOMPtr<nsIPrefBranch> pref = do_GetService(NS_PREFSERVICE_CONTRACTID,&rv);
if (NS_FAILED(rv)) {
return rv;
}
nsCAutoString updateErrCntPrefStr(CRL_AUTOUPDATE_ERRCNT_PREF);
updateErrCntPrefStr.AppendWithConversion(crlKey);
if(importSuccessful) {
PRUnichar *updateTime;
nsCAutoString updateTimeStr;
nsCString updateURL;
PRInt32 timingTypePref;
double dayCnt;
char *dayCntStr;
nsCAutoString updateTypePrefStr(CRL_AUTOUPDATE_TIMIINGTYPE_PREF);
nsCAutoString updateTimePrefStr(CRL_AUTOUPDATE_TIME_PREF);
nsCAutoString updateUrlPrefStr(CRL_AUTOUPDATE_URL_PREF);
nsCAutoString updateDayCntPrefStr(CRL_AUTOUPDATE_DAYCNT_PREF);
nsCAutoString updateFreqCntPrefStr(CRL_AUTOUPDATE_FREQCNT_PREF);
updateTypePrefStr.AppendWithConversion(crlKey);
开发者ID:rhencke,项目名称:mozilla-cvs-history,代码行数:67,代码来源:nsCRLManager.cpp
示例8: NS_InitEmbedding
NS_METHOD
NS_InitEmbedding(nsILocalFile *mozBinDirectory,
nsIDirectoryServiceProvider *appFileLocProvider,
nsStaticModuleInfo const *aStaticComponents,
PRUint32 aStaticComponentCount)
{
nsresult rv;
// Reentrant calls to this method do nothing except increment a counter
sInitCounter++;
if (sInitCounter > 1)
return NS_OK;
// Initialise XPCOM
#ifdef HACK_AROUND_NONREENTRANT_INITXPCOM
// Can't call NS_InitXPCom more than once or things go boom!
if (!sXPCOMInitializedFlag)
#endif
{
// Initialise XPCOM
rv = NS_InitXPCOM3(&sServiceManager, mozBinDirectory, appFileLocProvider,
aStaticComponents, aStaticComponentCount);
NS_ENSURE_SUCCESS(rv, rv);
#ifdef HACK_AROUND_NONREENTRANT_INITXPCOM
sXPCOMInitializedFlag = PR_TRUE;
sXPCOMCleanupHack.mCleanOnExit = PR_TRUE;
#endif
}
// Register components
if (!sRegistryInitializedFlag)
{
#ifdef DEBUG
nsIComponentRegistrar *registrar;
rv = sServiceManager->QueryInterface(NS_GET_IID(nsIComponentRegistrar),
(void **) ®istrar);
if (NS_FAILED(rv))
{
NS_WARNING("Could not QI to registrar");
return rv;
}
rv = registrar->AutoRegister(nsnull);
if (NS_FAILED(rv))
{
NS_WARNING("Could not AutoRegister");
}
else
{
// If the application is using an GRE, then, auto register components
// in the GRE directory as well.
//
// The application indicates that it's using an GRE by returning a
// valid nsIFile when queried (via appFileLocProvider) for the
// NS_GRE_DIR atom as shown below
if (appFileLocProvider)
{
nsIFile *greDir = nsnull;
PRBool persistent = PR_TRUE;
appFileLocProvider->GetFile(NS_GRE_DIR, &persistent,
&greDir);
if (greDir)
{
rv = registrar->AutoRegister(greDir);
if (NS_FAILED(rv))
NS_WARNING("Could not AutoRegister GRE components");
NS_RELEASE(greDir);
}
}
}
NS_RELEASE(registrar);
if (NS_FAILED(rv))
return rv;
#endif
sRegistryInitializedFlag = PR_TRUE;
}
nsIComponentManager *compMgr;
rv = sServiceManager->QueryInterface(NS_GET_IID(nsIComponentManager),
(void **) &compMgr);
if (NS_FAILED(rv))
return rv;
nsIObserver *startupNotifier;
rv = compMgr->CreateInstanceByContractID(NS_APPSTARTUPNOTIFIER_CONTRACTID,
NULL,
NS_GET_IID(nsIObserver),
(void **) &startupNotifier);
NS_RELEASE(compMgr);
if (NS_FAILED(rv))
return rv;
startupNotifier->Observe(nsnull, APPSTARTUP_TOPIC, nsnull);
NS_RELEASE(startupNotifier);
#ifdef HACK_AROUND_THREADING_ISSUES
// XXX force certain objects to be created on the main thread
nsIStringBundleService *bundleService;
rv = sServiceManager->GetServiceByContractID(NS_STRINGBUNDLE_CONTRACTID,
//.........这里部分代码省略.........
开发者ID:EdgarChen,项目名称:mozilla-cvs-history,代码行数:101,代码来源:nsEmbedAPI.cpp
示例9: NS_ASSERTION
// static
nsresult
nsXPCWrappedJS::GetNewOrUsed(XPCCallContext& ccx,
JSObject* aJSObj,
REFNSIID aIID,
nsISupports* aOuter,
nsXPCWrappedJS** wrapperResult)
{
JSObject2WrappedJSMap* map;
JSObject* rootJSObj;
nsXPCWrappedJS* root = nsnull;
nsXPCWrappedJS* wrapper = nsnull;
nsXPCWrappedJSClass* clazz = nsnull;
XPCJSRuntime* rt = ccx.GetRuntime();
JSBool release_root = false;
map = rt->GetWrappedJSMap();
if (!map) {
NS_ASSERTION(map,"bad map");
return NS_ERROR_FAILURE;
}
nsXPCWrappedJSClass::GetNewOrUsed(ccx, aIID, &clazz);
if (!clazz)
return NS_ERROR_FAILURE;
// from here on we need to return through 'return_wrapper'
// always find the root JSObject
rootJSObj = clazz->GetRootJSObject(ccx, aJSObj);
if (!rootJSObj)
goto return_wrapper;
// look for the root wrapper, and if found, hold the map lock until
// we've added our ref to prevent another thread from destroying it
// under us
{ // scoped lock
XPCAutoLock lock(rt->GetMapLock());
root = map->Find(rootJSObj);
if (root) {
if ((nsnull != (wrapper = root->Find(aIID))) ||
(nsnull != (wrapper = root->FindInherited(aIID)))) {
NS_ADDREF(wrapper);
goto return_wrapper;
}
}
}
if (!root) {
// build the root wrapper
if (rootJSObj == aJSObj) {
// the root will do double duty as the interface wrapper
wrapper = root = new nsXPCWrappedJS(ccx, aJSObj, clazz, nsnull,
aOuter);
if (!root)
goto return_wrapper;
{ // scoped lock
#if DEBUG_xpc_leaks
printf("Created nsXPCWrappedJS %p, JSObject is %p\n",
(void*)wrapper, (void*)aJSObj);
#endif
XPCAutoLock lock(rt->GetMapLock());
map->Add(root);
}
if (!CheckMainThreadOnly(root)) {
XPCAutoLock lock(rt->GetMapLock());
map->Remove(root);
wrapper = NULL;
}
goto return_wrapper;
} else {
// just a root wrapper
nsXPCWrappedJSClass* rootClazz = nsnull;
nsXPCWrappedJSClass::GetNewOrUsed(ccx, NS_GET_IID(nsISupports),
&rootClazz);
if (!rootClazz)
goto return_wrapper;
root = new nsXPCWrappedJS(ccx, rootJSObj, rootClazz, nsnull, aOuter);
NS_RELEASE(rootClazz);
if (!root)
goto return_wrapper;
release_root = true;
{ // scoped lock
#if DEBUG_xpc_leaks
printf("Created nsXPCWrappedJS %p, JSObject is %p\n",
(void*)root, (void*)rootJSObj);
#endif
XPCAutoLock lock(rt->GetMapLock());
map->Add(root);
}
if (!CheckMainThreadOnly(root)) {
XPCAutoLock lock(rt->GetMapLock());
//.........这里部分代码省略.........
开发者ID:krellian,项目名称:mozilla-central,代码行数:101,代码来源:XPCWrappedJS.cpp
示例10: lock
NS_IMETHODIMP
TransportSecurityInfo::Write(nsIObjectOutputStream* stream)
{
nsresult rv = stream->WriteID(kTransportSecurityInfoMagic);
if (NS_FAILED(rv)) {
return rv;
}
MutexAutoLock lock(mMutex);
rv = stream->Write32(mSecurityState);
if (NS_FAILED(rv)) {
return rv;
}
rv = stream->Write32(mSubRequestsBrokenSecurity);
if (NS_FAILED(rv)) {
return rv;
}
rv = stream->Write32(mSubRequestsNoSecurity);
if (NS_FAILED(rv)) {
return rv;
}
rv = stream->Write32(static_cast<uint32_t>(mErrorCode));
if (NS_FAILED(rv)) {
return rv;
}
if (mErrorMessageCached.IsEmpty()) {
// XXX: uses nsNSSComponent string bundles off the main thread
rv = formatErrorMessage(lock, mErrorCode, mErrorMessageType,
true, true, mErrorMessageCached);
if (NS_FAILED(rv)) {
return rv;
}
}
rv = stream->WriteWStringZ(mErrorMessageCached.get());
if (NS_FAILED(rv)) {
return rv;
}
// For successful connections and for connections with overridable errors,
// mSSLStatus will be non-null. However, for connections with non-overridable
// errors, it will be null.
nsCOMPtr<nsISerializable> serializable(mSSLStatus);
rv = NS_WriteOptionalCompoundObject(stream,
serializable,
NS_GET_IID(nsISSLStatus),
true);
if (NS_FAILED(rv)) {
return rv;
}
rv = NS_WriteOptionalCompoundObject(stream,
mFailedCertChain,
NS_GET_IID(nsIX509CertList),
true);
if (NS_FAILED(rv)) {
return rv;
}
return NS_OK;
}
开发者ID:AtulKumar2,项目名称:gecko-dev,代码行数:61,代码来源:TransportSecurityInfo.cpp
示例11: PR_PUBLIC_API
//------------------------------------------------------------------------
// XPI_Init()
//------------------------------------------------------------------------
PR_PUBLIC_API(nsresult) XPI_Init( const char* aProgramDir,
const char* aLogName,
pfnXPIProgress progressCB )
{
nsresult rv;
//--------------------------------------------------------------------
// Initialize XPCOM and AutoRegister() its components
//--------------------------------------------------------------------
#if defined(XP_WIN) || defined(XP_OS2)
#ifdef XP_OS2_EMX
char componentPath[MAX_PATH];
_getcwd2(componentPath, MAX_PATH);
int len = strlen(componentPath);
for (int i = 0; i < len; i++) {
if (componentPath[i] == '/') {
componentPath[i] = '\\';
}
}
#else
char componentPath[MAX_PATH];
getcwd(componentPath, MAX_PATH);
#endif
nsCOMPtr<nsILocalFile> file;
rv = NS_NewNativeLocalFile(nsDependentCString(componentPath), PR_TRUE, getter_AddRefs(file));
if (NS_FAILED(rv)) return rv;
rv = NS_InitXPCOM2(&gServiceMgr, file, nsnull);
#elif defined(XP_UNIX)
rv = NS_InitXPCOM2(&gServiceMgr, nsnull, nsnull);
char cwd[1024];
char compDirPath[1024];
memset(cwd, 0, 1024);
memset(compDirPath, 0, 1024);
getcwd(cwd, 1024);
sprintf(compDirPath, "%s/components", cwd);
nsCOMPtr<nsILocalFile> compDir;
NS_NewNativeLocalFile(nsDependentCString(compDirPath), PR_TRUE, getter_AddRefs(compDir));
#else
rv = NS_InitXPCOM2(&gServiceMgr, NULL, NULL);
#endif
if (NS_FAILED(rv))
return rv;
nsCOMPtr<nsIComponentRegistrar> registrar = do_QueryInterface(gServiceMgr);
NS_ASSERTION(registrar, "Null nsIComponentRegistrar");
#if defined(XP_UNIX)
rv = registrar->AutoRegister(compDir);
#else
rv = registrar->AutoRegister(nsnull);
#endif
if (NS_FAILED(rv))
return rv;
//--------------------------------------------------------------------
// Get the SoftwareUpdate (XPInstall) service.
//
// Since AppShell is not started by XPIStub the XPI service is never
// registered with the service manager. We keep a local pointer to it
// so it stays alive througout.
//--------------------------------------------------------------------
rv = CallCreateInstance(kSoftwareUpdateCID, &gXPI);
if (NS_FAILED(rv))
return rv;
//--------------------------------------------------------------------
// Override XPInstall's natural assumption that the current executable
// is Mozilla. Use the given directory as the "Program" folder.
//--------------------------------------------------------------------
nsCOMPtr<nsPIXPIStubHook> hook = do_QueryInterface(gXPI);
nsCOMPtr<nsILocalFile> iDirSpec;
if (aProgramDir)
{
NS_NewNativeLocalFile(nsDependentCString(aProgramDir), PR_TRUE, getter_AddRefs(iDirSpec));
}
else
{
nsCOMPtr<nsIProperties> directoryService =
do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv);
directoryService->Get(NS_XPCOM_CURRENT_PROCESS_DIR, NS_GET_IID(nsILocalFile),
getter_AddRefs(iDirSpec));
//.........这里部分代码省略.........
开发者ID:rn10950,项目名称:RetroZilla,代码行数:101,代码来源:xpistub.cpp
示例12: LoadParams
NS_IMETHODIMP
nsXPInstallManager::OpenProgressDialog(const PRUnichar **aPackageList, PRUint32 aCount, nsIObserver *aObserver)
{
// --- convert parameters into nsISupportArray members
nsCOMPtr<nsIDialogParamBlock> list;
nsresult rv = LoadParams( aCount, aPackageList, getter_AddRefs(list) );
if (NS_FAILED(rv))
return rv;
nsCOMPtr<nsISupportsInterfacePointer> listwrap(do_CreateInstance(NS_SUPPORTS_INTERFACE_POINTER_CONTRACTID));
if (listwrap) {
listwrap->SetData(list);
listwrap->SetDataIID(&NS_GET_IID(nsIDialogParamBlock));
}
nsCOMPtr<nsISupportsInterfacePointer> callbackwrap(do_CreateInstance(NS_SUPPORTS_INTERFACE_POINTER_CONTRACTID));
if (callbackwrap) {
callbackwrap->SetData(aObserver);
callbackwrap->SetDataIID(&NS_GET_IID(nsIObserver));
}
nsCOMPtr<nsISupportsArray> params(do_CreateInstance(NS_SUPPORTSARRAY_CONTRACTID));
if ( !params || !listwrap || !callbackwrap )
return NS_ERROR_FAILURE;
params->AppendElement(listwrap);
params->AppendElement(callbackwrap);
// --- open the window
nsCOMPtr<nsIWindowWatcher> wwatch(do_GetService(NS_WINDOWWATCHER_CONTRACTID, &rv));
if (!wwatch)
return rv;
char *statusDialogURL, *statusDialogType;
nsCOMPtr<nsIPrefBranch> pref(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
if (!pref)
return rv;
const char* statusDlg = mChromeType == CHROME_SKIN ? PREF_XPINSTALL_STATUS_DLG_SKIN
: PREF_XPINSTALL_STATUS_DLG_CHROME;
rv = pref->GetCharPref(statusDlg, &statusDialogURL);
NS_ASSERTION(NS_SUCCEEDED(rv), "Can't invoke XPInstall FE without a FE URL! Set xpinstall.dialog.status");
if (NS_FAILED(rv))
return rv;
const char* statusType = mChromeType == CHROME_SKIN ? PREF_XPINSTALL_STATUS_DLG_TYPE_SKIN
: PREF_XPINSTALL_STATUS_DLG_TYPE_CHROME;
rv = pref->GetCharPref(statusType, &statusDialogType);
nsAutoString type;
type.AssignWithConversion(statusDialogType);
if (NS_SUCCEEDED(rv) && !type.IsEmpty()) {
nsCOMPtr<nsIWindowMediator> wm = do_GetService(NS_WINDOWMEDIATOR_CONTRACTID);
nsCOMPtr<nsIDOMWindowInternal> recentWindow;
wm->GetMostRecentWindow(type.get(), getter_AddRefs(recentWindow));
if (recentWindow) {
nsCOMPtr<nsIObserverService> os(do_GetService("@mozilla.org/observer-service;1"));
os->NotifyObservers(params, "xpinstall-download-started", nsnull);
recentWindow->Focus();
return NS_OK;
}
}
nsCOMPtr<nsIDOMWindow> newWindow;
rv = wwatch->OpenWindow(0,
statusDialogURL,
"_blank",
"chrome,centerscreen,titlebar,dialog=no,resizable",
params,
getter_AddRefs(newWindow));
return rv;
}
开发者ID:isleon,项目名称:Jaxer,代码行数:74,代码来源:nsXPInstallManager.cpp
示例13: NS_GET_IID
nsresult nsAbPalmHotSync::Done(PRBool aSuccess, PRInt32 aPalmCatIndex, PRUint32 aPalmRecIDListCount, unsigned long * aPalmRecordIDList)
{
if(!mInitialized)
return NS_ERROR_NOT_INITIALIZED;
nsresult rv=NS_ERROR_UNEXPECTED;
if(aPalmRecIDListCount == mNewCardCount)
{
for(PRUint32 i=0; i<aPalmRecIDListCount; i++)
{
nsCOMPtr<nsIAbMDBCard> dbCard;
rv = mNewCardsArray->QueryElementAt(i, NS_GET_IID(nsIAbMDBCard), getter_AddRefs(dbCard));
if(NS_SUCCEEDED(rv) && dbCard)
{
ConvertAssignPalmIDAttrib(aPalmRecordIDList[i], dbCard);
nsCOMPtr<nsIAbCard> newCard;
newCard = do_QueryInterface(dbCard, &rv);
if(NS_SUCCEEDED(rv))
mABDB->EditCard(newCard, PR_FALSE, nsnull);
}
}
}
if(mABDB && mDBOpen)
{
if(aSuccess)
{
rv = mABDB->Close(PR_TRUE);
if(NS_SUCCEEDED(rv))
{
mDBOpen = PR_FALSE;
PRUint32 modTimeInSec;
PRTime2Seconds(PR_Now(), &modTimeInSec);
rv = UpdateABInfo(modTimeInSec, aPalmCatIndex);
}
}
if(NS_FAILED(rv) || !aSuccess)
{ // get back the previous file
rv = mABDB->ForceClosed();
if(NS_SUCCEEDED(rv))
{
nsCAutoString leafName;
mABFile->GetNativeLeafName(leafName);
PRBool bExists=PR_FALSE;
mPreviousABFile->Exists(&bExists);
if(bExists)
{
nsCOMPtr<nsIFile> parent;
rv = mABFile->GetParent(getter_AddRefs(parent));
if (NS_SUCCEEDED(rv))
{
mABFile->Remove(PR_FALSE);
mPreviousABFile->CopyToNative(parent, leafName);
}
}
mDBOpen = PR_FALSE;
}
}
}
return rv;
}
开发者ID:binoc-software,项目名称:mozilla-cvs,代码行数:63,代码来源:nsAbPalmSync.cpp
示例14: NS_ENSURE_STATE
NS_IMETHODIMP nsDefaultURIFixup::KeywordToURI(const nsACString& aKeyword,
nsIURI **aURI)
{
*aURI = nsnull;
NS_ENSURE_STATE(mPrefBranch);
nsXPIDLCString url;
nsCOMPtr<nsIPrefLocalizedString> keywordURL;
mPrefBranch->GetComplexValue("keyword.URL",
NS_GET_IID(nsIPrefLocalizedString),
getter_AddRefs(keywordURL));
if (keywordURL) {
nsXPIDLString wurl;
keywordURL->GetData(getter_Copies(wurl));
CopyUTF16toUTF8(wurl, url);
} else {
// Fall back to a non-localized pref, for backwards compat
mPrefBranch->GetCharPref("keyword.URL", getter_Copies(url));
}
// If the pref is set and non-empty, use it.
if (!url.IsEmpty()) {
nsCAutoString spec;
nsresult rv = MangleKeywordIntoURI(PromiseFlatCString(aKeyword).get(),
url.get(), spec);
if (NS_FAILED(rv)) return rv;
return NS_NewURI(aURI, spec);
}
// Try falling back to the search service's default search engine
nsCOMPtr<nsIBrowserSearchService> searchSvc = do_GetService("@mozilla.org/browser/search-service;1");
if (searchSvc) {
nsCOMPtr<nsISearchEngine> defaultEngine;
searchSvc->GetOriginalDefaultEngine(getter_AddRefs(defaultEngine));
if (defaultEngine) {
nsCOMPtr<nsISearchSubmission> submission;
// We want to allow default search plugins to specify alternate
// parameters that are specific to keyword searches. For the moment,
// do this by first looking for a magic
// "application/x-moz-keywordsearch" submission type. In the future,
// we should instead use a solution that relies on bug 587780.
defaultEngine->GetSubmission(NS_ConvertUTF8toUTF16(aKeyword),
NS_LITERAL_STRING("application/x-moz-keywordsearch"),
getter_AddRefs(submission));
// If getting the special x-moz-keywordsearch submission type failed,
// fall back to the default response type.
if (!submission) {
defaultEngine->GetSubmission(NS_ConvertUTF8toUTF16(aKeyword),
EmptyString(),
getter_AddRefs(submission));
}
if (submission) {
// The submission depends on POST data (i.e. the search engine's
// "method" is POST), we can't use this engine for keyword
// searches
nsCOMPtr<nsIInputStream> postData;
submission->GetPostData(getter_AddRefs(postData));
if (postData) {
return NS_ERROR_NOT_AVAILABLE;
}
return submission->GetUri(aURI);
}
}
}
// out of options
return NS_ERROR_NOT_AVAILABLE;
}
开发者ID:lofter2011,项目名称:Icefox,代码行数:72,代码来源:nsDefaultURIFixup.cpp
示例15: MimeInlineText_initializeCharset
static int MimeInlineText_initializeCharset(MimeObject *obj)
{
MimeInlineText *text = (MimeInlineText *) obj;
text->inputAutodetect = PR_FALSE;
text->charsetOverridable = PR_FALSE;
/* Figure out an appropriate charset for this object.
*/
if (!text->charset && obj->headers)
{
if (obj->options && obj->options->override_charset)
{
text->charset = strdup(obj->options->default_charset);
}
else
{
char *ct = MimeHeaders_get (obj->headers, HEADER_CONTENT_TYPE,
PR_FALSE, PR_FALSE);
if (ct)
{
text->charset = MimeHeaders_get_parameter (ct, "charset", NULL, NULL);
PR_Free(ct);
}
if (!text->charset)
{
/* If we didn't find "Content-Type: ...; charset=XX" then look
for "X-Sun-Charset: XX" instead. (Maybe this should be done
in MimeSunAttachmentClass, but it's harder there than here.)
*/
text->charset = MimeHeaders_get (obj->headers,
HEADER_X_SUN_CHARSET,
PR_FALSE, PR_FALSE);
}
/* iMIP entities without an explicit charset parameter defau
|
请发表评论