Closed Bug 1895254 Opened 6 months ago Closed 3 months ago

Add skeleton interfaces for Navigation API behind `dom.navigation.webidl.enabled` pref

Categories

(Core :: DOM: Navigation, task)

task

Tracking

()

RESOLVED FIXED
130 Branch
Tracking Status
firefox130 --- fixed

People

(Reporter: farre, Assigned: avandolder)

References

(Blocks 8 open bugs)

Details

(Keywords: dev-doc-complete)

Attachments

(1 file)

No description provided.
Blocks: 1777171
Type: defect → enhancement
Type: enhancement → task

This should be added to https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Experimental_features, at least once there is actual functionality behind the pref.

Sebastian

Keywords: dev-doc-needed
Summary: Add `dom.navigation.webidl.enabled` pref. → Add skeleton interfaces for Navigation API behind `dom.navigation.webidl.enabled` pref
Assignee: nobody → avandolder
Status: NEW → ASSIGNED
Blocks: 1895257
Blocks: 1890755
Blocks: 1896584
Blocks: 1896585
Blocks: 1890756
Blocks: 1896666
Pushed by avandolder@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/04ca9845721e Prototype the Navigation API WebIDL. r=farre,dom-core,peterv

Backed out for causing multiple failures.


  • Push with failures build bustages
  • Failure Log
  • Failure line: /builds/worker/workspace/obj-build/dist/include/mozilla/dom/NavigateEvent.h:31:54: error: declaration of 'mozilla::dom::NavigationType mozilla::dom::NavigateEvent::NavigationType() const' [-fpermissive]

  • Push with failures - mochitests failures
  • Failure Log
  • Failure line: TEST-UNEXPECTED-FAIL | dom/tests/mochitest/general/test_interfaces.html | If this is failing: DANGER, are you sure you want to expose the new interface NavigationActivation to all webpages as a property on 'window'? Do not make a change to this file without a review from a DOM peer for that specific change!!! (or a JS peer for changes to ecmaGlobals)

Flags: needinfo?(avandolder)
Pushed by avandolder@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/1b14354719c0 Prototype the Navigation API WebIDL. r=farre,dom-core,peterv

Backed out for causing bustages on NavigationTransition.

