Title: [177698] trunk/Source/WebKit2
- Revision
- 177698
- Author
- [email protected]
- Date
- 2014-12-23 15:06:10 -0800 (Tue, 23 Dec 2014)
Log Message
Add WebProcess::transformObjectsToHandles
https://bugs.webkit.org/show_bug.cgi?id=139918
Reviewed by Tim Horton.
This function will be used for transforming bundle objects to their respective handle types
when sending messages to the UI process.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::transformHandlesToObjects):
(WebKit::WebProcess::transformObjectsToHandles):
* WebProcess/WebProcess.h:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::transformHandlesToObjects):
(WebKit::WebProcess::transformObjectsToHandles):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (177697 => 177698)
--- trunk/Source/WebKit2/ChangeLog 2014-12-23 22:27:11 UTC (rev 177697)
+++ trunk/Source/WebKit2/ChangeLog 2014-12-23 23:06:10 UTC (rev 177698)
@@ -1,5 +1,23 @@
2014-12-23 Anders Carlsson <[email protected]>
+ Add WebProcess::transformObjectsToHandles
+ https://bugs.webkit.org/show_bug.cgi?id=139918
+
+ Reviewed by Tim Horton.
+
+ This function will be used for transforming bundle objects to their respective handle types
+ when sending messages to the UI process.
+
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::transformHandlesToObjects):
+ (WebKit::WebProcess::transformObjectsToHandles):
+ * WebProcess/WebProcess.h:
+ * WebProcess/cocoa/WebProcessCocoa.mm:
+ (WebKit::WebProcess::transformHandlesToObjects):
+ (WebKit::WebProcess::transformObjectsToHandles):
+
+2014-12-23 Anders Carlsson <[email protected]>
+
Move dynamic_objc_cast to RetainPtr.h
https://bugs.webkit.org/show_bug.cgi?id=139915
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.cpp (177697 => 177698)
--- trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2014-12-23 22:27:11 UTC (rev 177697)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.cpp 2014-12-23 23:06:10 UTC (rev 177698)
@@ -1229,7 +1229,12 @@
RefPtr<API::Object> WebProcess::transformHandlesToObjects(API::Object* object)
{
- struct Transformer : UserData::Transformer {
+ struct Transformer final : UserData::Transformer {
+ Transformer(WebProcess& webProcess)
+ : m_webProcess(webProcess)
+ {
+ }
+
virtual bool shouldTransformObjectOfType(API::Object::Type type) const
{
switch (type) {
@@ -1249,32 +1254,84 @@
virtual RefPtr<API::Object> transformObject(API::Object& object) const override
{
switch (object.type()) {
- case API::Object::Type::FrameHandle: {
- auto& frameHandle = static_cast<const API::FrameHandle&>(object);
+ case API::Object::Type::FrameHandle:
+ return m_webProcess.webFrame(static_cast<const API::FrameHandle&>(object).frameID());
- return WebProcess::shared().webFrame(frameHandle.frameID());
+ case API::Object::Type::PageGroupHandle:
+ return m_webProcess.webPageGroup(static_cast<const API::PageGroupHandle&>(object).webPageGroupData());
+
+ case API::Object::Type::PageHandle:
+ return m_webProcess.webPage(static_cast<const API::PageHandle&>(object).pageID());
+
+#if PLATFORM(COCOA)
+ case API::Object::Type::ObjCObjectGraph:
+ return m_webProcess.transformHandlesToObjects(static_cast<ObjCObjectGraph&>(object));
+#endif
+ default:
+ return &object;
}
+ }
- case API::Object::Type::PageGroupHandle: {
- auto& pageGroupHandle = static_cast<const API::PageGroupHandle&>(object);
+ WebProcess& m_webProcess;
+ };
- return WebProcess::shared().webPageGroup(pageGroupHandle.webPageGroupData());
+ return UserData::transform(object, Transformer(*this));
+}
+
+RefPtr<API::Object> WebProcess::transformObjectsToHandles(API::Object* object)
+{
+ struct Transformer final : UserData::Transformer {
+ Transformer(WebProcess& webProcess)
+ : m_webProcess(webProcess)
+ {
+ }
+
+ virtual bool shouldTransformObjectOfType(API::Object::Type type) const override
+ {
+ switch (type) {
+ case API::Object::Type::BundleFrame:
+ case API::Object::Type::BundlePage:
+ case API::Object::Type::BundlePageGroup:
+#if PLATFORM(COCOA)
+ case API::Object::Type::ObjCObjectGraph:
+#endif
+ return true;
+
+ default:
+ return false;
}
+ }
- case API::Object::Type::PageHandle: {
- auto& pageHandle = static_cast<const API::PageHandle&>(object);
+ virtual RefPtr<API::Object> transformObject(API::Object& object) const override
+ {
+ switch (object.type()) {
+ case API::Object::Type::BundleFrame:
+ return API::FrameHandle::create(static_cast<const WebFrame&>(object).frameID());
- return WebProcess::shared().webPage(pageHandle.pageID());
+ case API::Object::Type::BundlePage:
+ return API::PageHandle::create(static_cast<const WebPage&>(object).pageID());
+
+ case API::Object::Type::BundlePageGroup: {
+ WebPageGroupData pageGroupData;
+ pageGroupData.pageGroupID = static_cast<const WebPageGroupProxy&>(object).pageGroupID();
+
+ return API::PageGroupHandle::create(WTF::move(pageGroupData));
}
+#if PLATFORM(COCOA)
+ case API::Object::Type::ObjCObjectGraph:
+ return m_webProcess.transformObjectsToHandles(static_cast<ObjCObjectGraph&>(object));
+#endif
+
default:
return &object;
}
}
- } transformer;
- return UserData::transform(object, transformer);
+ WebProcess& m_webProcess;
+ };
+ return UserData::transform(object, Transformer(*this));
}
void WebProcess::setMemoryCacheDisabled(bool disabled)
Modified: trunk/Source/WebKit2/WebProcess/WebProcess.h (177697 => 177698)
--- trunk/Source/WebKit2/WebProcess/WebProcess.h 2014-12-23 22:27:11 UTC (rev 177697)
+++ trunk/Source/WebKit2/WebProcess/WebProcess.h 2014-12-23 23:06:10 UTC (rev 177698)
@@ -188,6 +188,7 @@
#endif
RefPtr<API::Object> transformHandlesToObjects(API::Object*);
+ RefPtr<API::Object> transformObjectsToHandles(API::Object*);
#if ENABLE(SERVICE_CONTROLS)
bool hasImageServices() const { return m_hasImageServices; }
Modified: trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm (177697 => 177698)
--- trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm 2014-12-23 22:27:11 UTC (rev 177697)
+++ trunk/Source/WebKit2/WebProcess/cocoa/WebProcessCocoa.mm 2014-12-23 23:06:10 UTC (rev 177698)
@@ -303,7 +303,7 @@
virtual bool shouldTransformObject(id object) const override
{
- if ([object isKindOfClass:[WKBrowsingContextHandle class]])
+ if (dynamic_objc_cast<WKBrowsingContextHandle>(object))
return true;
return false;
@@ -311,8 +311,8 @@
virtual RetainPtr<id> transformObject(id object) const
{
- if ([object isKindOfClass:[WKBrowsingContextHandle class]]) {
- if (auto* webPage = m_webProcess.webPage(((WKBrowsingContextHandle *)object)._pageID))
+ if (auto* handle = dynamic_objc_cast<WKBrowsingContextHandle>(object)) {
+ if (auto* webPage = m_webProcess.webPage(handle._pageID))
return wrapper(*webPage);
return [NSNull null];
@@ -332,7 +332,7 @@
struct Transformer final : ObjCObjectGraph::Transformer {
virtual bool shouldTransformObject(id object) const override
{
- if ([object isKindOfClass:[WKWebProcessPlugInBrowserContextController class]])
+ if (dynamic_objc_cast<WKWebProcessPlugInBrowserContextController>(object))
return true;
return false;
@@ -340,8 +340,8 @@
virtual RetainPtr<id> transformObject(id object) const
{
- if ([object isKindOfClass:[WKWebProcessPlugInBrowserContextController class]])
- return ((WKWebProcessPlugInBrowserContextController *)object).handle;
+ if (auto* controller = dynamic_objc_cast<WKWebProcessPlugInBrowserContextController>(object))
+ return controller.handle;
return object;
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes