Closed Bug 1903508 Opened 1 year ago Closed 1 year ago

Improve the Keyboard layout collection mechanism

Categories

(Core :: Privacy: Anti-Tracking, enhancement)

enhancement

Tracking

()

RESOLVED FIXED
130 Branch
Tracking Status
firefox130 --- fixed

People

(Reporter: timhuang, Assigned: timhuang)

References

(Blocks 1 open bug)

Details

Attachments

(5 files)

Per Bug 1886178 comment 5, we should implement the keyboard layout collection through the LookAndFeel abstraction.

Assignee: nobody → tihuang
Status: NEW → ASSIGNED
Pushed by tihuang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/dc4af9abfa96 Part 1: Add a GetKeyboardLayout() interface to LookAndFeel abstraction. r=emilio https://hg.mozilla.org/integration/autoland/rev/e3871cddc8ec Part 2: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the windows platform. r=win-reviewers,gstoll https://hg.mozilla.org/integration/autoland/rev/0c9dba12e2c8 Part 3: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the Linux platform. r=emilio https://hg.mozilla.org/integration/autoland/rev/16ddc594a932 Part 4: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the MAC platform. r=emilio https://hg.mozilla.org/integration/autoland/rev/fdb7a3ddb14d Part 5: Using LookAndFeel::GetKeyboardLayout() in nsUserCharacteristics. r=tschuster

Backed out for causing bustage on nsLookAndFeel.mm

Backout link

Push with failures

Failure log

Flags: needinfo?(tihuang)
Flags: needinfo?(tihuang)
Pushed by tihuang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/ad85ae8be066 Part 1: Add a GetKeyboardLayout() interface to LookAndFeel abstraction. r=emilio https://hg.mozilla.org/integration/autoland/rev/8bc2f521a6a5 Part 2: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the windows platform. r=win-reviewers,gstoll https://hg.mozilla.org/integration/autoland/rev/7979c19a23d3 Part 3: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the Linux platform. r=emilio https://hg.mozilla.org/integration/autoland/rev/20c125847bf3 Part 4: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the MAC platform. r=emilio https://hg.mozilla.org/integration/autoland/rev/4c080cae862c Part 5: Using LookAndFeel::GetKeyboardLayout() in nsUserCharacteristics. r=tschuster

Backed out for causing Bpnu bustages on nsLookAndFeel.cpp.

