-
commit-queue@webkit.org authored
https://bugs.webkit.org/show_bug.cgi?id=125990 Patch by Adrian Perez de Castro <aperez@igalia.com> on 2014-01-21 Reviewed by Carlos Garcia Campos. Allow passing additional information to the injected bundle. On top of the string containing the path to the web extensions directory, a GVariant can be set with additional data using webkit_web_context_set_web_extensions_initialization_user_data(). Also, a new initialize-web-extensions signal is emitted before launching a new WebProcess to allow setting different user data for each process. The GVariant is serialized as a string, passed to the injected bundle, and the injected bundle deserializes back the data, which is passed to web extensions which define the webkit_web_extension_initialize_with_user_data() function (for backwards compatibility, webkit_web_extension_initialize() is used as a fallback.) Source/WebKit2: * UIProcess/API/gtk/WebKitInjectedBundleClient.cpp: (getInjectedBundleInitializationUserData): Define new callback function which causes emission of the initialize-web-extensions signal, and serializes the data to be passed to the web process. (attachInjectedBundleClientToContext): Set the getInjectedBundleInitializationUserData() callback. * UIProcess/API/gtk/WebKitWebContext.cpp: (webkit_web_context_class_init): Define the initialize-web-extensions signal. (webkit_web_context_set_web_extensions_directory): Web extensions directory as now member of WebKitWebContextPrivate, to be able to retrieve it later. (webkit_web_context_set_web_extensions_initialization_user_data): New API method to set the user data passed to the web extensions when initialized. (webkitWebContextInitializeWebExtensions): Private function used to trigger emission of the initialize-web-extensions signal. * UIProcess/API/gtk/WebKitWebContext.h: Added prototype for new API method webkit_web_context_set_web_extensions_initialization_user_data(). * UIProcess/API/gtk/WebKitWebContextPrivate.h: Prototype of the new private function. * UIProcess/API/gtk/docs/webkit2gtk-sections.txt: Add new public API bits to the documentation. * WebProcess/gtk/WebGtkExtensionManager.cpp: (WebKit::WebGtkExtensionManager::initialize): Deserialize the data received from the UI process and pass it to webkit_web_extension_initialize_with_user_data() if available, keeping webkit_web_extension_initialize() as fallback. Tools: * TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp: (initializeWebExtensions): Handles the initialize-web-extensions signal, and sets the web extensions directory and the initialization user data. (testWebExtensionInitializationUserData): New test case for checking the user data passed on initialization to web extensions. * TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp: (methodCallCallback): Added implementation for the GetInitializationUserData D-Bus method, used by testWebExtensionInitializationUserData(). (webkit_web_extension_initialize_with_user_data): Define the initialization function with the additional user data parameter. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@162441 268f45cc-cd09-0410-ab3c-d52691b4dbfc
4c113670