Skip to content

Commit

Permalink
Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpl…
Browse files Browse the repository at this point in the history
…eEnumerators. r=froydnj

This allows JS callers to automatically get the correct types during
interation, without having to explicitly specify them.

Differential Revision: https://phabricator.services.mozilla.com/D3728

--HG--
extra : rebase_source : b708f382d8ea571d199c669bfed5b5a7ca9ffac4
extra : histedit_source : 7df6feb82088c8a5ca45dc28fe4d2b852c177fee
  • Loading branch information
kmaglione committed Aug 19, 2018
1 parent c943b2a commit 2dee0aa
Show file tree
Hide file tree
Showing 43 changed files with 163 additions and 48 deletions.
2 changes: 1 addition & 1 deletion browser/components/dirprovider/DirectoryProvider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ DirectoryProvider::GetFiles(const char *aKey, nsISimpleEnumerator* *aResult)
nsCOMArray<nsIFile> distroFiles;
AppendDistroSearchDirs(dirSvc, distroFiles);

return NS_NewArrayEnumerator(aResult, distroFiles);
return NS_NewArrayEnumerator(aResult, distroFiles, NS_GET_IID(nsIFile));
}

return NS_ERROR_FAILURE;
Expand Down
5 changes: 5 additions & 0 deletions browser/components/migration/nsIEHistoryEnumerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ class nsIEHistoryEnumerator final : public nsSimpleEnumerator

nsIEHistoryEnumerator();

const nsID& DefaultInterface() override
{
return NS_GET_IID(nsIWritablePropertyBag2);
}

private:
~nsIEHistoryEnumerator() override;

Expand Down
2 changes: 2 additions & 0 deletions docshell/base/nsDocShellEnumerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ class nsDocShellEnumerator : public nsSimpleEnumerator
// nsISimpleEnumerator
NS_DECL_NSISIMPLEENUMERATOR

const nsID& DefaultInterface() override { return NS_GET_IID(nsIDocShell); }

public:
nsresult GetEnumerationRootItem(nsIDocShellTreeItem** aEnumerationRootItem);
nsresult SetEnumerationRootItem(nsIDocShellTreeItem* aEnumerationRootItem);
Expand Down
8 changes: 7 additions & 1 deletion dom/base/nsJSEnvironment.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2938,7 +2938,13 @@ NS_IMETHODIMP nsJSArgArray::IndexOf(uint32_t startIndex, nsISupports *element, u
return NS_ERROR_NOT_IMPLEMENTED;
}

NS_IMETHODIMP nsJSArgArray::Enumerate(nsISimpleEnumerator **_retval)
NS_IMETHODIMP nsJSArgArray::ScriptedEnumerate(nsIJSIID* aElemIID, uint8_t aArgc,
nsISimpleEnumerator** aResult)
{
return NS_ERROR_NOT_IMPLEMENTED;
}

NS_IMETHODIMP nsJSArgArray::EnumerateImpl(const nsID& aEntryIID, nsISimpleEnumerator **_retval)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
Expand Down
10 changes: 10 additions & 0 deletions dom/commandhandler/nsCommandGroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ class nsGroupsEnumerator : public nsSimpleEnumerator

NS_DECL_NSISIMPLEENUMERATOR

const nsID& DefaultInterface() override
{
return NS_GET_IID(nsISupportsCString);
}

protected:
~nsGroupsEnumerator() override;

Expand Down Expand Up @@ -128,6 +133,11 @@ class nsNamedGroupEnumerator : public nsSimpleEnumerator

NS_DECL_NSISIMPLEENUMERATOR

const nsID& DefaultInterface() override
{
return NS_GET_IID(nsISupportsCString);
}

protected:
~nsNamedGroupEnumerator() override;

Expand Down
6 changes: 6 additions & 0 deletions dom/payments/PaymentRequestService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,12 @@ class PaymentRequestEnumerator final : public nsSimpleEnumerator
PaymentRequestEnumerator()
: mIndex(0)
{}

const nsID& DefaultInterface() override
{
return NS_GET_IID(nsIPaymentRequest);
}

private:
~PaymentRequestEnumerator() override = default;
uint32_t mIndex;
Expand Down
2 changes: 1 addition & 1 deletion dom/plugins/base/nsPluginDirServiceProvider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ nsPluginDirServiceProvider::GetPLIDDirectories(nsISimpleEnumerator **aEnumerator
GetPLIDDirectoriesWithRootKey(nsIWindowsRegKey::ROOT_KEY_CURRENT_USER, dirs);
GetPLIDDirectoriesWithRootKey(nsIWindowsRegKey::ROOT_KEY_LOCAL_MACHINE, dirs);

return NS_NewArrayEnumerator(aEnumerator, dirs);
return NS_NewArrayEnumerator(aEnumerator, dirs, NS_GET_IID(nsIFile));
}