[task 2024-07-03T21:38:54.720Z] 21:38:54     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/widget/gtk'
[task 2024-07-03T21:38:54.726Z] 21:38:54     INFO -  /builds/worker/fetches/sccache/sccache /builds/worker/fetches/clang/bin/clang++ --sysroot /builds/worker/fetches/sysroot-x86_64-linux-gnu -o nsLookAndFeel.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 -fstack-clash-protection -DNDEBUG=1 -DTRIMMED=1 -DCAIRO_GFX '-DMOZ_APP_NAME="firefox"' -DMOZ_HAS_MOZGLUE -DMOZILLA_INTERNAL_API -DIMPL_LIBXUL -DMOZ_SUPPORT_LEAKCHECKING -DSTATIC_EXPORTABLE_JS_API -I/builds/worker/checkouts/gecko/widget/gtk -I/builds/worker/workspace/obj-build/widget/gtk -I/builds/worker/workspace/obj-build/ipc/ipdl/_ipdlheaders -I/builds/worker/checkouts/gecko/ipc/chromium/src -I/builds/worker/checkouts/gecko/layout/base -I/builds/worker/checkouts/gecko/layout/forms -I/builds/worker/checkouts/gecko/layout/generic -I/builds/worker/checkouts/gecko/layout/xul -I/builds/worker/checkouts/gecko/other-licenses/atk-1.0 -I/builds/worker/checkouts/gecko/third_party/cups/include -I/builds/worker/checkouts/gecko/widget -I/builds/worker/checkouts/gecko/widget/headless -I/builds/worker/checkouts/gecko/widget/x11 -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 -fPIC -fcrash-diagnostics-dir=/builds/worker/artifacts -gdwarf-4 -Xclang -load -Xclang /builds/worker/workspace/obj-build/build/clang-plugin/libclang-plugin.so -Xclang -add-plugin -Xclang moz-check -O2 -fno-omit-frame-pointer -funwind-tables -Werror -Wall -Wbitfield-enum-conversion -Wempty-body -Wformat-type-confusion -Wignored-qualifiers -Wpointer-arith -Wshadow-field-in-constructor-modified -Wsign-compare -Wtautological-constant-in-range-compare -Wtype-limits -Wno-error=tautological-type-limit-compare -Wunreachable-code -Wunreachable-code-return -Wunused-but-set-parameter -Wno-invalid-offsetof -Wclass-varargs -Wempty-init-stmt -Wfloat-overflow-conversion -Wfloat-zero-conversion -Wloop-analysis -Wno-range-loop-analysis -Wenum-compare-conditional -Wenum-float-conversion -Wno-deprecated-anon-enum-enum-conversion -Wno-deprecated-enum-enum-conversion -Wno-deprecated-this-capture -Wcomma -Wimplicit-fallthrough -Wstring-conversion -Wno-inline-new-delete -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=atomic-alignment -Wno-error=deprecated-builtins -Wformat -Wformat-security -Wno-psabi -Wthread-safety -Wno-error=builtin-macro-redefined -Wno-vla-cxx-extension -Wno-unknown-warning-option -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gtk-3.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/pango-1.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/glib-2.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/cairo -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/pixman-1 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/freetype2 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/libpng12 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gdk-pixbuf-2.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gio-unix-2.0/ -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/harfbuzz -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/atk-1.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/at-spi2-atk/2.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/at-spi-2.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/dbus-1.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gtk-3.0/unix-print -pthread -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gtk-3.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/pango-1.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/glib-2.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/cairo -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/pixman-1 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/freetype2 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/libpng12 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gdk-pixbuf-2.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gio-unix-2.0/ -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/harfbuzz -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/atk-1.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/at-spi2-atk/2.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/at-spi-2.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/dbus-1.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/lib/x86_64-linux-gnu/dbus-1.0/include -pthread -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/dbus-1.0 -I/builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/lib/x86_64-linux-gnu/dbus-1.0/include -Werror=switch -fno-strict-aliasing -ffp-contract=off  -MD -MP -MF .deps/nsLookAndFeel.o.pp   /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp
[task 2024-07-03T21:38:54.726Z] 21:38:54  WARNING -  /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp:386:8: warning: 'gtk_style_properties_lookup_property' is deprecated [-Wdeprecated-declarations]
[task 2024-07-03T21:38:54.727Z] 21:38:54     INFO -    386 |   if (!gtk_style_properties_lookup_property(propertyName, nullptr, nullptr))
[task 2024-07-03T21:38:54.727Z] 21:38:54     INFO -        |        ^
[task 2024-07-03T21:38:54.728Z] 21:38:54     INFO -  /builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gtk-3.0/gtk/gtkstyleproperties.h:75:1: note: 'gtk_style_properties_lookup_property' has been explicitly marked deprecated here
[task 2024-07-03T21:38:54.728Z] 21:38:54     INFO -     75 | GDK_DEPRECATED_IN_3_8
[task 2024-07-03T21:38:54.728Z] 21:38:54     INFO -        | ^
[task 2024-07-03T21:38:54.729Z] 21:38:54     INFO -  /builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gtk-3.0/gdk/gdkversionmacros.h:264:47: note: expanded from macro 'GDK_DEPRECATED_IN_3_8'
[task 2024-07-03T21:38:54.729Z] 21:38:54     INFO -    264 | # define GDK_DEPRECATED_IN_3_8                GDK_DEPRECATED
[task 2024-07-03T21:38:54.729Z] 21:38:54     INFO -        |                                               ^
[task 2024-07-03T21:38:54.729Z] 21:38:54     INFO -  /builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gtk-3.0/gdk/gdkversionmacros.h:48:24: note: expanded from macro 'GDK_DEPRECATED'
[task 2024-07-03T21:38:54.730Z] 21:38:54     INFO -     48 | #define GDK_DEPRECATED G_DEPRECATED _GDK_EXTERN
[task 2024-07-03T21:38:54.730Z] 21:38:54     INFO -        |                        ^
[task 2024-07-03T21:38:54.730Z] 21:38:54     INFO -  /builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/glib-2.0/glib/gmacros.h:323:37: note: expanded from macro 'G_DEPRECATED'
[task 2024-07-03T21:38:54.730Z] 21:38:54     INFO -    323 | #define G_DEPRECATED __attribute__((__deprecated__))
[task 2024-07-03T21:38:54.731Z] 21:38:54     INFO -        |                                     ^
[task 2024-07-03T21:38:54.731Z] 21:38:54  WARNING -  /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp:2179:3: warning: 'gtk_style_context_add_region' is deprecated [-Wdeprecated-declarations]
[task 2024-07-03T21:38:54.731Z] 21:38:54     INFO -   2179 |   gtk_style_context_add_region(style, GTK_STYLE_REGION_ROW, GTK_REGION_ODD);
[task 2024-07-03T21:38:54.732Z] 21:38:54     INFO -        |   ^
[task 2024-07-03T21:38:54.732Z] 21:38:54     INFO -  /builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gtk-3.0/gtk/gtkstylecontext.h:993:1: note: 'gtk_style_context_add_region' has been explicitly marked deprecated here
[task 2024-07-03T21:38:54.732Z] 21:38:54     INFO -    993 | GDK_DEPRECATED_IN_3_14
[task 2024-07-03T21:38:54.732Z] 21:38:54     INFO -        | ^
[task 2024-07-03T21:38:54.733Z] 21:38:54     INFO -  /builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gtk-3.0/gdk/gdkversionmacros.h:306:47: note: expanded from macro 'GDK_DEPRECATED_IN_3_14'
[task 2024-07-03T21:38:54.733Z] 21:38:54     INFO -    306 | # define GDK_DEPRECATED_IN_3_14               GDK_DEPRECATED
[task 2024-07-03T21:38:54.733Z] 21:38:54     INFO -        |                                               ^
[task 2024-07-03T21:38:54.733Z] 21:38:54     INFO -  /builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/gtk-3.0/gdk/gdkversionmacros.h:48:24: note: expanded from macro 'GDK_DEPRECATED'
[task 2024-07-03T21:38:54.733Z] 21:38:54     INFO -     48 | #define GDK_DEPRECATED G_DEPRECATED _GDK_EXTERN
[task 2024-07-03T21:38:54.734Z] 21:38:54     INFO -        |                        ^
[task 2024-07-03T21:38:54.734Z] 21:38:54     INFO -  /builds/worker/fetches/sysroot-x86_64-linux-gnu/usr/include/glib-2.0/glib/gmacros.h:323:37: note: expanded from macro 'G_DEPRECATED'
[task 2024-07-03T21:38:54.734Z] 21:38:54     INFO -    323 | #define G_DEPRECATED __attribute__((__deprecated__))
[task 2024-07-03T21:38:54.734Z] 21:38:54     INFO -        |                                     ^
[task 2024-07-03T21:38:54.734Z] 21:38:54    ERROR -  /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp:2305:5: error: unknown type name 'XkbDescRec'
[task 2024-07-03T21:38:54.735Z] 21:38:54     INFO -   2305 |     XkbDescRec* kbdDesc = XkbAllocKeyboard();
[task 2024-07-03T21:38:54.735Z] 21:38:54     INFO -        |     ^
[task 2024-07-03T21:38:54.735Z] 21:38:54    ERROR -  /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp:2305:27: error: use of undeclared identifier 'XkbAllocKeyboard'
[task 2024-07-03T21:38:54.735Z] 21:38:54     INFO -   2305 |     XkbDescRec* kbdDesc = XkbAllocKeyboard();
[task 2024-07-03T21:38:54.735Z] 21:38:54     INFO -        |                           ^
[task 2024-07-03T21:38:54.736Z] 21:38:54    ERROR -  /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp:2311:5: error: unknown type name 'XkbStateRec'
[task 2024-07-03T21:38:54.736Z] 21:38:54     INFO -   2311 |     XkbStateRec state;
[task 2024-07-03T21:38:54.736Z] 21:38:54     INFO -        |     ^
[task 2024-07-03T21:38:54.736Z] 21:38:54    ERROR -  /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp:2312:26: error: use of undeclared identifier 'XkbUseCoreKbd'
[task 2024-07-03T21:38:54.736Z] 21:38:54     INFO -   2312 |     XkbGetState(display, XkbUseCoreKbd, &state);
[task 2024-07-03T21:38:54.737Z] 21:38:54     INFO -        |                          ^
[task 2024-07-03T21:38:54.737Z] 21:38:54    ERROR -  /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp:2315:26: error: use of undeclared identifier 'XkbGroupNamesMask'
[task 2024-07-03T21:38:54.737Z] 21:38:54     INFO -   2315 |     XkbGetNames(display, XkbGroupNamesMask, kbdDesc);
[task 2024-07-03T21:38:54.737Z] 21:38:54     INFO -        |                          ^
[task 2024-07-03T21:38:54.737Z] 21:38:54    ERROR -  /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp:2327:51: error: use of undeclared identifier 'XKB_CONTEXT_NO_FLAGS'
[task 2024-07-03T21:38:54.738Z] 21:38:54     INFO -   2327 |     struct xkb_context* context = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
[task 2024-07-03T21:38:54.738Z] 21:38:54     INFO -        |                                                   ^
[task 2024-07-03T21:38:54.738Z] 21:38:54    ERROR -  /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp:2331:47: error: use of undeclared identifier 'xkb_context_unref'
[task 2024-07-03T21:38:54.738Z] 21:38:54     INFO -   2331 |     auto cleanupContext = MakeScopeExit([&] { xkb_context_unref(context); });
[task 2024-07-03T21:38:54.739Z] 21:38:54     INFO -        |                                               ^
[task 2024-07-03T21:38:54.739Z] 21:38:54    ERROR -  /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp:2334:27: error: use of undeclared identifier 'XKB_KEYMAP_COMPILE_NO_FLAGS'
[task 2024-07-03T21:38:54.739Z] 21:38:54     INFO -   2334 |         context, nullptr, XKB_KEYMAP_COMPILE_NO_FLAGS);
[task 2024-07-03T21:38:54.739Z] 21:38:54     INFO -        |                           ^
[task 2024-07-03T21:38:54.739Z] 21:38:54    ERROR -  /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp:2338:46: error: use of undeclared identifier 'xkb_keymap_unref'
[task 2024-07-03T21:38:54.740Z] 21:38:54     INFO -   2338 |     auto cleanupKeymap = MakeScopeExit([&] { xkb_keymap_unref(keymap); });
[task 2024-07-03T21:38:54.740Z] 21:38:54     INFO -        |                                              ^
[task 2024-07-03T21:38:54.740Z] 21:38:54    ERROR -  /builds/worker/checkouts/gecko/widget/gtk/nsLookAndFeel.cpp:2340:26: error: use of undeclared identifier 'xkb_keymap_layout_get_name'
[task 2024-07-03T21:38:54.740Z] 21:38:54     INFO -   2340 |     const char* layout = xkb_keymap_layout_get_name(keymap, 0);
[task 2024-07-03T21:38:54.741Z] 21:38:54     INFO -        |                          ^
[task 2024-07-03T21:38:54.741Z] 21:38:54     INFO -  2 warnings and 10 errors generated.
[task 2024-07-03T21:38:54.741Z] 21:38:54    ERROR -  gmake[4]: *** [/builds/worker/checkouts/gecko/config/rules.mk:674: nsLookAndFeel.o] Error 1
[task 2024-07-03T21:38:54.741Z] 21:38:54     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/widget/gtk'
[task 2024-07-03T21:38:54.741Z] 21:38:54     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/dom/fs/test/gtest/shared'
[task 2024-07-03T21:38:54.741Z] 21:38:54     INFO -  mkdir -p '.deps/'
[task 2024-07-03T21:38:54.742Z] 21:38:54     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/dom/fs/test/gtest/shared'
[task 2024-07-03T21:38:54.742Z] 21:38:54     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/dom/fs/test/gtest/shared'
[task 2024-07-03T21:38:54.742Z] 21:38:54     INFO -  dom/fs/test/gtest/shared/TestFileSystemHelpers.o
[task 2024-07-03T21:38:54.742Z] 21:38:54     INFO -  gmake[4]: Leaving directory '/builds/worker/workspace/obj-build/dom/fs/test/gtest/shared'
[task 2024-07-03T21:38:54.742Z] 21:38:54     INFO -  gmake[4]: Entering directory '/builds/worker/workspace/obj-build/dom/fs/test/gtest'
[task 2024-07-03T21:38:54.743Z] 21:38:54     INFO -  mkdir -p '.deps/'
Flags: needinfo?(tihuang)
No longer blocks: 1886178
Depends on: 1886178
Flags: needinfo?(tihuang)
Attachment #9409890 - Attachment description: Bug 1903508 - Part 1: Add a GetKeyboardLayout() interface to LookAndFeel abstraction. r?emilio! → Bug 1903508 - Part 1: Add a GetKeyboardLayout() interface to LookAndFeel abstraction. r=emilio
Attachment #9409891 - Attachment description: Bug 1903508 - Part 2: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the windows platform. r?#win-reviewers! → Bug 1903508 - Part 2: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the windows platform. r=win-reviewers,gstoll
Attachment #9409893 - Attachment description: Bug 1903508 - Part 4: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the MAC platform. r?#mac-reviewers! → Bug 1903508 - Part 4: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the MAC platform. r=emilio
Attachment #9409894 - Attachment description: Bug 1903508 - Part 5: Using LookAndFeel::GetKeyboardLayout() in nsUserCharacteristics. r?tschuster! → Bug 1903508 - Part 5: Using LookAndFeel::GetKeyboardLayout() in nsUserCharacteristics. r=tschuster
Pushed by tihuang@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/1abc282c295c Part 1: Add a GetKeyboardLayout() interface to LookAndFeel abstraction. r=emilio https://hg.mozilla.org/integration/autoland/rev/fde2d1e781b7 Part 2: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the windows platform. r=win-reviewers,gstoll https://hg.mozilla.org/integration/autoland/rev/6070556fef4c Part 3: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the Linux platform. r=emilio https://hg.mozilla.org/integration/autoland/rev/802bb991bd04 Part 4: Implement nsLookAndFeel::GetKeyboardLayoutImpl() for the MAC platform. r=emilio https://hg.mozilla.org/integration/autoland/rev/43f78438dc47 Part 5: Using LookAndFeel::GetKeyboardLayout() in nsUserCharacteristics. r=tschuster
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: