mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 10:52:44 +00:00 
			
		
		
		
	 fbfb70f81a
			
		
	
	
		fbfb70f81a
		
	
	
	
	
		
			
			In order for same-origin NavigableContainers (iframe, frame, embed, ...) and window.open() WindowProxies to have the proper JS access to their embedder/opener, we need to host multiple top level traversables in the same WebContent process. As a first step, make WebContent::PageHost hold a HashMap of PageClient objects, each holding their own Web::Page that represents a TraversableNavigable's API surface with the UI process.
		
			
				
	
	
		
			99 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| include(accelerated_graphics)
 | |
| set(WEBCONTENT_SOURCE_DIR ${SERENITY_SOURCE_DIR}/Userland/Services/WebContent/)
 | |
| 
 | |
| set(WEBCONTENT_SOURCES
 | |
|     ${WEBCONTENT_SOURCE_DIR}/ConnectionFromClient.cpp
 | |
|     ${WEBCONTENT_SOURCE_DIR}/ConsoleGlobalEnvironmentExtensions.cpp
 | |
|     ${WEBCONTENT_SOURCE_DIR}/PageClient.cpp
 | |
|     ${WEBCONTENT_SOURCE_DIR}/PageHost.cpp
 | |
|     ${WEBCONTENT_SOURCE_DIR}/WebContentConsoleClient.cpp
 | |
|     ${WEBCONTENT_SOURCE_DIR}/WebDriverConnection.cpp
 | |
|     ../FontPlugin.cpp
 | |
|     ../HelperProcess.cpp
 | |
|     ../ImageCodecPlugin.cpp
 | |
|     ../Utilities.cpp
 | |
| )
 | |
| 
 | |
| if (ENABLE_QT)
 | |
|     qt_add_executable(WebContent ${WEBCONTENT_SOURCES})
 | |
|     target_sources(WebContent PRIVATE
 | |
|         ../Qt/EventLoopImplementationQt.cpp
 | |
|         ../Qt/EventLoopImplementationQtEventTarget.cpp
 | |
|         ../Qt/RequestManagerQt.cpp
 | |
|         ../Qt/StringUtils.cpp
 | |
|         ../Qt/WebSocketClientManagerQt.cpp
 | |
|         ../Qt/WebSocketQt.cpp
 | |
|         ../Qt/WebSocketImplQt.cpp
 | |
|         main.cpp
 | |
|     )
 | |
|     target_link_libraries(WebContent PRIVATE Qt::Core Qt::Network)
 | |
|     target_compile_definitions(WebContent PRIVATE HAVE_QT=1)
 | |
| 
 | |
|     if (NOT HAVE_PULSEAUDIO)
 | |
|         find_package(Qt6 REQUIRED COMPONENTS Multimedia)
 | |
| 
 | |
|         target_sources(WebContent PRIVATE
 | |
|             ../Qt/AudioCodecPluginQt.cpp
 | |
|             ../Qt/AudioThread.cpp
 | |
|         )
 | |
| 
 | |
|         target_link_libraries(WebContent PRIVATE Qt::Multimedia)
 | |
|         target_compile_definitions(WebContent PRIVATE HAVE_QT_MULTIMEDIA=1)
 | |
|     endif()
 | |
| else()
 | |
|     set(LIB_TYPE STATIC)
 | |
|     if (ANDROID)
 | |
|         set(LIB_TYPE SHARED)
 | |
|     endif()
 | |
|     add_library(webcontent ${LIB_TYPE} ${WEBCONTENT_SOURCES})
 | |
|     target_include_directories(webcontent PRIVATE ${SERENITY_SOURCE_DIR}/Userland/Services/)
 | |
|     target_include_directories(webcontent PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/..)
 | |
|     target_link_libraries(webcontent PRIVATE LibAudio LibCore LibFileSystem LibGfx LibIPC LibJS LibMain LibWeb LibWebSocket LibProtocol LibWebView LibImageDecoderClient)
 | |
|     target_sources(webcontent PUBLIC FILE_SET ladybird TYPE HEADERS
 | |
|         BASE_DIRS ${SERENITY_SOURCE_DIR}
 | |
|         FILES ../FontPlugin.h
 | |
|               ../ImageCodecPlugin.h
 | |
|     )
 | |
|     target_sources(webcontent PUBLIC FILE_SET server TYPE HEADERS
 | |
|         BASE_DIRS ${SERENITY_SOURCE_DIR}/Userland/Services
 | |
|         FILES ${WEBCONTENT_SOURCE_DIR}/ConnectionFromClient.h
 | |
|               ${WEBCONTENT_SOURCE_DIR}/ConsoleGlobalEnvironmentExtensions.h
 | |
|               ${WEBCONTENT_SOURCE_DIR}/Forward.h
 | |
|               ${WEBCONTENT_SOURCE_DIR}/PageHost.h
 | |
|               ${WEBCONTENT_SOURCE_DIR}/WebContentConsoleClient.h
 | |
|               ${WEBCONTENT_SOURCE_DIR}/WebDriverConnection.h
 | |
|     )
 | |
| 
 | |
|     if (ANDROID)
 | |
|         target_sources(webcontent PRIVATE
 | |
|           ../Android/src/main/cpp/WebContentService.cpp
 | |
|           ../Android/src/main/cpp/WebContentServiceJNI.cpp
 | |
|           ../Android/src/main/cpp/LadybirdServiceBaseJNI.cpp
 | |
|           ../Android/src/main/cpp/JNIHelpers.cpp
 | |
|         )
 | |
|         target_link_libraries(webcontent PRIVATE android)
 | |
|     endif()
 | |
| 
 | |
|     add_executable(WebContent main.cpp)
 | |
|     target_link_libraries(WebContent PRIVATE webcontent)
 | |
| endif()
 | |
| 
 | |
| target_include_directories(WebContent PRIVATE ${SERENITY_SOURCE_DIR}/Userland/Services/)
 | |
| target_include_directories(WebContent PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/..)
 | |
| target_link_libraries(WebContent PRIVATE LibAudio LibCore LibFileSystem LibGfx LibImageDecoderClient LibIPC LibJS LibMain LibWeb LibWebSocket LibProtocol LibWebView)
 | |
| 
 | |
| if (HAVE_PULSEAUDIO)
 | |
|     target_compile_definitions(WebContent PRIVATE HAVE_PULSEAUDIO=1)
 | |
|     if (TARGET webcontent)
 | |
|         target_compile_definitions(webcontent PRIVATE HAVE_PULSEAUDIO=1)
 | |
|     endif()
 | |
| endif()
 | |
| 
 | |
| if (HAS_ACCELERATED_GRAPHICS)
 | |
|     target_compile_definitions(WebContent PRIVATE HAS_ACCELERATED_GRAPHICS)
 | |
|     target_link_libraries(WebContent PRIVATE LibAccelGfx)
 | |
|     if (TARGET webcontent)
 | |
|         target_compile_definitions(webcontent PRIVATE HAS_ACCELERATED_GRAPHICS)
 | |
|         target_link_libraries(webcontent PRIVATE LibAccelGfx)
 | |
|     endif()
 | |
| endif()
 |