nsresult
Expand Down
5 changes: 5 additions & 0 deletions dom/workers/WorkerDebuggerManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,11 @@ class WorkerDebuggerEnumerator final : public nsSimpleEnumerator

NS_DECL_NSISIMPLEENUMERATOR

const nsID& DefaultInterface() override
{
return NS_GET_IID(nsIWorkerDebugger);
}

private:
~WorkerDebuggerEnumerator() override = default;
};
Expand Down
4 changes: 2 additions & 2 deletions extensions/cookie/nsPermissionManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2611,7 +2611,7 @@ NS_IMETHODIMP nsPermissionManager::GetEnumerator(nsISimpleEnumerator **aEnum)
}
}

return NS_NewArrayEnumerator(aEnum, array);
return NS_NewArrayEnumerator(aEnum, array, NS_GET_IID(nsIPermission));
}

NS_IMETHODIMP nsPermissionManager::GetAllForURI(nsIURI* aURI, nsISimpleEnumerator **aEnum)
Expand Down Expand Up @@ -2660,7 +2660,7 @@ nsPermissionManager::GetAllForPrincipal(nsIPrincipal* aPrincipal,
}
}

return NS_NewArrayEnumerator(aEnum, array);
return NS_NewArrayEnumerator(aEnum, array, NS_GET_IID(nsIPermission));
}

NS_IMETHODIMP nsPermissionManager::Observe(nsISupports *aSubject, const char *aTopic, const char16_t *someData)
Expand Down
5 changes: 5 additions & 0 deletions intl/strres/nsStringBundle.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,11 @@ class StringMapEnumerator final : public nsSimpleEnumerator
: mStringMap(aStringMap)
{}

const nsID& DefaultInterface() override
{
return NS_GET_IID(nsIPropertyElement);
}

protected:
virtual ~StringMapEnumerator() = default;

Expand Down
6 changes: 3 additions & 3 deletions js/xpconnect/src/XPCShellImpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1513,7 +1513,7 @@ XPCShellDirProvider::GetFiles(const char* prop, nsISimpleEnumerator* *result)
if (NS_SUCCEEDED(rv))
dirs.AppendObject(file);

return NS_NewArrayEnumerator(result, dirs);
return NS_NewArrayEnumerator(result, dirs, NS_GET_IID(nsIFile));
} else if (!strcmp(prop, NS_APP_PREFS_DEFAULTS_DIR_LIST)) {
nsCOMArray<nsIFile> dirs;
nsCOMPtr<nsIFile> appDir;
Expand All @@ -1524,7 +1524,7 @@ XPCShellDirProvider::GetFiles(const char* prop, nsISimpleEnumerator* *result)
NS_SUCCEEDED(appDir->AppendNative(NS_LITERAL_CSTRING("preferences"))) &&
NS_SUCCEEDED(appDir->Exists(&exists)) && exists) {
dirs.AppendObject(appDir);
return NS_NewArrayEnumerator(result, dirs);
return NS_NewArrayEnumerator(result, dirs, NS_GET_IID(nsIFile));
}
return NS_ERROR_FAILURE;
} else if (!strcmp(prop, NS_APP_PLUGINS_DIR_LIST)) {
Expand All @@ -1549,7 +1549,7 @@ XPCShellDirProvider::GetFiles(const char* prop, nsISimpleEnumerator* *result)
}
}
}
return NS_NewArrayEnumerator(result, dirs);
return NS_NewArrayEnumerator(result, dirs, NS_GET_IID(nsIFile));
}
return NS_ERROR_FAILURE;
}
2 changes: 1 addition & 1 deletion js/xpconnect/src/XPCWrappedJSClass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,7 @@ nsXPCWrappedJSClass::BuildPropertyEnumerator(XPCCallContext& ccx,
return NS_ERROR_FAILURE;
}

return NS_NewArrayEnumerator(aEnumerate, propertyArray);
return NS_NewArrayEnumerator(aEnumerate, propertyArray, NS_GET_IID(nsIProperty));
}

/***************************************************************************/
Expand Down
2 changes: 1 addition & 1 deletion netwerk/base/nsLoadGroup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,7 @@ nsLoadGroup::GetRequests(nsISimpleEnumerator * *aRequests)
requests.AppendObject(e->mKey);
}

