[webkit-changes] [WebKit/WebKit] 272d26: Implement the `i18n.getMessage()` API which return...

kiaraarose noreply at github.com
Wed Sep 6 09:05:43 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 272d269ad268b83873c56b0a591e33c4471cebbb
      https://github.com/WebKit/WebKit/commit/272d269ad268b83873c56b0a591e33c4471cebbb
  Author: Kiara Rose <kiara_rose at apple.com>
  Date:   2023-09-06 (Wed, 06 Sep 2023)

  Changed paths:
    M Source/WebKit/Modules/OSX_Private.modulemap
    M Source/WebKit/Modules/iOS_Private.modulemap
    M Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h
    M Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in
    M Source/WebKit/Shared/Extensions/_WKWebExtensionLocalization.h
    M Source/WebKit/Shared/Extensions/_WKWebExtensionLocalization.mm
    M Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm
    M Source/WebKit/UIProcess/Extensions/WebExtension.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp
    M Source/WebKit/WebKit.xcodeproj/project.pbxproj
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPILocalizationCocoa.mm
    M Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPermissionsCocoa.mm
    M Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp
    M Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h
    M Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
    A Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPILocalization.mm
    M Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h

  Log Message:
  -----------
  Implement the `i18n.getMessage()` API which returns the localized string for a specified message.
https://webkit.org/b/246488
rdar://102720462 (Web Extensions in WebKit: Add support for i18n(Localization) in WebKit)

Reviewed by Timothy Hatcher.

This patch adds support for i18n.getMessage(). This was done by storing the _WKWebExtensionLocalization
object for the extension onto the WebExtensionContextProxy, so that it could be used in the WebProcess
to return the localized string for the specified message name.

* Source/WebKit/Modules/OSX_Private.modulemap:
* Source/WebKit/Modules/iOS_Private.modulemap:
* Source/WebKit/Shared/Extensions/WebExtensionContextParameters.h:
* Source/WebKit/Shared/Extensions/WebExtensionContextParameters.serialization.in:
* Source/WebKit/Shared/Extensions/_WKWebExtensionLocalization.h:
* Source/WebKit/Shared/Extensions/_WKWebExtensionLocalization.mm:
(-[_WKWebExtensionLocalization initWithWebExtension:]):
We should use the resource methods on the WebExtension object to create the localized dictionary
instead of the using the bundleURL to find the resources on disk.

(-[_WKWebExtensionLocalization
initWithRegionalLocalization:languageLocalization:defaultLocalization:withBestLocale:uniqueIdentifier:]):
Removed nil check that  caused the uniqueIdentifier to never be set.
Fixed a bug where the regional dictionary was never being used/merged to the localizedDictionary.

(-[_WKWebExtensionLocalization localizedStringForKey:withPlaceholders:]):
(-[_WKWebExtensionLocalization _localizationDictionaryForWebExtension:withLocale:]):
(-[_WKWebExtensionLocalization _predefinedMessagesForLocale:]):
(localizationDictionaryAtURL): Deleted.
(-[_WKWebExtensionLocalization initWithBundleURL:defaultLocale:uniqueIdentifier:]): Deleted.

* Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm:
(WebKit::WebExtension::manifest):
(WebKit::WebExtension::serializeLocalization):
(WebKit::WebExtension::resourceDataForPath):
Add support for NSDictionary.

* Source/WebKit/UIProcess/Extensions/WebExtension.h:
* Source/WebKit/UIProcess/Extensions/WebExtensionContext.cpp:
(WebKit::WebExtensionContext::parameters const):
Add localization dictionary to the parameters struct.

* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
Remove _WKWebExtensionLocalization from the Private header.

* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPILocalizationCocoa.mm:
(WebKit::WebExtensionAPILocalization::getMessage):
(WebKit::WebExtensionAPILocalization::getUILanguage):
(WebKit::WebExtensionAPILocalization::getAcceptLanguages):

* Source/WebKit/WebProcess/Extensions/API/Cocoa/WebExtensionAPIPermissionsCocoa.mm:
(WebKit::WebExtensionAPIPermissions::getAll):
(WebKit::WebExtensionAPIPermissions::contains):
(WebKit::WebExtensionAPIPermissions::request):
(WebKit::WebExtensionAPIPermissions::remove):

* Source/WebKit/WebProcess/Extensions/Cocoa/WebExtensionContextProxyCocoa.mm:
(WebKit::WebExtensionContextProxy::parseJSON):
(WebKit::WebExtensionContextProxy::parseLocalization):
(WebKit::WebExtensionContextProxy::parseManifest): Deleted.

* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.cpp:
(WebKit::WebExtensionContextProxy::getOrCreate):

* Source/WebKit/WebProcess/Extensions/WebExtensionContextProxy.h:
* Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPILocalization.mm: Added.
(TestWebKitAPI::localeStringInWebExtensionFormat):
(TestWebKitAPI::TEST):

* Tools/TestWebKitAPI/cocoa/WebExtensionUtilities.h:
(TestWebKitAPI::Util::constructJSArrayOfStrings):
A "stringify" helper method that turns a NSArray of elements into a string.

Canonical link: https://commits.webkit.org/267674@main




More information about the webkit-changes mailing list