-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Some APIs like tabs.query need to prompt for permission before return…
…ing. https://webkit.org/b/262714 rdar://problem/116535817 Reviewed by Jeff Miller. Change the existing permission delegate calls from being just used for permissions.request() and into helper methods on WebExtensionContext. Now filter out already granted permissions, and only send the delegate messages if some of them are still required. Also add the timeout for these requests, so they auto expire in 2 minutes, preventing the extensions scripts from waiting for a response for too long. Also add expirationDate parameter to the completionHandler, so the app can grant for a limited amount of time, or pass nil to grant indefinitely. Finally, wrap many extension APIs with the new requestPermissionToAccessURLs() and request the URLs for the tabs and cookies needed by those APIs. This includes some like scripting, which were never wrapped like this in Safari's implementation. Deleted some redundant toImpl / toAPI helpers that we already had elsewhere. * Source/WebCore/page/UserContentURLPattern.cpp: (WebCore::UserContentURLPattern::UserContentURLPattern): * Source/WebKit/Platform/cocoa/CocoaHelpers.h: * Source/WebKit/Platform/cocoa/CocoaHelpers.mm: (WebKit::toAPI): (WebKit::toAPIArray): (WebKit::toImpl): (WebKit::toImplSet): Deleted. * Source/WebKit/UIProcess/API/Cocoa/_WKWebExtension.mm: * Source/WebKit/UIProcess/API/Cocoa/_WKWebExtensionControllerDelegate.h: * Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPICookiesCocoa.mm: (WebKit::WebExtensionContext::cookiesGet): (WebKit::WebExtensionContext::cookiesGetAll): (WebKit::WebExtensionContext::cookiesSet): (WebKit::WebExtensionContext::cookiesRemove): * Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDeclarativeNetRequestCocoa.mm: (WebKit::WebExtensionContext::declarativeNetRequestGetMatchedRules): * Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIDevToolsInspectedWindow.mm: (WebKit::WebExtensionContext::devToolsInspectedWindowEval): * Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIPermissionsCocoa.mm: (WebKit::WebExtensionContext::permissionsRequest): * Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIScriptingCocoa.mm: (WebKit::WebExtensionContext::scriptingExecuteScript): (WebKit::WebExtensionContext::scriptingInsertCSS): (WebKit::WebExtensionContext::scriptingRemoveCSS): * Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPITabsCocoa.mm: (WebKit::WebExtensionContext::tabsGet): (WebKit::WebExtensionContext::tabsGetCurrent): (WebKit::WebExtensionContext::tabsQuery): (WebKit::WebExtensionContext::tabsDetectLanguage): (WebKit::WebExtensionContext::tabsCaptureVisibleTab): (WebKit::WebExtensionContext::tabsRemove): (WebKit::WebExtensionContext::tabsExecuteScript): (WebKit::WebExtensionContext::tabsInsertCSS): (WebKit::WebExtensionContext::tabsRemoveCSS): * Source/WebKit/UIProcess/Extensions/Cocoa/API/WebExtensionContextAPIWindowsCocoa.mm: (WebKit::WebExtensionContext::windowsGet): (WebKit::WebExtensionContext::windowsGetLastFocused): (WebKit::WebExtensionContext::windowsGetAll): * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionCocoa.mm: * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionContextCocoa.mm: (WebKit::WebExtensionContext::grantPermissions): (WebKit::WebExtensionContext::denyPermissions): (WebKit::WebExtensionContext::grantPermissionMatchPatterns): (WebKit::WebExtensionContext::denyPermissionMatchPatterns): (WebKit::WebExtensionContext::requestPermissionMatchPatterns): (WebKit::WebExtensionContext::requestPermissionToAccessURLs): (WebKit::WebExtensionContext::requestPermissions): (WebKit::WebExtensionContext::hasPermission): (WebKit::WebExtensionContext::permissionState): (WebKit::WebExtensionContext::setPermissionState): (WebKit::WebExtensionContext::getCurrentTab const): (WebKit::WebExtensionContext::unloadBackgroundContentIfPossible): * Source/WebKit/UIProcess/Extensions/Cocoa/WebExtensionMatchPatternCocoa.mm: (WebKit::WebExtensionMatchPattern::getOrCreate): (WebKit::toPatterns): (WebKit::toAPI): * Source/WebKit/UIProcess/Extensions/WebExtension.h: * Source/WebKit/UIProcess/Extensions/WebExtensionContext.h: (WebKit::WebExtensionContext::hasPermission): (WebKit::WebExtensionContext::permissionState): * Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h: (WebKit::WebExtensionMatchPattern::getOrCreate): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIDevTools.mm: (TestWebKitAPI::TEST): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPIPermissions.mm: (TestWebKitAPI::TEST): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPITabs.mm: (TestWebKitAPI::TEST): * Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionMatchPattern.mm: (TestWebKitAPI::TEST): * Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.h: * Tools/TestWebKitAPI/cocoa/TestWebExtensionsDelegate.mm: (-[TestWebExtensionsDelegate webExtensionController:promptForPermissions:inTab:forExtensionContext:completionHandler:]): (-[TestWebExtensionsDelegate webExtensionController:promptForPermissionMatchPatterns:inTab:forExtensionContext:completionHandler:]): (-[TestWebExtensionsDelegate webExtensionController:promptForPermissionToAccessURLs:inTab:forExtensionContext:completionHandler:]): Canonical link: https://commits.webkit.org/275950@main
- Loading branch information
Showing
24 changed files
with
758 additions
and
323 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.