2022-07-03 20:44:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Copyright  ( c )  2022 ,  Andreas  Kling  < kling @ serenityos . org > 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  SPDX - License - Identifier :  BSD - 2 - Clause 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-03 21:26:51 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BrowserWindow.h" 
  
						 
					
						
							
								
									
										
										
										
											2023-04-24 14:51:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "EventLoopImplementationQt.h" 
  
						 
					
						
							
								
									
										
										
										
											2022-07-14 05:41:13 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "Settings.h" 
  
						 
					
						
							
								
									
										
										
										
											2023-01-27 10:41:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "WebContentView.h" 
  
						 
					
						
							
								
									
										
										
										
											2023-01-21 00:30:05 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <AK/OwnPtr.h> 
  
						 
					
						
							
								
									
										
										
										
											2023-08-05 10:42:26 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <Ladybird/HelperProcess.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <Ladybird/Utilities.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-07-03 20:36:07 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  <LibCore/ArgsParser.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-10-05 15:23:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <LibCore/EventLoop.h> 
  
						 
					
						
							
								
									
										
										
										
											2023-08-02 10:27:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <LibCore/Process.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-10-24 11:18:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <LibCore/System.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-10-05 15:23:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <LibGfx/Font/FontDatabase.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-07-03 20:36:07 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  <LibMain/Main.h> 
  
						 
					
						
							
								
									
										
										
										
											2023-08-31 07:07:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <LibWebView/CookieJar.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <LibWebView/Database.h> 
  
						 
					
						
							
								
									
										
										
										
											2023-10-13 09:52:06 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <LibWebView/URL.h> 
  
						 
					
						
							
								
									
										
										
										
											2022-07-03 20:36:07 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  <QApplication> 
  
						 
					
						
							
								
									
										
										
										
											2023-11-13 14:45:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  <QFileOpenEvent> 
  
						 
					
						
							
								
									
										
										
										
											2022-07-03 20:36:07 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-02 11:52:59 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								namespace  Ladybird  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bool  is_using_dark_system_theme ( QWidget &  widget )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // FIXME: Qt does not provide any method to query if the system is using a dark theme. We will have to implement
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //        platform-specific methods if we wish to have better detection. For now, this inspects if Qt is using a
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //        dark color for widget backgrounds using Rec. 709 luma coefficients.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    //        https://en.wikipedia.org/wiki/Rec._709#Luma_coefficients
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    auto  color  =  widget . palette ( ) . color ( widget . backgroundRole ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    auto  luma  =  0.2126f  *  color . redF ( )  +  0.7152f  *  color . greenF ( )  +  0.0722f  *  color . blueF ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  luma  < =  0.5f ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2022-07-03 20:36:07 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-24 11:18:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  ErrorOr < void >  handle_attached_debugger ( )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef AK_OS_LINUX 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // Let's ignore SIGINT if we're being debugged because GDB
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // incorrectly forwards the signal to us even when it's set to
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // "nopass". See https://sourceware.org/bugzilla/show_bug.cgi?id=9425
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // for details.
 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-02 10:27:58 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( TRY ( Core : : Process : : is_being_debugged ( ) ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        dbgln ( " Debugger is attached, ignoring SIGINT " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        TRY ( Core : : System : : signal ( SIGINT ,  SIG_IGN ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-24 11:18:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  { } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-13 14:45:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  LadybirdApplication  :  public  QApplication  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								public :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    LadybirdApplication ( int &  argc ,  char * *  argv ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        :  QApplication ( argc ,  argv ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Function < void ( URL ) >  on_open_file ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    bool  event ( QEvent *  event )  override 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        switch  ( event - > type ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        case  QEvent : : FileOpen :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( ! on_open_file ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            auto  const &  open_event  =  * static_cast < QFileOpenEvent  const * > ( event ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            auto  file  =  MUST ( ak_string_from_qstring ( open_event . file ( ) ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  ( auto  file_url  =  WebView : : sanitize_url ( file ) ;  file_url . has_value ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                on_open_file ( file_url . release_value ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        default : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  QApplication : : event ( event ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-03 20:36:07 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								ErrorOr < int >  serenity_main ( Main : : Arguments  arguments )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2023-11-13 14:45:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    LadybirdApplication  app ( arguments . argc ,  arguments . argv ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 14:51:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-25 17:38:48 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Core : : EventLoopManager : : install ( * new  Ladybird : : EventLoopManagerQt ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 15:23:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Core : : EventLoop  event_loop ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-25 16:53:07 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    static_cast < Ladybird : : EventLoopImplementationQt & > ( event_loop . impl ( ) ) . set_main_loop ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-10-05 15:23:41 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-24 11:18:22 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    TRY ( handle_attached_debugger ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-10-07 17:08:29 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    platform_init ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    // NOTE: We only instantiate this to ensure that Gfx::FontDatabase has its default queries initialized.
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Gfx : : FontDatabase : : set_default_font_query ( " Katica 10 400 0 " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Gfx : : FontDatabase : : set_fixed_width_font_query ( " Csilla 10 400 0 " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-11 15:31:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Vector < StringView >  raw_urls ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-15 09:18:52 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    StringView  webdriver_content_ipc_path ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-15 01:04:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool  enable_callgrind_profiling  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-13 06:55:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool  enable_sql_database  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-01 14:39:19 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool  use_lagom_networking  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-27 17:28:18 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    bool  use_gpu_painting  =  false ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-11-14 11:08:44 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-03 20:36:07 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    Core : : ArgsParser  args_parser ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    args_parser . set_general_help ( " The Ladybird web browser :^) " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-11 15:31:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    args_parser . add_positional_argument ( raw_urls ,  " URLs to open " ,  " url " ,  Core : : ArgsParser : : Required : : No ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-03 09:14:56 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    args_parser . add_option ( webdriver_content_ipc_path ,  " Path to WebDriver IPC for WebContent " ,  " webdriver-content-path " ,  0 ,  " path " ,  Core : : ArgsParser : : OptionHideMode : : CommandLineAndMarkdown ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-15 01:04:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    args_parser . add_option ( enable_callgrind_profiling ,  " Enable Callgrind profiling " ,  " enable-callgrind-profiling " ,  ' P ' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-13 06:55:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    args_parser . add_option ( enable_sql_database ,  " Enable SQL database " ,  " enable-sql-database " ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-01 14:39:19 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    args_parser . add_option ( use_lagom_networking ,  " Enable Lagom servers for networking " ,  " enable-lagom-networking " ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-27 17:28:18 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    args_parser . add_option ( use_gpu_painting ,  " Enable GPU painting " ,  " enable-gpu-painting " ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-03 20:36:07 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    args_parser . parse ( arguments ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-31 07:07:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    RefPtr < WebView : : Database >  database ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-01-29 07:20:20 +03:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-13 06:55:34 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( enable_sql_database )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-20 14:26:06 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        auto  sql_server_paths  =  TRY ( get_paths_for_helper_process ( " SQLServer " sv ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-31 07:21:54 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        database  =  TRY ( WebView : : Database : : create ( move ( sql_server_paths ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-04-20 14:26:06 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-08-31 07:07:07 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    auto  cookie_jar  =  database  ?  TRY ( WebView : : CookieJar : : create ( * database ) )  :  WebView : : CookieJar : : create ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-12-05 13:09:42 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-11 15:31:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Vector < URL >  initial_urls ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-08 15:59:55 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-09-11 15:31:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    for  ( auto  const &  raw_url  :  raw_urls )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-10-13 09:52:06 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( auto  url  =  WebView : : sanitize_url ( raw_url ) ;  url . has_value ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            initial_urls . append ( url . release_value ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( initial_urls . is_empty ( ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        auto  new_tab_page  =  Ladybird : : Settings : : the ( ) - > new_tab_page ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        initial_urls . append ( MUST ( ak_string_from_qstring ( new_tab_page ) ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-09-11 15:31:23 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-12-01 12:18:40 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    Ladybird : : WebContentOptions  web_content_options  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . enable_callgrind_profiling  =  enable_callgrind_profiling  ?  Ladybird : : EnableCallgrindProfiling : : Yes  :  Ladybird : : EnableCallgrindProfiling : : No , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . enable_gpu_painting  =  use_gpu_painting  ?  Ladybird : : EnableGPUPainting : : Yes  :  Ladybird : : EnableGPUPainting : : No , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        . use_lagom_networking  =  use_lagom_networking  ?  Ladybird : : UseLagomNetworking : : Yes  :  Ladybird : : UseLagomNetworking : : No , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    Ladybird : : BrowserWindow  window ( initial_urls ,  cookie_jar ,  web_content_options ,  webdriver_content_ipc_path ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-03 20:36:07 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    window . setWindowTitle ( " Ladybird " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-09 12:23:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-11-13 14:45:38 -05:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    app . on_open_file  =  [ & ] ( auto  file_url )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        window . view ( ) . load ( file_url ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-05-29 19:05:30 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    if  ( Ladybird : : Settings : : the ( ) - > is_maximized ( ) )  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-09 12:23:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        window . showMaximized ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    }  else  { 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-29 19:05:30 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        auto  last_position  =  Ladybird : : Settings : : the ( ) - > last_position ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-09 12:23:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ( last_position . has_value ( ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            window . move ( last_position . value ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-05-29 19:05:30 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        window . resize ( Ladybird : : Settings : : the ( ) - > last_size ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2023-08-09 12:23:32 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-07-03 20:36:07 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    window . show ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2023-04-24 14:51:19 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    return  event_loop . exec ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2022-07-03 20:36:07 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}