Diff
Modified: trunk/Source/WebKit2/ChangeLog (178617 => 178618)
--- trunk/Source/WebKit2/ChangeLog 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/ChangeLog 2015-01-17 02:07:34 UTC (rev 178618)
@@ -1,3 +1,84 @@
+2015-01-16 Sam Weinig <[email protected]>
+
+ Add a basic configuration object for WKView
+ https://bugs.webkit.org/show_bug.cgi?id=140559
+
+ Reviewed by Anders Carlsson.
+
+ - Adds WKPageConfigurationRef (backed by API::PageConfiguration). WKWebView configuration
+ is not yet bridged to this, but that will happen soon. For now, it has a few basic
+ configuration options.
+ - Adds WKUserContentControllerRef as C-SPI version of WKUserContentController.
+ - Adds WKUserScriptRef as C-SPI version of WKUserScript.
+
+ * Shared/API/APIObject.h:
+ * Shared/API/c/WKBase.h:
+ * Shared/API/c/WKSharedAPICast.h:
+ (WebKit::toWKUserScriptInjectionTime):
+ * UIProcess/API/APIPageConfiguration.cpp: Added.
+ (API::PageConfiguration::PageConfiguration):
+ (API::PageConfiguration::~PageConfiguration):
+ (API::PageConfiguration::processPool):
+ (API::PageConfiguration::setProcessPool):
+ (API::PageConfiguration::userContentController):
+ (API::PageConfiguration::setUserContentController):
+ (API::PageConfiguration::pageGroup):
+ (API::PageConfiguration::setPageGroup):
+ (API::PageConfiguration::preferences):
+ (API::PageConfiguration::setPreferences):
+ (API::PageConfiguration::relatedPage):
+ (API::PageConfiguration::setRelatedPage):
+ (API::PageConfiguration::webPageConfiguration):
+ * UIProcess/API/APIPageConfiguration.h: Added.
+ (API::PageConfiguration::create):
+ * UIProcess/API/APIUserScript.cpp: Added.
+ (API::generateIdentifier):
+ (API::UserScript::generateUniqueURL):
+ * UIProcess/API/APIUserScript.h:
+ * UIProcess/API/C/WKAPICast.h:
+ * UIProcess/API/C/WKPageConfigurationRef.cpp: Added.
+ (WKPageConfigurationGetTypeID):
+ (WKPageConfigurationCreate):
+ (WKPageConfigurationGetContext):
+ (WKPageConfigurationSetContext):
+ (WKPageConfigurationGetPageGroup):
+ (WKPageConfigurationSetPageGroup):
+ (WKPageConfigurationGetUserContentController):
+ (WKPageConfigurationSetUserContentController):
+ (WKPageConfigurationGetPreferences):
+ (WKPageConfigurationSetPreferences):
+ (WKPageConfigurationGetRelatedPage):
+ (WKPageConfigurationSetRelatedPage):
+ * UIProcess/API/C/WKPageConfigurationRef.h: Added.
+ * UIProcess/API/C/WKUserContentControllerRef.cpp: Added.
+ (WKUserContentControllerGetTypeID):
+ (WKUserContentControllerCreate):
+ (WKUserContentControllerCopyUserScripts):
+ (WKUserContentControllerAddUserScript):
+ (WKUserContentControllerRemoveAllUserScripts):
+ * UIProcess/API/C/WKUserContentControllerRef.h: Added.
+ * UIProcess/API/C/WKUserScriptRef.cpp: Added.
+ (WKUserScriptGetTypeID):
+ (WKUserScriptCreateWithSource):
+ (WKUserScriptCopySource):
+ (WKUserScriptGetInjectionTime):
+ (WKUserScriptGetMainFrameOnly):
+ * UIProcess/API/C/WKUserScriptRef.h: Added.
+ * UIProcess/API/C/WebKit2_C.h:
+ * UIProcess/API/Cocoa/WKUserScript.mm:
+ (-[WKUserScript initWithSource:injectionTime:forMainFrameOnly:]):
+ (generateIdentifier): Deleted.
+ * UIProcess/API/Cocoa/WKViewPrivate.h:
+ * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
+ (LazyInitialized::get):
+ (LazyInitialized::set):
+ (LazyInitialized::peek):
+ * UIProcess/API/mac/WKView.mm:
+ (-[WKView initWithFrame:configurationRef:]):
+ * UIProcess/UserContent/WebUserContentControllerProxy.h:
+ (WebKit::WebUserContentControllerProxy::create):
+ * WebKit2.xcodeproj/project.pbxproj:
+
2015-01-16 Anders Carlsson <[email protected]>
Pass the connection along to WebProcessLifetimeTracker
Modified: trunk/Source/WebKit2/Shared/API/APIArray.cpp (178617 => 178618)
--- trunk/Source/WebKit2/Shared/API/APIArray.cpp 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/Shared/API/APIArray.cpp 2015-01-17 02:07:34 UTC (rev 178618)
@@ -37,7 +37,7 @@
PassRefPtr<Array> Array::create(Vector<RefPtr<Object>> elements)
{
- return adoptRef(new Array(WTF::move(elements)));
+ return adoptRef(*new Array(WTF::move(elements)));
}
PassRefPtr<Array> Array::createStringArray(const Vector<WTF::String>& strings)
@@ -65,6 +65,19 @@
return patternsVector;
}
+Ref<API::Array> Array::copy()
+{
+ size_t size = this->size();
+ if (!size)
+ return *Array::create();
+
+ Vector<RefPtr<Object>> elements;
+ elements.reserveInitialCapacity(size);
+ for (const auto& entry : this->elements())
+ elements.uncheckedAppend(entry);
+ return *Array::create(elements);
+}
+
Array::Array(Vector<RefPtr<Object>> elements)
: m_elements(WTF::move(elements))
{
Modified: trunk/Source/WebKit2/Shared/API/APIArray.h (178617 => 178618)
--- trunk/Source/WebKit2/Shared/API/APIArray.h 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/Shared/API/APIArray.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -55,6 +55,7 @@
static PassRefPtr<Array> create(Vector<RefPtr<Object>> elements);
static PassRefPtr<Array> createStringArray(const Vector<WTF::String>&);
Vector<WTF::String> toStringVector();
+ Ref<Array> copy();
virtual ~Array();
@@ -82,6 +83,7 @@
);
}
+
private:
explicit Array(Vector<RefPtr<Object>> elements);
Modified: trunk/Source/WebKit2/Shared/API/APIObject.h (178617 => 178618)
--- trunk/Source/WebKit2/Shared/API/APIObject.h 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/Shared/API/APIObject.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -128,6 +128,7 @@
OpenPanelResultListener,
OriginDataManager,
Page,
+ PageConfiguration,
PageGroup,
ProcessPool,
ProcessPoolConfiguration,
Modified: trunk/Source/WebKit2/Shared/API/c/WKBase.h (178617 => 178618)
--- trunk/Source/WebKit2/Shared/API/c/WKBase.h 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/Shared/API/c/WKBase.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -120,6 +120,7 @@
typedef const struct OpaqueWKOpenPanelResultListener* WKOpenPanelResultListenerRef;
typedef const struct OpaqueWKOriginDataManager* WKOriginDataManagerRef;
typedef const struct OpaqueWKPage* WKPageRef;
+typedef const struct OpaqueWKPageConfiguration* WKPageConfigurationRef;
typedef const struct OpaqueWKPageGroup* WKPageGroupRef;
typedef const struct OpaqueWKPluginSiteDataManager* WKPluginSiteDataManagerRef;
typedef const struct OpaqueWKPreferences* WKPreferencesRef;
@@ -127,7 +128,9 @@
typedef const struct OpaqueWKTextChecker* WKTextCheckerRef;
typedef const struct OpaqueWKSession* WKSessionRef;
typedef const struct OpaqueWKSessionState* WKSessionStateRef;
+typedef const struct OpaqueWKUserContentController* WKUserContentControllerRef;
typedef const struct OpaqueWKUserMediaPermissionRequest* WKUserMediaPermissionRequestRef;
+typedef const struct OpaqueWKUserScript* WKUserScriptRef;
typedef const struct OpaqueWKVibration* WKVibrationRef;
typedef const struct OpaqueWKViewportAttributes* WKViewportAttributesRef;
Modified: trunk/Source/WebKit2/Shared/API/c/WKSharedAPICast.h (178617 => 178618)
--- trunk/Source/WebKit2/Shared/API/c/WKSharedAPICast.h 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/Shared/API/c/WKSharedAPICast.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -973,6 +973,19 @@
return WebCore::InjectAtDocumentStart;
}
+inline _WKUserScriptInjectionTime toWKUserScriptInjectionTime(WebCore::UserScriptInjectionTime injectedTime)
+{
+ switch (injectedTime) {
+ case WebCore::InjectAtDocumentStart:
+ return kWKInjectAtDocumentStart;
+ case WebCore::InjectAtDocumentEnd:
+ return kWKInjectAtDocumentEnd;
+ }
+
+ ASSERT_NOT_REACHED();
+ return kWKInjectAtDocumentStart;
+}
+
inline WebCore::UserContentInjectedFrames toUserContentInjectedFrames(WKUserContentInjectedFrames wkInjectedFrames)
{
switch (wkInjectedFrames) {
Added: trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.cpp (0 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.cpp (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.cpp 2015-01-17 02:07:34 UTC (rev 178618)
@@ -0,0 +1,110 @@
+/*
+ * 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 "APIPageConfiguration.h"
+
+#include "APIProcessPoolConfiguration.h"
+#include "WebPageGroup.h"
+#include "WebPageProxy.h"
+#include "WebPreferences.h"
+#include "WebProcessPool.h"
+#include "WebUserContentControllerProxy.h"
+
+using namespace WebKit;
+
+namespace API {
+
+PageConfiguration::PageConfiguration()
+{
+}
+
+PageConfiguration::~PageConfiguration()
+{
+}
+
+WebProcessPool* PageConfiguration::processPool()
+{
+ return m_processPool.get();
+}
+
+void PageConfiguration::setProcessPool(WebProcessPool* processPool)
+{
+ m_processPool = processPool;
+}
+
+WebUserContentControllerProxy* PageConfiguration::userContentController()
+{
+ return m_userContentController.get();
+}
+
+void PageConfiguration::setUserContentController(WebUserContentControllerProxy* userContentController)
+{
+ m_userContentController = userContentController;
+}
+
+WebPageGroup* PageConfiguration::pageGroup()
+{
+ return m_pageGroup.get();
+}
+
+void PageConfiguration::setPageGroup(WebPageGroup* pageGroup)
+{
+ m_pageGroup = pageGroup;
+}
+
+WebPreferences* PageConfiguration::preferences()
+{
+ return m_preferences.get();
+}
+
+void PageConfiguration::setPreferences(WebPreferences* preferences)
+{
+ m_preferences = preferences;
+}
+
+WebPageProxy* PageConfiguration::relatedPage()
+{
+ return m_relatedPage.get();
+}
+
+void PageConfiguration::setRelatedPage(WebPageProxy* relatedPage)
+{
+ m_relatedPage = relatedPage;
+}
+
+WebKit::WebPageConfiguration PageConfiguration::webPageConfiguration()
+{
+ WebKit::WebPageConfiguration configuration;
+
+ configuration.userContentController = userContentController();
+ configuration.pageGroup = pageGroup();
+ configuration.preferences = preferences();
+ configuration.relatedPage = relatedPage();
+
+ return configuration;
+}
+
+} // namespace API
Added: trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.h (0 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/APIPageConfiguration.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -0,0 +1,84 @@
+/*
+ * 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 APIPageConfiguration_h
+#define APIPageConfiguration_h
+
+#include "APIObject.h"
+#include <wtf/GetPtr.h>
+
+namespace WebKit {
+struct WebPageConfiguration;
+class WebUserContentControllerProxy;
+class WebProcessPool;
+class WebPageGroup;
+class WebPreferences;
+class WebPageProxy;
+}
+
+namespace API {
+
+class PageConfiguration : public ObjectImpl<Object::Type::PageConfiguration> {
+public:
+ static Ref<PageConfiguration> create()
+ {
+ return adoptRef(*new PageConfiguration);
+ }
+ virtual ~PageConfiguration();
+
+ // FIXME: The configuration properties should return their default values
+ // rather than nullptr.
+
+ WebKit::WebProcessPool* processPool();
+ void setProcessPool(WebKit::WebProcessPool*);
+
+ WebKit::WebUserContentControllerProxy* userContentController();
+ void setUserContentController(WebKit::WebUserContentControllerProxy*);
+
+ WebKit::WebPageGroup* pageGroup();
+ void setPageGroup(WebKit::WebPageGroup*);
+
+ WebKit::WebPreferences* preferences();
+ void setPreferences(WebKit::WebPreferences*);
+
+ WebKit::WebPageProxy* relatedPage();
+ void setRelatedPage(WebKit::WebPageProxy*);
+
+ WebKit::WebPageConfiguration webPageConfiguration();
+
+private:
+ PageConfiguration();
+
+ RefPtr<WebKit::WebProcessPool> m_processPool;
+ RefPtr<WebKit::WebUserContentControllerProxy> m_userContentController;
+ RefPtr<WebKit::WebPageGroup> m_pageGroup;
+ RefPtr<WebKit::WebPreferences> m_preferences;
+ RefPtr<WebKit::WebPageProxy> m_relatedPage;
+};
+
+} // namespace API
+
+
+#endif // APIPageConfiguration_h
Added: trunk/Source/WebKit2/UIProcess/API/APIUserScript.cpp (0 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/APIUserScript.cpp (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/APIUserScript.cpp 2015-01-17 02:07:34 UTC (rev 178618)
@@ -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.
+ */
+
+#include "config.h"
+#include "APIUserScript.h"
+
+#include <wtf/text/StringBuilder.h>
+
+namespace API {
+
+static uint64_t generateIdentifier()
+{
+ static uint64_t identifier;
+
+ return ++identifier;
+}
+
+WebCore::URL UserScript::generateUniqueURL()
+{
+ StringBuilder urlStringBuilder;
+ urlStringBuilder.append("user-script:");
+ urlStringBuilder.appendNumber(generateIdentifier());
+ return WebCore::URL { WebCore::URL { }, urlStringBuilder.toString() };
+}
+
+
+} // namespace API
Modified: trunk/Source/WebKit2/UIProcess/API/APIUserScript.h (178617 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/APIUserScript.h 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/UIProcess/API/APIUserScript.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -33,6 +33,13 @@
class UserScript final : public ObjectImpl<Object::Type::UserScript> {
public:
+ static WebCore::URL generateUniqueURL();
+
+ static RefPtr<UserScript> create(WebCore::UserScript userScript)
+ {
+ return adoptRef(new UserScript(userScript));
+ }
+
UserScript(WebCore::UserScript userScript)
: m_userScript(userScript)
{
Modified: trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h (178617 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKAPICast.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -52,8 +52,10 @@
namespace API {
class NavigationData;
+class PageConfiguration;
class ProcessPoolConfiguration;
class SessionState;
+class UserScript;
}
namespace WebKit {
@@ -69,7 +71,6 @@
class WebBackForwardListItem;
class WebBatteryManagerProxy;
class WebBatteryStatus;
-class WebResourceCacheManagerProxy;
class WebColorPickerResultListenerProxy;
class WebCookieManagerProxy;
class WebCredential;
@@ -86,8 +87,8 @@
class WebKeyValueStorageManager;
class WebMediaCacheManagerProxy;
class WebNotification;
+class WebNotificationManagerProxy;
class WebNotificationProvider;
-class WebNotificationManagerProxy;
class WebOpenPanelParameters;
class WebOpenPanelResultListenerProxy;
class WebOriginDataManagerProxy;
@@ -99,7 +100,9 @@
class WebProtectionSpace;
class WebRenderLayer;
class WebRenderObject;
+class WebResourceCacheManagerProxy;
class WebTextChecker;
+class WebUserContentControllerProxy;
class WebVibrationProxy;
class WebViewportAttributes;
@@ -139,6 +142,7 @@
WK_ADD_API_MAPPING(WKOpenPanelResultListenerRef, WebOpenPanelResultListenerProxy)
WK_ADD_API_MAPPING(WKOriginDataManagerRef, WebOriginDataManagerProxy)
WK_ADD_API_MAPPING(WKPageGroupRef, WebPageGroup)
+WK_ADD_API_MAPPING(WKPageConfigurationRef, API::PageConfiguration)
WK_ADD_API_MAPPING(WKPageRef, WebPageProxy)
WK_ADD_API_MAPPING(WKPluginSiteDataManagerRef, WebPluginSiteDataManager)
WK_ADD_API_MAPPING(WKPreferencesRef, WebPreferences)
@@ -147,7 +151,9 @@
WK_ADD_API_MAPPING(WKRenderObjectRef, WebRenderObject)
WK_ADD_API_MAPPING(WKSessionStateRef, API::SessionState)
WK_ADD_API_MAPPING(WKTextCheckerRef, WebTextChecker)
+WK_ADD_API_MAPPING(WKUserContentControllerRef, WebUserContentControllerProxy)
WK_ADD_API_MAPPING(WKUserMediaPermissionRequestRef, UserMediaPermissionRequestProxy)
+WK_ADD_API_MAPPING(WKUserScriptRef, API::UserScript)
WK_ADD_API_MAPPING(WKVibrationRef, WebVibrationProxy)
WK_ADD_API_MAPPING(WKViewportAttributesRef, WebViewportAttributes)
WK_ADD_API_MAPPING(WKInspectorRef, WebInspectorProxy)
Added: trunk/Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.cpp (0 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.cpp (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.cpp 2015-01-17 02:07:34 UTC (rev 178618)
@@ -0,0 +1,92 @@
+/*
+ * 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 "WKPageConfigurationRef.h"
+
+#include "APIPageConfiguration.h"
+#include "WKAPICast.h"
+
+using namespace WebKit;
+
+WKTypeID WKPageConfigurationGetTypeID()
+{
+ return toAPI(API::PageConfiguration::APIType);
+}
+
+WKPageConfigurationRef WKPageConfigurationCreate()
+{
+ return toAPI(&API::PageConfiguration::create().leakRef());
+}
+
+WKContextRef WKPageConfigurationGetContext(WKPageConfigurationRef configuration)
+{
+ return toAPI(toImpl(configuration)->processPool());
+}
+
+void WKPageConfigurationSetContext(WKPageConfigurationRef configuration, WKContextRef context)
+{
+ toImpl(configuration)->setProcessPool(toImpl(context));
+}
+
+WKPageGroupRef WKPageConfigurationGetPageGroup(WKPageConfigurationRef configuration)
+{
+ return toAPI(toImpl(configuration)->pageGroup());
+}
+
+void WKPageConfigurationSetPageGroup(WKPageConfigurationRef configuration, WKPageGroupRef pageGroup)
+{
+ toImpl(configuration)->setPageGroup(toImpl(pageGroup));
+}
+
+WKUserContentControllerRef WKPageConfigurationGetUserContentController(WKPageConfigurationRef configuration)
+{
+ return toAPI(toImpl(configuration)->userContentController());
+}
+
+void WKPageConfigurationSetUserContentController(WKPageConfigurationRef configuration, WKUserContentControllerRef userContentController)
+{
+ toImpl(configuration)->setUserContentController(toImpl(userContentController));
+}
+
+WKPreferencesRef WKPageConfigurationGetPreferences(WKPageConfigurationRef configuration)
+{
+ return toAPI(toImpl(configuration)->preferences());
+}
+
+void WKPageConfigurationSetPreferences(WKPageConfigurationRef configuration, WKPreferencesRef preferences)
+{
+ toImpl(configuration)->setPreferences(toImpl(preferences));
+}
+
+WKPageRef WKPageConfigurationGetRelatedPage(WKPageConfigurationRef configuration)
+{
+ return toAPI(toImpl(configuration)->relatedPage());
+}
+
+void WKPageConfigurationSetRelatedPage(WKPageConfigurationRef configuration, WKPageRef relatedPage)
+{
+ toImpl(configuration)->setRelatedPage(toImpl(relatedPage));
+}
Added: trunk/Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.h (0 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKPageConfigurationRef.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -0,0 +1,58 @@
+/*
+ * 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 WKPageConfigurationRef_h
+#define WKPageConfigurationRef_h
+
+#include <WebKit/WKBase.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+WK_EXPORT WKTypeID WKPageConfigurationGetTypeID();
+
+WK_EXPORT WKPageConfigurationRef WKPageConfigurationCreate();
+
+WK_EXPORT WKContextRef WKPageConfigurationGetContext(WKPageConfigurationRef configuration);
+WK_EXPORT void WKPageConfigurationSetContext(WKPageConfigurationRef configuration, WKContextRef context);
+
+WK_EXPORT WKPageGroupRef WKPageConfigurationGetPageGroup(WKPageConfigurationRef configuration);
+WK_EXPORT void WKPageConfigurationSetPageGroup(WKPageConfigurationRef configuration, WKPageGroupRef pageGroup);
+
+WK_EXPORT WKUserContentControllerRef WKPageConfigurationGetUserContentController(WKPageConfigurationRef configuration);
+WK_EXPORT void WKPageConfigurationSetUserContentController(WKPageConfigurationRef configuration, WKUserContentControllerRef userContentController);
+
+WK_EXPORT WKPreferencesRef WKPageConfigurationGetPreferences(WKPageConfigurationRef configuration);
+WK_EXPORT void WKPageConfigurationSetPreferences(WKPageConfigurationRef configuration, WKPreferencesRef preferences);
+
+WK_EXPORT WKPageRef WKPageConfigurationGetRelatedPage(WKPageConfigurationRef configuration);
+WK_EXPORT void WKPageConfigurationSetRelatedPage(WKPageConfigurationRef configuration, WKPageRef relatedPage);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // WKPageConfigurationRef_h
Added: trunk/Source/WebKit2/UIProcess/API/C/WKUserContentControllerRef.cpp (0 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/C/WKUserContentControllerRef.cpp (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKUserContentControllerRef.cpp 2015-01-17 02:07:34 UTC (rev 178618)
@@ -0,0 +1,58 @@
+/*
+ * 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 "WKUserContentControllerRef.h"
+
+#include "WKAPICast.h"
+#include "WebUserContentControllerProxy.h"
+
+using namespace WebKit;
+
+WKTypeID WKUserContentControllerGetTypeID()
+{
+ return toAPI(WebUserContentControllerProxy::APIType);
+}
+
+WKUserContentControllerRef WKUserContentControllerCreate()
+{
+ return toAPI(&WebUserContentControllerProxy::create().leakRef());
+}
+
+WKArrayRef WKUserContentControllerCopyUserScripts(WKUserContentControllerRef userContentControllerRef)
+{
+ Ref<API::Array> userScripts = toImpl(userContentControllerRef)->userScripts().copy();
+ return toAPI(&userScripts.leakRef());
+}
+
+void WKUserContentControllerAddUserScript(WKUserContentControllerRef userContentControllerRef, WKUserScriptRef userScriptRef)
+{
+ toImpl(userContentControllerRef)->addUserScript(*toImpl(userScriptRef));
+}
+
+void WKUserContentControllerRemoveAllUserScripts(WKUserContentControllerRef userContentControllerRef)
+{
+ toImpl(userContentControllerRef)->removeAllUserScripts();
+}
Added: trunk/Source/WebKit2/UIProcess/API/C/WKUserContentControllerRef.h (0 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/C/WKUserContentControllerRef.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKUserContentControllerRef.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -0,0 +1,48 @@
+/*
+ * 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 WKUserContentControllerRef_h
+#define WKUserContentControllerRef_h
+
+#include <WebKit/WKBase.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+WK_EXPORT WKTypeID WKUserContentControllerGetTypeID();
+
+WK_EXPORT WKUserContentControllerRef WKUserContentControllerCreate();
+
+WK_EXPORT WKArrayRef WKUserContentControllerCopyUserScripts(WKUserContentControllerRef userContentController);
+WK_EXPORT void WKUserContentControllerAddUserScript(WKUserContentControllerRef userContentController, WKUserScriptRef userScript);
+WK_EXPORT void WKUserContentControllerRemoveAllUserScripts(WKUserContentControllerRef userContentController);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WKUserContentControllerRef_h */
Added: trunk/Source/WebKit2/UIProcess/API/C/WKUserScriptRef.cpp (0 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/C/WKUserScriptRef.cpp (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKUserScriptRef.cpp 2015-01-17 02:07:34 UTC (rev 178618)
@@ -0,0 +1,57 @@
+/*
+ * 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 "WKUserScriptRef.h"
+
+#include "APIUserScript.h"
+#include "WKAPICast.h"
+
+using namespace WebKit;
+
+WKTypeID WKUserScriptGetTypeID()
+{
+ return toAPI(API::UserScript::APIType);
+}
+
+WKUserScriptRef WKUserScriptCreateWithSource(WKStringRef sourceRef, _WKUserScriptInjectionTime injectionTime, bool forMainFrameOnly)
+{
+ return toAPI(API::UserScript::create(WebCore::UserScript { toWTFString(sourceRef), API::UserScript::generateUniqueURL(), { }, { }, toUserScriptInjectionTime(injectionTime), forMainFrameOnly ? WebCore::InjectInTopFrameOnly : WebCore::InjectInAllFrames }).leakRef());
+}
+
+WKStringRef WKUserScriptCopySource(WKUserScriptRef userScriptRef)
+{
+ return toCopiedAPI(toImpl(userScriptRef)->userScript().source());
+}
+
+_WKUserScriptInjectionTime WKUserScriptGetInjectionTime(WKUserScriptRef userScriptRef)
+{
+ return toWKUserScriptInjectionTime(toImpl(userScriptRef)->userScript().injectionTime());
+}
+
+bool WKUserScriptGetMainFrameOnly(WKUserScriptRef userScriptRef)
+{
+ return toImpl(userScriptRef)->userScript().injectedFrames() == WebCore::InjectInTopFrameOnly;
+}
Added: trunk/Source/WebKit2/UIProcess/API/C/WKUserScriptRef.h (0 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/C/WKUserScriptRef.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/C/WKUserScriptRef.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -0,0 +1,48 @@
+/*
+ * 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 WKUserScriptRef_h
+#define WKUserScriptRef_h
+
+#include <WebKit/WKBase.h>
+#include <WebKit/WKUserScriptInjectionTime.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+WK_EXPORT WKTypeID WKUserScriptGetTypeID();
+
+WK_EXPORT WKUserScriptRef WKUserScriptCreateWithSource(WKStringRef source, _WKUserScriptInjectionTime injectionTime, bool forMainFrameOnly);
+
+WK_EXPORT WKStringRef WKUserScriptCopySource(WKUserScriptRef userScript);
+WK_EXPORT _WKUserScriptInjectionTime WKUserScriptGetInjectionTime(WKUserScriptRef userScript);
+WK_EXPORT bool WKUserScriptGetMainFrameOnly(WKUserScriptRef userScript);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WKUserScriptRef_h */
Modified: trunk/Source/WebKit2/UIProcess/API/C/WebKit2_C.h (178617 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/C/WebKit2_C.h 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/UIProcess/API/C/WebKit2_C.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -51,13 +51,16 @@
#include <WebKit/WKOpenPanelParameters.h>
#include <WebKit/WKOpenPanelResultListener.h>
#include <WebKit/WKPage.h>
+#include <WebKit/WKPageConfigurationRef.h>
#include <WebKit/WKPageGroup.h>
#include <WebKit/WKPreferencesRef.h>
#include <WebKit/WKString.h>
#include <WebKit/WKURL.h>
#include <WebKit/WKURLRequest.h>
#include <WebKit/WKURLResponse.h>
+#include <WebKit/WKUserContentControllerRef.h>
#include <WebKit/WKUserMediaPermissionRequest.h>
+#include <WebKit/WKUserScriptRef.h>
#if defined(__OBJC__) && __OBJC__
#import <WebKit/WKView.h>
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserScript.mm (178617 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserScript.mm 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKUserScript.mm 2015-01-17 02:07:34 UTC (rev 178618)
@@ -28,29 +28,15 @@
#if WK_API_ENABLED
-#import <wtf/text/StringBuilder.h>
-
@implementation WKUserScript
-static uint64_t generateIdentifier()
-{
- static uint64_t identifier;
-
- return ++identifier;
-}
-
- (instancetype)initWithSource:(NSString *)source injectionTime:(WKUserScriptInjectionTime)injectionTime forMainFrameOnly:(BOOL)forMainFrameOnly
{
if (!(self = [super init]))
return nil;
- StringBuilder urlStringBuilder;
- urlStringBuilder.append("user-script:");
- urlStringBuilder.appendNumber(generateIdentifier());
- WebCore::URL url { WebCore::URL { }, urlStringBuilder.toString() };
+ API::Object::constructInWrapper<API::UserScript>(self, WebCore::UserScript { WTF::String(source), API::UserScript::generateUniqueURL(), { }, { }, API::toWebCoreUserScriptInjectionTime(injectionTime), forMainFrameOnly ? WebCore::InjectInTopFrameOnly : WebCore::InjectInAllFrames });
- API::Object::constructInWrapper<API::UserScript>(self, WebCore::UserScript { WTF::String(source), url, { }, { }, API::toWebCoreUserScriptInjectionTime(injectionTime), forMainFrameOnly ? WebCore::InjectInTopFrameOnly : WebCore::InjectInAllFrames });
-
return self;
}
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h (178617 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKViewPrivate.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -40,6 +40,7 @@
#else
- (id)initWithFrame:(NSRect)frame contextRef:(WKContextRef)contextRef pageGroupRef:(WKPageGroupRef)pageGroupRef;
- (id)initWithFrame:(NSRect)frame contextRef:(WKContextRef)contextRef pageGroupRef:(WKPageGroupRef)pageGroupRef relatedToPage:(WKPageRef)relatedPage;
+- (id)initWithFrame:(NSRect)frame configurationRef:(WKPageConfigurationRef)configuration;
#endif
#if TARGET_OS_IPHONE
Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm (178617 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm 2015-01-17 02:07:34 UTC (rev 178618)
@@ -28,6 +28,7 @@
#if WK_API_ENABLED
+#import "APIPageConfiguration.h"
#import "WKPreferences.h"
#import "WKProcessPool.h"
#import "WKUserContentController.h"
@@ -43,8 +44,10 @@
template<typename T> class LazyInitialized {
public:
+ typedef typename WTF::GetPtrHelper<T>::PtrType PtrType;
+
template<typename F>
- T* get(F&& f)
+ PtrType get(F&& f)
{
if (!m_isInitialized) {
m_value = f();
@@ -54,38 +57,38 @@
return m_value.get();
}
- void set(T* t)
+ void set(PtrType t)
{
m_value = t;
m_isInitialized = true;
}
- void set(RetainPtr<T>&& t)
+ void set(T&& t)
{
m_value = WTF::move(t);
m_isInitialized = true;
}
- T* peek()
+ PtrType peek()
{
return m_value.get();
}
private:
bool m_isInitialized = false;
- RetainPtr<T> m_value;
+ T m_value;
};
@implementation WKWebViewConfiguration {
- LazyInitialized<WKProcessPool> _processPool;
- LazyInitialized<WKPreferences> _preferences;
- LazyInitialized<WKUserContentController> _userContentController;
- LazyInitialized<_WKVisitedLinkProvider> _visitedLinkProvider;
- LazyInitialized<_WKWebsiteDataStore> _websiteDataStore;
+ LazyInitialized<RetainPtr<WKProcessPool>> _processPool;
+ LazyInitialized<RetainPtr<WKPreferences>> _preferences;
+ LazyInitialized<RetainPtr<WKUserContentController>> _userContentController;
+ LazyInitialized<RetainPtr<_WKVisitedLinkProvider>> _visitedLinkProvider;
+ LazyInitialized<RetainPtr<_WKWebsiteDataStore>> _websiteDataStore;
WebKit::WeakObjCPtr<WKWebView> _relatedWebView;
WebKit::WeakObjCPtr<WKWebView> _alternateWebViewForNavigationGestures;
RetainPtr<NSString> _groupIdentifier;
- LazyInitialized<NSString> _applicationNameForUserAgent;
+ LazyInitialized<RetainPtr<NSString>> _applicationNameForUserAgent;
#if PLATFORM(IOS)
LazyInitialized<WKWebViewContentProviderRegistry> _contentProviderRegistry;
Modified: trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm (178617 => 178618)
--- trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/UIProcess/API/mac/WKView.mm 2015-01-17 02:07:34 UTC (rev 178618)
@@ -34,6 +34,7 @@
#endif
#import "APILegacyContextHistoryClient.h"
+#import "APIPageConfiguration.h"
#import "ActionMenuHitTestResult.h"
#import "AttributedString.h"
#import "ColorSpaceData.h"
@@ -3795,6 +3796,14 @@
return [self initWithFrame:frame processPool:*toImpl(contextRef) configuration:webPageConfiguration webView:nil];
}
+- (id)initWithFrame:(NSRect)frame configurationRef:(WKPageConfigurationRef)configuration
+{
+ auto& processPool = *toImpl(configuration)->processPool();
+ auto webPageConfiguration = toImpl(configuration)->webPageConfiguration();
+
+ return [self initWithFrame:frame processPool:processPool configuration:webPageConfiguration webView:nil];
+}
+
#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
- (BOOL)wantsUpdateLayer
{
Modified: trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h (178617 => 178618)
--- trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/UIProcess/UserContent/WebUserContentControllerProxy.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -57,6 +57,10 @@
class WebUserContentControllerProxy : public API::ObjectImpl<API::Object::Type::UserContentController>, private IPC::MessageReceiver {
public:
+ static Ref<WebUserContentControllerProxy> create()
+ {
+ return adoptRef(*new WebUserContentControllerProxy);
+ }
explicit WebUserContentControllerProxy();
~WebUserContentControllerProxy();
Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (178617 => 178618)
--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj 2015-01-17 02:07:34 UTC (rev 178618)
@@ -1070,6 +1070,15 @@
7C85FD7F19341665000177C4 /* WebPreferencesKeys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C85FD7D19341665000177C4 /* WebPreferencesKeys.cpp */; };
7C85FD8019341665000177C4 /* WebPreferencesKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C85FD7E19341665000177C4 /* WebPreferencesKeys.h */; };
7C89D2941A67122F003A5FDE /* APIUserScript.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C89D2921A67122F003A5FDE /* APIUserScript.h */; };
+ 7C89D2971A6753B2003A5FDE /* APIPageConfiguration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C89D2951A6753B2003A5FDE /* APIPageConfiguration.cpp */; };
+ 7C89D2981A6753B2003A5FDE /* APIPageConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C89D2961A6753B2003A5FDE /* APIPageConfiguration.h */; };
+ 7C89D29B1A67837B003A5FDE /* WKPageConfigurationRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C89D2991A67837B003A5FDE /* WKPageConfigurationRef.cpp */; };
+ 7C89D29C1A67837B003A5FDE /* WKPageConfigurationRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C89D29A1A67837B003A5FDE /* WKPageConfigurationRef.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 7C89D29F1A678554003A5FDE /* WKUserContentControllerRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C89D29D1A678554003A5FDE /* WKUserContentControllerRef.cpp */; };
+ 7C89D2A01A678554003A5FDE /* WKUserContentControllerRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C89D29E1A678554003A5FDE /* WKUserContentControllerRef.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 7C89D2A31A678875003A5FDE /* WKUserScriptRef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C89D2A11A678875003A5FDE /* WKUserScriptRef.cpp */; };
+ 7C89D2A41A678875003A5FDE /* WKUserScriptRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C89D2A21A678875003A5FDE /* WKUserScriptRef.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 7C89D2A61A6789EA003A5FDE /* APIUserScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C89D2A51A6789EA003A5FDE /* APIUserScript.cpp */; };
7C8EB11718DB6A19007917C2 /* WKPreferencesPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C8EB11618DB6A19007917C2 /* WKPreferencesPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
7C9D1537184584DA009D3918 /* WKBrowsingContextGroupInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C9D1536184584DA009D3918 /* WKBrowsingContextGroupInternal.h */; };
7CA254EB182993CE00FC8A41 /* WKBrowsingContextPolicyDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CA254EA182993CE00FC8A41 /* WKBrowsingContextPolicyDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -3182,6 +3191,15 @@
7C85FD7D19341665000177C4 /* WebPreferencesKeys.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPreferencesKeys.cpp; sourceTree = "<group>"; };
7C85FD7E19341665000177C4 /* WebPreferencesKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPreferencesKeys.h; sourceTree = "<group>"; };
7C89D2921A67122F003A5FDE /* APIUserScript.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIUserScript.h; sourceTree = "<group>"; };
+ 7C89D2951A6753B2003A5FDE /* APIPageConfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = APIPageConfiguration.cpp; sourceTree = "<group>"; };
+ 7C89D2961A6753B2003A5FDE /* APIPageConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIPageConfiguration.h; sourceTree = "<group>"; };
+ 7C89D2991A67837B003A5FDE /* WKPageConfigurationRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKPageConfigurationRef.cpp; sourceTree = "<group>"; };
+ 7C89D29A1A67837B003A5FDE /* WKPageConfigurationRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageConfigurationRef.h; sourceTree = "<group>"; };
+ 7C89D29D1A678554003A5FDE /* WKUserContentControllerRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKUserContentControllerRef.cpp; sourceTree = "<group>"; };
+ 7C89D29E1A678554003A5FDE /* WKUserContentControllerRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKUserContentControllerRef.h; sourceTree = "<group>"; };
+ 7C89D2A11A678875003A5FDE /* WKUserScriptRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKUserScriptRef.cpp; sourceTree = "<group>"; };
+ 7C89D2A21A678875003A5FDE /* WKUserScriptRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKUserScriptRef.h; sourceTree = "<group>"; };
+ 7C89D2A51A6789EA003A5FDE /* APIUserScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = APIUserScript.cpp; sourceTree = "<group>"; };
7C8EB11618DB6A19007917C2 /* WKPreferencesPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPreferencesPrivate.h; sourceTree = "<group>"; };
7C9D1536184584DA009D3918 /* WKBrowsingContextGroupInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKBrowsingContextGroupInternal.h; sourceTree = "<group>"; };
7CA254EA182993CE00FC8A41 /* WKBrowsingContextPolicyDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKBrowsingContextPolicyDelegate.h; sourceTree = "<group>"; };
@@ -6060,6 +6078,8 @@
7CD3A4811A5D02FA009623B8 /* APINavigation.h */,
BCF69FA11176D01400471A52 /* APINavigationData.cpp */,
BCF69FA01176D01400471A52 /* APINavigationData.h */,
+ 7C89D2951A6753B2003A5FDE /* APIPageConfiguration.cpp */,
+ 7C89D2961A6753B2003A5FDE /* APIPageConfiguration.h */,
1AFDD3141891B54000153970 /* APIPolicyClient.h */,
7CE4D21D1A4914CA00C7F152 /* APIProcessPoolConfiguration.cpp */,
7CE4D21E1A4914CA00C7F152 /* APIProcessPoolConfiguration.h */,
@@ -6068,6 +6088,7 @@
1AFDE65F1954E9B100C48FFA /* APISessionState.cpp */,
1AFDE6601954E9B100C48FFA /* APISessionState.h */,
1A4D664718A2D91A00D82E21 /* APIUIClient.h */,
+ 7C89D2A51A6789EA003A5FDE /* APIUserScript.cpp */,
7C89D2921A67122F003A5FDE /* APIUserScript.h */,
1A3635A71A3144A300ED6197 /* APIWebsiteDataStore.cpp */,
1A3635A81A3144A300ED6197 /* APIWebsiteDataStore.h */,
@@ -6150,6 +6171,8 @@
755422BA18062B9C0046F6A8 /* WKOriginDataManager.h */,
BCD597D4112B56DC00EC8C23 /* WKPage.cpp */,
BCD597D5112B56DC00EC8C23 /* WKPage.h */,
+ 7C89D2991A67837B003A5FDE /* WKPageConfigurationRef.cpp */,
+ 7C89D29A1A67837B003A5FDE /* WKPageConfigurationRef.h */,
1AB8A1F718400BB800E9AE69 /* WKPageContextMenuClient.h */,
8372DB241A674C8F00C697C5 /* WKPageDiagnosticLoggingClient.h */,
1AB8A1F318400B8F00E9AE69 /* WKPageFindClient.h */,
@@ -6178,6 +6201,10 @@
1ADE46B11954EC61000F7985 /* WKSessionStateRef.h */,
4A410F3519AF7AC3002EBAB5 /* WKUserMediaPermissionRequest.cpp */,
4A410F3619AF7AC3002EBAB5 /* WKUserMediaPermissionRequest.h */,
+ 7C89D29D1A678554003A5FDE /* WKUserContentControllerRef.cpp */,
+ 7C89D29E1A678554003A5FDE /* WKUserContentControllerRef.h */,
+ 7C89D2A11A678875003A5FDE /* WKUserScriptRef.cpp */,
+ 7C89D2A21A678875003A5FDE /* WKUserScriptRef.h */,
);
path = C;
sourceTree = "<group>";
@@ -7847,6 +7874,7 @@
BC204EEF11C83EC8008F3375 /* WKBundle.h in Headers */,
BC204EF011C83EC8008F3375 /* WKBundleAPICast.h in Headers */,
935EEB9F127761AC003322B8 /* WKBundleBackForwardList.h in Headers */,
+ 7C89D2A41A678875003A5FDE /* WKUserScriptRef.h in Headers */,
935EEB9B1277617C003322B8 /* WKBundleBackForwardListItem.h in Headers */,
51EFC1CF1524E62500C9A938 /* WKBundleDOMWindowExtension.h in Headers */,
BCD25F1711D6BDE100169B0E /* WKBundleFrame.h in Headers */,
@@ -7870,6 +7898,7 @@
1AB474D8184D43FD0051B622 /* WKBundlePageLoaderClient.h in Headers */,
ED82A7F2128C6FAF004477B3 /* WKBundlePageOverlay.h in Headers */,
1AB474EA184D45130051B622 /* WKBundlePagePolicyClient.h in Headers */,
+ 7C89D29C1A67837B003A5FDE /* WKPageConfigurationRef.h in Headers */,
BC1B419811D41D570011E8DD /* WKBundlePagePrivate.h in Headers */,
1AB474DA184D44250051B622 /* WKBundlePageResourceLoadClient.h in Headers */,
1AB474DE184D44590051B622 /* WKBundlePageUIClient.h in Headers */,
@@ -7906,6 +7935,7 @@
BC017D0B16260FF4007054F5 /* WKDOMInternals.h in Headers */,
BC017D0D16260FF4007054F5 /* WKDOMNode.h in Headers */,
BC5D24C216CD706D007D5461 /* WKDOMNodePrivate.h in Headers */,
+ 7C89D2981A6753B2003A5FDE /* APIPageConfiguration.h in Headers */,
BC39C4361626366F008BC689 /* WKDOMRange.h in Headers */,
BC5D24C516CD7088007D5461 /* WKDOMRangePrivate.h in Headers */,
293EBEAB1627D9C9005F89F1 /* WKDOMText.h in Headers */,
@@ -8024,6 +8054,7 @@
1A9E329F1822FEDD00F5D04C /* WKRemoteObjectCoder.h in Headers */,
37948409150C4B9700E52CE9 /* WKRenderLayer.h in Headers */,
37608823150414F700FC82C7 /* WKRenderObject.h in Headers */,
+ 7C89D2A01A678554003A5FDE /* WKUserContentControllerRef.h in Headers */,
3336763B130C99DC006C9DE2 /* WKResourceCacheManager.h in Headers */,
BC8A501511765F5600757573 /* WKRetainPtr.h in Headers */,
1A7E377918E4A4FE003D0FFF /* WKScriptMessage.h in Headers */,
@@ -9149,6 +9180,7 @@
1AFDE65D1954E8D500C48FFA /* LegacySessionStateCoding.cpp in Sources */,
1A1D8BA11731A36300141DA4 /* LocalStorageDatabase.cpp in Sources */,
1A8C728C1738477C000A6554 /* LocalStorageDatabaseTracker.cpp in Sources */,
+ 7C89D29B1A67837B003A5FDE /* WKPageConfigurationRef.cpp in Sources */,
51A7F2F5125BF8D4008AEB1D /* Logging.cpp in Sources */,
5160BFE113381DF900918999 /* LoggingFoundation.mm in Sources */,
1A24B5F211F531E800C38269 /* MachUtilities.cpp in Sources */,
@@ -9461,6 +9493,7 @@
51A9E1051315CCFC009E7031 /* WebKeyValueStorageManager.cpp in Sources */,
1A6280F31919982A006AD9F9 /* WebKit.m in Sources */,
BC9BA5041697C45300E44616 /* WebKit2Initialize.cpp in Sources */,
+ 7C89D29F1A678554003A5FDE /* WKUserContentControllerRef.cpp in Sources */,
33D3A3C1133960B000709BE4 /* WebMediaCacheManager.cpp in Sources */,
33D3A3C81339617900709BE4 /* WebMediaCacheManagerMessageReceiver.cpp in Sources */,
33D3A3BA1339606200709BE4 /* WebMediaCacheManagerProxy.cpp in Sources */,
@@ -9625,7 +9658,9 @@
1AF4592E19464B2000F9D4A2 /* WKError.mm in Sources */,
BCFD548B132D82680055D816 /* WKErrorCF.cpp in Sources */,
BC4075FB124FF0270068F20A /* WKErrorRef.cpp in Sources */,
+ 7C89D2A31A678875003A5FDE /* WKUserScriptRef.cpp in Sources */,
A58B6F0918FCA733008CBA53 /* WKFileUploadPanel.mm in Sources */,
+ 7C89D2971A6753B2003A5FDE /* APIPageConfiguration.cpp in Sources */,
C54256B618BEC18C00DE4179 /* WKFormInputControl.mm in Sources */,
C54256B918BEC18C00DE4179 /* WKFormPopover.mm in Sources */,
C57193BE18C14A44002D0F12 /* WKFormSelectControl.mm in Sources */,
@@ -9694,6 +9729,7 @@
1A158419189044F50017616C /* WKProcessPool.mm in Sources */,
512F58FB12A88A5400629530 /* WKProtectionSpace.cpp in Sources */,
1AD01BCC1905D54900C9C45F /* WKReloadFrameErrorRecoveryAttempter.mm in Sources */,
+ 7C89D2A61A6789EA003A5FDE /* APIUserScript.cpp in Sources */,
1A9E329A1822E1CC00F5D04C /* WKRemoteObject.mm in Sources */,
1AFA4B8B1A65A1D0006C4AB4 /* WebProcessLifetimeTracker.cpp in Sources */,
1A9E329E1822FEDD00F5D04C /* WKRemoteObjectCoder.mm in Sources */,
Modified: trunk/Tools/ChangeLog (178617 => 178618)
--- trunk/Tools/ChangeLog 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Tools/ChangeLog 2015-01-17 02:07:34 UTC (rev 178618)
@@ -1,3 +1,22 @@
+2015-01-16 Sam Weinig <[email protected]>
+
+ Add a basic configuration object for WKView
+ https://bugs.webkit.org/show_bug.cgi?id=140559
+
+ Reviewed by Anders Carlsson.
+
+ Add tests for WKPageConfigurationRef.
+
+ * TestWebKitAPI/PlatformWebView.h:
+ * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+ * TestWebKitAPI/Tests/WebKit2/WKPageConfiguration.cpp: Added.
+ (TestWebKitAPI::TEST):
+ (TestWebKitAPI::didFinishLoadForFrame):
+ (TestWebKitAPI::setPageLoaderClient):
+ * TestWebKitAPI/mac/PlatformWebViewMac.mm:
+ (TestWebKitAPI::PlatformWebView::initialize):
+ (TestWebKitAPI::PlatformWebView::PlatformWebView):
+
2015-01-16 Myles C. Maxfield <[email protected]>
WeakPtr functions crash when created with default constructor
Modified: trunk/Tools/TestWebKitAPI/PlatformWebView.h (178617 => 178618)
--- trunk/Tools/TestWebKitAPI/PlatformWebView.h 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Tools/TestWebKitAPI/PlatformWebView.h 2015-01-17 02:07:34 UTC (rev 178618)
@@ -56,6 +56,7 @@
class PlatformWebView {
public:
+ explicit PlatformWebView(WKPageConfigurationRef);
explicit PlatformWebView(WKContextRef, WKPageGroupRef = 0);
explicit PlatformWebView(WKPageRef relatedPage);
#if PLATFORM(MAC)
@@ -74,6 +75,10 @@
void simulateMouseMove(unsigned x, unsigned y);
private:
+#if PLATFORM(MAC)
+ void initialize(WKPageConfigurationRef, Class wkViewSubclass);
+#endif
+
PlatformWKView m_view;
PlatformWindow m_window;
};
Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (178617 => 178618)
--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj 2015-01-17 02:07:34 UTC (rev 178618)
@@ -55,6 +55,7 @@
7673499D1930C5BB00E44DF9 /* StopLoadingDuringDidFailProvisionalLoad_bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7673499A1930182E00E44DF9 /* StopLoadingDuringDidFailProvisionalLoad_bundle.cpp */; };
76E182DD1547569100F1FADD /* WillSendSubmitEvent_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76E182DC1547569100F1FADD /* WillSendSubmitEvent_Bundle.cpp */; };
76E182DF154767E600F1FADD /* auto-submitting-form.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 76E182DE15475A8300F1FADD /* auto-submitting-form.html */; };
+ 7C89D2AC1A69B80D003A5FDE /* WKPageConfiguration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C89D2AA1A69B80D003A5FDE /* WKPageConfiguration.cpp */; };
7C9ED98B17A19F4B00E4DC33 /* attributedStringStrikethrough.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 7C9ED98A17A19D0600E4DC33 /* attributedStringStrikethrough.html */; };
7CCE7EA41A4119F300447C4C /* InstanceMethodSwizzler.mm in Sources */ = {isa = PBXBuildFile; fileRef = C08587FF13FEC3A6001EF4E5 /* InstanceMethodSwizzler.mm */; };
7CCE7EA51A411A0800447C4C /* _javascript_TestMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = C081224013FC172400DC39AE /* _javascript_TestMac.mm */; };
@@ -507,6 +508,7 @@
7C6BBD8A19CEA54300C1F5E0 /* Counters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Counters.h; sourceTree = "<group>"; };
7C6BBD8B19CEA63000C1F5E0 /* Counters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Counters.cpp; sourceTree = "<group>"; };
7C74D42D188228F300E5ED57 /* StringView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringView.cpp; sourceTree = "<group>"; };
+ 7C89D2AA1A69B80D003A5FDE /* WKPageConfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKPageConfiguration.cpp; sourceTree = "<group>"; };
7C8DDAA91735DE1D00EA5AC0 /* CloseThenTerminate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CloseThenTerminate.cpp; sourceTree = "<group>"; };
7C9ED98A17A19D0600E4DC33 /* attributedStringStrikethrough.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = attributedStringStrikethrough.html; sourceTree = "<group>"; };
7CBBA07619BB8A9100BBF025 /* OSObjectPtr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OSObjectPtr.cpp; sourceTree = "<group>"; };
@@ -977,6 +979,7 @@
76E182D91547550100F1FADD /* WillSendSubmitEvent.cpp */,
76E182DC1547569100F1FADD /* WillSendSubmitEvent_Bundle.cpp */,
A1FDFD2E19C288BB005148A4 /* WKImageCreateCGImageCrash.cpp */,
+ 7C89D2AA1A69B80D003A5FDE /* WKPageConfiguration.cpp */,
51E93016156B13E1004C99DF /* WKPageGetScaleFactorNotZero.cpp */,
524BBC9C19DF377A002F1AF1 /* WKPageIsPlayingAudio.cpp */,
BC7B619A1299FE9E00D174A4 /* WKPreferences.cpp */,
@@ -1409,6 +1412,7 @@
7CCE7EFF1A411AE600447C4C /* LoadCanceledNoServerRedirectCallback.cpp in Sources */,
7CCE7F001A411AE600447C4C /* LoadPageOnCrash.cpp in Sources */,
7CCE7F3A1A411B8E00447C4C /* MathExtras.cpp in Sources */,
+ 7C89D2AC1A69B80D003A5FDE /* WKPageConfiguration.cpp in Sources */,
7CCE7F391A411B8E00447C4C /* MD5.cpp in Sources */,
7CCE7F3B1A411B8E00447C4C /* MediaTime.cpp in Sources */,
7CCE7EB21A411A5100447C4C /* MemoryCacheAddImageToCacheIOS.mm in Sources */,
Added: trunk/Tools/TestWebKitAPI/Tests/WebKit2/WKPageConfiguration.cpp (0 => 178618)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit2/WKPageConfiguration.cpp (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2/WKPageConfiguration.cpp 2015-01-17 02:07:34 UTC (rev 178618)
@@ -0,0 +1,82 @@
+/*
+ * 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+
+namespace TestWebKitAPI {
+
+TEST(WebKit2, WKPageConfigurationEmpty)
+{
+ WKRetainPtr<WKPageConfigurationRef> configuration = adoptWK(WKPageConfigurationCreate());
+
+ ASSERT_NULL(WKPageConfigurationGetContext(configuration.get()));
+ ASSERT_NULL(WKPageConfigurationGetUserContentController(configuration.get()));
+ ASSERT_NULL(WKPageConfigurationGetPageGroup(configuration.get()));
+ ASSERT_NULL(WKPageConfigurationGetPreferences(configuration.get()));
+ ASSERT_NULL(WKPageConfigurationGetRelatedPage(configuration.get()));
+}
+
+static bool didFinishLoad;
+
+static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
+{
+ didFinishLoad = true;
+}
+
+static void setPageLoaderClient(WKPageRef page)
+{
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 0;
+ loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
+}
+
+TEST(WebKit2, WKPageConfigurationBasic)
+{
+ WKRetainPtr<WKPageConfigurationRef> configuration = adoptWK(WKPageConfigurationCreate());
+ WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate());
+ WKPageConfigurationSetContext(configuration.get(), context.get());
+
+ PlatformWebView webView(configuration.get());
+ setPageLoaderClient(webView.page());
+
+ WKRetainPtr<WKURLRef> url = "" "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ Util::run(&didFinishLoad);
+}
+
+} // namespace TestWebKitAPI
+
+#endif
Modified: trunk/Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm (178617 => 178618)
--- trunk/Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm 2015-01-17 01:49:53 UTC (rev 178617)
+++ trunk/Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm 2015-01-17 02:07:34 UTC (rev 178618)
@@ -26,8 +26,9 @@
#import "config.h"
#import "PlatformWebView.h"
+#import <Carbon/Carbon.h>
+#import <WebKit/WKRetainPtr.h>
#import <WebKit/WKViewPrivate.h>
-#import <Carbon/Carbon.h>
@interface ActiveOffscreenWindow : NSWindow
@end
@@ -45,15 +46,10 @@
namespace TestWebKitAPI {
-PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef)
- : PlatformWebView(contextRef, pageGroupRef, [WKView class])
+void PlatformWebView::initialize(WKPageConfigurationRef configuration, Class wkViewSubclass)
{
-}
-
-PlatformWebView::PlatformWebView(WKPageRef relatedPage)
-{
NSRect rect = NSMakeRect(0, 0, 800, 600);
- m_view = [[WKView alloc] initWithFrame:rect contextRef:WKPageGetContext(relatedPage) pageGroupRef:WKPageGetPageGroup(relatedPage) relatedToPage:relatedPage];
+ m_view = [[wkViewSubclass alloc] initWithFrame:rect configurationRef:configuration];
[m_view setWindowOcclusionDetectionEnabled:NO];
NSRect windowRect = NSOffsetRect(rect, -10000, [(NSScreen *)[[NSScreen screens] objectAtIndex:0] frame].size.height - rect.size.height + 10000);
@@ -65,21 +61,42 @@
[m_window setReleasedWhenClosed:NO];
}
-PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef, Class wkViewSubclass)
+PlatformWebView::PlatformWebView(WKPageConfigurationRef configuration)
{
- NSRect rect = NSMakeRect(0, 0, 800, 600);
- m_view = [[wkViewSubclass alloc] initWithFrame:rect contextRef:contextRef pageGroupRef:pageGroupRef];
- [m_view setWindowOcclusionDetectionEnabled:NO];
+ initialize(configuration, [WKView class]);
+}
- NSRect windowRect = NSOffsetRect(rect, -10000, [(NSScreen *)[[NSScreen screens] objectAtIndex:0] frame].size.height - rect.size.height + 10000);
- m_window = [[ActiveOffscreenWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
- [m_window setColorSpace:[[NSScreen mainScreen] colorSpace]];
- [[m_window contentView] addSubview:m_view];
- [m_window orderBack:nil];
- [m_window setAutodisplay:NO];
- [m_window setReleasedWhenClosed:NO];
+PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef)
+{
+ WKRetainPtr<WKPageConfigurationRef> configuration = adoptWK(WKPageConfigurationCreate());
+
+ WKPageConfigurationSetContext(configuration.get(), contextRef);
+ WKPageConfigurationSetPageGroup(configuration.get(), pageGroupRef);
+
+ initialize(configuration.get(), [WKView class]);
}
+PlatformWebView::PlatformWebView(WKPageRef relatedPage)
+{
+ WKRetainPtr<WKPageConfigurationRef> configuration = adoptWK(WKPageConfigurationCreate());
+
+ WKPageConfigurationSetContext(configuration.get(), WKPageGetContext(relatedPage));
+ WKPageConfigurationSetPageGroup(configuration.get(), WKPageGetPageGroup(relatedPage));
+ WKPageConfigurationSetRelatedPage(configuration.get(), relatedPage);
+
+ initialize(configuration.get(), [WKView class]);
+}
+
+PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef, Class wkViewSubclass)
+{
+ WKRetainPtr<WKPageConfigurationRef> configuration = adoptWK(WKPageConfigurationCreate());
+
+ WKPageConfigurationSetContext(configuration.get(), contextRef);
+ WKPageConfigurationSetPageGroup(configuration.get(), pageGroupRef);
+
+ initialize(configuration.get(), wkViewSubclass);
+}
+
PlatformWebView::~PlatformWebView()
{
[m_window close];