chromiumembedded / cef

Chromium Embedded Framework (CEF). A simple framework for embedding Chromium-based browsers in other applications.
https://bitbucket.org/chromiumembedded/cef/
Other
3.21k stars 455 forks source link

views: mac: Add missing window functionality and fix tests #3188

Open magreenblatt opened 2 years ago

magreenblatt commented 2 years ago

Original report by me.


What steps will reproduce the problem?

Run ceftests.app/Contents/MacOS/ceftests --gtest_filter=ViewsWindow\*

Run cefclient.app/Contents/MacOS/cefclient --use-views --initial-show-state=maximized

The “minimized” and “fullscreen” modes currently work as expected. For “maximized” we could replicate the behavior seen by pressing and holding the Option key while clicking the green maximize button in the top-left corner of an app window.

What is the expected output? What do you see instead?

Tests should succeed. Instead, get output like:

[0923/200809.629636:ERROR:native_widget_mac.mm(409)] Not implemented reached in virtual const gfx::ImageSkia *views::NativeWidgetMac::GetWindowIcon()
[0923/200809.633186:ERROR:native_widget_mac.mm(413)] Not implemented reached in virtual const gfx::ImageSkia *views::NativeWidgetMac::GetWindowAppIcon()
[0923/201323.793959:ERROR:native_widget_mac.mm(621)] Not implemented reached in virtual void views::NativeWidgetMac::Maximize()
[0923/201323.921337:ERROR:native_widget_mac.mm(551)] Not implemented reached in virtual void views::NativeWidgetMac::Show(ui::WindowShowState, const gfx::Rect &)

And many test failures:

[  FAILED  ] ViewsWindowTest.WindowLayoutAndCoords
[  FAILED  ] ViewsWindowTest.WindowLayoutAndCoordsFrameless
[  FAILED  ] ViewsWindowTest.WindowMaximize
[  FAILED  ] ViewsWindowTest.WindowMaximizeFrameless
[  FAILED  ] ViewsWindowTest.WindowMinimize
[  FAILED  ] ViewsWindowTest.WindowMinimizeFrameless
[  FAILED  ] ViewsWindowTest.WindowFullscreen
[  FAILED  ] ViewsWindowTest.WindowFullscreenFrameless
[  FAILED  ] ViewsWindowTest.WindowAccelerator

What version of the product are you using? On what operating system?

Current CEF master (M95) on macOS Big Sur 11.3.1.

magreenblatt commented 11 months ago

All of these tests except ViewsWindowTest.WindowAccelerator are fixed in issue #3571.

magreenblatt commented 11 months ago

The ViewsWindowTest.WindowAccelerator test also fails on Linux:

../../cef/tests/ceftests/views/window_unittest.cc:522: Failure
Expected equality of these values:
  EVENTFLAG_ALT_DOWN
    Which is: 8
  static_cast<int>(event.modifiers)
    Which is: 1032
magreenblatt commented 10 months ago

New Debug assertion starting with M119 on MacOS 14.0 (23A344). Looks like it's failing to enter fullscreen mode on the 2nd test iteration. Likely a timing issue since it doesn't reproduce while manually toggling fullscreen mode.

Run ceftests --use-views --enable-chrome-runtime --gtest_filter=ViewsWindowTest.WindowCreateFullscreen --gtest_repeat=2

Asserts with:

