From ff15dec87970a6ed9fdb1f41c344ec9513853ae8 Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@qt.io>
Date: Mon, 3 Apr 2017 12:49:30 +0200
Subject: [PATCH] Fix source indexing in Qt Creator 4.3

Create a fake project, just for including the files compiled by ninja
in a qmake project that Qt Creator can index, but which we do not build.

Change-Id: I7b4fc7ba23090bddb49ee1e85f76f71fb33544e2
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
---
 src/core/core.pro           |   6 +
 src/core/core_chromium.pri  | 237 +++++++++++++++++++++++++++++++++++
 src/core/core_generator.pro | 238 +-----------------------------------
 src/core/core_project.pro   |   3 +
 4 files changed, 247 insertions(+), 237 deletions(-)
 create mode 100644 src/core/core_chromium.pri
 create mode 100644 src/core/core_project.pro

diff --git a/src/core/core.pro b/src/core/core.pro
index 85e090ca9..91c5044b6 100644
--- a/src/core/core.pro
+++ b/src/core/core.pro
@@ -39,9 +39,15 @@ gn_run.depends = core_generator
 
 core_api.depends = gn_run
 
+# A fake project for qt creator
+core_project.file = core_project.pro
+core_project.depends = core_headers
+
 SUBDIRS += \
             core_headers \
             core_generator \
             gn_run \
             core_api \
             core_module
