@wang16 
>1. The invoking is not accurate. Received title is not equal to title changed. You may either change the callback name or add the logic to justify whether the title is changed from last time.

How about `onTitleUpdated`, follow the chromium code naming for title update? It means the title is updated regardless of if it is changed.

>2. If the title changing happens before the code gets to call the wait function, then the wait will last forever or til the timeout. It can happen due to some threading scheduling.

`OnTitleChangedHelper` which inherits from `CallbackHelper` could address your concern. It will also check the call count of onTitleChanged callback.