Faits : A. A._, née en 1960 et d'origine somalienne, a déposé une demande de prestations de l'assurance-invalidité le 26 octobre 2005. Le 29 avril 2008, l'Office de l'assurance-invalidité du canton de Genève (ci-après: l'office AI) a rendu une décision que le Tribunal cantonal des assurances sociales de République et canton de Genève (aujourd'hui: la Chambre des assurances sociales de la Cour de justice) a annulée par jugement du 11 mars 2009. La cause a été renvoyée à l'office AI pour instruction complémentaire sous la forme d'une expertise pluridisciplinaire. L'office AI a confié le mandat d'expertise au Centre d'expertise médicale à U._. Les experts ont déposé leur rapport le 17 février 2010 (évaluations de médecine interne, psychiatrique, rhumatologique et dermatologique), que le docteur B._, médecin-chef, a complété le 17 septembre 2010. Selon eux, l'activité de nettoyeuse n'était plus exigible, mais l'assurée disposait d'une capacité de travail de cinq heures par jour dans une activité adaptée, en raison de la surcharge causée par l'obésité morbide. Dans un avis du 22 décembre 2010, la doctoresse C._, médecin au Service médical régional Suisse romande (SMR), a retenu que l'assurée disposait d'une capacité de travail de huit heures par jour dans une activité adaptée, une réduction du poids étant exigible de l'assurée. Après avoir été interpellé par A._ en juillet 2014, l'office AI lui a fait savoir, dans un projet de décision du 15 août 2014, qu'il envisageait de refuser l'octroi d'une rente, compte tenu d'un taux d'invalidité de 20 %. L'assurée a soulevé des objections. Par décision du 15 novembre 2017, l'office AI a déterminé le taux d'invalidité selon la méthode mixte d'évaluation de l'invalidité. Les parts actives et ménagères ont été arrêtées à 50 % chacune. Pour la part professionnelle (activité de nettoyeuse), l'office AI a tenu compte d'un taux d'empêchement de 10 % (correspondant à une baisse de rendement de cet ordre), tandis que les empêchements dans la sphère ménagère ont été fixés à 40,5 % sur la base d'un rapport d'enquête économique du 17 juillet 2007. Le degré d'invalidité s'élevant à 25 %, la demande a été rejetée. B. A._ a déféré cette décision à la Cour de justice genevoise en concluant à l'octroi d'une rente entière d'invalidité. Interpellée par l'autorité judiciaire cantonale, la doctoresse D._, spécialiste en médecine interne et médecin traitant, a fait état d'une dégradation de l'état de santé psychique et somatique de l'assurée depuis 2010 et indiqué que la capacité de travail dans une position assise et un travail léger était d'environ d'une heure à trois heures maximum par jour (avis du 5 juillet 2018). Dans sa réponse, l'intimé a déposé un avis du SMR du 18 juillet 2018, selon lequel il semblait très vraisemblable que l'état de santé de l'assurée s'était détérioré depuis la dernière expertise, si bien qu'une nouvelle expertise était nécessaire pour connaître l'évolution de l'état de santé. L'office AI a dès lors conclu à ce que le dossier lui fût renvoyé pour instruction complémentaire. Après avoir entendue l'assurée (procès-verbal de comparution des parties du 8 novembre 2018), la juridiction cantonale a rejeté le recours par jugement du 31 janvier 2019. C. A._ interjette un recours en matière de droit public contre ce jugement dont elle demande l'annulation, en concluant au renvoi de la cause aux premiers juges pour mise en oeuvre d'une expertise judiciaire pluridisciplinaire. Elle sollicite aussi le bénéfice de l'assistance judiciaire. L'office AI conclut au rejet du recours. L'Office fédéral des assurances sociales a renoncé à se déterminer.