+
+false: SUBDIRS += core_project
diff --git a/src/core/core_chromium.pri b/src/core/core_chromium.pri
new file mode 100644
index 000000000..9c1e9f0db
--- /dev/null
+++ b/src/core/core_chromium.pri
@@ -0,0 +1,237 @@
+qtConfig(debug_and_release): CONFIG += debug_and_release
+
+include(core_common.pri)
+
+macos {
+    # This fixes namespace builds on macOS. Specifically namespace ambiguity issues between Qt and
+    # Chromium forward declarations of NSString.
+
+    # The single quotes are present so that qmake iteration does not interpret the space as
+    # delimiting a new value, they are removed before writing to the GN file, and  the final shell
+    # quoting is done by GN itself.
+    forward_declaration_macro = "'Q_FORWARD_DECLARE_OBJC_CLASS(name)=class name;'"
+} else {
+    forward_declaration_macro = "Q_FORWARD_DECLARE_OBJC_CLASS=QT_FORWARD_DECLARE_CLASS"
+}
+
+# Defining keywords such as 'signal' clashes with the chromium code base.
+DEFINES += QT_NO_KEYWORDS \
+           QT_USE_QSTRINGBUILDER \
+           $$forward_declaration_macro \
+           QTWEBENGINECORE_VERSION_STR=\"$$MODULE_VERSION\" \
+           QTWEBENGINEPROCESS_NAME=\"$$QTWEBENGINEPROCESS_NAME\" \
+           BUILDING_CHROMIUM
+
+# Ensure that response files, generated by qtbase/mkspecs/features/moc.prf, are found by moc.
+MOC_DIR = $$OUT_PWD/$$getConfigDir()/.moc
+RCC_DIR = $$OUT_PWD/$$getConfigDir()/.rcc
+
+# Assume that we want mobile touch and low-end hardware behaviors
+# whenever we are cross compiling.
+contains(WEBENGINE_CONFIG, embedded_build): DEFINES += QTWEBENGINE_EMBEDDED_SWITCHES
+
+qtConfig(egl): CONFIG += egl
+
+RESOURCES += devtools.qrc
+
+INCLUDEPATH += $$PWD $$PWD/api
+
+SOURCES = \
+        access_token_store_qt.cpp \
+        authentication_dialog_controller.cpp \
+        browser_accessibility_manager_qt.cpp \
+        browser_accessibility_qt.cpp \
+        browser_context_adapter.cpp \
+        browser_context_adapter_client.cpp \
+        browser_context_qt.cpp \
+        browser_message_filter_qt.cpp \
+        certificate_error_controller.cpp \
+        chromium_gpu_helper.cpp \
+        chromium_overrides.cpp \
+        clipboard_qt.cpp \
+        color_chooser_qt.cpp \
+        color_chooser_controller.cpp \
+        common/qt_ipc_logging.cpp \
+        common/qt_messages.cpp \
+        common/user_script_data.cpp \
+        content_client_qt.cpp \
+        content_browser_client_qt.cpp \
+        content_main_delegate_qt.cpp \
+        cookie_monster_delegate_qt.cpp \
+        custom_protocol_handler.cpp \
+        delegated_frame_node.cpp \
+        desktop_screen_qt.cpp \
+        dev_tools_http_handler_delegate_qt.cpp \
+        download_manager_delegate_qt.cpp \
+        favicon_manager.cpp \
+        file_picker_controller.cpp \
+        gl_context_qt.cpp \
+        gl_surface_qt.cpp \
+        javascript_dialog_controller.cpp \
+        javascript_dialog_manager_qt.cpp \
+        media_capture_devices_dispatcher.cpp \
+        native_web_keyboard_event_qt.cpp \
+        network_delegate_qt.cpp \
+        ozone_platform_qt.cpp \
+        permission_manager_qt.cpp \
+        process_main.cpp \
+        proxy_config_service_qt.cpp \
+        qrc_protocol_handler_qt.cpp \
+        render_view_observer_host_qt.cpp \
+        render_widget_host_view_qt.cpp \
+        renderer/content_renderer_client_qt.cpp \
+        renderer/render_frame_observer_qt.cpp \
+        renderer/render_view_observer_qt.cpp \
+        renderer/user_resource_controller.cpp \
+        renderer/web_channel_ipc_transport.cpp \
+        renderer_host/resource_dispatcher_host_delegate_qt.cpp \
+        renderer_host/user_resource_controller_host.cpp \
+        renderer_host/web_channel_ipc_transport_host.cpp \
+        resource_bundle_qt.cpp \
+        resource_context_qt.cpp \
+        ssl_host_state_delegate_qt.cpp \
+        surface_factory_qt.cpp \
+        type_conversion.cpp \
+        url_request_context_getter_qt.cpp \
+        url_request_custom_job.cpp \
+        url_request_custom_job_delegate.cpp \
+        url_request_qrc_job_qt.cpp \
+        user_script.cpp \
+        visited_links_manager_qt.cpp \
+        web_contents_adapter.cpp \
+        web_contents_delegate_qt.cpp \
+        web_contents_view_qt.cpp \
+        web_engine_context.cpp \
+        web_engine_error.cpp \
+        web_engine_library_info.cpp \
+        web_engine_settings.cpp \
+        web_event_factory.cpp
+
+HEADERS = \
+        access_token_store_qt.h \
+        authentication_dialog_controller_p.h \
+        authentication_dialog_controller.h \
+        browser_accessibility_manager_qt.h \
+        browser_accessibility_qt.h \
+        browser_context_adapter.h \
+        browser_context_adapter_client.h \
+        browser_context_qt.h \
+        browser_message_filter_qt.h \
+        certificate_error_controller_p.h \
+        certificate_error_controller.h \
+        chromium_overrides.h \
+        clipboard_qt.h \
+        color_chooser_qt.h \
+        color_chooser_controller_p.h \
+        color_chooser_controller.h \
+        common/qt_messages.h \
+        common/user_script_data.h \
+        content_client_qt.h \
+        content_browser_client_qt.h \
+        content_main_delegate_qt.h \
+        cookie_monster_delegate_qt.h \
+        custom_protocol_handler.h \
+        delegated_frame_node.h \
+        desktop_screen_qt.h \
+        dev_tools_http_handler_delegate_qt.h \
+        download_manager_delegate_qt.h \
+        chromium_gpu_helper.h \
+        favicon_manager_p.h \
+        favicon_manager.h \
+        file_picker_controller.h \
+        gl_context_qt.h \
+        gl_surface_qt.h \
+        global_descriptors_qt.h \
+        javascript_dialog_controller_p.h \
+        javascript_dialog_controller.h \
+        javascript_dialog_manager_qt.h \
+        media_capture_devices_dispatcher.h \
+        network_delegate_qt.h \
+        ozone_platform_qt.h \
+        permission_manager_qt.h \
+        process_main.h \
+        proxy_config_service_qt.h \
+        qrc_protocol_handler_qt.h \
+        render_view_observer_host_qt.h \
+        render_widget_host_view_qt.h \
+        render_widget_host_view_qt_delegate.h \
+        renderer/content_renderer_client_qt.h \
+        renderer/render_frame_observer_qt.h \
+        renderer/render_view_observer_qt.h \
+        renderer/user_resource_controller.h \
+        renderer/web_channel_ipc_transport.h \
+        renderer_host/resource_dispatcher_host_delegate_qt.h \
+        renderer_host/user_resource_controller_host.h \
+        renderer_host/web_channel_ipc_transport_host.h \
+        resource_context_qt.h \
+        ssl_host_state_delegate_qt.h \
+        surface_factory_qt.h \
+        type_conversion.h \
+        url_request_context_getter_qt.h \
+        url_request_custom_job.h \
+        url_request_custom_job_delegate.h \
+        url_request_qrc_job_qt.h \
+        user_script.h \
+        visited_links_manager_qt.h \
+        web_contents_adapter.h \
+        web_contents_adapter_client.h \
+        web_contents_adapter_p.h \
+        web_contents_delegate_qt.h \
+        web_contents_view_qt.h \
+        web_engine_context.h \
+        web_engine_error.h \
+        web_engine_library_info.h \
+        web_engine_settings.h \
+        web_event_factory.h
+
+
+use?(pdf) {
+    SOURCES += pdfium_document_wrapper_qt.cpp
+    HEADERS += pdfium_document_wrapper_qt.h
+}
+
+use?(pepper_plugins) {
+    SOURCES += \
+        renderer_host/pepper/pepper_flash_browser_host_qt.cpp \
+        renderer_host/pepper/pepper_host_factory_qt.cpp \
+        renderer_host/pepper/pepper_isolated_file_system_message_filter.cpp \
+        renderer/pepper/pepper_flash_renderer_host_qt.cpp \
+        renderer/pepper/pepper_renderer_host_factory_qt.cpp
+
+    HEADERS += \
+        renderer_host/pepper/pepper_flash_browser_host_qt.h \
+        renderer_host/pepper/pepper_host_factory_qt.h \
+        renderer_host/pepper/pepper_isolated_file_system_message_filter.h \
+        renderer/pepper/pepper_flash_renderer_host_qt.h \
+        renderer/pepper/pepper_renderer_host_factory_qt.h
+}
+
+use?(printing) {
+    SOURCES += \
+        printing_message_filter_qt.cpp \
+        print_view_manager_base_qt.cpp \
+        print_view_manager_qt.cpp \
+        renderer/print_web_view_helper_delegate_qt.cpp
+
+    HEADERS += \
+        printing_message_filter_qt.h \
+        print_view_manager_base_qt.h \
+        print_view_manager_qt.h \
+        renderer/print_web_view_helper_delegate_qt.h
+}
+
+contains(QT_CONFIG, opengl) {
+    SOURCES += \
+        yuv_video_node.cpp \
+        stream_video_node.cpp
+
+    HEADERS += \
+        yuv_video_node.h \
+        stream_video_node.h
+}
+
+qtHaveModule(positioning) {
+    SOURCES += location_provider_qt.cpp
+    HEADERS += location_provider_qt.h
+    DEFINES += QT_USE_POSITIONING=1
+}
diff --git a/src/core/core_generator.pro b/src/core/core_generator.pro
index 82c9b8125..916c211f9 100644
--- a/src/core/core_generator.pro
+++ b/src/core/core_generator.pro
@@ -1,241 +1,5 @@
-
 include(core_gn_config.pri)
