Heat the oil in a medium saucepan, add the onions and cook until golden brown. Add the ginger, garlic and ground spices. Mix well for a minute then add the chicken. Cook, stirring, over a moderate heat for 5 minutes.
Pour in 300 ml water. Bring to the boil then reduce the heat. Cover the pan and cook for 10 minutes.
Reduce the heat to very low and add the coconut milk. Cook for a further 10 minutes or until the chicken is well cooked. Stir in the tomatoes and salt to taste. Cook for a final 5 minutes to blend the masala well.