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

Reply via email to