summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--third_party/WebKit/WebKit2/ChangeLog69
-rw-r--r--third_party/WebKit/WebKit2/Shared/API/c/WKBase.h3
-rw-r--r--third_party/WebKit/WebKit2/Shared/API/c/WKImage.cpp47
-rw-r--r--third_party/WebKit/WebKit2/Shared/API/c/WKImage.h51
-rw-r--r--third_party/WebKit/WebKit2/Shared/API/c/WKSharedAPICast.h38
-rw-r--r--third_party/WebKit/WebKit2/Shared/API/c/cg/WKImageCG.cpp39
-rw-r--r--third_party/WebKit/WebKit2/Shared/API/c/cg/WKImageCG.h42
-rw-r--r--third_party/WebKit/WebKit2/Shared/APIObject.h1
-rw-r--r--third_party/WebKit/WebKit2/Shared/BackingStore.h3
-rw-r--r--third_party/WebKit/WebKit2/Shared/ImageOptions.h37
-rw-r--r--third_party/WebKit/WebKit2/Shared/UserMessageCoders.h43
-rw-r--r--third_party/WebKit/WebKit2/Shared/WebImage.cpp49
-rw-r--r--third_party/WebKit/WebKit2/Shared/WebImage.h63
-rw-r--r--third_party/WebKit/WebKit2/UIProcess/API/C/WKPage.cpp2
-rw-r--r--third_party/WebKit/WebKit2/UIProcess/WebUIClient.cpp2
-rw-r--r--third_party/WebKit/WebKit2/WebKit2.pro5
-rw-r--r--third_party/WebKit/WebKit2/WebKit2.xcodeproj/project.pbxproj54
-rw-r--r--third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp17
-rw-r--r--third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h4
-rw-r--r--third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp2
-rw-r--r--third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp41
-rw-r--r--third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.h5
-rwxr-xr-xthird_party/WebKit/WebKit2/win/WebKit2.vcproj28
23 files changed, 623 insertions, 22 deletions
diff --git a/third_party/WebKit/WebKit2/ChangeLog b/third_party/WebKit/WebKit2/ChangeLog
index 1168a6b..66b7cc1 100644
--- a/third_party/WebKit/WebKit2/ChangeLog
+++ b/third_party/WebKit/WebKit2/ChangeLog
@@ -2,6 +2,75 @@
Reviewed by Anders Carlsson.
+ WebKit2: Add API for getting snapshots
+ https://bugs.webkit.org/show_bug.cgi?id=51656
+
+ * Shared/API/c/WKBase.h:
+ * Shared/API/c/WKImage.cpp: Added.
+ (WKImageGetTypeID):
+ (WKImageCreate):
+ (WKImageGetSize):
+ * Shared/API/c/WKImage.h: Added.
+ * Shared/WebImage.cpp: Added.
+ (WebKit::WebImage::create):
+ (WebKit::WebImage::size):
+ * Shared/WebImage.h: Added.
+ (WebKit::WebImage::backingStore):
+ (WebKit::WebImage::WebImage):
+ (WebKit::WebImage::type):
+ Add a general purpose API image class.
+
+ * Shared/API/c/cg: Added.
+ * Shared/API/c/cg/WKImageCG.cpp: Added.
+ (WKImageCreateCGImage):
+ * Shared/API/c/cg/WKImageCG.h: Added.
+ Add function to convert a WKImageRef to a CGImageRef for platforms that use CG.
+
+ * Shared/API/c/WKSharedAPICast.h:
+ (WebKit::toFloatRect):
+ (WebKit::toIntSize):
+ (WebKit::toIntPoint):
+ (WebKit::toIntRect):
+ (WebKit::toImageOptions):
+ Make conversion functions that are ambiguous more explicit.
+
+ * Shared/APIObject.h:
+ * Shared/BackingStore.h:
+ (WebKit::BackingStore::isBackedBySharedMemory):
+ * Shared/ImageOptions.h: Added.
+ * Shared/UserMessageCoders.h:
+ (WebKit::UserMessageEncoder::baseEncode):
+ (WebKit::UserMessageDecoder::baseDecode):
+ Allow a WKImageRef to be passed in user messages. Right now, it only
+ works if the image is sharable.
+
+ * UIProcess/API/C/WKPage.cpp:
+ (WKPageScaleWebView):
+ * UIProcess/WebUIClient.cpp:
+ (WebKit::WebUIClient::windowFrame):
+ Use the more explicit conversion function name.
+
+ * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
+ (WKBundlePageCreateSnapshotInViewCoordinates):
+ (WKBundlePageCreateSnapshotInDocumentCoordinates):
+ * WebProcess/InjectedBundle/API/c/WKBundlePage.h:
+ * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
+ (WKBundlePageOverlaySetNeedsDisplay):
+ * WebProcess/WebPage/WebPage.cpp:
+ (WebKit::WebPage::snapshotInViewCoordinates):
+ (WebKit::WebPage::snapshotInDocumentCoordinates):
+ Add function to take the snapshot.
+
+ * WebProcess/WebPage/WebPage.h:
+ * WebKit2.pro:
+ * WebKit2.xcodeproj/project.pbxproj:
+ * win/WebKit2.vcproj:
+ Add new files.
+
+2010-12-27 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
WebKit2: Add additional API for managing databases
https://bugs.webkit.org/show_bug.cgi?id=51629
diff --git a/third_party/WebKit/WebKit2/Shared/API/c/WKBase.h b/third_party/WebKit/WebKit2/Shared/API/c/WKBase.h
index cf5bb5b..0e7984a 100644
--- a/third_party/WebKit/WebKit2/Shared/API/c/WKBase.h
+++ b/third_party/WebKit/WebKit2/Shared/API/c/WKBase.h
@@ -44,11 +44,12 @@ typedef const struct OpaqueWKDictionary* WKDictionaryRef;
typedef struct OpaqueWKDictionary* WKMutableDictionaryRef;
typedef const struct OpaqueWKBoolean* WKBooleanRef;
+typedef const struct OpaqueWKCertificateInfo* WKCertificateInfoRef;
typedef const struct OpaqueWKContextMenuItem* WKContextMenuItemRef;
typedef const struct OpaqueWKData* WKDataRef;
typedef const struct OpaqueWKDouble* WKDoubleRef;
typedef const struct OpaqueWKError* WKErrorRef;
-typedef const struct OpaqueWKCertificateInfo* WKCertificateInfoRef;
+typedef const struct OpaqueWKImage* WKImageRef;
typedef const struct OpaqueWKSecurityOrigin* WKSecurityOriginRef;
typedef const struct OpaqueWKSerializedScriptValue* WKSerializedScriptValueRef;
typedef const struct OpaqueWKString* WKStringRef;
diff --git a/third_party/WebKit/WebKit2/Shared/API/c/WKImage.cpp b/third_party/WebKit/WebKit2/Shared/API/c/WKImage.cpp
new file mode 100644
index 0000000..0bf21df1
--- /dev/null
+++ b/third_party/WebKit/WebKit2/Shared/API/c/WKImage.cpp
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2010 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 "WKImage.h"
+
+#include "WKSharedAPICast.h"
+#include "WebImage.h"
+
+using namespace WebKit;
+
+WKTypeID WKImageGetTypeID()
+{
+ return toAPI(WebImage::APIType);
+}
+
+WKImageRef WKImageCreate(WKSize size, WKImageOptions options)
+{
+ RefPtr<WebImage> webImage = WebImage::create(toIntSize(size), toImageOptions(options));
+ return toAPI(webImage.release().leakRef());
+}
+
+WKSize WKImageGetSize(WKImageRef imageRef)
+{
+ return toAPI(toImpl(imageRef)->size());
+}
diff --git a/third_party/WebKit/WebKit2/Shared/API/c/WKImage.h b/third_party/WebKit/WebKit2/Shared/API/c/WKImage.h
new file mode 100644
index 0000000..2797cc5
--- /dev/null
+++ b/third_party/WebKit/WebKit2/Shared/API/c/WKImage.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2010 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 WKImage_h
+#define WKImage_h
+
+#include <WebKit2/WKBase.h>
+#include <WebKit2/WKGeometry.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+ kWKImageOptionsSharable = 1 << 0,
+};
+typedef uint32_t WKImageOptions;
+
+WK_EXPORT WKTypeID WKImageGetTypeID();
+
+WK_EXPORT WKImageRef WKImageCreate(WKSize size, WKImageOptions options);
+
+WK_EXPORT WKSize WKImageGetSize(WKImageRef image);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WKImage_h */
diff --git a/third_party/WebKit/WebKit2/Shared/API/c/WKSharedAPICast.h b/third_party/WebKit/WebKit2/Shared/API/c/WKSharedAPICast.h
index 5047c5d..7af434b 100644
--- a/third_party/WebKit/WebKit2/Shared/API/c/WKSharedAPICast.h
+++ b/third_party/WebKit/WebKit2/Shared/API/c/WKSharedAPICast.h
@@ -26,12 +26,14 @@
#ifndef WKSharedAPICast_h
#define WKSharedAPICast_h
+#include "ImageOptions.h"
#include "SameDocumentNavigationType.h"
#include "WKBase.h"
#include "WKContextMenuItemTypes.h"
#include "WKEvent.h"
#include "WKFindOptions.h"
#include "WKGeometry.h"
+#include "WKImage.h"
#include "WKPageLoadTypes.h"
#include "WebError.h"
#include "WebEvent.h"
@@ -42,7 +44,6 @@
#include <WebCore/ContextMenuItem.h>
#include <WebCore/FloatRect.h>
#include <WebCore/FrameLoaderTypes.h>
-#include <WebCore/IntPoint.h>
#include <WebCore/IntRect.h>
#include <wtf/TypeTraits.h>
@@ -55,6 +56,7 @@ class MutableDictionary;
class WebCertificateInfo;
class WebContextMenuItem;
class WebData;
+class WebImage;
class WebSecurityOrigin;
class WebSerializedScriptValue;
class WebURLRequest;
@@ -76,6 +78,7 @@ WK_ADD_API_MAPPING(WKDataRef, WebData)
WK_ADD_API_MAPPING(WKDictionaryRef, ImmutableDictionary)
WK_ADD_API_MAPPING(WKDoubleRef, WebDouble)
WK_ADD_API_MAPPING(WKErrorRef, WebError)
+WK_ADD_API_MAPPING(WKImageRef, WebImage)
WK_ADD_API_MAPPING(WKMutableArrayRef, MutableArray)
WK_ADD_API_MAPPING(WKMutableDictionaryRef, MutableDictionary)
WK_ADD_API_MAPPING(WKSecurityOriginRef, WebSecurityOrigin)
@@ -171,17 +174,28 @@ inline ProxyingRefPtr<WebError> toAPI(const WebCore::ResourceError& error)
/* Geometry conversions */
-inline WebCore::FloatRect toImpl(const WKRect& wkRect)
+inline WebCore::FloatRect toFloatRect(const WKRect& wkRect)
{
return WebCore::FloatRect(static_cast<float>(wkRect.origin.x), static_cast<float>(wkRect.origin.y),
static_cast<float>(wkRect.size.width), static_cast<float>(wkRect.size.height));
}
-inline WebCore::IntPoint toImpl(const WKPoint& wkPoint)
+inline WebCore::IntSize toIntSize(const WKSize& wkSize)
+{
+ return WebCore::IntSize(static_cast<int>(wkSize.width), static_cast<int>(wkSize.height));
+}
+
+inline WebCore::IntPoint toIntPoint(const WKPoint& wkPoint)
{
return WebCore::IntPoint(static_cast<int>(wkPoint.x), static_cast<int>(wkPoint.y));
}
+inline WebCore::IntRect toIntRect(const WKRect& wkRect)
+{
+ return WebCore::IntRect(static_cast<int>(wkRect.origin.x), static_cast<int>(wkRect.origin.y),
+ static_cast<int>(wkRect.size.width), static_cast<int>(wkRect.size.height));
+}
+
inline WKRect toAPI(const WebCore::FloatRect& rect)
{
WKRect wkRect;
@@ -202,6 +216,14 @@ inline WKRect toAPI(const WebCore::IntRect& rect)
return wkRect;
}
+inline WKSize toAPI(const WebCore::IntSize& size)
+{
+ WKSize wkSize;
+ wkSize.width = size.width();
+ wkSize.height = size.height();
+ return wkSize;
+}
+
inline WKPoint toAPI(const WebCore::IntPoint& point)
{
WKPoint wkPoint;
@@ -698,6 +720,16 @@ inline WKSameDocumentNavigationType toAPI(SameDocumentNavigationType type)
return wkType;
}
+inline ImageOptions toImageOptions(WKImageOptions wkImageOptions)
+{
+ unsigned imageOptions = 0;
+
+ if (wkImageOptions & kWKImageOptionsSharable)
+ imageOptions |= ImageOptionsSharable;
+
+ return static_cast<ImageOptions>(imageOptions);
+}
+
} // namespace WebKit
#endif // WKSharedAPICast_h
diff --git a/third_party/WebKit/WebKit2/Shared/API/c/cg/WKImageCG.cpp b/third_party/WebKit/WebKit2/Shared/API/c/cg/WKImageCG.cpp
new file mode 100644
index 0000000..687415c
--- /dev/null
+++ b/third_party/WebKit/WebKit2/Shared/API/c/cg/WKImageCG.cpp
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2010 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 "WKImageCG.h"
+
+#include "WKSharedAPICast.h"
+#include "WebImage.h"
+#include <WebCore/GraphicsContext.h>
+
+using namespace WebKit;
+using namespace WebCore;
+
+CGImageRef WKImageCreateCGImage(WKImageRef imageRef)
+{
+ OwnPtr<GraphicsContext> sourceContext = toImpl(imageRef)->backingStore()->createGraphicsContext();
+ return CGBitmapContextCreateImage(sourceContext->platformContext());
+}
diff --git a/third_party/WebKit/WebKit2/Shared/API/c/cg/WKImageCG.h b/third_party/WebKit/WebKit2/Shared/API/c/cg/WKImageCG.h
new file mode 100644
index 0000000..7705c31
--- /dev/null
+++ b/third_party/WebKit/WebKit2/Shared/API/c/cg/WKImageCG.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2010 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 WKImageCG_h
+#define WKImageCG_h
+
+#include <CoreGraphics/CGImage.h>
+#include <WebKit2/WKBase.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+WK_EXPORT CGImageRef WKImageCreateCGImage(WKImageRef image);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* WKImageCG_h */
diff --git a/third_party/WebKit/WebKit2/Shared/APIObject.h b/third_party/WebKit/WebKit2/Shared/APIObject.h
index e625b3a..6b402a3 100644
--- a/third_party/WebKit/WebKit2/Shared/APIObject.h
+++ b/third_party/WebKit/WebKit2/Shared/APIObject.h
@@ -44,6 +44,7 @@ public:
TypeData,
TypeDictionary,
TypeError,
+ TypeImage,
TypeProtectionSpace,
TypeSecurityOrigin,
TypeSerializedScriptValue,
diff --git a/third_party/WebKit/WebKit2/Shared/BackingStore.h b/third_party/WebKit/WebKit2/Shared/BackingStore.h
index 7b3c905..f2c580d 100644
--- a/third_party/WebKit/WebKit2/Shared/BackingStore.h
+++ b/third_party/WebKit/WebKit2/Shared/BackingStore.h
@@ -66,11 +66,12 @@ public:
// Paint the backing store into the given context.
void paint(WebCore::GraphicsContext&, const WebCore::IntPoint& dstPoint, const WebCore::IntRect& srcRect);
+ bool isBackedBySharedMemory() const { return m_sharedMemory; }
+
private:
BackingStore(const WebCore::IntSize&, void*);
BackingStore(const WebCore::IntSize&, PassRefPtr<SharedMemory>);
- bool isBackedBySharedMemory() const { return m_sharedMemory; }
static size_t numBytesForSize(const WebCore::IntSize& size) { return size.width() * size.height() * 4; }
void* data() const;
diff --git a/third_party/WebKit/WebKit2/Shared/ImageOptions.h b/third_party/WebKit/WebKit2/Shared/ImageOptions.h
new file mode 100644
index 0000000..3acc74a
--- /dev/null
+++ b/third_party/WebKit/WebKit2/Shared/ImageOptions.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2010 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 ImageOptions_h
+#define ImageOptions_h
+
+namespace WebKit {
+
+enum ImageOptions {
+ ImageOptionsSharable = 1 << 0,
+};
+
+} // namespace WebKit
+
+#endif // ImageOptions_h
diff --git a/third_party/WebKit/WebKit2/Shared/UserMessageCoders.h b/third_party/WebKit/WebKit2/Shared/UserMessageCoders.h
index fff9de7..5cc5a9e 100644
--- a/third_party/WebKit/WebKit2/Shared/UserMessageCoders.h
+++ b/third_party/WebKit/WebKit2/Shared/UserMessageCoders.h
@@ -28,6 +28,7 @@
#include "ImmutableArray.h"
#include "ImmutableDictionary.h"
#include "WebCoreArgumentCoders.h"
+#include "WebImage.h"
#include "WebNumber.h"
#include "WebSerializedScriptValue.h"
#include "WebString.h"
@@ -39,10 +40,11 @@ namespace WebKit {
// - Null -> Null
// - Array -> Array
// - Dictionary -> Dictionary
-// - String -> String
// - SerializedScriptValue -> SerializedScriptValue
+// - String -> String
// - UserContentURLPattern -> UserContentURLPattern
// - WebDouble -> WebDouble
+// - WebImage -> WebImage
// - WebUInt64 -> WebUInt64
// - WebURL -> WebURL
@@ -115,6 +117,23 @@ public:
encoder->encode(urlPattern->patternString());
return true;
}
+ case APIObject::TypeImage: {
+ WebImage* image = static_cast<WebImage*>(m_root);
+ if (!image->backingStore()->isBackedBySharedMemory()) {
+ encoder->encode(false);
+ return true;
+ }
+
+ SharedMemory::Handle handle;
+ if (!image->backingStore()->createHandle(handle))
+ return false;
+
+ encoder->encode(true);
+
+ encoder->encode(image->size());
+ encoder->encode(handle);
+ return true;
+ }
default:
break;
}
@@ -136,10 +155,11 @@ protected:
// - Null -> Null
// - Array -> Array
// - Dictionary -> Dictionary
-// - String -> String
// - SerializedScriptValue -> SerializedScriptValue
+// - String -> String
// - UserContentURLPattern -> UserContentURLPattern
// - WebDouble -> WebDouble
+// - WebImage -> WebImage
// - WebUInt64 -> WebUInt64
// - WebURL -> WebURL
@@ -245,6 +265,25 @@ public:
coder.m_root = WebUserContentURLPattern::create(string);
break;
}
+ case APIObject::TypeImage: {
+ bool didEncode = false;
+ if (!decoder->decode(didEncode))
+ return false;
+
+ if (!didEncode)
+ break;
+
+ WebCore::IntSize size;
+ if (!decoder->decode(size))
+ return false;
+
+ SharedMemory::Handle handle;
+ if (!decoder->decode(handle))
+ return false;
+
+ coder.m_root = WebImage::create(BackingStore::create(size, handle));
+ return true;
+ }
default:
break;
}
diff --git a/third_party/WebKit/WebKit2/Shared/WebImage.cpp b/third_party/WebKit/WebKit2/Shared/WebImage.cpp
new file mode 100644
index 0000000..81f30fc
--- /dev/null
+++ b/third_party/WebKit/WebKit2/Shared/WebImage.cpp
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2010 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 "WebImage.h"
+
+using namespace WebCore;
+
+namespace WebKit {
+
+PassRefPtr<WebImage> WebImage::create(const IntSize& size, ImageOptions options)
+{
+ if (options & ImageOptionsSharable)
+ return WebImage::create(BackingStore::createSharable(size));
+ return WebImage::create(BackingStore::create(size));
+}
+
+PassRefPtr<WebImage> WebImage::create(PassRefPtr<BackingStore> backingStore)
+{
+ return adoptRef(new WebImage(backingStore));
+}
+
+const IntSize& WebImage::size() const
+{
+ return m_backingStore->size();
+}
+
+} // namespace WebKit
diff --git a/third_party/WebKit/WebKit2/Shared/WebImage.h b/third_party/WebKit/WebKit2/Shared/WebImage.h
new file mode 100644
index 0000000..cafbe8d
--- /dev/null
+++ b/third_party/WebKit/WebKit2/Shared/WebImage.h
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2010 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 WebImage_h
+#define WebImage_h
+
+#include "APIObject.h"
+#include "BackingStore.h"
+#include "ImageOptions.h"
+#include <wtf/Forward.h>
+
+namespace WebKit {
+
+// WebImage - An image type suitable for vending to an API.
+
+class WebImage : public APIObject {
+public:
+ static const Type APIType = TypeImage;
+
+ static PassRefPtr<WebImage> create(const WebCore::IntSize&, ImageOptions);
+ static PassRefPtr<WebImage> create(PassRefPtr<BackingStore>);
+
+ const WebCore::IntSize& size() const;
+
+ BackingStore* backingStore() const { return m_backingStore.get(); }
+
+private:
+ WebImage(PassRefPtr<BackingStore> backingStore)
+ : m_backingStore(backingStore)
+ {
+ ASSERT(m_backingStore);
+ }
+
+ virtual Type type() const { return APIType; }
+
+ RefPtr<BackingStore> m_backingStore;
+};
+
+} // namespace WebKit
+
+#endif // WebImage_h
diff --git a/third_party/WebKit/WebKit2/UIProcess/API/C/WKPage.cpp b/third_party/WebKit/WebKit2/UIProcess/API/C/WKPage.cpp
index 25dede2..22f5298 100644
--- a/third_party/WebKit/WebKit2/UIProcess/API/C/WKPage.cpp
+++ b/third_party/WebKit/WebKit2/UIProcess/API/C/WKPage.cpp
@@ -252,7 +252,7 @@ void WKPageSetPageAndTextZoomFactors(WKPageRef pageRef, double pageZoomFactor, d
void WKPageScaleWebView(WKPageRef pageRef, double scale, WKPoint origin)
{
- toImpl(pageRef)->scaleWebView(scale, toImpl(origin));
+ toImpl(pageRef)->scaleWebView(scale, toIntPoint(origin));
}
double WKPageGetViewScaleFactor(WKPageRef pageRef)
diff --git a/third_party/WebKit/WebKit2/UIProcess/WebUIClient.cpp b/third_party/WebKit/WebKit2/UIProcess/WebUIClient.cpp
index 89c3b5e..661f4b7 100644
--- a/third_party/WebKit/WebKit2/UIProcess/WebUIClient.cpp
+++ b/third_party/WebKit/WebKit2/UIProcess/WebUIClient.cpp
@@ -214,7 +214,7 @@ FloatRect WebUIClient::windowFrame(WebPageProxy* page)
if (!m_client.getWindowFrame)
return FloatRect();
- return toImpl(m_client.getWindowFrame(toAPI(page), m_client.clientInfo));
+ return toFloatRect(m_client.getWindowFrame(toAPI(page), m_client.clientInfo));
}
bool WebUIClient::canRunBeforeUnloadConfirmPanel()
diff --git a/third_party/WebKit/WebKit2/WebKit2.pro b/third_party/WebKit/WebKit2/WebKit2.pro
index 3bda5e6..cb01402 100644
--- a/third_party/WebKit/WebKit2/WebKit2.pro
+++ b/third_party/WebKit/WebKit2/WebKit2.pro
@@ -222,6 +222,7 @@ HEADERS += \
Shared/API/c/WKContextMenuItem.h \
Shared/API/c/WKContextMenuItemTypes.h \
Shared/API/c/WKGeometry.h \
+ Shared/API/c/WKImage.h \
Shared/API/c/WKNumber.h \
Shared/API/c/WKPageLoadTypes.h \
Shared/API/c/WKSecurityOrigin.h \
@@ -239,6 +240,7 @@ HEADERS += \
Shared/ChildProcess.h \
Shared/CoreIPCSupport/DrawingAreaMessageKinds.h \
Shared/CoreIPCSupport/DrawingAreaProxyMessageKinds.h \
+ Shared/ImageOptions.h \
Shared/ImmutableArray.h \
Shared/ImmutableDictionary.h \
Shared/MutableArray.h \
@@ -258,6 +260,7 @@ HEADERS += \
Shared/WebEvent.h \
Shared/WebEventConversion.h \
Shared/WebFindOptions.h \
+ Shared/WebImage.h \
Shared/WebNavigationDataStore.h \
Shared/WebNumber.h \
Shared/WebOpenPanelParameters.h \
@@ -439,6 +442,7 @@ SOURCES += \
Shared/API/c/WKArray.cpp \
Shared/API/c/WKCertificateInfo.cpp \
Shared/API/c/WKContextMenuItem.cpp \
+ Shared/API/c/WKImage.cpp \
Shared/API/c/WKNumber.cpp \
Shared/API/c/WKSecurityOrigin.cpp \
Shared/API/c/WKSerializedScriptValue.cpp \
@@ -465,6 +469,7 @@ SOURCES += \
Shared/WebEvent.cpp \
Shared/WebEventConversion.cpp \
Shared/WebKeyboardEvent.cpp \
+ Shared/WebImage.cpp \
Shared/WebMouseEvent.cpp \
Shared/WebOpenPanelParameters.cpp \
Shared/WebPageCreationParameters.cpp \
diff --git a/third_party/WebKit/WebKit2/WebKit2.xcodeproj/project.pbxproj b/third_party/WebKit/WebKit2/WebKit2.xcodeproj/project.pbxproj
index 5643410..ac7269a 100644
--- a/third_party/WebKit/WebKit2/WebKit2.xcodeproj/project.pbxproj
+++ b/third_party/WebKit/WebKit2/WebKit2.xcodeproj/project.pbxproj
@@ -524,6 +524,13 @@
BCCB75C61203A1CE00222D1B /* WebContextMessageKinds.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCB75C51203A1CE00222D1B /* WebContextMessageKinds.h */; };
BCCF672D12C7EDF7008F9C35 /* OriginAndDatabases.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCF672C12C7EDF7008F9C35 /* OriginAndDatabases.h */; };
BCCF673312C7F15C008F9C35 /* OriginAndDatabases.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCCF673212C7F15C008F9C35 /* OriginAndDatabases.cpp */; };
+ BCCF6ABC12C91EF9008F9C35 /* WebImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCCF6ABA12C91EF9008F9C35 /* WebImage.cpp */; };
+ BCCF6ABD12C91EF9008F9C35 /* WebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCF6ABB12C91EF9008F9C35 /* WebImage.h */; };
+ BCCF6AC212C91F34008F9C35 /* WKImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCCF6AC012C91F34008F9C35 /* WKImage.cpp */; };
+ BCCF6AC312C91F34008F9C35 /* WKImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCF6AC112C91F34008F9C35 /* WKImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ BCCF6AC912C91F59008F9C35 /* WKImageCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCCF6AC712C91F59008F9C35 /* WKImageCG.cpp */; };
+ BCCF6ACA12C91F59008F9C35 /* WKImageCG.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCF6AC812C91F59008F9C35 /* WKImageCG.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ BCCF6B2512C93E7A008F9C35 /* ImageOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCF6B2312C93E7A008F9C35 /* ImageOptions.h */; };
BCD0042D110C1E27003B8A67 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCD0042C110C1E27003B8A67 /* CoreServices.framework */; };
BCD0139B110FA420003B8A67 /* WKFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = BCD01397110FA420003B8A67 /* WKFrame.h */; settings = {ATTRIBUTES = (Public, ); }; };
BCD0139C110FA420003B8A67 /* WKFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD01398110FA420003B8A67 /* WKFrame.cpp */; };
@@ -1197,6 +1204,13 @@
BCCB75C51203A1CE00222D1B /* WebContextMessageKinds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebContextMessageKinds.h; sourceTree = "<group>"; };
BCCF672C12C7EDF7008F9C35 /* OriginAndDatabases.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OriginAndDatabases.h; sourceTree = "<group>"; };
BCCF673212C7F15C008F9C35 /* OriginAndDatabases.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OriginAndDatabases.cpp; sourceTree = "<group>"; };
+ BCCF6ABA12C91EF9008F9C35 /* WebImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebImage.cpp; sourceTree = "<group>"; };
+ BCCF6ABB12C91EF9008F9C35 /* WebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebImage.h; sourceTree = "<group>"; };
+ BCCF6AC012C91F34008F9C35 /* WKImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKImage.cpp; sourceTree = "<group>"; };
+ BCCF6AC112C91F34008F9C35 /* WKImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKImage.h; sourceTree = "<group>"; };
+ BCCF6AC712C91F59008F9C35 /* WKImageCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKImageCG.cpp; sourceTree = "<group>"; };
+ BCCF6AC812C91F59008F9C35 /* WKImageCG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKImageCG.h; sourceTree = "<group>"; };
+ BCCF6B2312C93E7A008F9C35 /* ImageOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageOptions.h; sourceTree = "<group>"; };
BCD0042C110C1E27003B8A67 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
BCD01397110FA420003B8A67 /* WKFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFrame.h; sourceTree = "<group>"; };
BCD01398110FA420003B8A67 /* WKFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKFrame.cpp; sourceTree = "<group>"; };
@@ -1584,11 +1598,11 @@
isa = PBXGroup;
children = (
BCDDB314124EBCEF0048D13C /* API */,
- BC111B5F112F635E00337BAB /* CoreIPCSupport */,
- 1AAE058C1279DCD400852418 /* Plugins */,
1AAF0C4712B16328008E49E2 /* cf */,
C01A25FF12662F2100C9ED55 /* cg */,
+ BC111B5F112F635E00337BAB /* CoreIPCSupport */,
BC111B5A112F628200337BAB /* mac */,
+ 1AAE058C1279DCD400852418 /* Plugins */,
1A3DD205125E5A2F004515E6 /* APIClient.h */,
BCF04C8C11FF9B7D00F86A58 /* APIObject.h */,
1A043D79124FEFC100FFBFB5 /* BackingStore.cpp */,
@@ -1599,6 +1613,7 @@
1A6F9F8E11E13EFC00DB1371 /* CommandLine.h */,
0FB659221208B4DB0044816C /* DrawingAreaInfo.h */,
762B7481120BBA0100819339 /* FontSmoothingLevel.h */,
+ BCCF6B2312C93E7A008F9C35 /* ImageOptions.h */,
BC64696D11DBE603006455B0 /* ImmutableArray.cpp */,
BC64696E11DBE603006455B0 /* ImmutableArray.h */,
BCBCB0CC1215E33A00DE59CA /* ImmutableDictionary.cpp */,
@@ -1609,6 +1624,8 @@
BCB0AEE7122F53E300B1341E /* MutableDictionary.h */,
C02BFF1512514FD8009CCBEA /* NativeWebKeyboardEvent.h */,
BCC57161115ADB42001CCAF9 /* NotImplemented.h */,
+ BCCF673212C7F15C008F9C35 /* OriginAndDatabases.cpp */,
+ BCCF672C12C7EDF7008F9C35 /* OriginAndDatabases.h */,
BCC43AB8127B95DC00317F16 /* PlatformPopupMenuData.cpp */,
BCC43AB9127B95DC00317F16 /* PlatformPopupMenuData.h */,
BC2D021612AC41CB00E732A3 /* SameDocumentNavigationType.h */,
@@ -1618,14 +1635,12 @@
BCB0B0DF12305AB100B1341E /* UserMessageCoders.h */,
1A0F29C9120B37160053D1B9 /* VisitedLinkTable.cpp */,
1A0F29CA120B37160053D1B9 /* VisitedLinkTable.h */,
- BC1DD7B1114DC396005ADAF3 /* WebCoreArgumentCoders.h */,
BCF50726124329AA005955AE /* WebCertificateInfo.h */,
512935D51288D19400A4B695 /* WebContextMenuItem.cpp */,
512935D61288D19400A4B695 /* WebContextMenuItem.h */,
510FBB981288C95E00AFFDF4 /* WebContextMenuItemData.cpp */,
510FBB991288C95E00AFFDF4 /* WebContextMenuItemData.h */,
- BCCF673212C7F15C008F9C35 /* OriginAndDatabases.cpp */,
- BCCF672C12C7EDF7008F9C35 /* OriginAndDatabases.h */,
+ BC1DD7B1114DC396005ADAF3 /* WebCoreArgumentCoders.h */,
51578B821209ECEF00A37C4A /* WebData.h */,
BC575612126E0138006F0F12 /* WebError.cpp */,
516A4A5B120A2CCD00C05B7F /* WebError.h */,
@@ -1634,12 +1649,12 @@
BC032DB010F4380F0058C15A /* WebEventConversion.cpp */,
BC032DB110F4380F0058C15A /* WebEventConversion.h */,
1A90C1ED1264FD50003E44D4 /* WebFindOptions.h */,
+ BCCF6ABA12C91EF9008F9C35 /* WebImage.cpp */,
+ BCCF6ABB12C91EF9008F9C35 /* WebImage.h */,
C0337DD2127A2A0E008FF4F4 /* WebKeyboardEvent.cpp */,
C0337DAF127A28D0008FF4F4 /* WebMouseEvent.cpp */,
BCF69F981176CED600471A52 /* WebNavigationDataStore.h */,
BC33DD671238464600360F3F /* WebNumber.h */,
- BC5744ED12638FB3006F0F12 /* WebPopupItem.cpp */,
- BC5744EE12638FB3006F0F12 /* WebPopupItem.h */,
BC857FB412B830E600EDEB2E /* WebOpenPanelParameters.cpp */,
BC857FB312B830E600EDEB2E /* WebOpenPanelParameters.h */,
C06C6093124C14430001682F /* WebPageCreationParameters.cpp */,
@@ -1647,10 +1662,12 @@
BC7B625112A43C9600D174A4 /* WebPageGroupData.cpp */,
BC7B625012A43C9600D174A4 /* WebPageGroupData.h */,
C0337DDC127A521C008FF4F4 /* WebPlatformTouchPoint.cpp */,
- BC306823125A6B9400E71278 /* WebProcessCreationParameters.cpp */,
- BC306822125A6B9400E71278 /* WebProcessCreationParameters.h */,
+ BC5744ED12638FB3006F0F12 /* WebPopupItem.cpp */,
+ BC5744EE12638FB3006F0F12 /* WebPopupItem.h */,
BCD598AB112B7FDF00EC8C23 /* WebPreferencesStore.cpp */,
BCD598AA112B7FDF00EC8C23 /* WebPreferencesStore.h */,
+ BC306823125A6B9400E71278 /* WebProcessCreationParameters.cpp */,
+ BC306822125A6B9400E71278 /* WebProcessCreationParameters.h */,
F634445512A885C8000612D8 /* WebSecurityOrigin.h */,
A72D5D7F1236CBA800A88B15 /* WebSerializedScriptValue.h */,
BCF04C8E11FF9F6E00F86A58 /* WebString.h */,
@@ -2344,6 +2361,15 @@
path = mac;
sourceTree = "<group>";
};
+ BCCF6AC412C91F3B008F9C35 /* cg */ = {
+ isa = PBXGroup;
+ children = (
+ BCCF6AC712C91F59008F9C35 /* WKImageCG.cpp */,
+ BCCF6AC812C91F59008F9C35 /* WKImageCG.h */,
+ );
+ path = cg;
+ sourceTree = "<group>";
+ };
BCDDB314124EBCEF0048D13C /* API */ = {
isa = PBXGroup;
children = (
@@ -2356,6 +2382,7 @@
isa = PBXGroup;
children = (
BC4075D5124FEFFA0068F20A /* cf */,
+ BCCF6AC412C91F3B008F9C35 /* cg */,
BC4075D6124FF0000068F20A /* mac */,
BC4075D7124FF0270068F20A /* WKArray.cpp */,
BC4075D8124FF0270068F20A /* WKArray.h */,
@@ -2374,6 +2401,8 @@
BC40783C1250FADD0068F20A /* WKEvent.h */,
37F623B712A57B6200E3FDF6 /* WKFindOptions.h */,
BCC8B373125FB69000DE46A4 /* WKGeometry.h */,
+ BCCF6AC012C91F34008F9C35 /* WKImage.cpp */,
+ BCCF6AC112C91F34008F9C35 /* WKImage.h */,
BC4075E1124FF0270068F20A /* WKMutableArray.cpp */,
BC4075E2124FF0270068F20A /* WKMutableArray.h */,
BC4075E3124FF0270068F20A /* WKMutableDictionary.cpp */,
@@ -2787,7 +2816,11 @@
1AA417CB12C00CCA002BE67B /* TextChecker.h in Headers */,
1AA41AB512C02EC4002BE67B /* SelectionState.h in Headers */,
BCCF672D12C7EDF7008F9C35 /* OriginAndDatabases.h in Headers */,
+ BCCF6ABD12C91EF9008F9C35 /* WebImage.h in Headers */,
+ BCCF6AC312C91F34008F9C35 /* WKImage.h in Headers */,
+ BCCF6ACA12C91F59008F9C35 /* WKImageCG.h in Headers */,
BCAC111F12C92C1F00B08EEE /* WebDatabaseManagerProxyClient.h in Headers */,
+ BCCF6B2512C93E7A008F9C35 /* ImageOptions.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -3213,6 +3246,9 @@
BC858A2112C0357B00EDEB2E /* WebResourceLoadClient.cpp in Sources */,
1AA417EF12C00D87002BE67B /* TextCheckerMac.mm in Sources */,
BCCF673312C7F15C008F9C35 /* OriginAndDatabases.cpp in Sources */,
+ BCCF6ABC12C91EF9008F9C35 /* WebImage.cpp in Sources */,
+ BCCF6AC212C91F34008F9C35 /* WKImage.cpp in Sources */,
+ BCCF6AC912C91F59008F9C35 /* WKImageCG.cpp in Sources */,
BCAC112012C92C1F00B08EEE /* WebDatabaseManagerProxyClient.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
diff --git a/third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp b/third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp
index 6a70b33..79b6ad3 100644
--- a/third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp
+++ b/third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.cpp
@@ -27,11 +27,12 @@
#include "WKBundlePagePrivate.h"
#include "InjectedBundleBackForwardList.h"
+#include "WKAPICast.h"
+#include "WKBundleAPICast.h"
+#include "WebImage.h"
#include "WebPage.h"
#include "WebURL.h"
#include "WebURLRequest.h"
-#include "WKAPICast.h"
-#include "WKBundleAPICast.h"
#include <WebCore/KURL.h>
@@ -166,3 +167,15 @@ bool WKBundlePageFindString(WKBundlePageRef pageRef, WKStringRef target, WKFindO
{
return toImpl(pageRef)->findStringFromInjectedBundle(toImpl(target)->string(), toFindOptions(findOptions));
}
+
+WKImageRef WKBundlePageCreateSnapshotInViewCoordinates(WKBundlePageRef pageRef, WKRect rect, WKImageOptions options)
+{
+ RefPtr<WebImage> webImage = toImpl(pageRef)->snapshotInViewCoordinates(toIntRect(rect), toImageOptions(options));
+ return toAPI(webImage.release().leakRef());
+}
+
+WKImageRef WKBundlePageCreateSnapshotInDocumentCoordinates(WKBundlePageRef pageRef, WKRect rect, WKImageOptions options)
+{
+ RefPtr<WebImage> webImage = toImpl(pageRef)->snapshotInDocumentCoordinates(toIntRect(rect), toImageOptions(options));
+ return toAPI(webImage.release().leakRef());
+}
diff --git a/third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h b/third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h
index b4a028f..6c700993 100644
--- a/third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h
+++ b/third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h
@@ -29,6 +29,7 @@
#include <WebKit2/WKBase.h>
#include <WebKit2/WKEvent.h>
#include <WebKit2/WKFindOptions.h>
+#include <WebKit2/WKImage.h>
#include <WebKit2/WKPageLoadTypes.h>
#ifndef __cplusplus
@@ -214,6 +215,9 @@ WK_EXPORT bool WKBundlePageCanHandleRequest(WKURLRequestRef request);
WK_EXPORT bool WKBundlePageFindString(WKBundlePageRef page, WKStringRef target, WKFindOptions findOptions);
+WK_EXPORT WKImageRef WKBundlePageCreateSnapshotInViewCoordinates(WKBundlePageRef page, WKRect rect, WKImageOptions options);
+WK_EXPORT WKImageRef WKBundlePageCreateSnapshotInDocumentCoordinates(WKBundlePageRef page, WKRect rect, WKImageOptions options);
+
#ifdef __cplusplus
}
#endif
diff --git a/third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp b/third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp
index 7e9211e..48fcab4 100644
--- a/third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp
+++ b/third_party/WebKit/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp
@@ -134,5 +134,5 @@ WKBundlePageOverlayRef WKBundlePageOverlayCreate(WKBundlePageOverlayClient* wkCl
void WKBundlePageOverlaySetNeedsDisplay(WKBundlePageOverlayRef bundlePageOverlayRef, WKRect rect)
{
- toImpl(bundlePageOverlayRef)->setNeedsDisplay(enclosingIntRect(toImpl(rect)));
+ toImpl(bundlePageOverlayRef)->setNeedsDisplay(enclosingIntRect(toFloatRect(rect)));
}
diff --git a/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp b/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp
index 4df97f1..571321c 100644
--- a/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp
+++ b/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp
@@ -41,14 +41,15 @@
#include "WebContextMenuClient.h"
#include "WebContextMessages.h"
#include "WebCoreArgumentCoders.h"
-#include "WebOpenPanelResultListener.h"
#include "WebDragClient.h"
#include "WebEditorClient.h"
#include "WebEvent.h"
#include "WebEventConversion.h"
#include "WebFrame.h"
+#include "WebImage.h"
#include "WebInspector.h"
#include "WebInspectorClient.h"
+#include "WebOpenPanelResultListener.h"
#include "WebPageCreationParameters.h"
#include "WebPageGroupProxy.h"
#include "WebPageProxyMessages.h"
@@ -587,6 +588,44 @@ void WebPage::uninstallPageOverlay(PageOverlay* pageOverlay)
m_drawingArea->setNeedsDisplay(IntRect(IntPoint(0, 0), m_viewSize));
}
+PassRefPtr<WebImage> WebPage::snapshotInViewCoordinates(const IntRect& rect, ImageOptions options)
+{
+ FrameView* frameView = m_mainFrame->coreFrame()->view();
+ if (!frameView)
+ return 0;
+
+ frameView->updateLayoutAndStyleIfNeededRecursive();
+
+ RefPtr<WebImage> snapshot = WebImage::create(rect.size(), options);
+ OwnPtr<WebCore::GraphicsContext> graphicsContext = snapshot->backingStore()->createGraphicsContext();
+
+ graphicsContext->save();
+ graphicsContext->translate(-rect.x(), -rect.y());
+ frameView->paint(graphicsContext.get(), rect);
+ graphicsContext->restore();
+
+ return snapshot.release();
+}
+
+PassRefPtr<WebImage> WebPage::snapshotInDocumentCoordinates(const IntRect& rect, ImageOptions options)
+{
+ FrameView* frameView = m_mainFrame->coreFrame()->view();
+ if (!frameView)
+ return 0;
+
+ frameView->updateLayoutAndStyleIfNeededRecursive();
+
+ RefPtr<WebImage> snapshot = WebImage::create(rect.size(), options);
+ OwnPtr<WebCore::GraphicsContext> graphicsContext = snapshot->backingStore()->createGraphicsContext();
+
+ graphicsContext->save();
+ graphicsContext->translate(-rect.x(), -rect.y());
+ frameView->paintContents(graphicsContext.get(), rect);
+ graphicsContext->restore();
+
+ return snapshot.release();
+}
+
void WebPage::pageDidScroll()
{
// Hide the find indicator.
diff --git a/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.h b/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.h
index 1cf257c..797478e 100644
--- a/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.h
+++ b/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.h
@@ -29,6 +29,7 @@
#include "APIObject.h"
#include "DrawingArea.h"
#include "FindController.h"
+#include "ImageOptions.h"
#include "InjectedBundlePageContextMenuClient.h"
#include "InjectedBundlePageEditorClient.h"
#include "InjectedBundlePageFormClient.h"
@@ -75,6 +76,7 @@ class WebContextMenu;
class WebContextMenuItemData;
class WebEvent;
class WebFrame;
+class WebImage;
class WebInspector;
class WebKeyboardEvent;
class WebMouseEvent;
@@ -206,6 +208,9 @@ public:
void installPageOverlay(PassRefPtr<PageOverlay>);
void uninstallPageOverlay(PageOverlay*);
+ PassRefPtr<WebImage> snapshotInViewCoordinates(const WebCore::IntRect&, ImageOptions);
+ PassRefPtr<WebImage> snapshotInDocumentCoordinates(const WebCore::IntRect&, ImageOptions);
+
static const WebEvent* currentEvent();
FindController& findController() { return m_findController; }
diff --git a/third_party/WebKit/WebKit2/win/WebKit2.vcproj b/third_party/WebKit/WebKit2/win/WebKit2.vcproj
index 0c88c52..d4fc7d2 100755
--- a/third_party/WebKit/WebKit2/win/WebKit2.vcproj
+++ b/third_party/WebKit/WebKit2/win/WebKit2.vcproj
@@ -567,6 +567,14 @@
>
</File>
<File
+ RelativePath="..\Shared\WebImage.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\Shared\WebImage.h"
+ >
+ </File>
+ <File
RelativePath="..\Shared\WebKeyboardEvent.cpp"
>
</File>
@@ -758,6 +766,14 @@
>
</File>
<File
+ RelativePath="..\Shared\API\c\WKImage.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\Shared\API\c\WKImage.h"
+ >
+ </File>
+ <File
RelativePath="..\Shared\API\c\WKMutableArray.cpp"
>
</File>
@@ -929,6 +945,18 @@
>
</File>
</Filter>
+ <Filter
+ Name="cg"
+ >
+ <File
+ RelativePath="..\Shared\API\c\cg\WKImageCG.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\Shared\API\c\cg\WKImageCG.h"
+ >
+ </File>
+ </Filter>
</Filter>
<Filter
Name="CoreIPCSupport"