Skip to content

Commit

Permalink
feat: emit browsingContext.navigationCommitted event (#3057)
Browse files Browse the repository at this point in the history
  • Loading branch information
sadym-chromium authored Jan 31, 2025
1 parent 48ef2dc commit 58be24c
Show file tree
Hide file tree
Showing 5 changed files with 305 additions and 16 deletions.
7 changes: 6 additions & 1 deletion src/bidiMapper/modules/context/NavigationTracker.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,12 @@ describe('NavigationTracker', () => {

navigationTracker.frameNavigated(YET_ANOTHER_URL, LOADER_ID);

assertNoNavigationEvents();
assertNavigationEvent(
ChromiumBidi.BrowsingContext.EventNames.NavigationCommitted,
sinon.match.any,
YET_ANOTHER_URL,
);

assert.equal(navigationTracker.url, YET_ANOTHER_URL);

navigationTracker.loadPageEvent(LOADER_ID);
Expand Down
14 changes: 12 additions & 2 deletions src/bidiMapper/modules/context/NavigationTracker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,16 @@ export class NavigationState {

frameNavigated() {
this.#navigated = true;
if (!this.#isInitial) {
this.#eventManager.registerEvent(
{
type: 'event',
method: ChromiumBidi.BrowsingContext.EventNames.NavigationCommitted,
params: this.navigationInfo(),
},
this.#browsingContextId,
);
}
}

fragmentNavigated() {
Expand Down Expand Up @@ -257,7 +267,7 @@ export class NavigationTracker {

if (
this.#pendingNavigation !== undefined &&
this.#pendingNavigation?.loaderId === undefined
this.#pendingNavigation.loaderId === undefined
) {
// This can be a pending navigation to `about:blank` created by a command. Use the
// pending navigation in this case.
Expand Down Expand Up @@ -289,7 +299,6 @@ export class NavigationTracker {
}

const navigation = this.#getNavigationForFrameNavigated(url, loaderId);
navigation.frameNavigated();

if (navigation !== this.#currentNavigation) {
this.#currentNavigation.fail(
Expand All @@ -301,6 +310,7 @@ export class NavigationTracker {
navigation.loaderId = loaderId;
this.#loaderIdToNavigationsMap.set(loaderId, navigation);
navigation.start();
navigation.frameNavigated();

this.#currentNavigation = navigation;
if (this.#pendingNavigation === navigation) {
Expand Down
212 changes: 212 additions & 0 deletions tests/browsing_context/__snapshots__/test_navigate_events.ambr
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,15 @@
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_1',
'url': 'stable_2',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.domContentLoaded',
'params': dict({
Expand Down Expand Up @@ -88,6 +97,15 @@
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_1',
'url': 'stable_2',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.domContentLoaded',
'params': dict({
Expand Down Expand Up @@ -152,6 +170,15 @@
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_1',
'url': 'stable_2',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.domContentLoaded',
'params': dict({
Expand Down Expand Up @@ -242,6 +269,15 @@
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_6',
'url': 'stable_7',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.domContentLoaded',
'params': dict({
Expand Down Expand Up @@ -295,6 +331,15 @@
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_1',
'url': 'stable_2',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.domContentLoaded',
'params': dict({
Expand Down Expand Up @@ -359,6 +404,15 @@
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_1',
'url': 'stable_2',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.domContentLoaded',
'params': dict({
Expand Down Expand Up @@ -423,6 +477,15 @@
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_1',
'url': 'stable_2',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.domContentLoaded',
'params': dict({
Expand Down Expand Up @@ -493,6 +556,15 @@
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_1',
'url': 'stable_2',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationStarted',
'params': dict({
Expand All @@ -511,6 +583,15 @@
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_3',
'url': 'stable_4',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.domContentLoaded',
'params': dict({
Expand Down Expand Up @@ -542,6 +623,15 @@
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_1',
'url': 'stable_2',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.domContentLoaded',
'params': dict({
Expand Down Expand Up @@ -573,6 +663,15 @@
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_1',
'url': 'stable_2',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.fragmentNavigated',
'params': dict({
Expand Down Expand Up @@ -613,6 +712,15 @@
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_1',
'url': 'stable_2',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.fragmentNavigated',
'params': dict({
Expand Down Expand Up @@ -642,3 +750,107 @@
}),
])
# ---
# name: test_window_open_aboutBlank_checkEvents[]
list([
dict({
'method': 'browsingContext.contextCreated',
'params': dict({
'children': None,
'clientWindow': '',
'context': 'stable_0',
'originalOpener': 'stable_2',
'parent': None,
'url': 'stable_1',
'userContext': 'default',
}),
'type': 'event',
}),
])
# ---
# name: test_window_open_aboutBlank_checkEvents[about:blank?test]
list([
dict({
'method': 'browsingContext.contextCreated',
'params': dict({
'children': None,
'clientWindow': '',
'context': 'stable_0',
'originalOpener': 'stable_2',
'parent': None,
'url': 'stable_1',
'userContext': 'default',
}),
'type': 'event',
}),
])
# ---
# name: test_window_open_aboutBlank_checkEvents[about:blank]
list([
dict({
'method': 'browsingContext.contextCreated',
'params': dict({
'children': None,
'clientWindow': '',
'context': 'stable_0',
'originalOpener': 'stable_2',
'parent': None,
'url': 'stable_1',
'userContext': 'default',
}),
'type': 'event',
}),
])
# ---
# name: test_window_open_url_checkEvents
list([
dict({
'method': 'browsingContext.contextCreated',
'params': dict({
'children': None,
'clientWindow': '',
'context': 'stable_0',
'originalOpener': 'stable_2',
'parent': None,
'url': 'stable_1',
'userContext': 'default',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationStarted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_3',
'url': 'stable_4',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.navigationCommitted',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_3',
'url': 'stable_4',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.domContentLoaded',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_3',
'url': 'stable_4',
}),
'type': 'event',
}),
dict({
'method': 'browsingContext.load',
'params': dict({
'context': 'stable_0',
'navigation': 'stable_3',
'url': 'stable_4',
}),
'type': 'event',
}),
])
# ---
11 changes: 10 additions & 1 deletion tests/browsing_context/test_create.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ async def test_browsingContext_windowOpen_nonBlank_eventsEmitted(
})

events = await read_messages(
4,
5,
# Filter out the command result, as it's order is not defined.
filter_lambda=lambda m: 'id' not in m,
keys_to_stabilize=['context', 'navigation'],
Expand Down Expand Up @@ -140,6 +140,15 @@ async def test_browsingContext_windowOpen_nonBlank_eventsEmitted(
'url': url_example,
},
'type': 'event',
}, {
'method': 'browsingContext.navigationCommitted',
'params': {
'context': 'stable_0',
'navigation': 'stable_1',
'timestamp': ANY_TIMESTAMP,
'url': url_example,
},
'type': 'event',
}, {
'method': 'browsingContext.domContentLoaded',
'params': {
Expand Down
Loading

0 comments on commit 58be24c

Please sign in to comment.