Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/HulahopDirectoryProvider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/HulahopDirectoryProvider.cpp')
-rw-r--r--src/HulahopDirectoryProvider.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/HulahopDirectoryProvider.cpp b/src/HulahopDirectoryProvider.cpp
index 1162dbb..fb21d69 100644
--- a/src/HulahopDirectoryProvider.cpp
+++ b/src/HulahopDirectoryProvider.cpp
@@ -21,6 +21,10 @@
#include <nsAppDirectoryServiceDefs.h>
#include <nsDirectoryServiceDefs.h>
#include <nsArrayEnumerator.h>
+#include <nsIToolkitChromeRegistry.h>
+#include <nsNetUtil.h>
+#include <nsISupportsArray.h>
+#include <nsIMutableArray.h>
#include "HulahopDirectoryProvider.h"
@@ -84,7 +88,27 @@ HulahopDirectoryProvider::GetFiles(const char *aKey,
if (!strcmp(aKey, NS_XPCOM_COMPONENT_DIR_LIST)) {
rv = NS_NewArrayEnumerator(aResult, mComponentsDirs);
- }
+ } else if (!strcmp(aKey, NS_CHROME_MANIFESTS_FILE_LIST)) {
+ nsCOMPtr<nsILocalFile> manifestDir;
+ rv = NS_NewNativeLocalFile (nsDependentCString(DATA_DIR "/chrome"), PR_TRUE,
+ getter_AddRefs (manifestDir));
+ NS_ENSURE_SUCCESS (rv, rv);
+
+ nsCOMPtr<nsISupports> element (do_QueryInterface (manifestDir, &rv));
+ NS_ENSURE_SUCCESS (rv, rv);
+
+ nsCOMPtr<nsIMutableArray> array (do_CreateInstance(NS_ARRAY_CONTRACTID));
+ if(!array)
+ return NS_ERROR_OUT_OF_MEMORY;
+ rv = array->AppendElement (manifestDir, PR_FALSE);
+ NS_ENSURE_SUCCESS (rv, rv);
+
+ rv = array->Enumerate(aResult);
+
+ NS_ENSURE_SUCCESS (rv, rv);
+
+ rv = NS_SUCCESS_AGGREGATE_RESULT;
+ }
return rv;
}