Back to index

lightning-sunbird  0.9+nobinonly
Defines | Functions
PropertiesTest.cpp File Reference
#include "TestCommon.h"
#include "nsXPCOM.h"
#include "nsString.h"
#include "nsIEventQueueService.h"
#include "nsIPersistentProperties2.h"
#include "nsIServiceManager.h"
#include "nsIComponentRegistrar.h"
#include "nsIURL.h"
#include "nsIIOService.h"
#include "nsNetCID.h"
#include "nsIChannel.h"
#include "nsIComponentManager.h"
#include "nsIEnumerator.h"
#include <stdio.h>
#include "nsReadableUtils.h"

Go to the source code of this file.

Defines

#define TEST_URL   "resource:/res/test.properties"

Functions

static NS_DEFINE_CID (kPersistentPropertiesCID, NS_IPERSISTENTPROPERTIES_CID)
static NS_DEFINE_CID (kIOServiceCID, NS_IOSERVICE_CID)
static NS_DEFINE_CID (kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID)
int main (int argc, char *argv[])

Define Documentation

#define TEST_URL   "resource:/res/test.properties"

Definition at line 56 of file PropertiesTest.cpp.


Function Documentation

int main ( int  argc,
char *  argv[] 
)

Definition at line 65 of file PropertiesTest.cpp.

{
  if (test_common_init(&argc, &argv) != 0)
    return -1;

  nsresult ret;


  nsCOMPtr<nsIServiceManager> servMan;
  NS_InitXPCOM2(getter_AddRefs(servMan), nsnull, nsnull);
  nsCOMPtr<nsIComponentRegistrar> registrar = do_QueryInterface(servMan);
  NS_ASSERTION(registrar, "Null nsIComponentRegistrar");
  registrar->AutoRegister(nsnull);

  nsIInputStream* in = nsnull;

  nsCOMPtr<nsIIOService> service(do_GetService(kIOServiceCID, &ret));
  if (NS_FAILED(ret)) return ret;

  nsCOMPtr<nsIEventQueueService> eventQService = 
           do_GetService(kEventQueueServiceCID, &ret);
  if (NS_FAILED(ret)) return ret;

  nsIChannel *channel = nsnull;
  ret = service->NewChannel(NS_LITERAL_CSTRING(TEST_URL), nsnull, nsnull, &channel);
  if (NS_FAILED(ret)) return ret;

  nsIEventQueue *eventQ = nsnull;
  ret = eventQService->GetThreadEventQueue(NS_CURRENT_THREAD, &eventQ);
  if (NS_FAILED(ret)) return ret;

  ret = channel->Open(&in);
  if (NS_FAILED(ret)) return ret;

  nsIPersistentProperties* props;
  ret = CallCreateInstance(kPersistentPropertiesCID, &props);
  if (NS_FAILED(ret) || (!props)) {
    printf("create nsIPersistentProperties failed\n");
    return 1;
  }
  ret = props->Load(in);
  if (NS_FAILED(ret)) {
    printf("cannot load properties\n");
    return 1;
  }
  int i = 1;
  while (1) {
    char name[16];
    name[0] = 0;
    sprintf(name, "%d", i);
    nsAutoString v;
    ret = props->GetStringProperty(nsDependentCString(name), v);
    if (NS_FAILED(ret) || (!v.Length())) {
      break;
    }
    char* value = ToNewCString(v);
    if (value) {
      printf("\"%d\"=\"%s\"\n", i, value);
      delete[] value;
    }
    else {
      printf("%d: ToNewCString failed\n", i);
    }
    i++;
  }

  nsCOMPtr<nsISimpleEnumerator> propEnum;
  ret = props->Enumerate(getter_AddRefs(propEnum));

  if (NS_FAILED(ret)) {
    printf("cannot enumerate properties\n");
    return 1;
  }
  

  printf("\nKey\tValue\n");
  printf(  "---\t-----\n");
  
  PRBool hasMore;
  while (NS_SUCCEEDED(propEnum->HasMoreElements(&hasMore)) &&
         hasMore) {
    nsCOMPtr<nsISupports> sup;
    ret = propEnum->GetNext(getter_AddRefs(sup));
    
    nsCOMPtr<nsIPropertyElement> propElem = do_QueryInterface(sup, &ret);
         if (NS_FAILED(ret)) {
      printf("failed to get current item\n");
      return 1;
         }

    nsCAutoString key;
    nsAutoString value;

    ret = propElem->GetKey(key);
         if (NS_FAILED(ret)) {
                printf("failed to get current element's key\n");
                return 1;
         }
    ret = propElem->GetValue(value);
         if (NS_FAILED(ret)) {
                printf("failed to get current element's value\n");
                return 1;
         }

    printf("%s\t%s\n", key.get(), NS_ConvertUTF16toUTF8(value).get());
  }
  return 0;
}

Here is the call graph for this function:

static NS_DEFINE_CID ( kPersistentPropertiesCID  ,
NS_IPERSISTENTPROPERTIES_CID   
) [static]
static NS_DEFINE_CID ( kIOServiceCID  ,
NS_IOSERVICE_CID   
) [static]