return NS_NewArrayEnumerator(aRequests, requests);
return NS_NewArrayEnumerator(aRequests, requests, NS_GET_IID(nsIRequest));
}

NS_IMETHODIMP
Expand Down
8 changes: 4 additions & 4 deletions netwerk/cookie/nsCookieService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2493,7 +2493,7 @@ nsCookieService::GetEnumerator(nsISimpleEnumerator **aEnumerator)
}
}

return NS_NewArrayEnumerator(aEnumerator, cookieList);
return NS_NewArrayEnumerator(aEnumerator, cookieList, NS_GET_IID(nsICookie2));
}

NS_IMETHODIMP
Expand All @@ -2518,7 +2518,7 @@ nsCookieService::GetSessionEnumerator(nsISimpleEnumerator **aEnumerator)
}
}

return NS_NewArrayEnumerator(aEnumerator, cookieList);
return NS_NewArrayEnumerator(aEnumerator, cookieList, NS_GET_IID(nsICookie2));
}

static nsresult
Expand Down Expand Up @@ -4928,7 +4928,7 @@ nsCookieService::GetCookiesFromHost(const nsACString &aHost,
cookieList.AppendObject(cookies[i]);
}

return NS_NewArrayEnumerator(aEnumerator, cookieList);
return NS_NewArrayEnumerator(aEnumerator, cookieList, NS_GET_IID(nsICookie2));
}

NS_IMETHODIMP
Expand Down Expand Up @@ -4987,7 +4987,7 @@ nsCookieService::GetCookiesWithOriginAttributes(
}
}

return NS_NewArrayEnumerator(aEnumerator, cookies);
return NS_NewArrayEnumerator(aEnumerator, cookies, NS_GET_IID(nsICookie2));
}

NS_IMETHODIMP
Expand Down
2 changes: 1 addition & 1 deletion security/manager/ssl/PKCS11ModuleDB.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ PKCS11ModuleDB::ListModules(nsISimpleEnumerator** _retval)
}
}

return array->Enumerate(_retval);
return array->Enumerate(_retval, NS_GET_IID(nsIPKCS11Module));
}

NS_IMETHODIMP
Expand Down
2 changes: 2 additions & 0 deletions security/manager/ssl/nsNSSCertificate.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,8 @@ class nsNSSCertListEnumerator : public nsSimpleEnumerator
public:
NS_DECL_NSISIMPLEENUMERATOR

const nsID& DefaultInterface() override { return NS_GET_IID(nsIX509Cert); }

explicit nsNSSCertListEnumerator(const mozilla::UniqueCERTCertList& certList);
private:
virtual ~nsNSSCertListEnumerator() {}
Expand Down
2 changes: 1 addition & 1 deletion security/manager/ssl/nsPKCS11Slot.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -290,5 +290,5 @@ nsPKCS11Module::ListSlots(nsISimpleEnumerator** _retval)
}
}

return array->Enumerate(_retval);
return array->Enumerate(_retval, NS_GET_IID(nsIPKCS11Slot));
}
4 changes: 2 additions & 2 deletions security/manager/ssl/nsSiteSecurityService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -473,7 +473,7 @@ SiteHPKPState::GetSha256Keys(nsISimpleEnumerator** aSha256Keys)
return NS_ERROR_FAILURE;
}
}
return NS_NewArrayEnumerator(aSha256Keys, keys);
return NS_NewArrayEnumerator(aSha256Keys, keys, NS_GET_IID(nsIVariant));
}

NS_IMETHODIMP
Expand Down Expand Up @@ -1895,7 +1895,7 @@ nsSiteSecurityService::Enumerate(uint32_t aType,
states.AppendObject(state);
}

NS_NewArrayEnumerator(aEnumerator, states);
NS_NewArrayEnumerator(aEnumerator, states, NS_GET_IID(nsISiteSecurityState));
return NS_OK;
}

Expand Down
5 changes: 5 additions & 0 deletions toolkit/profile/nsToolkitProfileService.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,11 @@ class nsToolkitProfileService final : public nsIToolkitProfileService
public:
NS_DECL_NSISIMPLEENUMERATOR

const nsID& DefaultInterface() override
{
return NS_GET_IID(nsIToolkitProfile);
}