[ RUN      ] ViewsWindowTest.WindowCreateFullscreen
[6721:259:1023/150241.137059:FATAL:views_nswindow_delegate.mm(110)] Check failed: !_parent->target_fullscreen_state(). 
0   Chromium Embedded Framework         0x00000001c65de05c base::debug::CollectStackTrace(void const**, unsigned long) + 44
1   Chromium Embedded Framework         0x00000001c65a7348 base::debug::StackTrace::StackTrace(unsigned long) + 72
2   Chromium Embedded Framework         0x00000001c65a73cd base::debug::StackTrace::StackTrace(unsigned long) + 29
3   Chromium Embedded Framework         0x00000001c65a73a5 base::debug::StackTrace::StackTrace() + 37
4   Chromium Embedded Framework         0x00000001c630499a logging::LogMessage::~LogMessage() + 202
5   Chromium Embedded Framework         0x00000001c62ca4ec logging::(anonymous namespace)::DCheckLogMessage::~DCheckLogMessage() + 76
6   Chromium Embedded Framework         0x00000001c62ca465 logging::(anonymous namespace)::DCheckLogMessage::~DCheckLogMessage() + 21
7   Chromium Embedded Framework         0x00000001c62ca489 logging::(anonymous namespace)::DCheckLogMessage::~DCheckLogMessage() + 25
8   Chromium Embedded Framework         0x00000001c62c9f9d logging::CheckError::~CheckError() + 77
9   Chromium Embedded Framework         0x00000001c62c9fe5 logging::CheckError::~CheckError() + 21
10  Chromium Embedded Framework         0x00000001cb738ffc -[ViewsNSWindowDelegate windowDidFailToEnterFullScreen:] + 172
11  AppKit                              0x00007ff8185f4b36 -[_NSEnterFullScreenTransitionController failedToEnterFullScreen] + 586
12  AppKit                              0x00007ff8185f6049 -[_NSEnterFullScreenTransitionController _doFailedToEnterFullScreen] + 580
13  AppKit                              0x00007ff8185f691e __65-[_NSEnterFullScreenTransitionController _performEnterFullScreen]_block_invoke + 451
14  AppKit                              0x00007ff817d64a0a __NSFullScreenDockConnectionSendEnterForSpace_block_invoke + 135
15  libxpc.dylib                        0x00007ff813f37622 _xpc_connection_reply_callout + 36
16  libxpc.dylib                        0x00007ff813f375a1 _xpc_connection_call_reply_async + 69
17  libdispatch.dylib                   0x00007ff81406f600 _dispatch_client_callout3 + 8
18  libdispatch.dylib                   0x00007ff814089729 _dispatch_mach_msg_async_reply_invoke + 388
19  libdispatch.dylib                   0x00007ff81407b7eb _dispatch_main_queue_drain + 747
20  libdispatch.dylib                   0x00007ff81407b4f2 _dispatch_main_queue_callback_4CF + 31
21  CoreFoundation                      0x00007ff814332156 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
22  CoreFoundation                      0x00007ff8142f1325 __CFRunLoopRun + 2459
23  CoreFoundation                      0x00007ff8142f0372 CFRunLoopRunSpecific + 557
24  HIToolbox                           0x00007ff81eb5c9d9 RunCurrentEventLoopInMode + 292
25  HIToolbox                           0x00007ff81eb5c7e6 ReceiveNextEventCommon + 665
26  HIToolbox                           0x00007ff81eb5c531 _BlockUntilNextEventMatchingListInModeWithFilter + 66
27  AppKit                              0x00007ff8178f80c5 _DPSNextEvent + 880
28  AppKit                              0x00007ff8181e9150 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1304
29  AppKit                              0x00007ff8178e963a -[NSApplication run] + 603
30  Chromium Embedded Framework         0x00000001c65fbdac base::MessagePumpNSApplication::DoRun(base::MessagePump::Delegate*) + 268
31  Chromium Embedded Framework         0x00000001c65f85b8 base::MessagePumpCFRunLoopBase::Run(base::MessagePump::Delegate*) + 200
32  Chromium Embedded Framework         0x00000001c64c5bd9 base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(bool, base::TimeDelta) + 713
33  Chromium Embedded Framework         0x00000001c63e2dc5 base::RunLoop::Run(base::Location const&) + 757
34  Chromium Embedded Framework         0x00000001b34efb7e CefMainRunner::RunMessageLoop() + 334
35  Chromium Embedded Framework         0x00000001b3447aca CefContext::RunMessageLoop() + 154
36  Chromium Embedded Framework         0x00000001b3447a0d CefRunMessageLoop() + 285
37  Chromium Embedded Framework         0x00000001b31c1e49 cef_run_message_loop + 9
38  ceftests                            0x0000000103da7bca cef_run_message_loop + 10
39  ceftests                            0x0000000103c65c19 CefRunMessageLoop() + 9
40  ceftests                            0x0000000102c56b61 client::MainMessageLoopStd::Run() + 17
41  ceftests                            0x000000010302c01a main + 1210
42  dyld                                0x00007ff813e8e3a6 start + 1942
magreenblatt commented 1 month ago

MacOS failures still reproduce at M127.