Modified: trunk/Source/WebKit2/Shared/UserData.cpp (177749 => 177750)
--- trunk/Source/WebKit2/Shared/UserData.cpp 2014-12-26 20:24:34 UTC (rev 177749)
+++ trunk/Source/WebKit2/Shared/UserData.cpp 2014-12-26 22:16:30 UTC (rev 177750)
@@ -40,8 +40,14 @@
#include "APIURL.h"
#include "APIURLRequest.h"
#include "APIURLResponse.h"
+#include "APIUserContentURLPattern.h"
#include "ArgumentCoders.h"
#include "ArgumentEncoder.h"
+#include "ShareableBitmap.h"
+#include "WebCertificateInfo.h"
+#include "WebImage.h"
+#include "WebRenderLayer.h"
+#include "WebRenderObject.h"
namespace WebKit {
@@ -169,6 +175,12 @@
static_cast<const API::Boolean&>(object).encode(encoder);
break;
+ case API::Object::Type::CertificateInfo: {
+ const auto& certificateInfo = static_cast<const WebCertificateInfo&>(object);
+ encoder << certificateInfo.certificateInfo();
+ break;
+ }
+
case API::Object::Type::Data:
static_cast<const API::Data&>(object).encode(encoder);
break;
@@ -197,6 +209,23 @@
static_cast<const API::FrameHandle&>(object).encode(encoder);
break;
+ case API::Object::Type::Image: {
+ auto& image = static_cast<const WebImage&>(object);
+
+ ShareableBitmap::Handle handle;
+ ASSERT(!image.bitmap() || image.bitmap()->isBackedBySharedMemory());
+ if (!image.bitmap() || !image.bitmap()->isBackedBySharedMemory() || !image.bitmap()->createHandle(handle)) {
+ // Initial false indicates no allocated bitmap or is not shareable.
+ encoder << false;
+ break;
+ }
+
+ // Initial true indicates a bitmap was allocated and is shareable.
+ encoder << true;
+ encoder << handle;
+ break;
+ }
+
case API::Object::Type::PageGroupHandle:
static_cast<const API::PageGroupHandle&>(object).encode(encoder);
break;
@@ -213,6 +242,38 @@
static_cast<const API::Rect&>(object).encode(encoder);
break;
+ case API::Object::Type::RenderLayer: {
+ auto& renderLayer = static_cast<const WebRenderLayer&>(object);
+
+ encode(encoder, renderLayer.renderer());
+ encoder << renderLayer.isReflection();
+ encoder << renderLayer.isClipping();
+ encoder << renderLayer.isClipped();
+ encoder << static_cast<uint32_t>(renderLayer.compositingLayerType());
+ encoder << renderLayer.absoluteBoundingBox();
+ encoder << renderLayer.backingStoreMemoryEstimate();
+ encode(encoder, renderLayer.negativeZOrderList());
+ encode(encoder, renderLayer.normalFlowList());
+ encode(encoder, renderLayer.positiveZOrderList());
+ encode(encoder, renderLayer.frameContentsLayer());
+ break;
+ }
+
+ case API::Object::Type::RenderObject: {
+ auto& renderObject = static_cast<const WebRenderObject&>(object);
+
+ encoder << renderObject.name();
+ encoder << renderObject.elementTagName();
+ encoder << renderObject.elementID();
+ encode(encoder, renderObject.elementClassNames());
+ encoder << renderObject.absolutePosition();
+ encoder << renderObject.frameRect();
+ encoder << renderObject.textSnippet();
+ encoder << renderObject.textLength();
+ encode(encoder, renderObject.children());
+ break;
+ }
+
case API::Object::Type::SerializedScriptValue: {
auto& serializedScriptValue = static_cast<const API::SerializedScriptValue&>(object);
encoder << serializedScriptValue.dataReference();
@@ -245,6 +306,12 @@
static_cast<const API::UInt64&>(object).encode(encoder);
break;
+ case API::Object::Type::UserContentURLPattern: {
+ auto& urlPattern = static_cast<const API::UserContentURLPattern&>(object);
+ encoder << urlPattern.patternString();
+ break;
+ }
+
default:
ASSERT_NOT_REACHED();
}
@@ -280,6 +347,14 @@
return false;
break;
+ case API::Object::Type::CertificateInfo: {
+ WebCore::CertificateInfo certificateInfo;
+ if (!decoder.decode(certificateInfo))
+ return false;
+ result = WebCertificateInfo::create(certificateInfo);
+ break;
+ }
+
case API::Object::Type::Data:
if (!API::Data::decode(decoder, result))
return false;
@@ -323,6 +398,22 @@
return false;
break;
+ case API::Object::Type::Image: {
+ bool didEncode = false;
+ if (!decoder.decode(didEncode))
+ return false;
+
+ if (!didEncode)
+ break;
+
+ ShareableBitmap::Handle handle;
+ if (!decoder.decode(handle))
+ return false;
+
+ result = WebImage::create(ShareableBitmap::create(handle));
+ break;
+ }
+
case API::Object::Type::Null:
result = nullptr;
break;
@@ -347,6 +438,83 @@
return false;
break;
+ case API::Object::Type::RenderLayer: {
+ RefPtr<API::Object> renderer;
+ bool isReflection;
+ bool isClipping;
+ bool isClipped;
+ uint32_t compositingLayerTypeAsUInt32;
+ WebCore::IntRect absoluteBoundingBox;
+ double backingStoreMemoryEstimate;
+ RefPtr<API::Object> negativeZOrderList;
+ RefPtr<API::Object> normalFlowList;
+ RefPtr<API::Object> positiveZOrderList;
+ RefPtr<API::Object> frameContentsLayer;
+
+ if (!decode(decoder, renderer))
+ return false;
+ if (renderer->type() != API::Object::Type::RenderObject)
+ return false;
+ if (!decoder.decode(isReflection))
+ return false;
+ if (!decoder.decode(isClipping))
+ return false;
+ if (!decoder.decode(isClipped))
+ return false;
+ if (!decoder.decode(compositingLayerTypeAsUInt32))
+ return false;
+ if (!decoder.decode(absoluteBoundingBox))
+ return false;
+ if (!decoder.decode(backingStoreMemoryEstimate))
+ return false;
+ if (!decode(decoder, negativeZOrderList))
+ return false;
+ if (!decode(decoder, normalFlowList))
+ return false;
+ if (!decode(decoder, positiveZOrderList))
+ return false;
+ if (!decode(decoder, frameContentsLayer))
+ return false;
+
+ result = WebRenderLayer::create(static_pointer_cast<WebRenderObject>(renderer), isReflection, isClipping, isClipped, static_cast<WebRenderLayer::CompositingLayerType>(compositingLayerTypeAsUInt32), absoluteBoundingBox, backingStoreMemoryEstimate, static_pointer_cast<API::Array>(negativeZOrderList), static_pointer_cast<API::Array>(normalFlowList), static_pointer_cast<API::Array>(positiveZOrderList), static_pointer_cast<WebRenderLayer>(frameContentsLayer));
+ break;
+ }
+
+ case API::Object::Type::RenderObject: {
+ String name;
+ String textSnippet;
+ String elementTagName;
+ String elementID;
+ unsigned textLength;
+ RefPtr<API::Object> elementClassNames;
+ WebCore::IntPoint absolutePosition;
+ WebCore::IntRect frameRect;
+ RefPtr<API::Object> children;
+
+ if (!decoder.decode(name))
+ return false;
+ if (!decoder.decode(elementTagName))
+ return false;
+ if (!decoder.decode(elementID))
+ return false;
+ if (!decode(decoder, elementClassNames))
+ return false;
+ if (!decoder.decode(absolutePosition))
+ return false;
+ if (!decoder.decode(frameRect))
+ return false;
+ if (!decoder.decode(textSnippet))
+ return false;
+ if (!decoder.decode(textLength))
+ return false;
+ if (!decode(decoder, children))
+ return false;
+ if (children && children->type() != API::Object::Type::Array)
+ return false;
+ result = WebRenderObject::create(name, elementTagName, elementID, static_pointer_cast<API::Array>(elementClassNames), absolutePosition, frameRect, textSnippet, textLength, static_pointer_cast<API::Array>(children));
+ break;
+ }
+
case API::Object::Type::SerializedScriptValue: {
IPC::DataReference dataReference;
if (!decoder.decode(dataReference))
@@ -391,6 +559,14 @@
return false;
break;
+ case API::Object::Type::UserContentURLPattern: {
+ String string;
+ if (!decoder.decode(string))
+ return false;
+ result = API::UserContentURLPattern::create(string);
+ break;
+ }
+
default:
ASSERT_NOT_REACHED();
}