[task 2024-07-18T20:44:57.203Z] 20:44:57     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/dom/events'
[task 2024-07-18T20:44:58.206Z] 20:44:58     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/dom/bindings'
[task 2024-07-18T20:44:58.210Z] 20:44:58     INFO -  /builds/worker/fetches/sccache/sccache /builds/worker/fetches/gcc/bin/g++ --sysroot /builds/worker/fetches/sysroot-x86_64-linux-gnu -std=gnu++17 -isystem /builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/c++/8 -isystem /builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/x86_64-linux-gnu/c++/8 -isystem /builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/x86_64-linux-gnu -isystem /builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include -o UnifiedBindings14.o -c  -I/builds/worker/workspace/obj-build/dist/stl_wrappers -I/builds/worker/workspace/obj-build/dist/system_wrappers -include /builds/worker/checkouts/gecko/config/gcc_hidden.h -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -DDEBUG=1 -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DMOZ_SUPPORT_LEAKCHECKING -DSTATIC_EXPORTABLE_JS_API -I/builds/worker/checkouts/gecko/dom/bindings -I/builds/worker/workspace/obj-build/dom/bindings -I/builds/worker/workspace/obj-build/dist/include/mozilla/dom -I/builds/worker/checkouts/gecko/dom/base -I/builds/worker/checkouts/gecko/dom/battery -I/builds/worker/checkouts/gecko/dom/canvas -I/builds/worker/checkouts/gecko/dom/geolocation -I/builds/worker/checkouts/gecko/dom/html -I/builds/worker/checkouts/gecko/dom/indexedDB -I/builds/worker/checkouts/gecko/dom/media/webaudio -I/builds/worker/checkouts/gecko/dom/media/webrtc -I/builds/worker/checkouts/gecko/dom/media/webrtc/common/time_profiling -I/builds/worker/checkouts/gecko/dom/media/webrtc/jsapi -I/builds/worker/checkouts/gecko/dom/media/webrtc/libwebrtcglue -I/builds/worker/checkouts/gecko/dom/media/webrtc/transport -I/builds/worker/checkouts/gecko/dom/media/webspeech/recognition -I/builds/worker/checkouts/gecko/dom/svg -I/builds/worker/checkouts/gecko/dom/xml -I/builds/worker/checkouts/gecko/dom/xslt/base -I/builds/worker/checkouts/gecko/dom/xslt/xpath -I/builds/worker/checkouts/gecko/dom/xul -I/builds/worker/checkouts/gecko/js/xpconnect/src -I/builds/worker/checkouts/gecko/js/xpconnect/wrappers -I/builds/worker/checkouts/gecko/layout/generic -I/builds/worker/checkouts/gecko/layout/style -I/builds/worker/checkouts/gecko/layout/xul/tree -I/builds/worker/checkouts/gecko/media/webrtc -I/builds/worker/checkouts/gecko/netwerk/base -I/builds/worker/checkouts/gecko/third_party/libwebrtc -I/builds/worker/checkouts/gecko/third_party/libwebrtc/third_party/abseil-cpp -I/builds/worker/checkouts/gecko/third_party/msgpack/include -I/builds/worker/workspace/obj-build/ipc/ipdl/_ipdlheaders -I/builds/worker/checkouts/gecko/ipc/chromium/src -I/builds/worker/workspace/obj-build/dist/include -I/builds/worker/workspace/obj-build/dist/include/nspr -I/builds/worker/workspace/obj-build/dist/include/nss -DMOZILLA_CLIENT -include /builds/worker/workspace/obj-build/mozilla-config.h -D_GLIBCXX_USE_CXX11_ABI=0 -fno-rtti -pthread -fno-sized-deallocation -fno-aligned-new -ffunction-sections -fdata-sections -fno-math-errno -fno-exceptions -pipe -fPIC -gdwarf-4 -O2 -fno-omit-frame-pointer -funwind-tables -Werror -Wall -Wempty-body -Wignored-qualifiers -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wno-invalid-offsetof -Wduplicated-cond -Wimplicit-fallthrough -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-multistatement-macros -Wno-error=class-memaccess -Wformat -Wformat-overflow=2 -Wno-psabi -Wno-error=builtin-macro-redefined -Wno-maybe-uninitialized -fno-strict-aliasing -ffp-contract=off  -MD -MP -MF .deps/UnifiedBindings14.o.pp   UnifiedBindings14.cpp
[task 2024-07-18T20:44:58.214Z] 20:44:58     INFO -  In file included from NavigationBinding.cpp:30,
[task 2024-07-18T20:44:58.215Z] 20:44:58     INFO -                   from UnifiedBindings14.cpp:197:
[task 2024-07-18T20:44:58.216Z] 20:44:58    ERROR -  /builds/worker/workspace/obj-build/dist/include/mozilla/dom/NavigationTransition.h:24:54: error: declaration of 'mozilla::dom::NavigationType mozilla::dom::NavigationTransition::NavigationType() const' [-fpermissive]
[task 2024-07-18T20:44:58.219Z] 20:44:58     INFO -     NavigationType NavigationType() const { return {}; }
[task 2024-07-18T20:44:58.220Z] 20:44:58     INFO -                                                        ^
[task 2024-07-18T20:44:58.221Z] 20:44:58     INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/dom/NavigateEventBinding.h:7,
[task 2024-07-18T20:44:58.222Z] 20:44:58     INFO -                   from NavigateEventBinding.cpp:7,
[task 2024-07-18T20:44:58.222Z] 20:44:58     INFO -                   from UnifiedBindings14.cpp:171:
[task 2024-07-18T20:44:58.223Z] 20:44:58    ERROR -  /builds/worker/workspace/obj-build/dist/include/mozilla/dom/NavigationBinding.h:53:12: error: changes meaning of 'NavigationType' from 'enum class mozilla::dom::NavigationType' [-fpermissive]
[task 2024-07-18T20:44:58.224Z] 20:44:58     INFO -   enum class NavigationType : uint8_t {
[task 2024-07-18T20:44:58.225Z] 20:44:58     INFO -              ^~~~~~~~~~~~~~
[task 2024-07-18T20:44:58.226Z] 20:44:58     INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/dom/BindingDeclarations.h:25,
[task 2024-07-18T20:44:58.226Z] 20:44:58     INFO -                   from /builds/worker/workspace/obj-build/dist/include/mozilla/dom/MimeTypeArrayBinding.h:9,
[task 2024-07-18T20:44:58.227Z] 20:44:58     INFO -                   from MimeTypeArrayBinding.cpp:5,
[task 2024-07-18T20:44:58.228Z] 20:44:58     INFO -                   from UnifiedBindings14.cpp:2:
[task 2024-07-18T20:44:58.229Z] 20:44:58     INFO -  /builds/worker/workspace/obj-build/dist/include/nsTArray.h: In instantiation of 'static void AssignRangeAlgorithm<true, true>::implementation(ElemType*, IndexType, SizeType, const Item*) [with Item = mozilla::dom::workerinternals::JSSettings::JSGCSetting; ElemType = mozilla::dom::workerinternals::JSSettings::JSGCSetting; IndexType = long unsigned int; SizeType = long unsigned int]':
[task 2024-07-18T20:44:58.230Z] 20:44:58     INFO -  /builds/worker/workspace/obj-build/dist/include/nsTArray.h:2439:58:   required from 'void nsTArray_Impl<E, Alloc>::AssignRange(nsTArray_Impl<E, Alloc>::index_type, nsTArray_Impl<E, Alloc>::size_type, const Item*) [with Item = mozilla::dom::workerinternals::JSSettings::JSGCSetting; E = mozilla::dom::workerinternals::JSSettings::JSGCSetting; Alloc = nsTArrayInfallibleAllocator; nsTArray_Impl<E, Alloc>::index_type = long unsigned int; nsTArray_Impl<E, Alloc>::size_type = long unsigned int]'
[task 2024-07-18T20:44:58.230Z] 20:44:58     INFO -  /builds/worker/workspace/obj-build/dist/include/nsTArray.h:2468:5:   required from 'typename ActualAlloc::ResultType nsTArray_Impl<E, Alloc>::AssignInternal(const Item*, nsTArray_Impl<E, Alloc>::size_type) [with ActualAlloc = nsTArrayInfallibleAllocator; Item = mozilla::dom::workerinternals::JSSettings::JSGCSetting; E = mozilla::dom::workerinternals::JSSettings::JSGCSetting; Alloc = nsTArrayInfallibleAllocator; typename ActualAlloc::ResultType = void; nsTArray_Impl<E, Alloc>::size_type = long unsigned int]'
[task 2024-07-18T20:44:58.231Z] 20:44:58     INFO -  /builds/worker/workspace/obj-build/dist/include/nsTArray.h:1454:39:   required from 'typename ActualAlloc::ResultType nsTArray_Impl<E, Alloc>::Assign(const nsTArray_Impl<E, Allocator>&) [with Allocator = nsTArrayInfallibleAllocator; ActualAlloc = nsTArrayInfallibleAllocator; E = mozilla::dom::workerinternals::JSSettings::JSGCSetting; Alloc = nsTArrayInfallibleAllocator; typename ActualAlloc::ResultType = void]'
[task 2024-07-18T20:44:58.232Z] 20:44:58     INFO -  /builds/worker/workspace/obj-build/dist/include/nsTArray.h:2965:7:   required from 'CopyableTArray<E>& CopyableTArray<E>::operator=(const CopyableTArray<E>&) [with E = mozilla::dom::workerinternals::JSSettings::JSGCSetting]'
[task 2024-07-18T20:44:58.233Z] 20:44:58     INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/dom/workerinternals/JSSettings.h:24:8:   required from here
[task 2024-07-18T20:44:58.234Z] 20:44:58  WARNING -  /builds/worker/workspace/obj-build/dist/include/nsTArray.h:671:13: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of non-trivially copyable type 'struct mozilla::dom::workerinternals::JSSettings::JSGCSetting'; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
[task 2024-07-18T20:44:58.235Z] 20:44:58     INFO -         memcpy(aElements + aStart, aValues, aCount * sizeof(ElemType));
[task 2024-07-18T20:44:58.235Z] 20:44:58     INFO -         ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[task 2024-07-18T20:44:58.235Z] 20:44:58     INFO -  In file included from /builds/worker/workspace/obj-build/dist/include/mozilla/dom/workerinternals/RuntimeService.h:18,
[task 2024-07-18T20:44:58.235Z] 20:44:58     INFO -                   from /builds/worker/workspace/obj-build/dist/include/mozilla/dom/Fetch.h:24,
[task 2024-07-18T20:44:58.235Z] 20:44:58     INFO -                   from /builds/worker/workspace/obj-build/dist/include/mozilla/dom/Navigator.h:13,
[task 2024-07-18T20:44:58.235Z] 20:44:58     INFO -                   from NavigatorBinding.cpp:12,
[task 2024-07-18T20:44:58.235Z] 20:44:58     INFO -                   from UnifiedBindings14.cpp:288:
[task 2024-07-18T20:44:58.235Z] 20:44:58     INFO -  /builds/worker/workspace/obj-build/dist/include/mozilla/dom/workerinternals/JSSettings.h:25:10: note: 'struct mozilla::dom::workerinternals::JSSettings::JSGCSetting' declared here
[task 2024-07-18T20:44:58.235Z] 20:44:58     INFO -     struct JSGCSetting {
[task 2024-07-18T20:44:58.236Z] 20:44:58     INFO -            ^~~~~~~~~~~
[task 2024-07-18T20:44:58.236Z] 20:44:58    ERROR -  gmake[4]: *** [/builds/worker/checkouts/gecko/config/rules.mk:676: UnifiedBindings14.o] Error 1
[task 2024-07-18T20:44:58.236Z] 20:44:58     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/dom/bindings'
[task 2024-07-18T20:44:58.236Z] 20:44:58     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/dom/bindings'
[task 2024-07-18T20:44:58.236Z] 20:44:58     INFO -  dom/bindings/UnifiedBindings15.o

Huh. I wonder if this is a compiler bug in gcc. Clang doesn't have a problem with this construct, or even warn about it. Weird.

Nope, gcc seems to be in the right here, the standard just says that compilers can choose to ignore it, which clang and MSVC do. Wild.

Flags: needinfo?(avandolder)
Pushed by avandolder@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/455d12dff44e Prototype the Navigation API WebIDL. r=farre,dom-core,peterv
Pushed by avandolder@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/c634fecd6270 Prototype the Navigation API WebIDL. r=farre,dom-core,peterv

Backed out for causing build bustages in Navigation.cpp.

  • Backout link
  • Push with failures
  • Failure Log
  • Failure line: /builds/worker/checkouts/gecko/dom/navigation/Navigation.cpp:29:23: error: no member named 'dom_navigation_webidl_enabled_DoNotUseDirectly' in namespace 'mozilla::StaticPrefs'
Pushed by avandolder@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/b270d20935bc Prototype the Navigation API WebIDL. r=farre,dom-core,peterv
Status: ASSIGNED → RESOLVED
Closed: 3 months ago
Resolution: --- → FIXED
Target Milestone: --- → 130 Branch
Flags: needinfo?(avandolder)

FF130 MDN docs tracking for this is in https://github.com/mdn/content/issues/35282

However I am not sure what is worth documenting.

  1. The pref dom.navigation.webidl.enabled has the key do_not_use_directly: true. How would you enable this then?
  2. If nothing is supported or testable then adding something to experimental features is not very helpful. The compatibility data for this API already links to https://bugzilla.mozilla.org/show_bug.cgi?id=1777171 which shows the features.

So my take on this is that we should do nothing for now, but when you start doing the issues in https://bugzilla.mozilla.org/show_bug.cgi?id=1777171 we should add to experimental features page and update the compatibility data with the dom.navigation.webidl.enabled on the implemented features (only).

Does this make sense?

Flags: needinfo?(sebastianzartner)

According to the in-code documentation, do_not_use_directly is just an indication that a custom getter function is provided instead of the default one. I am not into the details of what that flag does, though the interface is already exposed via window.navigation, it just doesn't do anything yet, as far as I understand.
So yeah, as I wrote earlier, adding an entry to the experimental features page only makes sense once there is actual functionality behind the pref. So it's fine to keep the dev-doc-needed flag at bug 1777171 and remove it here and document it when there's something people can try out.

Sebastian

Flags: needinfo?(sebastianzartner)
Keywords: dev-doc-needed

Thanks Sebastian! I saw your note, but though it worth checking again. I'd be happy with dev-doc-needed on the implementation bugs for the parts too - e.g. such as 1890747, 1890755, 1890756, 1895257, 1896584, 1896585, 1896666 - depending on whether they can be meaningfully tested. We'll be lead by you guys.

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: