Introduce more general notification capabilities #568
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Replaces the existing, very specialized Notification with something more general.
Currently, the existing page_navigate and page_navigated have been migrated.
Telemetry's page navigation event now also hooks into these events to generate the telemetry record.
There's a comment on the Notification class that talks about scoping, but...
I initially thought I'd have a global singleton, and it would be really easy to register and dispatch events. But then I realized that wouldn't work. If everything's a global, and CDP is registered for "http_bytes_received", then when Telemetry makes an HTTP request, and the client emits a "http_bytes_received" message, CDP will get those messages.
I realized things needed to be scoped. I thought about introducing a "scope_id", but decided to create a notification-per-scope. Currently, there's a
Notification
perBrowser
and oneNotification
for theApp
. I don't expect more. You can form notification topologies, which is exactly how Telemetry now works. Telemetry listens to thenotification_created
event fromapp.notification
, and then registers for thepage_navigate
on the newly creatednotification
instance.