-qtConfig(debug_and_release): CONFIG += debug_and_release
 
 TEMPLATE = lib
 
-include(core_common.pri)
-
-macos {
-    # This fixes namespace builds on macOS. Specifically namespace ambiguity issues between Qt and
-    # Chromium forward declarations of NSString.
-
-    # The single quotes are present so that qmake iteration does not interpret the space as
-    # delimiting a new value, they are removed before writing to the GN file, and  the final shell
-    # quoting is done by GN itself.
-    forward_declaration_macro = "'Q_FORWARD_DECLARE_OBJC_CLASS(name)=class name;'"
-} else {
-    forward_declaration_macro = "Q_FORWARD_DECLARE_OBJC_CLASS=QT_FORWARD_DECLARE_CLASS"
-}
-
-# Defining keywords such as 'signal' clashes with the chromium code base.
-DEFINES += QT_NO_KEYWORDS \
-           QT_USE_QSTRINGBUILDER \
-           $$forward_declaration_macro \
-           QTWEBENGINECORE_VERSION_STR=\"$$MODULE_VERSION\" \
-           QTWEBENGINEPROCESS_NAME=\"$$QTWEBENGINEPROCESS_NAME\" \
-           BUILDING_CHROMIUM
-
-# Ensure that response files, generated by qtbase/mkspecs/features/moc.prf, are found by moc.
-MOC_DIR = $$OUT_PWD/$$getConfigDir()/.moc
-RCC_DIR = $$OUT_PWD/$$getConfigDir()/.rcc
-
-# Assume that we want mobile touch and low-end hardware behaviors
-# whenever we are cross compiling.
-contains(WEBENGINE_CONFIG, embedded_build): DEFINES += QTWEBENGINE_EMBEDDED_SWITCHES
-
-qtConfig(egl): CONFIG += egl
-
-RESOURCES += devtools.qrc
-
-INCLUDEPATH += $$PWD $$PWD/api
-
-SOURCES = \
-        access_token_store_qt.cpp \
-        authentication_dialog_controller.cpp \
-        browser_accessibility_manager_qt.cpp \
-        browser_accessibility_qt.cpp \
-        browser_context_adapter.cpp \
-        browser_context_adapter_client.cpp \
-        browser_context_qt.cpp \
-        browser_message_filter_qt.cpp \
-        certificate_error_controller.cpp \
-        chromium_gpu_helper.cpp \
-        chromium_overrides.cpp \
-        clipboard_qt.cpp \
-        color_chooser_qt.cpp \
-        color_chooser_controller.cpp \
-        common/qt_ipc_logging.cpp \
-        common/qt_messages.cpp \
-        common/user_script_data.cpp \
-        content_client_qt.cpp \
-        content_browser_client_qt.cpp \
-        content_main_delegate_qt.cpp \
-        cookie_monster_delegate_qt.cpp \
-        custom_protocol_handler.cpp \
-        delegated_frame_node.cpp \
-        desktop_screen_qt.cpp \
-        dev_tools_http_handler_delegate_qt.cpp \
-        download_manager_delegate_qt.cpp \
-        favicon_manager.cpp \
-        file_picker_controller.cpp \
-        gl_context_qt.cpp \
-        gl_surface_qt.cpp \
-        javascript_dialog_controller.cpp \
-        javascript_dialog_manager_qt.cpp \
-        media_capture_devices_dispatcher.cpp \
-        native_web_keyboard_event_qt.cpp \
-        network_delegate_qt.cpp \
-        ozone_platform_qt.cpp \
-        permission_manager_qt.cpp \
-        process_main.cpp \
-        proxy_config_service_qt.cpp \
-        qrc_protocol_handler_qt.cpp \
-        render_view_observer_host_qt.cpp \
-        render_widget_host_view_qt.cpp \
-        renderer/content_renderer_client_qt.cpp \
-        renderer/render_frame_observer_qt.cpp \
-        renderer/render_view_observer_qt.cpp \
-        renderer/user_resource_controller.cpp \
-        renderer/web_channel_ipc_transport.cpp \
-        renderer_host/resource_dispatcher_host_delegate_qt.cpp \
-        renderer_host/user_resource_controller_host.cpp \
-        renderer_host/web_channel_ipc_transport_host.cpp \
-        resource_bundle_qt.cpp \
-        resource_context_qt.cpp \
-        ssl_host_state_delegate_qt.cpp \
-        surface_factory_qt.cpp \
-        type_conversion.cpp \
-        url_request_context_getter_qt.cpp \
-        url_request_custom_job.cpp \
-        url_request_custom_job_delegate.cpp \
-        url_request_qrc_job_qt.cpp \
-        user_script.cpp \
-        visited_links_manager_qt.cpp \
-        web_contents_adapter.cpp \
-        web_contents_delegate_qt.cpp \
-        web_contents_view_qt.cpp \
-        web_engine_context.cpp \
-        web_engine_error.cpp \
-        web_engine_library_info.cpp \
-        web_engine_settings.cpp \
-        web_event_factory.cpp
-
-HEADERS = \
-        access_token_store_qt.h \
-        authentication_dialog_controller_p.h \
-        authentication_dialog_controller.h \
-        browser_accessibility_manager_qt.h \
-        browser_accessibility_qt.h \
-        browser_context_adapter.h \
-        browser_context_adapter_client.h \
-        browser_context_qt.h \
-        browser_message_filter_qt.h \
-        certificate_error_controller_p.h \
-        certificate_error_controller.h \
-        chromium_overrides.h \
-        clipboard_qt.h \
-        color_chooser_qt.h \
-        color_chooser_controller_p.h \
-        color_chooser_controller.h \
-        common/qt_messages.h \
-        common/user_script_data.h \
-        content_client_qt.h \
-        content_browser_client_qt.h \
-        content_main_delegate_qt.h \
-        cookie_monster_delegate_qt.h \
-        custom_protocol_handler.h \
-        delegated_frame_node.h \
-        desktop_screen_qt.h \
-        dev_tools_http_handler_delegate_qt.h \
-        download_manager_delegate_qt.h \
-        chromium_gpu_helper.h \
-        favicon_manager_p.h \
-        favicon_manager.h \
-        file_picker_controller.h \
-        gl_context_qt.h \
-        gl_surface_qt.h \
-        global_descriptors_qt.h \
-        javascript_dialog_controller_p.h \
-        javascript_dialog_controller.h \
-        javascript_dialog_manager_qt.h \
-        media_capture_devices_dispatcher.h \
-        network_delegate_qt.h \
-        ozone_platform_qt.h \
-        permission_manager_qt.h \
-        process_main.h \
-        proxy_config_service_qt.h \
-        qrc_protocol_handler_qt.h \
-        render_view_observer_host_qt.h \
-        render_widget_host_view_qt.h \
-        render_widget_host_view_qt_delegate.h \
-        renderer/content_renderer_client_qt.h \
-        renderer/render_frame_observer_qt.h \
-        renderer/render_view_observer_qt.h \
-        renderer/user_resource_controller.h \
-        renderer/web_channel_ipc_transport.h \
-        renderer_host/resource_dispatcher_host_delegate_qt.h \
-        renderer_host/user_resource_controller_host.h \
-        renderer_host/web_channel_ipc_transport_host.h \
-        resource_context_qt.h \
-        ssl_host_state_delegate_qt.h \
-        surface_factory_qt.h \
-        type_conversion.h \
-        url_request_context_getter_qt.h \
-        url_request_custom_job.h \
-        url_request_custom_job_delegate.h \
-        url_request_qrc_job_qt.h \
-        user_script.h \
-        visited_links_manager_qt.h \
-        web_contents_adapter.h \
-        web_contents_adapter_client.h \
-        web_contents_adapter_p.h \
-        web_contents_delegate_qt.h \
-        web_contents_view_qt.h \
-        web_engine_context.h \
-        web_engine_error.h \
-        web_engine_library_info.h \
-        web_engine_settings.h \
-        web_event_factory.h
-
-
-use?(pdf) {
-    SOURCES += pdfium_document_wrapper_qt.cpp
-    HEADERS += pdfium_document_wrapper_qt.h
-}
-
-use?(pepper_plugins) {
-    SOURCES += \
-        renderer_host/pepper/pepper_flash_browser_host_qt.cpp \
-        renderer_host/pepper/pepper_host_factory_qt.cpp \
-        renderer_host/pepper/pepper_isolated_file_system_message_filter.cpp \
-        renderer/pepper/pepper_flash_renderer_host_qt.cpp \
-        renderer/pepper/pepper_renderer_host_factory_qt.cpp
-
-    HEADERS += \
-        renderer_host/pepper/pepper_flash_browser_host_qt.h \
-        renderer_host/pepper/pepper_host_factory_qt.h \
-        renderer_host/pepper/pepper_isolated_file_system_message_filter.h \
-        renderer/pepper/pepper_flash_renderer_host_qt.h \
-        renderer/pepper/pepper_renderer_host_factory_qt.h
-}
-
-use?(printing) {
-    SOURCES += \
-        printing_message_filter_qt.cpp \
-        print_view_manager_base_qt.cpp \
-        print_view_manager_qt.cpp \
-        renderer/print_web_view_helper_delegate_qt.cpp
-
-    HEADERS += \
-        printing_message_filter_qt.h \
-        print_view_manager_base_qt.h \
-        print_view_manager_qt.h \
-        renderer/print_web_view_helper_delegate_qt.h
-}
-
-contains(QT_CONFIG, opengl) {
-    SOURCES += \
-        yuv_video_node.cpp \
-        stream_video_node.cpp
-
-    HEADERS += \
-        yuv_video_node.h \
-        stream_video_node.h
-}
-
-qtHaveModule(positioning) {
-    SOURCES += location_provider_qt.cpp
-    HEADERS += location_provider_qt.h
-    DEFINES += QT_USE_POSITIONING=1
-}
+include(core_chromium.pri)
diff --git a/src/core/core_project.pro b/src/core/core_project.pro
new file mode 100644
index 000000000..8418ab22b
--- /dev/null
+++ b/src/core/core_project.pro
@@ -0,0 +1,3 @@
+TEMPLATE = lib
+
+include(core_chromium.pri)
-- 
GitLab