explicit ProfileEnumerator(nsToolkitProfile *first)
{ mCurrent = first; }
private:
Expand Down
8 changes: 4 additions & 4 deletions toolkit/xre/nsXREDirProvider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -854,7 +854,7 @@ nsXREDirProvider::GetFilesInternal(const char* aProperty,
LoadDirsIntoArray(mAppBundleDirectories,
kAppendNothing, directories);

rv = NS_NewArrayEnumerator(aResult, directories);
rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile));
}
else if (!strcmp(aProperty, NS_APP_PREFS_DEFAULTS_DIR_LIST)) {
nsCOMArray<nsIFile> directories;
Expand All @@ -863,7 +863,7 @@ nsXREDirProvider::GetFilesInternal(const char* aProperty,
LoadDirsIntoArray(mAppBundleDirectories,
kAppendPrefDir, directories);

rv = NS_NewArrayEnumerator(aResult, directories);
rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile));
}
else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) {
// NS_APP_CHROME_DIR_LIST is only used to get default (native) icons
Expand All @@ -878,7 +878,7 @@ nsXREDirProvider::GetFilesInternal(const char* aProperty,
kAppendChromeDir,
directories);

rv = NS_NewArrayEnumerator(aResult, directories);
rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile));
}
else if (!strcmp(aProperty, NS_APP_PLUGINS_DIR_LIST)) {
nsCOMArray<nsIFile> directories;
Expand Down Expand Up @@ -908,7 +908,7 @@ nsXREDirProvider::GetFilesInternal(const char* aProperty,
directories);
}

rv = NS_NewArrayEnumerator(aResult, directories);
rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile));
NS_ENSURE_SUCCESS(rv, rv);

rv = NS_SUCCESS_AGGREGATE_RESULT;
Expand Down
2 changes: 1 addition & 1 deletion uriloader/exthandler/HandlerService.js
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ HandlerService.prototype = {
);
handlers.appendElement(handler);
}
return handlers.enumerate();
return handlers.enumerate(Ci.nsIHandlerInfo);
},

// nsIHandlerService
Expand Down
2 changes: 1 addition & 1 deletion uriloader/exthandler/win/nsMIMEInfoWin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ nsMIMEInfoWin::GetEnumerator(nsISimpleEnumerator* *_retval)
if (variant)
properties.AppendObject(variant);

return NS_NewArrayEnumerator(_retval, properties);
return NS_NewArrayEnumerator(_retval, properties, NS_GET_IID(nsIVariant));
}

static nsresult GetIconURLVariant(nsIFile* aApplication, nsIVariant* *_retval)
Expand Down
2 changes: 1 addition & 1 deletion widget/gtk/nsFilePicker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ nsFilePicker::GetFiles(nsISimpleEnumerator **aFiles)
NS_ENSURE_ARG_POINTER(aFiles);

if (mMode == nsIFilePicker::modeOpenMultiple) {
return NS_NewArrayEnumerator(aFiles, mFiles);
return NS_NewArrayEnumerator(aFiles, mFiles, NS_GET_IID(nsIFile));
}

return NS_ERROR_FAILURE;
Expand Down
4 changes: 3 additions & 1 deletion widget/nsBaseFilePicker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,8 @@ class nsBaseFilePickerEnumerator : public nsSimpleEnumerator
, mMode(aMode)
{}

const nsID& DefaultInterface() override { return NS_GET_IID(nsIFile); }

NS_IMETHOD
GetNext(nsISupports** aResult) override
{
Expand Down Expand Up @@ -283,7 +285,7 @@ NS_IMETHODIMP nsBaseFilePicker::GetFiles(nsISimpleEnumerator **aFiles)

files.AppendObject(file);

return NS_NewArrayEnumerator(aFiles, files);
return NS_NewArrayEnumerator(aFiles, files, NS_GET_IID(nsIFile));
}

// Set the display directory
Expand Down
2 changes: 1 addition & 1 deletion widget/windows/nsFilePicker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -688,7 +688,7 @@ NS_IMETHODIMP
nsFilePicker::GetFiles(nsISimpleEnumerator **aFiles)
{
NS_ENSURE_ARG_POINTER(aFiles);
return NS_NewArrayEnumerator(aFiles, mFiles);
return NS_NewArrayEnumerator(aFiles, mFiles, NS_GET_IID(nsIFile));
}

// Get the file + path
Expand Down
5 changes: 5 additions & 0 deletions xpcom/components/nsCategoryManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,11 @@ class BaseStringEnumerator
NS_DECL_NSISIMPLEENUMERATOR
NS_DECL_NSIUTF8STRINGENUMERATOR

const nsID& DefaultInterface() override
{
return NS_GET_IID(nsISupportsCString);
}

protected:
// Callback function for NS_QuickSort to sort mArray
static int SortCallback(const void*, const void*, void*);
Expand Down
Loading

0 comments on commit 2dee0aa

Please sign in to comment.