From 0199a33a84c8e198f6ebb5eeb4b2614895fcd138 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Thu, 13 Aug 2015 21:31:36 +0000 Subject: [PATCH] Add WKWindowFeaturesRef and a new modern createNewPage UI client callback https://bugs.webkit.org/show_bug.cgi?id=147989 Reviewed by Tim Horton. * Platform/IPC/mac/ConnectionMac.mm: * Shared/API/APIObject.h: * Shared/API/c/WKBase.h: * UIProcess/API/APIWindowFeatures.cpp: Added. * UIProcess/API/APIWindowFeatures.h: Added. * UIProcess/API/C/WKAPICast.h: * UIProcess/API/C/WKPage.cpp: (WKPageSetPageUIClient): * UIProcess/API/C/WKPageUIClient.h: * UIProcess/API/C/WKWindowFeaturesRef.cpp: Added. (WKWindowFeaturesGetTypeID): * UIProcess/API/C/WKWindowFeaturesRef.h: Added. * UIProcess/API/Cocoa/WKWindowFeatures.mm: (-[WKWindowFeatures dealloc]): (-[WKWindowFeatures menuBarVisibility]): (-[WKWindowFeatures statusBarVisibility]): (-[WKWindowFeatures toolbarsVisibility]): (-[WKWindowFeatures allowsResizing]): (-[WKWindowFeatures x]): (-[WKWindowFeatures y]): (-[WKWindowFeatures width]): (-[WKWindowFeatures height]): (-[WKWindowFeatures _apiObject]): (-[WKWindowFeatures _initWithWindowFeatures:]): Deleted. * UIProcess/API/Cocoa/WKWindowFeaturesInternal.h: (WebKit::wrapper): * UIProcess/Cocoa/UIDelegate.mm: (WebKit::UIDelegate::UIClient::createNewPage): * WebKit2.xcodeproj/project.pbxproj: Canonical link: https://commits.webkit.org/166098@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@188404 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- Source/WebKit2/ChangeLog | 37 ++++++++ Source/WebKit2/Shared/API/APIObject.h | 1 + Source/WebKit2/Shared/API/c/WKBase.h | 1 + .../UIProcess/API/APIWindowFeatures.cpp | 45 ++++++++++ .../WebKit2/UIProcess/API/APIWindowFeatures.h | 49 ++++++++++ Source/WebKit2/UIProcess/API/C/WKAPICast.h | 2 + Source/WebKit2/UIProcess/API/C/WKPage.cpp | 78 +++++++++------- .../WebKit2/UIProcess/API/C/WKPageUIClient.h | 90 +++++++++++++++++-- .../UIProcess/API/C/WKWindowFeaturesRef.cpp | 35 ++++++++ .../UIProcess/API/C/WKWindowFeaturesRef.h | 41 +++++++++ .../UIProcess/API/Cocoa/WKWindowFeatures.mm | 72 +++++++-------- .../API/Cocoa/WKWindowFeaturesInternal.h | 19 ++-- Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm | 6 +- .../WebKit2/WebKit2.xcodeproj/project.pbxproj | 16 ++++ 14 files changed, 409 insertions(+), 83 deletions(-) create mode 100644 Source/WebKit2/UIProcess/API/APIWindowFeatures.cpp create mode 100644 Source/WebKit2/UIProcess/API/APIWindowFeatures.h create mode 100644 Source/WebKit2/UIProcess/API/C/WKWindowFeaturesRef.cpp create mode 100644 Source/WebKit2/UIProcess/API/C/WKWindowFeaturesRef.h diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog index 0ee969a37c9e..8b7867a6a05f 100644 --- a/Source/WebKit2/ChangeLog +++ b/Source/WebKit2/ChangeLog @@ -1,3 +1,40 @@ +2015-08-13 Anders Carlsson + + Add WKWindowFeaturesRef and a new modern createNewPage UI client callback + https://bugs.webkit.org/show_bug.cgi?id=147989 + + Reviewed by Tim Horton. + + * Platform/IPC/mac/ConnectionMac.mm: + * Shared/API/APIObject.h: + * Shared/API/c/WKBase.h: + * UIProcess/API/APIWindowFeatures.cpp: Added. + * UIProcess/API/APIWindowFeatures.h: Added. + * UIProcess/API/C/WKAPICast.h: + * UIProcess/API/C/WKPage.cpp: + (WKPageSetPageUIClient): + * UIProcess/API/C/WKPageUIClient.h: + * UIProcess/API/C/WKWindowFeaturesRef.cpp: Added. + (WKWindowFeaturesGetTypeID): + * UIProcess/API/C/WKWindowFeaturesRef.h: Added. + * UIProcess/API/Cocoa/WKWindowFeatures.mm: + (-[WKWindowFeatures dealloc]): + (-[WKWindowFeatures menuBarVisibility]): + (-[WKWindowFeatures statusBarVisibility]): + (-[WKWindowFeatures toolbarsVisibility]): + (-[WKWindowFeatures allowsResizing]): + (-[WKWindowFeatures x]): + (-[WKWindowFeatures y]): + (-[WKWindowFeatures width]): + (-[WKWindowFeatures height]): + (-[WKWindowFeatures _apiObject]): + (-[WKWindowFeatures _initWithWindowFeatures:]): Deleted. + * UIProcess/API/Cocoa/WKWindowFeaturesInternal.h: + (WebKit::wrapper): + * UIProcess/Cocoa/UIDelegate.mm: + (WebKit::UIDelegate::UIClient::createNewPage): + * WebKit2.xcodeproj/project.pbxproj: + 2015-08-13 Simon Fraser FilterOperation.h should not include FilterEffect.h diff --git a/Source/WebKit2/Shared/API/APIObject.h b/Source/WebKit2/Shared/API/APIObject.h index 5e2c46ac4c00..0a09f4559f3c 100644 --- a/Source/WebKit2/Shared/API/APIObject.h +++ b/Source/WebKit2/Shared/API/APIObject.h @@ -148,6 +148,7 @@ class Object VisitedLinkProvider, WebsiteDataRecord, WebsiteDataStore, + WindowFeatures, #if ENABLE(MEDIA_SESSION) MediaSessionFocusManager, diff --git a/Source/WebKit2/Shared/API/c/WKBase.h b/Source/WebKit2/Shared/API/c/WKBase.h index 79fc7dce2882..c6b12c6c570a 100644 --- a/Source/WebKit2/Shared/API/c/WKBase.h +++ b/Source/WebKit2/Shared/API/c/WKBase.h @@ -142,6 +142,7 @@ typedef const struct OpaqueWKUserScript* WKUserScriptRef; typedef const struct OpaqueWKVibration* WKVibrationRef; typedef const struct OpaqueWKViewportAttributes* WKViewportAttributesRef; typedef const struct OpaqueWKWebsiteDataStore* WKWebsiteDataStoreRef; +typedef const struct OpaqueWKWindowFeatures* WKWindowFeaturesRef; /* WebKit2 Bundle types */ diff --git a/Source/WebKit2/UIProcess/API/APIWindowFeatures.cpp b/Source/WebKit2/UIProcess/API/APIWindowFeatures.cpp new file mode 100644 index 000000000000..f6fa0dc3150d --- /dev/null +++ b/Source/WebKit2/UIProcess/API/APIWindowFeatures.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "APIWindowFeatures.h" + +namespace API { + +Ref WindowFeatures::create(const WebCore::WindowFeatures& windowFeatures) +{ + return adoptRef(*new WindowFeatures(windowFeatures)); +} + +WindowFeatures::WindowFeatures(const WebCore::WindowFeatures& windowFeatures) + : m_windowFeatures(windowFeatures) +{ +} + +WindowFeatures::~WindowFeatures() +{ +} + +} diff --git a/Source/WebKit2/UIProcess/API/APIWindowFeatures.h b/Source/WebKit2/UIProcess/API/APIWindowFeatures.h new file mode 100644 index 000000000000..ccedf79fdf14 --- /dev/null +++ b/Source/WebKit2/UIProcess/API/APIWindowFeatures.h @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef APIWindowFeatures_h +#define APIWindowFeatures_h + +#include "APIObject.h" +#include + +namespace API { + +class WindowFeatures final : public ObjectImpl { +public: + static Ref create(const WebCore::WindowFeatures&); + virtual ~WindowFeatures(); + + const WebCore::WindowFeatures& windowFeatures() const { return m_windowFeatures; } + +private: + explicit WindowFeatures(const WebCore::WindowFeatures&); + + const WebCore::WindowFeatures m_windowFeatures; +}; + +} + +#endif // APIWindowFeatures_h diff --git a/Source/WebKit2/UIProcess/API/C/WKAPICast.h b/Source/WebKit2/UIProcess/API/C/WKAPICast.h index 0e56be8115b8..b854f15cbf18 100644 --- a/Source/WebKit2/UIProcess/API/C/WKAPICast.h +++ b/Source/WebKit2/UIProcess/API/C/WKAPICast.h @@ -64,6 +64,7 @@ class UserContentExtension; class UserContentExtensionStore; class UserScript; class WebsiteDataStore; +class WindowFeatures; } namespace WebKit { @@ -166,6 +167,7 @@ WK_ADD_API_MAPPING(WKUserScriptRef, API::UserScript) WK_ADD_API_MAPPING(WKVibrationRef, WebVibrationProxy) WK_ADD_API_MAPPING(WKViewportAttributesRef, WebViewportAttributes) WK_ADD_API_MAPPING(WKWebsiteDataStoreRef, API::WebsiteDataStore) +WK_ADD_API_MAPPING(WKWindowFeaturesRef, API::WindowFeatures) /* Enum conversions */ diff --git a/Source/WebKit2/UIProcess/API/C/WKPage.cpp b/Source/WebKit2/UIProcess/API/C/WKPage.cpp index 21e616a3d1be..2c730dad5318 100644 --- a/Source/WebKit2/UIProcess/API/C/WKPage.cpp +++ b/Source/WebKit2/UIProcess/API/C/WKPage.cpp @@ -41,6 +41,7 @@ #include "APIPolicyClient.h" #include "APISessionState.h" #include "APIUIClient.h" +#include "APIWindowFeatures.h" #include "AuthenticationChallengeProxy.h" #include "LegacySessionStateCoding.h" #include "Logging.h" @@ -102,7 +103,7 @@ template<> struct ClientTraits { }; template<> struct ClientTraits { - typedef std::tuple Versions; + typedef std::tuple Versions; }; #if ENABLE(CONTEXT_MENUS) @@ -1341,38 +1342,55 @@ void WKPageSetPageUIClient(WKPageRef pageRef, const WKPageUIClientBase* wkClient } private: - virtual PassRefPtr createNewPage(WebPageProxy* page, WebFrameProxy*, const SecurityOriginData&, const ResourceRequest& resourceRequest, const WindowFeatures& windowFeatures, const NavigationActionData& navigationActionData) override - { - if (!m_client.base.version && !m_client.createNewPage_deprecatedForUseWithV0) - return 0; + virtual PassRefPtr createNewPage(WebPageProxy* page, WebFrameProxy* initiatingFrame, const SecurityOriginData& securityOriginData, const ResourceRequest& resourceRequest, const WindowFeatures& windowFeatures, const NavigationActionData& navigationActionData) override + { + if (m_client.base.version < 6) { + if (!m_client.base.version && !m_client.createNewPage_deprecatedForUseWithV0) + return nullptr; + + if (!m_client.createNewPage_deprecatedForUseWithV1) + return nullptr; + + API::Dictionary::MapType map; + if (windowFeatures.x) + map.set("x", API::Double::create(*windowFeatures.x)); + if (windowFeatures.y) + map.set("y", API::Double::create(*windowFeatures.y)); + if (windowFeatures.width) + map.set("width", API::Double::create(*windowFeatures.width)); + if (windowFeatures.height) + map.set("height", API::Double::create(*windowFeatures.height)); + map.set("menuBarVisible", API::Boolean::create(windowFeatures.menuBarVisible)); + map.set("statusBarVisible", API::Boolean::create(windowFeatures.statusBarVisible)); + map.set("toolBarVisible", API::Boolean::create(windowFeatures.toolBarVisible)); + map.set("locationBarVisible", API::Boolean::create(windowFeatures.locationBarVisible)); + map.set("scrollbarsVisible", API::Boolean::create(windowFeatures.scrollbarsVisible)); + map.set("resizable", API::Boolean::create(windowFeatures.resizable)); + map.set("fullscreen", API::Boolean::create(windowFeatures.fullscreen)); + map.set("dialog", API::Boolean::create(windowFeatures.dialog)); + Ref featuresMap = API::Dictionary::create(WTF::move(map)); + + if (!m_client.base.version) + return adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV0(toAPI(page), toAPI(featuresMap.ptr()), toAPI(navigationActionData.modifiers), toAPI(navigationActionData.mouseButton), m_client.base.clientInfo))); + + Ref request = API::URLRequest::create(resourceRequest); + return adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV1(toAPI(page), toAPI(request.ptr()), toAPI(featuresMap.ptr()), toAPI(navigationActionData.modifiers), toAPI(navigationActionData.mouseButton), m_client.base.clientInfo))); + } - if (m_client.base.version > 0 && !m_client.createNewPage) - return 0; + if (!m_client.createNewPage) + return nullptr; - API::Dictionary::MapType map; - if (windowFeatures.x) - map.set("x", API::Double::create(*windowFeatures.x)); - if (windowFeatures.y) - map.set("y", API::Double::create(*windowFeatures.y)); - if (windowFeatures.width) - map.set("width", API::Double::create(*windowFeatures.width)); - if (windowFeatures.height) - map.set("height", API::Double::create(*windowFeatures.height)); - map.set("menuBarVisible", API::Boolean::create(windowFeatures.menuBarVisible)); - map.set("statusBarVisible", API::Boolean::create(windowFeatures.statusBarVisible)); - map.set("toolBarVisible", API::Boolean::create(windowFeatures.toolBarVisible)); - map.set("locationBarVisible", API::Boolean::create(windowFeatures.locationBarVisible)); - map.set("scrollbarsVisible", API::Boolean::create(windowFeatures.scrollbarsVisible)); - map.set("resizable", API::Boolean::create(windowFeatures.resizable)); - map.set("fullscreen", API::Boolean::create(windowFeatures.fullscreen)); - map.set("dialog", API::Boolean::create(windowFeatures.dialog)); - Ref featuresMap = API::Dictionary::create(WTF::move(map)); - - if (!m_client.base.version) - return adoptRef(toImpl(m_client.createNewPage_deprecatedForUseWithV0(toAPI(page), toAPI(featuresMap.ptr()), toAPI(navigationActionData.modifiers), toAPI(navigationActionData.mouseButton), m_client.base.clientInfo))); + auto configuration = page->configuration().copy(); + configuration->setRelatedPage(page); - Ref request = API::URLRequest::create(resourceRequest); - return adoptRef(toImpl(m_client.createNewPage(toAPI(page), toAPI(request.ptr()), toAPI(featuresMap.ptr()), toAPI(navigationActionData.modifiers), toAPI(navigationActionData.mouseButton), m_client.base.clientInfo))); + auto sourceFrameInfo = API::FrameInfo::create(*initiatingFrame, securityOriginData.securityOrigin()); + + bool shouldOpenAppLinks = !protocolHostAndPortAreEqual(WebCore::URL(WebCore::ParsedURLString, initiatingFrame->url()), resourceRequest.url()); + auto apiNavigationAction = API::NavigationAction::create(navigationActionData, sourceFrameInfo.ptr(), nullptr, resourceRequest, WebCore::URL(), shouldOpenAppLinks); + + auto apiWindowFeatures = API::WindowFeatures::create(windowFeatures); + + return adoptRef(toImpl(m_client.createNewPage(toAPI(page), toAPI(configuration.ptr()), toAPI(apiNavigationAction.ptr()), toAPI(apiWindowFeatures.ptr()), m_client.base.clientInfo))); } virtual void showPage(WebPageProxy* page) override diff --git a/Source/WebKit2/UIProcess/API/C/WKPageUIClient.h b/Source/WebKit2/UIProcess/API/C/WKPageUIClient.h index aaae02c02963..eed7bb1ff91c 100644 --- a/Source/WebKit2/UIProcess/API/C/WKPageUIClient.h +++ b/Source/WebKit2/UIProcess/API/C/WKPageUIClient.h @@ -49,7 +49,7 @@ enum { typedef uint32_t WKPluginUnavailabilityReason; typedef void (*WKPageUIClientCallback)(WKPageRef page, const void* clientInfo); -typedef WKPageRef (*WKPageCreateNewPageCallback)(WKPageRef page, WKURLRequestRef urlRequest, WKDictionaryRef features, WKEventModifiers modifiers, WKEventMouseButton mouseButton, const void *clientInfo); +typedef WKPageRef (*WKPageCreateNewPageCallback)(WKPageRef page, WKPageConfigurationRef configuration, WKNavigationActionRef navigationAction, WKWindowFeaturesRef windowFeatures, const void *clientInfo); typedef void (*WKPageRunJavaScriptAlertCallback)(WKPageRef page, WKStringRef alertText, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void *clientInfo); typedef bool (*WKPageRunJavaScriptConfirmCallback)(WKPageRef page, WKStringRef message, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void *clientInfo); typedef WKStringRef (*WKPageRunJavaScriptPromptCallback)(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void *clientInfo); @@ -101,6 +101,7 @@ typedef void (*WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWith typedef void (*WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0)(WKPageRef page, WKStringRef alertText, WKFrameRef frame, const void *clientInfo); typedef bool (*WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0)(WKPageRef page, WKStringRef message, WKFrameRef frame, const void *clientInfo); typedef WKStringRef (*WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0)(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, const void *clientInfo); +typedef WKPageRef (*WKPageCreateNewPageCallback_deprecatedForUseWithV1)(WKPageRef page, WKURLRequestRef urlRequest, WKDictionaryRef features, WKEventModifiers modifiers, WKEventMouseButton mouseButton, const void *clientInfo); typedef struct WKPageUIClientBase { int version; @@ -197,7 +198,7 @@ typedef struct WKPageUIClientV1 { void* shouldInterruptJavaScript_unavailable; // Version 1. - WKPageCreateNewPageCallback createNewPage; + WKPageCreateNewPageCallback_deprecatedForUseWithV1 createNewPage; WKPageMouseDidMoveOverElementCallback mouseDidMoveOverElement; WKPageDecidePolicyForNotificationPermissionRequestCallback decidePolicyForNotificationPermissionRequest; WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1; @@ -248,7 +249,7 @@ typedef struct WKPageUIClientV2 { void* shouldInterruptJavaScript_unavailable; // Version 1. - WKPageCreateNewPageCallback createNewPage; + WKPageCreateNewPageCallback_deprecatedForUseWithV1 createNewPage; WKPageMouseDidMoveOverElementCallback mouseDidMoveOverElement; WKPageDecidePolicyForNotificationPermissionRequestCallback decidePolicyForNotificationPermissionRequest; WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1; @@ -304,7 +305,7 @@ typedef struct WKPageUIClientV3 { void* shouldInterruptJavaScript_unavailable; // Version 1. - WKPageCreateNewPageCallback createNewPage; + WKPageCreateNewPageCallback_deprecatedForUseWithV1 createNewPage; WKPageMouseDidMoveOverElementCallback mouseDidMoveOverElement; WKPageDecidePolicyForNotificationPermissionRequestCallback decidePolicyForNotificationPermissionRequest; WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1; @@ -363,7 +364,7 @@ typedef struct WKPageUIClientV4 { void* shouldInterruptJavaScript_unavailable; // Version 1. - WKPageCreateNewPageCallback createNewPage; + WKPageCreateNewPageCallback_deprecatedForUseWithV1 createNewPage; WKPageMouseDidMoveOverElementCallback mouseDidMoveOverElement; WKPageDecidePolicyForNotificationPermissionRequestCallback decidePolicyForNotificationPermissionRequest; WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1; @@ -428,7 +429,7 @@ typedef struct WKPageUIClientV5 { void* shouldInterruptJavaScript_unavailable; // Version 1. - WKPageCreateNewPageCallback createNewPage; + WKPageCreateNewPageCallback_deprecatedForUseWithV1 createNewPage; WKPageMouseDidMoveOverElementCallback mouseDidMoveOverElement; WKPageDecidePolicyForNotificationPermissionRequestCallback decidePolicyForNotificationPermissionRequest; WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1; @@ -456,6 +457,83 @@ typedef struct WKPageUIClientV5 { WKPageMediaSessionMetadataDidChangeCallback mediaSessionMetadataDidChange; } WKPageUIClientV5; +typedef struct WKPageUIClientV6 { + WKPageUIClientBase base; + + // Version 0. + WKPageCreateNewPageCallback_deprecatedForUseWithV0 createNewPage_deprecatedForUseWithV0; + WKPageUIClientCallback showPage; + WKPageUIClientCallback close; + WKPageTakeFocusCallback takeFocus; + WKPageFocusCallback focus; + WKPageUnfocusCallback unfocus; + WKPageRunJavaScriptAlertCallback_deprecatedForUseWithV0 runJavaScriptAlert_deprecatedForUseWithV0; + WKPageRunJavaScriptConfirmCallback_deprecatedForUseWithV0 runJavaScriptConfirm_deprecatedForUseWithV0; + WKPageRunJavaScriptPromptCallback_deprecatedForUseWithV0 runJavaScriptPrompt_deprecatedForUseWithV0; + WKPageSetStatusTextCallback setStatusText; + WKPageMouseDidMoveOverElementCallback_deprecatedForUseWithV0 mouseDidMoveOverElement_deprecatedForUseWithV0; + WKPageMissingPluginButtonClickedCallback_deprecatedForUseWithV0 missingPluginButtonClicked_deprecatedForUseWithV0; + WKPageDidNotHandleKeyEventCallback didNotHandleKeyEvent; + WKPageDidNotHandleWheelEventCallback didNotHandleWheelEvent; + WKPageGetToolbarsAreVisibleCallback toolbarsAreVisible; + WKPageSetToolbarsAreVisibleCallback setToolbarsAreVisible; + WKPageGetMenuBarIsVisibleCallback menuBarIsVisible; + WKPageSetMenuBarIsVisibleCallback setMenuBarIsVisible; + WKPageGetStatusBarIsVisibleCallback statusBarIsVisible; + WKPageSetStatusBarIsVisibleCallback setStatusBarIsVisible; + WKPageGetIsResizableCallback isResizable; + WKPageSetIsResizableCallback setIsResizable; + WKPageGetWindowFrameCallback getWindowFrame; + WKPageSetWindowFrameCallback setWindowFrame; + WKPageRunBeforeUnloadConfirmPanelCallback runBeforeUnloadConfirmPanel; + WKPageUIClientCallback didDraw; + WKPageUIClientCallback pageDidScroll; + WKPageExceededDatabaseQuotaCallback exceededDatabaseQuota; + WKPageRunOpenPanelCallback runOpenPanel; + WKPageDecidePolicyForGeolocationPermissionRequestCallback decidePolicyForGeolocationPermissionRequest; + WKPageHeaderHeightCallback headerHeight; + WKPageFooterHeightCallback footerHeight; + WKPageDrawHeaderCallback drawHeader; + WKPageDrawFooterCallback drawFooter; + WKPagePrintFrameCallback printFrame; + WKPageUIClientCallback runModal; + void* unused1; // Used to be didCompleteRubberBandForMainFrame + WKPageSaveDataToFileInDownloadsFolderCallback saveDataToFileInDownloadsFolder; + void* shouldInterruptJavaScript_unavailable; + + // Version 1. + WKPageCreateNewPageCallback_deprecatedForUseWithV1 createNewPage_deprecatedForUseWithV1; + WKPageMouseDidMoveOverElementCallback mouseDidMoveOverElement; + WKPageDecidePolicyForNotificationPermissionRequestCallback decidePolicyForNotificationPermissionRequest; + WKPageUnavailablePluginButtonClickedCallback_deprecatedForUseWithV1 unavailablePluginButtonClicked_deprecatedForUseWithV1; + + // Version 2. + WKPageShowColorPickerCallback showColorPicker; + WKPageHideColorPickerCallback hideColorPicker; + WKPageUnavailablePluginButtonClickedCallback unavailablePluginButtonClicked; + + // Version 3. + WKPagePinnedStateDidChangeCallback pinnedStateDidChange; + + // Version 4. + WKPageDidBeginTrackingPotentialLongMousePressCallback didBeginTrackingPotentialLongMousePress; + WKPageDidRecognizeLongMousePressCallback didRecognizeLongMousePress; + WKPageDidCancelTrackingPotentialLongMousePressCallback didCancelTrackingPotentialLongMousePress; + WKPageIsPlayingAudioDidChangeCallback isPlayingAudioDidChange; + + // Version 5. + WKPageDecidePolicyForUserMediaPermissionRequestCallback decidePolicyForUserMediaPermissionRequest; + WKPageDidClickAutoFillButtonCallback didClickAutoFillButton; + WKPageRunJavaScriptAlertCallback runJavaScriptAlert; + WKPageRunJavaScriptConfirmCallback runJavaScriptConfirm; + WKPageRunJavaScriptPromptCallback runJavaScriptPrompt; + WKPageMediaSessionMetadataDidChangeCallback mediaSessionMetadataDidChange; + + // Version 6. + WKPageCreateNewPageCallback createNewPage; + +} WKPageUIClientV6; + #ifdef __cplusplus } #endif diff --git a/Source/WebKit2/UIProcess/API/C/WKWindowFeaturesRef.cpp b/Source/WebKit2/UIProcess/API/C/WKWindowFeaturesRef.cpp new file mode 100644 index 000000000000..e9338a662c24 --- /dev/null +++ b/Source/WebKit2/UIProcess/API/C/WKWindowFeaturesRef.cpp @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "WKWindowFeaturesRef.h" + +#include "APIWindowFeatures.h" +#include "WKAPICast.h" + +WKTypeID WKWindowFeaturesGetTypeID() +{ + return WebKit::toAPI(API::WindowFeatures::APIType); +} diff --git a/Source/WebKit2/UIProcess/API/C/WKWindowFeaturesRef.h b/Source/WebKit2/UIProcess/API/C/WKWindowFeaturesRef.h new file mode 100644 index 000000000000..5dc9404772bc --- /dev/null +++ b/Source/WebKit2/UIProcess/API/C/WKWindowFeaturesRef.h @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WKWindowFeaturesRef_h +#define WKWindowFeaturesRef_h + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +WK_EXPORT WKTypeID WKWindowFeaturesGetTypeID(); + +#ifdef __cplusplus +} +#endif + +#endif // WKWindowFeaturesRef_h diff --git a/Source/WebKit2/UIProcess/API/Cocoa/WKWindowFeatures.mm b/Source/WebKit2/UIProcess/API/Cocoa/WKWindowFeatures.mm index b95e682c3127..ea58ffb93493 100644 --- a/Source/WebKit2/UIProcess/API/Cocoa/WKWindowFeatures.mm +++ b/Source/WebKit2/UIProcess/API/Cocoa/WKWindowFeatures.mm @@ -31,80 +31,72 @@ #import #import -@implementation WKWindowFeatures { - RetainPtr _menuBarVisibility; - RetainPtr _statusBarVisibility; - RetainPtr _toolbarsVisibility; +@implementation WKWindowFeatures - RetainPtr _allowsResizing; - - RetainPtr _x; - RetainPtr _y; - RetainPtr _width; - RetainPtr _height; -} - -- (instancetype)_initWithWindowFeatures:(const WebCore::WindowFeatures&)windowFeatures +- (void)dealloc { - if (!(self = [super init])) - return nil; - - // FIXME: These should be set to nil if the features didn't exist in the string. - _menuBarVisibility = @(windowFeatures.menuBarVisible); - _statusBarVisibility = @(windowFeatures.statusBarVisible); - _toolbarsVisibility = @(windowFeatures.toolBarVisible || windowFeatures.locationBarVisible); - _allowsResizing = @(windowFeatures.resizable); - - if (windowFeatures.x) - _x = @(*windowFeatures.x); - if (windowFeatures.y) - _y = @(*windowFeatures.y); - if (windowFeatures.width) - _width = @(*windowFeatures.width); - if (windowFeatures.height) - _height = @(*windowFeatures.height); - - return self; + _windowFeatures->API::WindowFeatures::~WindowFeatures(); + + [super dealloc]; } - (NSNumber *)menuBarVisibility { - return _menuBarVisibility.get(); + return @(_windowFeatures->windowFeatures().menuBarVisible); } - (NSNumber *)statusBarVisibility { - return _statusBarVisibility.get(); + return @(_windowFeatures->windowFeatures().statusBarVisible); } - (NSNumber *)toolbarsVisibility { - return _toolbarsVisibility.get(); + return @(_windowFeatures->windowFeatures().toolBarVisible); } - (NSNumber *)allowsResizing { - return _allowsResizing.get(); + return @(_windowFeatures->windowFeatures().resizable); } - (NSNumber *)x { - return _x.get(); + if (auto x = _windowFeatures->windowFeatures().x) + return @(*x); + + return nil; } - (NSNumber *)y { - return _y.get(); + if (auto y = _windowFeatures->windowFeatures().y) + return @(*y); + + return nil; } - (NSNumber *)width { - return _width.get(); + if (auto width = _windowFeatures->windowFeatures().width) + return @(*width); + + return nil; } - (NSNumber *)height { - return _height.get(); + if (auto height = _windowFeatures->windowFeatures().height) + return @(*height); + + return nil; +} + +#pragma mark WKObject protocol implementation + +- (API::Object&)_apiObject +{ + return *_windowFeatures; } @end diff --git a/Source/WebKit2/UIProcess/API/Cocoa/WKWindowFeaturesInternal.h b/Source/WebKit2/UIProcess/API/Cocoa/WKWindowFeaturesInternal.h index 34ecaa8bce85..4c92f09f14e0 100644 --- a/Source/WebKit2/UIProcess/API/Cocoa/WKWindowFeaturesInternal.h +++ b/Source/WebKit2/UIProcess/API/Cocoa/WKWindowFeaturesInternal.h @@ -27,14 +27,23 @@ #if WK_API_ENABLED -namespace WebCore { -struct WindowFeatures; -} +#import "APIWindowFeatures.h" +#import "WKObject.h" + +namespace WebKit { -@interface WKWindowFeatures () +inline WKWindowFeatures *wrapper(API::WindowFeatures& windowFeatures) +{ + ASSERT([windowFeatures.wrapper() isKindOfClass:[WKWindowFeatures class]]); -- (instancetype)_initWithWindowFeatures:(const WebCore::WindowFeatures&)windowFeatures; + return (WKWindowFeatures *)windowFeatures.wrapper(); +} +} +@interface WKWindowFeatures () { +@package + API::ObjectStorage _windowFeatures; +} @end #endif diff --git a/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm b/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm index ec95750bf078..a28a9c990028 100644 --- a/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm +++ b/Source/WebKit2/UIProcess/Cocoa/UIDelegate.mm @@ -114,9 +114,11 @@ auto sourceFrameInfo = API::FrameInfo::create(*initiatingFrame, securityOriginData.securityOrigin()); bool shouldOpenAppLinks = !protocolHostAndPortAreEqual(WebCore::URL(WebCore::ParsedURLString, initiatingFrame->url()), request.url()); - auto navigationAction = API::NavigationAction::create(navigationActionData, sourceFrameInfo.ptr(), nullptr, request, WebCore::URL(), shouldOpenAppLinks); + auto apiNavigationAction = API::NavigationAction::create(navigationActionData, sourceFrameInfo.ptr(), nullptr, request, WebCore::URL(), shouldOpenAppLinks); - RetainPtr webView = [delegate.get() webView:m_uiDelegate.m_webView createWebViewWithConfiguration:configuration.get() forNavigationAction:wrapper(navigationAction) windowFeatures:adoptNS([[WKWindowFeatures alloc] _initWithWindowFeatures:windowFeatures]).get()]; + auto apiWindowFeatures = API::WindowFeatures::create(windowFeatures); + + RetainPtr webView = [delegate.get() webView:m_uiDelegate.m_webView createWebViewWithConfiguration:configuration.get() forNavigationAction:wrapper(apiNavigationAction) windowFeatures:wrapper(apiWindowFeatures)]; if (!webView) return nullptr; diff --git a/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj b/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj index 1d4295ff2489..496f8523caba 100644 --- a/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj +++ b/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj @@ -285,6 +285,8 @@ 1A64245E12DE29A100CAAE2C /* UpdateInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A64245C12DE29A100CAAE2C /* UpdateInfo.h */; }; 1A64245F12DE29A100CAAE2C /* UpdateInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A64245D12DE29A100CAAE2C /* UpdateInfo.cpp */; }; 1A6509CE18B4146200614332 /* WKProcessPoolPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A6509CD18B4146200614332 /* WKProcessPoolPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1A6563E41B7A8C50009CF787 /* APIWindowFeatures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6563E21B7A8C50009CF787 /* APIWindowFeatures.cpp */; }; + 1A6563E51B7A8C50009CF787 /* APIWindowFeatures.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A6563E31B7A8C50009CF787 /* APIWindowFeatures.h */; }; 1A66BF8F18A052ED002071B4 /* WKWebViewInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A66BF8E18A052ED002071B4 /* WKWebViewInternal.h */; }; 1A6F9F9011E13EFC00DB1371 /* CommandLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A6F9F8E11E13EFC00DB1371 /* CommandLine.h */; }; 1A6F9FB711E1408500DB1371 /* CommandLinePOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A6F9FB611E1408500DB1371 /* CommandLinePOSIX.cpp */; }; @@ -300,6 +302,8 @@ 1A7284481959F8040007BCE5 /* SessionStateConversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A7284441959ED100007BCE5 /* SessionStateConversion.cpp */; }; 1A7865B916CAC71500ACE83A /* PluginProcessConnectionManagerMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A7865B716CAC71500ACE83A /* PluginProcessConnectionManagerMessageReceiver.cpp */; }; 1A7865BA16CAC71500ACE83A /* PluginProcessConnectionManagerMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7865B816CAC71500ACE83A /* PluginProcessConnectionManagerMessages.h */; }; + 1A7C0DF61B7D1F1000A9B848 /* WKWindowFeaturesRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A7C0DF41B7D1F1000A9B848 /* WKWindowFeaturesRef.cpp */; }; + 1A7C0DF71B7D1F1000A9B848 /* WKWindowFeaturesRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7C0DF51B7D1F1000A9B848 /* WKWindowFeaturesRef.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1A7C6CDA1378950800B9C04D /* EnvironmentVariables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A7C6CD81378950800B9C04D /* EnvironmentVariables.cpp */; }; 1A7C6CDB1378950800B9C04D /* EnvironmentVariables.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7C6CD91378950800B9C04D /* EnvironmentVariables.h */; }; 1A7E377518E4A33A003D0FFF /* WKScriptMessageHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A7E377418E4A33A003D0FFF /* WKScriptMessageHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -2383,6 +2387,8 @@ 1A64245C12DE29A100CAAE2C /* UpdateInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UpdateInfo.h; sourceTree = ""; }; 1A64245D12DE29A100CAAE2C /* UpdateInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UpdateInfo.cpp; sourceTree = ""; }; 1A6509CD18B4146200614332 /* WKProcessPoolPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKProcessPoolPrivate.h; sourceTree = ""; }; + 1A6563E21B7A8C50009CF787 /* APIWindowFeatures.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = APIWindowFeatures.cpp; sourceTree = ""; }; + 1A6563E31B7A8C50009CF787 /* APIWindowFeatures.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIWindowFeatures.h; sourceTree = ""; }; 1A66BF8E18A052ED002071B4 /* WKWebViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewInternal.h; sourceTree = ""; }; 1A6D141F1B0167D500785FF0 /* Info-OSX-10.9-10.10.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-OSX-10.9-10.10.plist"; sourceTree = ""; }; 1A6D14211B01681600785FF0 /* PluginService.32-64-10.9-10.10.Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "PluginService.32-64-10.9-10.10.Info.plist"; path = "PluginProcess/EntryPoint/mac/XPCService/PluginService.32-64-10.9-10.10.Info.plist"; sourceTree = SOURCE_ROOT; }; @@ -2401,6 +2407,8 @@ 1A7865B616CAC6FD00ACE83A /* PluginProcessConnectionManager.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = PluginProcessConnectionManager.messages.in; sourceTree = ""; }; 1A7865B716CAC71500ACE83A /* PluginProcessConnectionManagerMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginProcessConnectionManagerMessageReceiver.cpp; sourceTree = ""; }; 1A7865B816CAC71500ACE83A /* PluginProcessConnectionManagerMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginProcessConnectionManagerMessages.h; sourceTree = ""; }; + 1A7C0DF41B7D1F1000A9B848 /* WKWindowFeaturesRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKWindowFeaturesRef.cpp; sourceTree = ""; }; + 1A7C0DF51B7D1F1000A9B848 /* WKWindowFeaturesRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWindowFeaturesRef.h; sourceTree = ""; }; 1A7C6CD81378950800B9C04D /* EnvironmentVariables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EnvironmentVariables.cpp; sourceTree = ""; }; 1A7C6CD91378950800B9C04D /* EnvironmentVariables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EnvironmentVariables.h; sourceTree = ""; }; 1A7DA54D1AFD8B380018239D /* Info-OSX-10.9-10.10.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-OSX-10.9-10.10.plist"; sourceTree = ""; }; @@ -6252,6 +6260,8 @@ 1A4832C61A9BC13C008B4DFE /* APIWebsiteDataRecord.h */, 1A3635A71A3144A300ED6197 /* APIWebsiteDataStore.cpp */, 1A3635A81A3144A300ED6197 /* APIWebsiteDataStore.h */, + 1A6563E21B7A8C50009CF787 /* APIWindowFeatures.cpp */, + 1A6563E31B7A8C50009CF787 /* APIWindowFeatures.h */, ); path = API; sourceTree = ""; @@ -6387,6 +6397,8 @@ 7C89D2A21A678875003A5FDE /* WKUserScriptRef.h */, 1A57109C1ABA0027002FABBE /* WKWebsiteDataStoreRef.cpp */, 1A57109D1ABA0027002FABBE /* WKWebsiteDataStoreRef.h */, + 1A7C0DF41B7D1F1000A9B848 /* WKWindowFeaturesRef.cpp */, + 1A7C0DF51B7D1F1000A9B848 /* WKWindowFeaturesRef.h */, ); path = C; sourceTree = ""; @@ -8043,6 +8055,7 @@ 1A4832D71A9CDF96008B4DFE /* WebsiteData.h in Headers */, 1A4832D11A9BDC2F008B4DFE /* WebsiteDataRecord.h in Headers */, 1A53C2AA1A325730004E8C70 /* WebsiteDataStore.h in Headers */, + 1A6563E51B7A8C50009CF787 /* APIWindowFeatures.h in Headers */, 836034A01ACB34D600626549 /* WebSQLiteDatabaseTracker.h in Headers */, 1A52C0F81A38CDC70016160A /* WebStorageNamespaceProvider.h in Headers */, BCC5715B115ADAEF001CCAF9 /* WebSystemInterface.h in Headers */, @@ -8168,6 +8181,7 @@ C54256B818BEC18C00DE4179 /* WKFormPopover.h in Headers */, C54256BA18BEC18C00DE4179 /* WKFormSelectControl.h in Headers */, BCE4695A1214EDF4000B98EB /* WKFormSubmissionListener.h in Headers */, + 1A7C0DF71B7D1F1000A9B848 /* WKWindowFeaturesRef.h in Headers */, 37DFA7001810BB92001F4A9F /* WKFoundation.h in Headers */, BCD0139B110FA420003B8A67 /* WKFrame.h in Headers */, 1A4D664C18A3030E00D82E21 /* WKFrameInfo.h in Headers */, @@ -9369,6 +9383,7 @@ 7CEFA9621AC0999300B910FD /* APIUserContentExtensionStoreCocoa.mm in Sources */, 7C89D2A61A6789EA003A5FDE /* APIUserScript.cpp in Sources */, C5E1AFEC16B21012006CC1F2 /* APIWebArchive.mm in Sources */, + 1A7C0DF61B7D1F1000A9B848 /* WKWindowFeaturesRef.cpp in Sources */, C5E1AFEE16B21025006CC1F2 /* APIWebArchiveResource.mm in Sources */, 1A4832C71A9BC13C008B4DFE /* APIWebsiteDataRecord.cpp in Sources */, 1A3635A91A3144A300ED6197 /* APIWebsiteDataStore.cpp in Sources */, @@ -10031,6 +10046,7 @@ 37BF2F071947DEB400723C48 /* WKNSURLRequest.mm in Sources */, BC407601124FF0270068F20A /* WKNumber.cpp in Sources */, 7CD5EBB81746A15B000C1C45 /* WKObjCTypeWrapperRef.mm in Sources */, + 1A6563E41B7A8C50009CF787 /* APIWindowFeatures.cpp in Sources */, 374436881820E7240049579F /* WKObject.mm in Sources */, BC85806312B8505700EDEB2E /* WKOpenPanelParameters.cpp in Sources */, BC85806212B8505700EDEB2E /* WKOpenPanelResultListener.cpp in Sources */,