[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

weinig at apple.com weinig at apple.com
Wed Dec 22 14:18:59 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 55ecae38f938b97e02c00b00934d963b370bdf70
Author: weinig at apple.com <weinig at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Oct 6 17:31:40 2010 +0000

    Generate the messages sent to the WebPageProxy
    https://bugs.webkit.org/show_bug.cgi?id=47239
    
    Reviewed by Adam Roben.
    
    * Platform/CoreIPC/Arguments.h:
    Add additional typedefs.
    
    * Platform/CoreIPC/HandleMessage.h:
    (CoreIPC::handleMessage):
    Add more handleMessage implementations.
    
    * Scripts/webkit2/messages.py:
    * Scripts/webkit2/messages_unittest.py:
    Add headers for reply argument types.
    
    * Shared/CoreIPCSupport/WebPageProxyMessageKinds.h: Removed.
    
    * Shared/StringPairVector.h: Added.
    This file is a hack to work around a deficiency in the generator
    which can't deal with class templates with more than one argument.
    
    * UIProcess/API/mac/PageClientImpl.h:
    * UIProcess/API/mac/PageClientImpl.mm:
    * UIProcess/API/qt/qwkpage.cpp:
    * UIProcess/API/qt/qwkpage_p.h:
    * UIProcess/PageClient.h:
    * UIProcess/WebEditCommandProxy.cpp:
    * UIProcess/WebFormClient.cpp:
    * UIProcess/WebFormClient.h:
    * UIProcess/WebPageProxy.cpp:
    * UIProcess/WebPageProxy.h:
    * WebProcess/WebCoreSupport/WebChromeClient.cpp:
    * WebProcess/WebCoreSupport/WebEditorClient.cpp:
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
    * WebProcess/WebPage/WebBackForwardListProxy.cpp:
    * WebProcess/WebPage/WebPage.cpp:
    Migrate to generated calls.
    
    * UIProcess/WebPageProxy.messages.in: Added.
    New messages definitions file.
    
    * DerivedSources.make:
    * DerivedSources.pro:
    * win/WebKit2.vcproj:
    * WebKit2.pro:
    * WebKit2.xcodeproj/project.pbxproj:
    Add new files.
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@69210 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 1251f91..19ab2ac 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,54 @@
+2010-10-06  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Adam Roben.
+
+        Generate the messages sent to the WebPageProxy
+        https://bugs.webkit.org/show_bug.cgi?id=47239
+
+        * Platform/CoreIPC/Arguments.h:
+        Add additional typedefs.
+
+        * Platform/CoreIPC/HandleMessage.h:
+        (CoreIPC::handleMessage):
+        Add more handleMessage implementations.
+
+        * Scripts/webkit2/messages.py:
+        * Scripts/webkit2/messages_unittest.py:
+        Add headers for reply argument types.
+
+        * Shared/CoreIPCSupport/WebPageProxyMessageKinds.h: Removed.
+
+        * Shared/StringPairVector.h: Added.
+        This file is a hack to work around a deficiency in the generator
+        which can't deal with class templates with more than one argument.
+
+        * UIProcess/API/mac/PageClientImpl.h:
+        * UIProcess/API/mac/PageClientImpl.mm:
+        * UIProcess/API/qt/qwkpage.cpp:
+        * UIProcess/API/qt/qwkpage_p.h:
+        * UIProcess/PageClient.h:
+        * UIProcess/WebEditCommandProxy.cpp:
+        * UIProcess/WebFormClient.cpp:
+        * UIProcess/WebFormClient.h:
+        * UIProcess/WebPageProxy.cpp:
+        * UIProcess/WebPageProxy.h:
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
+        * WebProcess/WebPage/WebPage.cpp:
+        Migrate to generated calls.
+
+        * UIProcess/WebPageProxy.messages.in: Added.
+        New messages definitions file.
+
+        * DerivedSources.make:
+        * DerivedSources.pro:
+        * win/WebKit2.vcproj:
+        * WebKit2.pro:
+        * WebKit2.xcodeproj/project.pbxproj:
+        Add new files.
+
 2010-10-05  Anders Carlsson  <andersca at apple.com>
 
         Reviewed by Sam Weinig.
diff --git a/WebKit2/DerivedSources.make b/WebKit2/DerivedSources.make
index 34c9cb3..0138282 100644
--- a/WebKit2/DerivedSources.make
+++ b/WebKit2/DerivedSources.make
@@ -3,6 +3,7 @@ VPATH = \
     $(WebKit2)/WebProcess/Plugins \
     $(WebKit2)/WebProcess/WebPage \
     $(WebKit2)/WebProcess \
+    $(WebKit2)/UIProcess \
     $(WebKit2)/UIProcess/Plugins \
 #
 
@@ -12,6 +13,7 @@ MESSAGE_RECEIVERS = \
     PluginProcessProxy \
     PluginProxy \
     WebPage \
+    WebPageProxy \
     WebProcess \
     WebProcessConnection \
 #
diff --git a/WebKit2/DerivedSources.pro b/WebKit2/DerivedSources.pro
index b73e935..8c5cad5 100644
--- a/WebKit2/DerivedSources.pro
+++ b/WebKit2/DerivedSources.pro
@@ -52,6 +52,18 @@ messagereceiver_generator.target   = $${OUTPUT_DIR}/WebKit2/generated/WebPageMes
 generated_files.depends            += messagereceiver_generator
 QMAKE_EXTRA_TARGETS                += messagereceiver_generator
 
+processmessageheader_generator.commands = python $${SRC_ROOT_DIR}/WebKit2/Scripts/generate-messages-header.py  $${SRC_ROOT_DIR}/WebKit2/UIProcess/WebPageProxy.messages.in > $$OUTPUT_DIR/WebKit2/generated/WebPageProxyMessages.h
+processmessageheader_generator.depends  = $${SRC_ROOT_DIR}/WebKit2/Scripts/generate-messages-header.py $${SRC_ROOT_DIR}/UIProcess/WebPageProxy/WebProcess.messages.in
+processmessageheader_generator.target   = $${OUTPUT_DIR}/WebKit2/generated/WebPageProxyMessages.h
+generated_files.depends                 += processmessageheader_generator
+QMAKE_EXTRA_TARGETS                     += processmessageheader_generator
+
+processmessagereceiver_generator.commands = python $${SRC_ROOT_DIR}/WebKit2/Scripts/generate-message-receiver.py  $${SRC_ROOT_DIR}/WebKit2/UIProcess/WebPageProxy.messages.in > $$OUTPUT_DIR/WebKit2/generated/WebPageProxyMessageReceiver.cpp
+processmessagereceiver_generator.depends  = $${SRC_ROOT_DIR}/WebKit2/Scripts/generate-message-receiver.py $${SRC_ROOT_DIR}/WebKit2/UIProcess/WebPageProxy.messages.in
+processmessagereceiver_generator.target   = $${OUTPUT_DIR}/WebKit2/generated/WebPageProxyMessageReceiver.cpp
+generated_files.depends                   += processmessagereceiver_generator
+QMAKE_EXTRA_TARGETS                       += processmessagereceiver_generator
+
 processmessageheader_generator.commands = python $${SRC_ROOT_DIR}/WebKit2/Scripts/generate-messages-header.py  $${SRC_ROOT_DIR}/WebKit2/WebProcess/WebProcess.messages.in > $$OUTPUT_DIR/WebKit2/generated/WebProcessMessages.h
 processmessageheader_generator.depends  = $${SRC_ROOT_DIR}/WebKit2/Scripts/generate-messages-header.py $${SRC_ROOT_DIR}/WebKit2/WebProcess/WebProcess.messages.in
 processmessageheader_generator.target   = $${OUTPUT_DIR}/WebKit2/generated/WebProcessMessages.h
diff --git a/WebKit2/Platform/CoreIPC/Arguments.h b/WebKit2/Platform/CoreIPC/Arguments.h
index 63ec22d..42b6cba 100644
--- a/WebKit2/Platform/CoreIPC/Arguments.h
+++ b/WebKit2/Platform/CoreIPC/Arguments.h
@@ -208,6 +208,12 @@ template<typename T1, typename T2, typename T3, typename T4> Arguments4<T1&, T2&
 
 template<typename T1, typename T2, typename T3, typename T4, typename T5> class Arguments5 : Arguments4<T1, T2, T3, T4> {
 public:
+    typedef T1 FirstArgumentType;
+    typedef T2 SecondArgumentType;
+    typedef T3 ThirdArgumentType;
+    typedef T4 FourthArgumentType;
+    typedef T5 FifthArgumentType;
+
     Arguments5(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
         : Arguments4<T1, T2, T3, T4>(t1, t2, t3, t4)
         , m_value(t5)
diff --git a/WebKit2/Platform/CoreIPC/HandleMessage.h b/WebKit2/Platform/CoreIPC/HandleMessage.h
index 46686fb..0a277ae 100644
--- a/WebKit2/Platform/CoreIPC/HandleMessage.h
+++ b/WebKit2/Platform/CoreIPC/HandleMessage.h
@@ -1,3 +1,28 @@
+/*
+ * 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 HandleMessage_h
 #define HandleMessage_h
 
@@ -21,6 +46,12 @@ void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(P)
     (object->*function)(argument);
 }
 
+template<typename T, typename C>
+void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(CoreIPC::ArgumentDecoder*))
+{
+    (object->*function)(arguments);
+}
+
 template<typename T, typename C, typename P1, typename P2>
 void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(P1, P2))
 {
@@ -33,6 +64,15 @@ void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(P1
     (object->*function)(firstArgument, secondArgument);
 }
 
+template<typename T, typename C, typename P1>
+void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(P1, CoreIPC::ArgumentDecoder*))
+{
+    typename RemoveReference<typename T::FirstArgumentType>::Type firstArgument;
+    if (!arguments->decode(firstArgument))
+        return;
+    (object->*function)(firstArgument, arguments);
+}
+
 template<typename T, typename C, typename P1, typename P2, typename P3>
 void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(P1, P2, P3))
 {
@@ -48,6 +88,90 @@ void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(P1
     (object->*function)(firstArgument, secondArgument, thirdArgument);
 }
 
+template<typename T, typename C, typename P1, typename P2>
+void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(P1, P2, CoreIPC::ArgumentDecoder*))
+{
+    typename RemoveReference<typename T::FirstArgumentType>::Type firstArgument;
+    if (!arguments->decode(firstArgument))
+        return;
+    typename RemoveReference<typename T::SecondArgumentType>::Type secondArgument;
+    if (!arguments->decode(secondArgument))
+        return;
+    (object->*function)(firstArgument, secondArgument, arguments);
+}
+
+template<typename T, typename C, typename P1, typename P2, typename P3, typename P4>
+void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(P1, P2, P3, P4))
+{
+    typename RemoveReference<typename T::FirstArgumentType>::Type firstArgument;
+    if (!arguments->decode(firstArgument))
+        return;
+    typename RemoveReference<typename T::SecondArgumentType>::Type secondArgument;
+    if (!arguments->decode(secondArgument))
+        return;
+    typename RemoveReference<typename T::ThirdArgumentType>::Type thirdArgument;
+    if (!arguments->decode(thirdArgument))
+        return;
+    typename RemoveReference<typename T::FourthArgumentType>::Type fourthArgument;
+    if (!arguments->decode(fourthArgument))
+        return;
+    (object->*function)(firstArgument, secondArgument, thirdArgument, fourthArgument);
+}
+
+template<typename T, typename C, typename P1, typename P2, typename P3>
+void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(P1, P2, P3, CoreIPC::ArgumentDecoder*))
+{
+    typename RemoveReference<typename T::FirstArgumentType>::Type firstArgument;
+    if (!arguments->decode(firstArgument))
+        return;
+    typename RemoveReference<typename T::SecondArgumentType>::Type secondArgument;
+    if (!arguments->decode(secondArgument))
+        return;
+    typename RemoveReference<typename T::ThirdArgumentType>::Type thirdArgument;
+    if (!arguments->decode(thirdArgument))
+        return;
+    (object->*function)(firstArgument, secondArgument, thirdArgument, arguments);
+}
+
+template<typename T, typename C, typename P1, typename P2, typename P3, typename P4, typename P5>
+void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(P1, P2, P3, P4, P5))
+{
+    typename RemoveReference<typename T::FirstArgumentType>::Type firstArgument;
+    if (!arguments->decode(firstArgument))
+        return;
+    typename RemoveReference<typename T::SecondArgumentType>::Type secondArgument;
+    if (!arguments->decode(secondArgument))
+        return;
+    typename RemoveReference<typename T::ThirdArgumentType>::Type thirdArgument;
+    if (!arguments->decode(thirdArgument))
+        return;
+    typename RemoveReference<typename T::FourthArgumentType>::Type fourthArgument;
+    if (!arguments->decode(fourthArgument))
+        return;
+    typename RemoveReference<typename T::FifthArgumentType>::Type fifthArgument;
+    if (!arguments->decode(fifthArgument))
+        return;
+    (object->*function)(firstArgument, secondArgument, thirdArgument, fourthArgument, fifthArgument);
+}
+
+template<typename T, typename C, typename P1, typename P2, typename P3, typename P4>
+void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(P1, P2, P3, P4, CoreIPC::ArgumentDecoder*))
+{
+    typename RemoveReference<typename T::FirstArgumentType>::Type firstArgument;
+    if (!arguments->decode(firstArgument))
+        return;
+    typename RemoveReference<typename T::SecondArgumentType>::Type secondArgument;
+    if (!arguments->decode(secondArgument))
+        return;
+    typename RemoveReference<typename T::ThirdArgumentType>::Type thirdArgument;
+    if (!arguments->decode(thirdArgument))
+        return;
+    typename RemoveReference<typename T::FourthArgumentType>::Type fourthArgument;
+    if (!arguments->decode(fourthArgument))
+        return;
+    (object->*function)(firstArgument, secondArgument, thirdArgument, fourthArgument, arguments);
+}
+
 template<typename T, typename C, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
 void handleMessage(ArgumentDecoder* arguments, C* object, void (C::*function)(P1, P2, P3, P4, P5, P6))
 {
@@ -109,6 +233,52 @@ void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object
     (object->*function)(firstArgument);
 }
 
+template<typename T, typename C, typename P1, typename P2>
+void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object, void (C::*function)(P1, P2))
+{
+    typename RemoveReference<typename T::FirstArgumentType>::Type firstArgument;
+    if (!arguments->decode(firstArgument))
+        return;
+
+    typename RemoveReference<typename T::SecondArgumentType>::Type secondArgument;
+    if (!arguments->decode(secondArgument))
+        return;
+
+    (object->*function)(firstArgument, secondArgument);
+}
+
+template<typename T, typename C, typename P1, typename P2>
+void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object, void (C::*function)(P1, const P2&))
+{
+    typename RemoveReference<typename T::FirstArgumentType>::Type firstArgument;
+    if (!arguments->decode(firstArgument))
+        return;
+
+    typename RemoveReference<typename T::SecondArgumentType>::Type secondArgument;
+    if (!arguments->decode(secondArgument))
+        return;
+
+    (object->*function)(firstArgument, secondArgument);
+}
+
+template<typename T, typename C, typename R1>
+void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object, void (C::*function)(R1&))
+{
+    typename RemoveReference<typename T::Reply::FirstArgumentType>::Type firstReplyArgument;
+    (object->*function)(firstReplyArgument);
+    reply->encode(firstReplyArgument);
+}
+
+template<typename T, typename C, typename R1, typename R2>
+void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object, void (C::*function)(R1&, R2&))
+{
+    typename RemoveReference<typename T::Reply::FirstArgumentType>::Type firstReplyArgument;
+    typename RemoveReference<typename T::Reply::SecondArgumentType>::Type secondReplyArgument;
+    (object->*function)(firstReplyArgument, secondReplyArgument);
+    reply->encode(firstReplyArgument);
+    reply->encode(secondReplyArgument);
+}
+
 template<typename T, typename C, typename P1, typename R1>
 void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object, void (C::*function)(P1, R1&))
 {
@@ -121,6 +291,22 @@ void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object
     reply->encode(firstReplyArgument);
 }
 
+template<typename T, typename C, typename P1, typename P2, typename R1>
+void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object, void (C::*function)(P1, P2, R1&))
+{
+    typename RemoveReference<typename T::FirstArgumentType>::Type firstArgument;
+    if (!arguments->decode(firstArgument))
+        return;
+
+    typename RemoveReference<typename T::SecondArgumentType>::Type secondArgument;
+    if (!arguments->decode(secondArgument))
+        return;
+    
+    typename RemoveReference<typename T::Reply::FirstArgumentType>::Type firstReplyArgument;
+    (object->*function)(firstArgument, secondArgument, firstReplyArgument);
+    reply->encode(firstReplyArgument);
+}
+
 template<typename T, typename C, typename P1, typename P2, typename P3, typename R1>
 void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object, void (C::*function)(P1, P2, P3, R1&))
 {
@@ -165,22 +351,6 @@ void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object
     reply->encode(firstReplyArgument);
 }
 
-template<typename T, typename C, typename P1, typename P2, typename R1>
-void handleMessage(ArgumentDecoder* arguments, ArgumentEncoder* reply, C* object, void (C::*function)(P1, P2, R1&))
-{
-    typename RemoveReference<typename T::FirstArgumentType>::Type firstArgument;
-    if (!arguments->decode(firstArgument))
-        return;
-
-    typename RemoveReference<typename T::SecondArgumentType>::Type secondArgument;
-    if (!arguments->decode(secondArgument))
-        return;
-    
-    typename RemoveReference<typename T::Reply::FirstArgumentType>::Type firstReplyArgument;
-    (object->*function)(firstArgument, secondArgument, firstReplyArgument);
-    reply->encode(firstReplyArgument);
-}
-
 } // namespace CoreIPC
 
 #endif // HandleMessage_h
diff --git a/WebKit2/Scripts/webkit2/messages.py b/WebKit2/Scripts/webkit2/messages.py
index 6f2d263..8dfad55 100644
--- a/WebKit2/Scripts/webkit2/messages.py
+++ b/WebKit2/Scripts/webkit2/messages.py
@@ -144,12 +144,16 @@ def function_parameter_type(type):
     # Don't use references for built-in types.
     builtin_types = frozenset([
         'bool',
-        'float',
         'double',
-        'uint8_t',
+        'float',
+        'int16_t',
+        'int32_t',
+        'int64_t',
+        'int8_t',
         'uint16_t',
         'uint32_t',
         'uint64_t',
+        'uint8_t',
     ])
 
     if type in builtin_types:
@@ -322,6 +326,7 @@ def argument_coder_headers_for_type(type):
 
     special_cases = {
         'WTF::String': '"ArgumentCoders.h"',
+        'WebKit::InjectedBundleUserMessageEncoder': '"InjectedBundleUserMessageCoders.h"',
     }
 
     if type in special_cases:
@@ -381,6 +386,18 @@ def generate_message_handler(file):
         type_headers = headers_for_type(type)
         headers.update(type_headers)
 
+    for message in receiver.messages:
+        if message.reply_parameters is not None:
+            for reply_parameter in message.reply_parameters:
+                type = reply_parameter.type
+                argument_encoder_headers = argument_coder_headers_for_type(type)
+                if argument_encoder_headers:
+                    headers.update(argument_encoder_headers)
+                    continue
+
+                type_headers = headers_for_type(type)
+                headers.update(type_headers)
+
     result = []
 
     result.append(_license_header)
diff --git a/WebKit2/Scripts/webkit2/messages_unittest.py b/WebKit2/Scripts/webkit2/messages_unittest.py
index 3b45680..6826d5c 100644
--- a/WebKit2/Scripts/webkit2/messages_unittest.py
+++ b/WebKit2/Scripts/webkit2/messages_unittest.py
@@ -419,9 +419,11 @@ _expected_receiver_implementation = """/*
 
 #include "ArgumentCoders.h"
 #include "ArgumentDecoder.h"
+#include "Connection.h"
 #include "HandleMessage.h"
 #include "MachPort.h"
 #include "Plugin.h"
+#include "WebCoreArgumentCoders.h"
 #include "WebEvent.h"
 #include "WebPageMessages.h"
 #include "WebPreferencesStore.h"
diff --git a/WebKit2/Shared/CoreIPCSupport/WebPageProxyMessageKinds.h b/WebKit2/Shared/CoreIPCSupport/WebPageProxyMessageKinds.h
deleted file mode 100644
index 06bc6d2..0000000
--- a/WebKit2/Shared/CoreIPCSupport/WebPageProxyMessageKinds.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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 WebPageProxyMessageKinds_h
-#define WebPageProxyMessageKinds_h
-
-#include "MessageID.h"
-
-// Messages sent from the web process to the WebPageProxy.
-
-namespace WebPageProxyMessage {
-
-enum Kind {
-    CreateNewPage,
-    ShowPage,
-    RunJavaScriptAlert,
-    RunJavaScriptConfirm,
-    RunJavaScriptPrompt,
-
-    ClosePage,
-    ContentsSizeChanged,
-    DecidePolicyForMIMEType,
-    DecidePolicyForNavigationAction,
-    DecidePolicyForNewWindowAction,
-    DidChangeProgress,
-    DidCommitLoadForFrame,
-    DidCreateMainFrame,
-    DidCreateSubFrame,
-    DidFailLoadForFrame,
-    DidFailProvisionalLoadForFrame,
-    DidFinishDocumentLoadForFrame,
-    DidFinishLoadForFrame,
-    DidFinishProgress,
-    DidFirstLayoutForFrame,
-    DidFirstVisuallyNonEmptyLayoutForFrame,
-    DidGetRenderTreeExternalRepresentation,
-    DidGetSourceForFrame,
-    DidReceiveEvent,
-    DidReceiveServerRedirectForProvisionalLoadForFrame,
-    DidReceiveTitleForFrame,
-    DidRemoveFrameFromHierarchy,
-    DidRunJavaScriptInMainFrame,
-    DidSetFrame,
-    DidStartProgress,
-    DidStartProvisionalLoadForFrame,
-    DidValidateMenuItem,
-    MouseDidMoveOverElement,
-    SetCursor,
-    SetStatusText,
-    SetToolTip,
-    TakeFocus,
-    WillSubmitForm,
-
-    BackForwardAddItem,
-    BackForwardGoToItem,
-    BackForwardBackItem,
-    BackForwardCurrentItem,
-    BackForwardForwardItem,
-    BackForwardItemAtIndex,
-    BackForwardBackListCount,
-    BackForwardForwardListCount,
-
-    RegisterEditCommandForUndo,
-    ClearAllEditCommands,
-
-#if USE(ACCELERATED_COMPOSITING)
-    DidChangeAcceleratedCompositing,
-#endif
-};
-
-}
-
-namespace CoreIPC {
-
-template<> struct MessageKindTraits<WebPageProxyMessage::Kind> { 
-    static const MessageClass messageClass = MessageClassWebPageProxy;
-};
-
-}
-
-#endif // WebPageProxyMessageKinds_h
diff --git a/WebKit2/Shared/StringPairVector.h b/WebKit2/Shared/StringPairVector.h
new file mode 100644
index 0000000..ce2da4a
--- /dev/null
+++ b/WebKit2/Shared/StringPairVector.h
@@ -0,0 +1,66 @@
+/*
+ * 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 StringPairVector_h
+#define StringPairVector_h
+
+#include "ArgumentCoders.h"
+#include <wtf/Vector.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebKit {
+
+// This class is a hack to work around the fact that the IPC message generator
+// cannot deal with class templates with more than one paramter.
+class StringPairVector {
+public:
+    StringPairVector()
+    {
+    }
+
+    StringPairVector(Vector<std::pair<String, String> > stringPairVector)
+    {
+        m_stringPairVector.swap(stringPairVector);
+    }
+
+    void encode(CoreIPC::ArgumentEncoder* encoder) const
+    {
+        encoder->encode(m_stringPairVector);
+    }
+
+    static bool decode(CoreIPC::ArgumentDecoder* decoder, StringPairVector& stringPairVector)
+    {
+        return decoder->decode(stringPairVector.m_stringPairVector);
+    }
+
+    const Vector<std::pair<String, String> >& stringPairVector() const { return m_stringPairVector; }
+
+private:
+    Vector<std::pair<String, String> > m_stringPairVector;
+};
+
+} // namespace WebKit
+
+#endif // StringPairVector_h
diff --git a/WebKit2/UIProcess/API/mac/PageClientImpl.h b/WebKit2/UIProcess/API/mac/PageClientImpl.h
index f45ad71..748d7e3 100644
--- a/WebKit2/UIProcess/API/mac/PageClientImpl.h
+++ b/WebKit2/UIProcess/API/mac/PageClientImpl.h
@@ -52,7 +52,7 @@ private:
     virtual void toolTipChanged(const String& oldToolTip, const String& newToolTip);
     virtual void setCursor(const WebCore::Cursor&);
 
-    void registerEditCommand(PassRefPtr<WebEditCommandProxy>, UndoOrRedo);
+    void registerEditCommand(PassRefPtr<WebEditCommandProxy>, WebPageProxy::UndoOrRedo);
     void clearAllEditCommands();
     void setEditCommandState(const String& commandName, bool isEnabled, int state);
 
diff --git a/WebKit2/UIProcess/API/mac/PageClientImpl.mm b/WebKit2/UIProcess/API/mac/PageClientImpl.mm
index bee4672..e0a5009 100644
--- a/WebKit2/UIProcess/API/mac/PageClientImpl.mm
+++ b/WebKit2/UIProcess/API/mac/PageClientImpl.mm
@@ -183,7 +183,7 @@ static NSString* nameForEditAction(EditAction editAction)
     return nil;
 }
 
-void PageClientImpl::registerEditCommand(PassRefPtr<WebEditCommandProxy> prpCommand, UndoOrRedo undoOrRedo)
+void PageClientImpl::registerEditCommand(PassRefPtr<WebEditCommandProxy> prpCommand, WebPageProxy::UndoOrRedo undoOrRedo)
 {
     RefPtr<WebEditCommandProxy> command = prpCommand;
 
@@ -191,7 +191,7 @@ void PageClientImpl::registerEditCommand(PassRefPtr<WebEditCommandProxy> prpComm
     NSString *actionName = nameForEditAction(command->editAction());
 
     NSUndoManager *undoManager = [m_wkView undoManager];
-    [undoManager registerUndoWithTarget:m_undoTarget.get() selector:((undoOrRedo == Undo) ? @selector(undoEditing:) : @selector(redoEditing:)) object:commandObjC.get()];
+    [undoManager registerUndoWithTarget:m_undoTarget.get() selector:((undoOrRedo == WebPageProxy::Undo) ? @selector(undoEditing:) : @selector(redoEditing:)) object:commandObjC.get()];
     if (actionName)
         [undoManager setActionName:actionName];
 }
diff --git a/WebKit2/UIProcess/API/qt/qwkpage.cpp b/WebKit2/UIProcess/API/qt/qwkpage.cpp
index 644ff1f..6188266 100644
--- a/WebKit2/UIProcess/API/qt/qwkpage.cpp
+++ b/WebKit2/UIProcess/API/qt/qwkpage.cpp
@@ -83,7 +83,7 @@ void QWKPagePrivate::toolTipChanged(const String&, const String& newTooltip)
     emit q->statusBarMessage(QString(newTooltip));
 }
 
-void QWKPagePrivate::registerEditCommand(PassRefPtr<WebEditCommandProxy>, UndoOrRedo)
+void QWKPagePrivate::registerEditCommand(PassRefPtr<WebEditCommandProxy>, WebPageProxy::UndoOrRedo)
 {
 }
 
diff --git a/WebKit2/UIProcess/API/qt/qwkpage_p.h b/WebKit2/UIProcess/API/qt/qwkpage_p.h
index ad9f13b..9ed5867 100644
--- a/WebKit2/UIProcess/API/qt/qwkpage_p.h
+++ b/WebKit2/UIProcess/API/qt/qwkpage_p.h
@@ -53,7 +53,7 @@ public:
     virtual void setCursor(const WebCore::Cursor&);
     virtual void takeFocus(bool direction) { }
     virtual void toolTipChanged(const WTF::String&, const WTF::String&);
-    virtual void registerEditCommand(PassRefPtr<WebKit::WebEditCommandProxy>, UndoOrRedo);
+    virtual void registerEditCommand(PassRefPtr<WebKit::WebEditCommandProxy>, WebPageProxy::UndoOrRedo);
     virtual void clearAllEditCommands();
 
     void paint(QPainter* painter, QRect);
diff --git a/WebKit2/UIProcess/PageClient.h b/WebKit2/UIProcess/PageClient.h
index efa5718..9099446 100644
--- a/WebKit2/UIProcess/PageClient.h
+++ b/WebKit2/UIProcess/PageClient.h
@@ -26,6 +26,7 @@
 #ifndef PageClient_h
 #define PageClient_h
 
+#include "WebPageProxy.h"
 #include <wtf/Forward.h>
 
 namespace WebCore {
@@ -48,8 +49,7 @@ public:
 
     virtual void setCursor(const WebCore::Cursor&) = 0;
 
-    enum UndoOrRedo { Undo, Redo };
-    virtual void registerEditCommand(PassRefPtr<WebEditCommandProxy>, UndoOrRedo) = 0;
+    virtual void registerEditCommand(PassRefPtr<WebEditCommandProxy>, WebPageProxy::UndoOrRedo) = 0;
     virtual void clearAllEditCommands() = 0;
     virtual void setEditCommandState(const String& commandName, bool isEnabled, int state) = 0;
 
diff --git a/WebKit2/UIProcess/WebEditCommandProxy.cpp b/WebKit2/UIProcess/WebEditCommandProxy.cpp
index 70b7d19..9a816e3 100644
--- a/WebKit2/UIProcess/WebEditCommandProxy.cpp
+++ b/WebKit2/UIProcess/WebEditCommandProxy.cpp
@@ -53,7 +53,7 @@ void WebEditCommandProxy::unapply()
         return;
 
     m_page->process()->send(Messages::WebPage::UnapplyEditCommand(m_commandID), m_page->pageID());
-    m_page->registerEditCommandForRedo(this);
+    m_page->registerEditCommand(this, WebPageProxy::Undo);
 }
 
 void WebEditCommandProxy::reapply()
@@ -62,7 +62,7 @@ void WebEditCommandProxy::reapply()
         return;
 
     m_page->process()->send(Messages::WebPage::ReapplyEditCommand(m_commandID), m_page->pageID());
-    m_page->registerEditCommandForUndo(this);
+    m_page->registerEditCommand(this, WebPageProxy::Redo);
 }
 
 } // namespace WebKit
diff --git a/WebKit2/UIProcess/WebFormClient.cpp b/WebKit2/UIProcess/WebFormClient.cpp
index 523887c..4e657be 100644
--- a/WebKit2/UIProcess/WebFormClient.cpp
+++ b/WebKit2/UIProcess/WebFormClient.cpp
@@ -45,7 +45,7 @@ void WebFormClient::initialize(const WKPageFormClient* client)
         memset(&m_pageFormClient, 0, sizeof(m_pageFormClient));
 }
 
-bool WebFormClient::willSubmitForm(WebPageProxy* page, WebFrameProxy* frame, WebFrameProxy* sourceFrame, Vector<std::pair<String, String> >& textFieldValues, APIObject* userData, WebFormSubmissionListenerProxy* listener)
+bool WebFormClient::willSubmitForm(WebPageProxy* page, WebFrameProxy* frame, WebFrameProxy* sourceFrame, const Vector<std::pair<String, String> >& textFieldValues, APIObject* userData, WebFormSubmissionListenerProxy* listener)
 {
     if (!m_pageFormClient.willSubmitForm)
         return false;
diff --git a/WebKit2/UIProcess/WebFormClient.h b/WebKit2/UIProcess/WebFormClient.h
index 1f074a6..b8314e6 100644
--- a/WebKit2/UIProcess/WebFormClient.h
+++ b/WebKit2/UIProcess/WebFormClient.h
@@ -43,7 +43,7 @@ public:
     WebFormClient();
     void initialize(const WKPageFormClient*);
 
-    bool willSubmitForm(WebPageProxy*, WebFrameProxy*, WebFrameProxy*, Vector<std::pair<String, String> >& textFieldValues, APIObject* userData, WebFormSubmissionListenerProxy*); 
+    bool willSubmitForm(WebPageProxy*, WebFrameProxy*, WebFrameProxy*, const Vector<std::pair<String, String> >& textFieldValues, APIObject* userData, WebFormSubmissionListenerProxy*); 
 
 private:
     WKPageFormClient m_pageFormClient;
diff --git a/WebKit2/UIProcess/WebPageProxy.cpp b/WebKit2/UIProcess/WebPageProxy.cpp
index b2521e7..264eaa6 100644
--- a/WebKit2/UIProcess/WebPageProxy.cpp
+++ b/WebKit2/UIProcess/WebPageProxy.cpp
@@ -29,6 +29,7 @@
 #include "MessageID.h"
 #include "NativeWebKeyboardEvent.h"
 #include "PageClient.h"
+#include "StringPairVector.h"
 #include "WebBackForwardList.h"
 #include "WebBackForwardListItem.h"
 #include "WebCertificateInfo.h"
@@ -43,7 +44,6 @@
 #include "WebPageCreationParameters.h"
 #include "WebPageMessages.h"
 #include "WebPageNamespace.h"
-#include "WebPageProxyMessageKinds.h"
 #include "WebPreferences.h"
 #include "WebProcessManager.h"
 #include "WebProcessMessages.h"
@@ -540,349 +540,8 @@ void WebPageProxy::didReceiveMessage(CoreIPC::Connection* connection, CoreIPC::M
         return;
     }
 
-    switch (messageID.get<WebPageProxyMessage::Kind>()) {
-        case WebPageProxyMessage::DidCreateMainFrame: {
-            uint64_t frameID;
-            if (!arguments->decode(frameID))
-                return;
-            didCreateMainFrame(frameID);
-            break;
-        }
-        case WebPageProxyMessage::DidCreateSubFrame: {
-            uint64_t frameID;
-            if (!arguments->decode(frameID))
-                return;
-            didCreateSubFrame(frameID);
-            break;
-        }
-        case WebPageProxyMessage::DidStartProvisionalLoadForFrame: {
-            uint64_t frameID;
-            String url;
-
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(frameID, url, messageDecoder)))
-                return;
-
-            didStartProvisionalLoadForFrame(process()->webFrame(frameID), url, userData.get());
-            break;
-        }
-        case WebPageProxyMessage::DidReceiveServerRedirectForProvisionalLoadForFrame: {
-            uint64_t frameID;
-            String url;
-
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(frameID, url, messageDecoder)))
-                return;
-
-            didReceiveServerRedirectForProvisionalLoadForFrame(process()->webFrame(frameID), url, userData.get());
-            break;
-        }
-        case WebPageProxyMessage::DidFailProvisionalLoadForFrame: {
-            uint64_t frameID;
-            
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
-                return;
-
-            didFailProvisionalLoadForFrame(process()->webFrame(frameID), userData.get());
-            break;
-        }
-        case WebPageProxyMessage::DidCommitLoadForFrame: {
-            uint64_t frameID;
-            String mimeType;
-            PlatformCertificateInfo certificateInfo;
-
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(frameID, mimeType, certificateInfo, messageDecoder)))
-                return;
-    
-            didCommitLoadForFrame(process()->webFrame(frameID), mimeType, certificateInfo, userData.get());
-            break;
-        }
-        case WebPageProxyMessage::DidFinishDocumentLoadForFrame: {
-            uint64_t frameID;
-
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
-                return;
-
-            didFinishDocumentLoadForFrame(process()->webFrame(frameID), userData.get());
-            break;
-        }
-        case WebPageProxyMessage::DidFinishLoadForFrame: {
-            uint64_t frameID;
-
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
-                return;
-
-            didFinishLoadForFrame(process()->webFrame(frameID), userData.get());
-            break;
-        }
-        case WebPageProxyMessage::DidFailLoadForFrame: {
-            uint64_t frameID;
-
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
-                return;
-
-            didFailLoadForFrame(process()->webFrame(frameID), userData.get());
-            break;
-        }
-        case WebPageProxyMessage::DidReceiveTitleForFrame: {
-            uint64_t frameID;
-            String title;
-
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(frameID, title, messageDecoder)))
-                return;
-
-            didReceiveTitleForFrame(process()->webFrame(frameID), title, userData.get());
-            break;
-        }
-        case WebPageProxyMessage::DidFirstLayoutForFrame: {
-            uint64_t frameID;
-
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
-                return;
-
-            didFirstLayoutForFrame(process()->webFrame(frameID), userData.get());
-            break;
-        }
-        case WebPageProxyMessage::DidFirstVisuallyNonEmptyLayoutForFrame: {
-            uint64_t frameID;
-
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
-                return;
-
-            didFirstVisuallyNonEmptyLayoutForFrame(process()->webFrame(frameID), userData.get());
-            break;
-        }
-        case WebPageProxyMessage::DidRemoveFrameFromHierarchy: {
-            uint64_t frameID;
+    didReceiveWebPageProxyMessage(connection, messageID, arguments);
 
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(frameID, messageDecoder)))
-                return;
-
-            didRemoveFrameFromHierarchy(process()->webFrame(frameID), userData.get());
-            break;
-        }
-        case WebPageProxyMessage::DidStartProgress:
-            didStartProgress();
-            break;
-        case WebPageProxyMessage::DidChangeProgress: {
-            double value;
-            if (!arguments->decode(value))
-                return;
-            didChangeProgress(value);
-            break;
-        }
-        case WebPageProxyMessage::DidFinishProgress:
-            didFinishProgress();
-            break;
-        case WebPageProxyMessage::DidReceiveEvent: {
-            uint32_t type;
-            bool handled;
-            if (!arguments->decode(CoreIPC::Out(type, handled)))
-                return;
-            didReceiveEvent((WebEvent::Type)type, handled);
-            break;
-        }
-        case WebPageProxyMessage::TakeFocus: {
-            // FIXME: Use enum here.
-            bool direction;
-            if (!arguments->decode(direction))
-                return;
-            takeFocus(direction);
-            break;
-        }
-        case WebPageProxyMessage::DecidePolicyForNavigationAction: {
-            uint64_t frameID;
-            uint32_t navigationType;
-            uint32_t modifiers;
-            int32_t mouseButton;
-            String url;
-            uint64_t listenerID;
-            if (!arguments->decode(CoreIPC::Out(frameID, navigationType, modifiers, mouseButton, url, listenerID)))
-                return;
-            decidePolicyForNavigationAction(process()->webFrame(frameID), static_cast<NavigationType>(navigationType), static_cast<WebEvent::Modifiers>(modifiers), static_cast<WebMouseEvent::Button>(mouseButton), url, listenerID);
-            break;
-        }
-        case WebPageProxyMessage::DecidePolicyForNewWindowAction: {
-            uint64_t frameID;
-            uint32_t navigationType;
-            uint32_t modifiers;
-            int32_t mouseButton;
-            String url;
-            uint64_t listenerID;
-            if (!arguments->decode(CoreIPC::Out(frameID, navigationType, modifiers, mouseButton, url, listenerID)))
-                return;
-            decidePolicyForNewWindowAction(process()->webFrame(frameID), static_cast<NavigationType>(navigationType), static_cast<WebEvent::Modifiers>(modifiers), static_cast<WebMouseEvent::Button>(mouseButton), url, listenerID);
-            break;
-        }
-        case WebPageProxyMessage::DecidePolicyForMIMEType: {
-            uint64_t frameID;
-            String MIMEType;
-            String url;
-            uint64_t listenerID;
-            if (!arguments->decode(CoreIPC::Out(frameID, MIMEType, url, listenerID)))
-                return;
-            decidePolicyForMIMEType(process()->webFrame(frameID), MIMEType, url, listenerID);
-            break;
-        }
-        case WebPageProxyMessage::WillSubmitForm: {
-            uint64_t frameID;
-            uint64_t sourceFrameID;
-            Vector<std::pair<String, String> > textFieldValues;
-            uint64_t listenerID;
-
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(frameID, sourceFrameID, textFieldValues, listenerID, messageDecoder)))
-                return;
-
-            willSubmitForm(process()->webFrame(frameID), process()->webFrame(sourceFrameID), textFieldValues, userData.get(), listenerID);
-            break;
-        }
-        case WebPageProxyMessage::DidRunJavaScriptInMainFrame: {
-            String resultString;
-            uint64_t callbackID;
-            if (!arguments->decode(CoreIPC::Out(resultString, callbackID)))
-                return;
-            didRunJavaScriptInMainFrame(resultString, callbackID);
-            break;
-        }
-        case WebPageProxyMessage::DidGetRenderTreeExternalRepresentation: {
-            String resultString;
-            uint64_t callbackID;
-            if (!arguments->decode(CoreIPC::Out(resultString, callbackID)))
-                return;
-            didGetRenderTreeExternalRepresentation(resultString, callbackID);
-            break;
-        }
-        case WebPageProxyMessage::DidGetSourceForFrame: {
-            String resultString;
-            uint64_t callbackID;
-            if (!arguments->decode(CoreIPC::Out(resultString, callbackID)))
-                return;
-            didGetSourceForFrame(resultString, callbackID);
-            break;
-        }
-        case WebPageProxyMessage::SetToolTip: {
-            String toolTip;
-            if (!arguments->decode(toolTip))
-                return;
-            setToolTip(toolTip);
-            break;
-        }
-        case WebPageProxyMessage::SetCursor: {
-#if USE(LAZY_NATIVE_CURSOR)
-            Cursor cursor;
-            if (!arguments->decode(cursor))
-                return;
-            setCursor(cursor);
-#endif
-            break;
-        }
-        case WebPageProxyMessage::ShowPage: {
-            showPage();
-            break;
-        }
-        case WebPageProxyMessage::ClosePage: {
-            closePage();
-            break;
-        }
-        case WebPageProxyMessage::BackForwardAddItem: {
-            uint64_t itemID;
-            if (!arguments->decode(CoreIPC::Out(itemID)))
-                return;
-            addItemToBackForwardList(process()->webBackForwardItem(itemID));
-            break;
-        }
-        case WebPageProxyMessage::BackForwardGoToItem: {
-            uint64_t itemID;
-            if (!arguments->decode(CoreIPC::Out(itemID)))
-                return;
-            goToItemInBackForwardList(process()->webBackForwardItem(itemID));
-            break;
-        }
-        case WebPageProxyMessage::ContentsSizeChanged: {
-            IntSize size;
-            uint64_t frameID;
-            if (!arguments->decode(CoreIPC::Out(frameID, size)))
-                return;
-            contentsSizeChanged(process()->webFrame(frameID), size);
-            break;
-        }
-        case WebPageProxyMessage::SetStatusText: {
-            String text;
-            if (!arguments->decode(CoreIPC::Out(text)))
-                return;
-            setStatusText(text);
-            break;
-        }
-        case WebPageProxyMessage::RegisterEditCommandForUndo: {
-            uint64_t commandID;
-            uint32_t editAction;
-            if (!arguments->decode(CoreIPC::Out(commandID, editAction)))
-                return;
-                
-            registerEditCommandForUndo(commandID, static_cast<EditAction>(editAction));
-            break;
-        }
-        case WebPageProxyMessage::ClearAllEditCommands:
-            clearAllEditCommands();
-            break;
-        case WebPageProxyMessage::DidValidateMenuItem: {
-            int state;
-            bool isEnabled;
-            String commandName;
-            if (!arguments->decode(CoreIPC::Out(commandName, isEnabled, state)))
-                return;
-            m_pageClient->setEditCommandState(commandName, isEnabled, state);
-            break;
-        }
-        case WebPageProxyMessage::MouseDidMoveOverElement: {
-            uint32_t modifiers;
-            RefPtr<APIObject> userData;
-            WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
-
-            if (!arguments->decode(CoreIPC::Out(modifiers, messageDecoder)))
-                return;
-
-            mouseDidMoveOverElement(static_cast<WebEvent::Modifiers>(modifiers), userData.get());
-            break;
-        }
-        default:
-            ASSERT_NOT_REACHED();
-            break;
-    }
 }
 
 void WebPageProxy::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, CoreIPC::ArgumentEncoder* reply)
@@ -892,105 +551,8 @@ void WebPageProxy::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIP
         return;
     }
 
-    switch (messageID.get<WebPageProxyMessage::Kind>()) {
-        case WebPageProxyMessage::CreateNewPage: {
-            RefPtr<WebPageProxy> newPage = createNewPage();
-            WebPageCreationParameters parameters;
-            if (newPage) {
-                // FIXME: Pass the real size.
-                parameters = newPage->creationParameters(IntSize(100, 100));
-                reply->encode(CoreIPC::In(newPage->pageID(), parameters));
-            } else {
-                reply->encode(CoreIPC::In(static_cast<uint64_t>(0), parameters));
-            }
-            break;
-        }
-        case WebPageProxyMessage::RunJavaScriptAlert: {
-            uint64_t frameID;
-            String message;
-            if (!arguments->decode(CoreIPC::Out(frameID, message)))
-                return;
-            runJavaScriptAlert(process()->webFrame(frameID), message);
-            break;
-        }
-        case WebPageProxyMessage::RunJavaScriptConfirm: {
-            // FIXME: We should probably encode something in the case that the arguments do not decode correctly.
-            uint64_t frameID;
-            String message;
-            if (!arguments->decode(CoreIPC::Out(frameID, message)))
-                return;
-
-            bool result = runJavaScriptConfirm(process()->webFrame(frameID), message);
-            reply->encode(CoreIPC::In(result));
-            break;
-        }
-        case WebPageProxyMessage::RunJavaScriptPrompt: {
-            // FIXME: We should probably encode something in the case that the arguments do not decode correctly.
-            uint64_t frameID;
-            String message;
-            String defaultValue;
-            if (!arguments->decode(CoreIPC::Out(frameID, message, defaultValue)))
-                return;
-
-            String result = runJavaScriptPrompt(process()->webFrame(frameID), message, defaultValue);
-            reply->encode(CoreIPC::In(result));
-            break;
-        }
-
-        case WebPageProxyMessage::BackForwardBackItem: {
-            WebBackForwardListItem* backItem = m_backForwardList->backItem();
-            uint64_t backItemID = backItem ? backItem->itemID() : 0;
-            reply->encode(CoreIPC::In(backItemID));
-            break;
-        }
-        case WebPageProxyMessage::BackForwardCurrentItem: {
-            WebBackForwardListItem* currentItem = m_backForwardList->currentItem();
-            uint64_t currentItemID = currentItem ? currentItem->itemID() : 0;
-            reply->encode(CoreIPC::In(currentItemID));
-            break;
-        }
-        case WebPageProxyMessage::BackForwardForwardItem: {
-            WebBackForwardListItem* forwardItem = m_backForwardList->forwardItem();
-            uint64_t forwardItemID = forwardItem ? forwardItem->itemID() : 0;
-            reply->encode(CoreIPC::In(forwardItemID));
-            break;
-        }
-        case WebPageProxyMessage::BackForwardItemAtIndex: {
-            int itemIndex;
-            if (!arguments->decode(CoreIPC::Out(itemIndex)))
-                return;
-
-            WebBackForwardListItem* item = m_backForwardList->itemAtIndex(itemIndex);
-            uint64_t itemID = item ? item->itemID() : 0;
-            reply->encode(CoreIPC::In(itemID));
-            break;
-        }
-        case WebPageProxyMessage::BackForwardBackListCount: {
-            int backListCount = m_backForwardList->backListCount();
-            reply->encode(CoreIPC::In(backListCount));
-            break;
-        }
-        case WebPageProxyMessage::BackForwardForwardListCount: {
-            int forwardListCount = m_backForwardList->forwardListCount();
-            reply->encode(CoreIPC::In(forwardListCount));
-            break;
-        }
-#if USE(ACCELERATED_COMPOSITING)
-        case WebPageProxyMessage::DidChangeAcceleratedCompositing: {
-            bool compositing;
-            if (!arguments->decode(CoreIPC::Out(compositing)))
-                return;
-
-            didChangeAcceleratedCompositing(compositing);
-            reply->encode(drawingArea()->info());
-            break;
-        }
-#endif // USE(ACCELERATED_COMPOSITING)
-
-        default:
-            ASSERT_NOT_REACHED();
-            break;
-    }
+    // FIXME: Do something with reply.
+    didReceiveSyncWebPageProxyMessage(connection, messageID, arguments, reply);
 }
 
 void WebPageProxy::didCreateMainFrame(uint64_t frameID)
@@ -1028,91 +590,179 @@ void WebPageProxy::didFinishProgress()
     m_loaderClient.didFinishProgress(this);
 }
 
-void WebPageProxy::didStartProvisionalLoadForFrame(WebFrameProxy* frame, const String& url, APIObject* userData)
+void WebPageProxy::didStartProvisionalLoadForFrame(uint64_t frameID, const String& url, CoreIPC::ArgumentDecoder* arguments)
 {
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebFrameProxy* frame = process()->webFrame(frameID);
+
     frame->didStartProvisionalLoad(url);
-    m_loaderClient.didStartProvisionalLoadForFrame(this, frame, userData);
+    m_loaderClient.didStartProvisionalLoadForFrame(this, frame, userData.get());
 }
 
-void WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame(WebFrameProxy* frame, const String& url, APIObject* userData)
+void WebPageProxy::didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, const String& url, CoreIPC::ArgumentDecoder* arguments)
 {
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebFrameProxy* frame = process()->webFrame(frameID);
+
     frame->didReceiveServerRedirectForProvisionalLoad(url);
-    m_loaderClient.didReceiveServerRedirectForProvisionalLoadForFrame(this, frame, userData);
+    m_loaderClient.didReceiveServerRedirectForProvisionalLoadForFrame(this, frame, userData.get());
 }
 
-void WebPageProxy::didFailProvisionalLoadForFrame(WebFrameProxy* frame, APIObject* userData)
+void WebPageProxy::didFailProvisionalLoadForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments)
 {
-    m_loaderClient.didFailProvisionalLoadWithErrorForFrame(this, frame, userData);
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebFrameProxy* frame = process()->webFrame(frameID);
+
+    m_loaderClient.didFailProvisionalLoadWithErrorForFrame(this, frame, userData.get());
 }
 
-void WebPageProxy::didCommitLoadForFrame(WebFrameProxy* frame, const String& mimeType, const PlatformCertificateInfo& certificateInfo, APIObject* userData)
+void WebPageProxy::didCommitLoadForFrame(uint64_t frameID, const String& mimeType, const PlatformCertificateInfo& certificateInfo, CoreIPC::ArgumentDecoder* arguments)
 {
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebFrameProxy* frame = process()->webFrame(frameID);
+
     frame->setMIMEType(mimeType);
     frame->setCertificateInfo(WebCertificateInfo::create(certificateInfo));
     frame->didCommitLoad();
-    m_loaderClient.didCommitLoadForFrame(this, frame, userData);
+    m_loaderClient.didCommitLoadForFrame(this, frame, userData.get());
 }
 
-void WebPageProxy::didFinishDocumentLoadForFrame(WebFrameProxy* frame, APIObject* userData)
+void WebPageProxy::didFinishDocumentLoadForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments)
 {
-    m_loaderClient.didFinishDocumentLoadForFrame(this, frame, userData);
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebFrameProxy* frame = process()->webFrame(frameID);
+
+    m_loaderClient.didFinishDocumentLoadForFrame(this, frame, userData.get());
 }
 
-void WebPageProxy::didFinishLoadForFrame(WebFrameProxy* frame, APIObject* userData)
+void WebPageProxy::didFinishLoadForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments)
 {
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebFrameProxy* frame = process()->webFrame(frameID);
+
     frame->didFinishLoad();
-    m_loaderClient.didFinishLoadForFrame(this, frame, userData);
+    m_loaderClient.didFinishLoadForFrame(this, frame, userData.get());
 }
 
-void WebPageProxy::didFailLoadForFrame(WebFrameProxy* frame, APIObject* userData)
+void WebPageProxy::didFailLoadForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments)
 {
-    m_loaderClient.didFailLoadWithErrorForFrame(this, frame, userData);
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebFrameProxy* frame = process()->webFrame(frameID);
+
+    m_loaderClient.didFailLoadWithErrorForFrame(this, frame, userData.get());
 }
 
-void WebPageProxy::didReceiveTitleForFrame(WebFrameProxy* frame, const String& title, APIObject* userData)
+void WebPageProxy::didReceiveTitleForFrame(uint64_t frameID, const String& title, CoreIPC::ArgumentDecoder* arguments)
 {
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebFrameProxy* frame = process()->webFrame(frameID);
+
     frame->didReceiveTitle(title);
 
     // Cache the title for the main frame in the page.
     if (frame == m_mainFrame)
         m_pageTitle = title;
 
-    m_loaderClient.didReceiveTitleForFrame(this, title, frame, userData);
+    m_loaderClient.didReceiveTitleForFrame(this, title, frame, userData.get());
 }
 
-void WebPageProxy::didFirstLayoutForFrame(WebFrameProxy* frame, APIObject* userData)
+void WebPageProxy::didFirstLayoutForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments)
 {
-    m_loaderClient.didFirstLayoutForFrame(this, frame, userData);
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebFrameProxy* frame = process()->webFrame(frameID);
+
+    m_loaderClient.didFirstLayoutForFrame(this, frame, userData.get());
 }
 
-void WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame(WebFrameProxy* frame, APIObject* userData)
+void WebPageProxy::didFirstVisuallyNonEmptyLayoutForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments)
 {
-    m_loaderClient.didFirstVisuallyNonEmptyLayoutForFrame(this, frame, userData);
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebFrameProxy* frame = process()->webFrame(frameID);
+
+    m_loaderClient.didFirstVisuallyNonEmptyLayoutForFrame(this, frame, userData.get());
 }
 
-void WebPageProxy::didRemoveFrameFromHierarchy(WebFrameProxy* frame, APIObject* userData)
+void WebPageProxy::didRemoveFrameFromHierarchy(uint64_t frameID, CoreIPC::ArgumentDecoder* arguments)
 {
-    m_loaderClient.didRemoveFrameFromHierarchy(this, frame, userData);
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebFrameProxy* frame = process()->webFrame(frameID);
+
+    m_loaderClient.didRemoveFrameFromHierarchy(this, frame, userData.get());
 }
 
 // PolicyClient
 
-void WebPageProxy::decidePolicyForNavigationAction(WebFrameProxy* frame, NavigationType navigationType, WebEvent::Modifiers modifiers, WebMouseEvent::Button mouseButton, const String& url, uint64_t listenerID)
+void WebPageProxy::decidePolicyForNavigationAction(uint64_t frameID, uint32_t opaqueNavigationType, uint32_t opaqueModifiers, int32_t opaqueMouseButton, const String& url, uint64_t listenerID)
 {
+    WebFrameProxy* frame = process()->webFrame(frameID);
+    NavigationType navigationType = static_cast<NavigationType>(opaqueNavigationType);
+    WebEvent::Modifiers modifiers = static_cast<WebEvent::Modifiers>(opaqueModifiers);
+    WebMouseEvent::Button mouseButton = static_cast<WebMouseEvent::Button>(opaqueMouseButton);
+    
     RefPtr<WebFramePolicyListenerProxy> listener = frame->setUpPolicyListenerProxy(listenerID);
     if (!m_policyClient.decidePolicyForNavigationAction(this, navigationType, modifiers, mouseButton, url, frame, listener.get()))
         listener->use();
 }
 
-void WebPageProxy::decidePolicyForNewWindowAction(WebFrameProxy* frame, NavigationType navigationType, WebEvent::Modifiers modifiers, WebMouseEvent::Button mouseButton, const String& url, uint64_t listenerID)
+void WebPageProxy::decidePolicyForNewWindowAction(uint64_t frameID, uint32_t opaqueNavigationType, uint32_t opaqueModifiers, int32_t opaqueMouseButton, const String& url, uint64_t listenerID)
 {
+    WebFrameProxy* frame = process()->webFrame(frameID);
+    NavigationType navigationType = static_cast<NavigationType>(opaqueNavigationType);
+    WebEvent::Modifiers modifiers = static_cast<WebEvent::Modifiers>(opaqueModifiers);
+    WebMouseEvent::Button mouseButton = static_cast<WebMouseEvent::Button>(opaqueMouseButton);
+
     RefPtr<WebFramePolicyListenerProxy> listener = frame->setUpPolicyListenerProxy(listenerID);
     if (!m_policyClient.decidePolicyForNewWindowAction(this, navigationType, modifiers, mouseButton, url, frame, listener.get()))
         listener->use();
 }
 
-void WebPageProxy::decidePolicyForMIMEType(WebFrameProxy* frame, const String& MIMEType, const String& url, uint64_t listenerID)
+void WebPageProxy::decidePolicyForMIMEType(uint64_t frameID, const String& MIMEType, const String& url, uint64_t listenerID)
 {
+    WebFrameProxy* frame = process()->webFrame(frameID);
     RefPtr<WebFramePolicyListenerProxy> listener = frame->setUpPolicyListenerProxy(listenerID);
     if (!m_policyClient.decidePolicyForMIMEType(this, MIMEType, url, frame, listener.get()))
         listener->use();
@@ -1120,18 +770,32 @@ void WebPageProxy::decidePolicyForMIMEType(WebFrameProxy* frame, const String& M
 
 // FormClient
 
-void WebPageProxy::willSubmitForm(WebFrameProxy* frame, WebFrameProxy* sourceFrame, Vector<std::pair<String, String> >& textFieldValues, APIObject* userData, uint64_t listenerID)
+void WebPageProxy::willSubmitForm(uint64_t frameID, uint64_t sourceFrameID, const StringPairVector& textFieldValues, uint64_t listenerID, CoreIPC::ArgumentDecoder* arguments)
 {
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebFrameProxy* frame = process()->webFrame(frameID);
+    WebFrameProxy* sourceFrame = process()->webFrame(sourceFrameID);
+
     RefPtr<WebFormSubmissionListenerProxy> listener = frame->setUpFormSubmissionListenerProxy(listenerID);
-    if (!m_formClient.willSubmitForm(this, frame, sourceFrame, textFieldValues, userData, listener.get()))
+    if (!m_formClient.willSubmitForm(this, frame, sourceFrame, textFieldValues.stringPairVector(), userData.get(), listener.get()))
         listener->continueSubmission();
 }
 
 // UIClient
 
-PassRefPtr<WebPageProxy> WebPageProxy::createNewPage()
+void WebPageProxy::createNewPage(uint64_t& newPageID, WebPageCreationParameters& newPageParameters)
 {
-    return m_uiClient.createNewPage(this);
+    RefPtr<WebPageProxy> newPage = m_uiClient.createNewPage(this);
+    if (newPage) {
+        // FIXME: Pass the real size.
+        newPageID = newPage->pageID();
+        newPageParameters = newPage->creationParameters(IntSize(100, 100));
+    } else
+        newPageID = 0;
 }
     
 void WebPageProxy::showPage()
@@ -1144,19 +808,19 @@ void WebPageProxy::closePage()
     m_uiClient.close(this);
 }
 
-void WebPageProxy::runJavaScriptAlert(WebFrameProxy* frame, const String& message)
+void WebPageProxy::runJavaScriptAlert(uint64_t frameID, const String& message)
 {
-    m_uiClient.runJavaScriptAlert(this, message, frame);
+    m_uiClient.runJavaScriptAlert(this, message, process()->webFrame(frameID));
 }
 
-bool WebPageProxy::runJavaScriptConfirm(WebFrameProxy* frame, const String& message)
+void WebPageProxy::runJavaScriptConfirm(uint64_t frameID, const String& message, bool& result)
 {
-    return m_uiClient.runJavaScriptConfirm(this, message, frame);
+    result = m_uiClient.runJavaScriptConfirm(this, message, process()->webFrame(frameID));
 }
 
-String WebPageProxy::runJavaScriptPrompt(WebFrameProxy* frame, const String& message, const String& defaultValue)
+void WebPageProxy::runJavaScriptPrompt(uint64_t frameID, const String& message, const String& defaultValue, String& result)
 {
-    return m_uiClient.runJavaScriptPrompt(this, message, defaultValue, frame);
+    result = m_uiClient.runJavaScriptPrompt(this, message, defaultValue, process()->webFrame(frameID));
 }
 
 void WebPageProxy::setStatusText(const String& text)
@@ -1164,48 +828,85 @@ void WebPageProxy::setStatusText(const String& text)
     m_uiClient.setStatusText(this, text);
 }
 
-void WebPageProxy::mouseDidMoveOverElement(WebEvent::Modifiers modifiers, APIObject* userData)
+void WebPageProxy::mouseDidMoveOverElement(uint32_t opaqueModifiers, CoreIPC::ArgumentDecoder* arguments)
 {
-    m_uiClient.mouseDidMoveOverElement(this, modifiers, userData);
+
+    RefPtr<APIObject> userData;
+    WebContextUserMessageDecoder messageDecoder(userData, pageNamespace()->context());
+    if (!arguments->decode(messageDecoder))
+        return;
+
+    WebEvent::Modifiers modifiers = static_cast<WebEvent::Modifiers>(opaqueModifiers);
+
+    m_uiClient.mouseDidMoveOverElement(this, modifiers, userData.get());
 }
 
-void WebPageProxy::contentsSizeChanged(WebFrameProxy* frame, const WebCore::IntSize& size)
+void WebPageProxy::contentsSizeChanged(uint64_t frameID, const WebCore::IntSize& size)
 {
-    m_uiClient.contentsSizeChanged(this, size, frame);
+    m_uiClient.contentsSizeChanged(this, size, process()->webFrame(frameID));
 }
 
 // BackForwardList
 
-void WebPageProxy::addItemToBackForwardList(WebBackForwardListItem* item)
+void WebPageProxy::backForwardAddItem(uint64_t itemID)
 {
-    m_backForwardList->addItem(item);
+    m_backForwardList->addItem(process()->webBackForwardItem(itemID));
 }
 
-void WebPageProxy::goToItemInBackForwardList(WebBackForwardListItem* item)
+void WebPageProxy::backForwardGoToItem(uint64_t itemID)
 {
-    m_backForwardList->goToItem(item);
+    m_backForwardList->goToItem(process()->webBackForwardItem(itemID));
 }
 
-// Undo management
+void WebPageProxy::backForwardBackItem(uint64_t& itemID)
+{
+    WebBackForwardListItem* backItem = m_backForwardList->backItem();
+    itemID = backItem ? backItem->itemID() : 0;
+}
 
-void WebPageProxy::registerEditCommandForUndo(uint64_t commandID, EditAction editAction)
+void WebPageProxy::backForwardCurrentItem(uint64_t& itemID)
 {
-    registerEditCommandForUndo(WebEditCommandProxy::create(commandID, editAction, this));
+    WebBackForwardListItem* currentItem = m_backForwardList->currentItem();
+    itemID = currentItem ? currentItem->itemID() : 0;
 }
 
-void WebPageProxy::clearAllEditCommands()
+void WebPageProxy::backForwardForwardItem(uint64_t& itemID)
 {
-    m_pageClient->clearAllEditCommands();
+    WebBackForwardListItem* forwardItem = m_backForwardList->forwardItem();
+    itemID = forwardItem ? forwardItem->itemID() : 0;
+}
+
+void WebPageProxy::backForwardItemAtIndex(int32_t index, uint64_t& itemID)
+{
+    WebBackForwardListItem* item = m_backForwardList->itemAtIndex(index);;
+    itemID = item ? item->itemID() : 0;
+}
+
+void WebPageProxy::backForwardBackListCount(int32_t& count)
+{
+    count = m_backForwardList->backListCount();
+}
+
+void WebPageProxy::backForwardForwardListCount(int32_t& count)
+{
+    count = m_backForwardList->forwardListCount();
+}
+
+// Undo management
+
+void WebPageProxy::registerEditCommandForUndo(uint64_t commandID, uint32_t editAction)
+{
+    registerEditCommand(WebEditCommandProxy::create(commandID, static_cast<EditAction>(editAction), this), Undo);
 }
 
-void WebPageProxy::registerEditCommandForUndo(PassRefPtr<WebEditCommandProxy> commandProxy)
+void WebPageProxy::clearAllEditCommands()
 {
-    m_pageClient->registerEditCommand(commandProxy, PageClient::Undo);
+    m_pageClient->clearAllEditCommands();
 }
 
-void WebPageProxy::registerEditCommandForRedo(PassRefPtr<WebEditCommandProxy> commandProxy)
+void WebPageProxy::registerEditCommand(PassRefPtr<WebEditCommandProxy> commandProxy, UndoOrRedo undoOrRedo)
 {
-    m_pageClient->registerEditCommand(commandProxy, PageClient::Redo);
+    m_pageClient->registerEditCommand(commandProxy, undoOrRedo);
 }
 
 void WebPageProxy::addEditCommand(WebEditCommandProxy* command)
@@ -1241,8 +942,15 @@ void WebPageProxy::setCursor(const WebCore::Cursor& cursor)
     m_pageClient->setCursor(cursor);
 }
 
-void WebPageProxy::didReceiveEvent(WebEvent::Type type, bool handled)
+void WebPageProxy::didValidateMenuItem(const String& commandName, bool isEnabled, int32_t state)
+{
+    m_pageClient->setEditCommandState(commandName, isEnabled, state);
+}
+
+void WebPageProxy::didReceiveEvent(uint32_t opaqueType, bool handled)
 {
+    WebEvent::Type type = static_cast<WebEvent::Type>(opaqueType);
+
     switch (type) {
         case WebEvent::MouseMove:
             break;
@@ -1304,13 +1012,16 @@ void WebPageProxy::didGetSourceForFrame(const String& resultString, uint64_t cal
     callback->performCallbackWithReturnValue(resultString.impl());
 }
 
+
 #if USE(ACCELERATED_COMPOSITING)
-void WebPageProxy::didChangeAcceleratedCompositing(bool compositing)
+void WebPageProxy::didChangeAcceleratedCompositing(bool compositing, DrawingAreaBase::DrawingAreaInfo& drawingAreaInfo)
 {
     if (compositing)
         didEnterAcceleratedCompositing();
     else
         didLeaveAcceleratedCompositing();
+
+    drawingAreaInfo = drawingArea()->info();
 }
 #endif
 
diff --git a/WebKit2/UIProcess/WebPageProxy.h b/WebKit2/UIProcess/WebPageProxy.h
index 79203c9..41b5a2f 100644
--- a/WebKit2/UIProcess/WebPageProxy.h
+++ b/WebKit2/UIProcess/WebPageProxy.h
@@ -66,6 +66,7 @@ class DrawingAreaProxy;
 class NativeWebKeyboardEvent;
 class PageClient;
 class PlatformCertificateInfo;
+class StringPairVector;
 class WebBackForwardList;
 class WebBackForwardListItem;
 class WebData;
@@ -188,10 +189,10 @@ public:
     void didLeaveAcceleratedCompositing();
 #endif
 
+    enum UndoOrRedo { Undo, Redo };
     void addEditCommand(WebEditCommandProxy*);
     void removeEditCommand(WebEditCommandProxy*);
-    void registerEditCommandForUndo(PassRefPtr<WebEditCommandProxy>);
-    void registerEditCommandForRedo(PassRefPtr<WebEditCommandProxy>);
+    void registerEditCommand(PassRefPtr<WebEditCommandProxy>, UndoOrRedo);
 
     WebProcessProxy* process() const;
     WebPageNamespace* pageNamespace() const { return m_pageNamespace.get(); }
@@ -210,53 +211,64 @@ private:
 
     virtual Type type() const { return APIType; }
 
+    // Implemented in generated WebPageProxyMessageReceiver.cpp
+    void didReceiveWebPageProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
+    CoreIPC::SyncReplyMode didReceiveSyncWebPageProxyMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, CoreIPC::ArgumentEncoder*);
+
     void didCreateMainFrame(uint64_t frameID);
     void didCreateSubFrame(uint64_t frameID);
 
-    void didStartProvisionalLoadForFrame(WebFrameProxy*, const String&, APIObject*);
-    void didReceiveServerRedirectForProvisionalLoadForFrame(WebFrameProxy*, const String&, APIObject*);
-    void didFailProvisionalLoadForFrame(WebFrameProxy*, APIObject*);
-    void didCommitLoadForFrame(WebFrameProxy*, const String& mimeType, const PlatformCertificateInfo&, APIObject*);
-    void didFinishDocumentLoadForFrame(WebFrameProxy*, APIObject*);
-    void didFinishLoadForFrame(WebFrameProxy*, APIObject*);
-    void didFailLoadForFrame(WebFrameProxy*, APIObject*);
-    void didReceiveTitleForFrame(WebFrameProxy*, const String&, APIObject*);
-    void didFirstLayoutForFrame(WebFrameProxy*, APIObject*);
-    void didFirstVisuallyNonEmptyLayoutForFrame(WebFrameProxy*, APIObject*);
-    void didRemoveFrameFromHierarchy(WebFrameProxy*, APIObject*);
+    void didStartProvisionalLoadForFrame(uint64_t frameID, const String&, CoreIPC::ArgumentDecoder*);
+    void didReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, const String&, CoreIPC::ArgumentDecoder*);
+    void didFailProvisionalLoadForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder*);
+    void didCommitLoadForFrame(uint64_t frameID, const String& mimeType, const PlatformCertificateInfo&, CoreIPC::ArgumentDecoder*);
+    void didFinishDocumentLoadForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder*);
+    void didFinishLoadForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder*);
+    void didFailLoadForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder*);
+    void didReceiveTitleForFrame(uint64_t frameID, const String&, CoreIPC::ArgumentDecoder*);
+    void didFirstLayoutForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder*);
+    void didFirstVisuallyNonEmptyLayoutForFrame(uint64_t frameID, CoreIPC::ArgumentDecoder*);
+    void didRemoveFrameFromHierarchy(uint64_t frameID, CoreIPC::ArgumentDecoder*);
     void didStartProgress();
     void didChangeProgress(double);
     void didFinishProgress();
     
-    void decidePolicyForNavigationAction(WebFrameProxy*, WebCore::NavigationType, WebEvent::Modifiers, WebMouseEvent::Button, const String& url, uint64_t listenerID);
-    void decidePolicyForNewWindowAction(WebFrameProxy*, WebCore::NavigationType, WebEvent::Modifiers, WebMouseEvent::Button, const String& url, uint64_t listenerID);
-    void decidePolicyForMIMEType(WebFrameProxy*, const String& MIMEType, const String& url, uint64_t listenerID);
+    void decidePolicyForNavigationAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, const String& url, uint64_t listenerID);
+    void decidePolicyForNewWindowAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, const String& url, uint64_t listenerID);
+    void decidePolicyForMIMEType(uint64_t frameID, const String& MIMEType, const String& url, uint64_t listenerID);
 
-    void willSubmitForm(WebFrameProxy* frame, WebFrameProxy* frameSource, Vector<std::pair<String, String> >& textFieldValues, APIObject* userData, uint64_t listenerID);
+    void willSubmitForm(uint64_t frameID, uint64_t sourceFrameID, const StringPairVector& textFieldValues, uint64_t listenerID, CoreIPC::ArgumentDecoder*);
 
-    PassRefPtr<WebPageProxy> createNewPage();
+    void createNewPage(uint64_t& newPageID, WebPageCreationParameters&);
     void showPage();
     void closePage();
-    void runJavaScriptAlert(WebFrameProxy*, const String&);
-    bool runJavaScriptConfirm(WebFrameProxy* frame, const String&);
-    String runJavaScriptPrompt(WebFrameProxy* frame, const String&, const String&);
+    void runJavaScriptAlert(uint64_t frameID, const String&);
+    void runJavaScriptConfirm(uint64_t frameID, const String&, bool& result);
+    void runJavaScriptPrompt(uint64_t frameID, const String&, const String&, String& result);
     void setStatusText(const String&);
-    void mouseDidMoveOverElement(WebEvent::Modifiers, APIObject*);
-    void contentsSizeChanged(WebFrameProxy*, const WebCore::IntSize&);
+    void mouseDidMoveOverElement(uint32_t modifiers, CoreIPC::ArgumentDecoder*);
+    void contentsSizeChanged(uint64_t frameID, const WebCore::IntSize&);
 
     // Back/Forward list management
-    void addItemToBackForwardList(WebBackForwardListItem*);
-    void goToItemInBackForwardList(WebBackForwardListItem*);
+    void backForwardAddItem(uint64_t itemID);
+    void backForwardGoToItem(uint64_t itemID);
+    void backForwardBackItem(uint64_t& itemID);
+    void backForwardCurrentItem(uint64_t& itemID);
+    void backForwardForwardItem(uint64_t& itemID);
+    void backForwardItemAtIndex(int32_t index, uint64_t& itemID);
+    void backForwardBackListCount(int32_t& count);
+    void backForwardForwardListCount(int32_t& count);
 
     // Undo management
-    void registerEditCommandForUndo(uint64_t commandID, WebCore::EditAction);
+    void registerEditCommandForUndo(uint64_t commandID, uint32_t editAction);
     void clearAllEditCommands();
 
     void takeFocus(bool direction);
     void setToolTip(const String&);
     void setCursor(const WebCore::Cursor&);
+    void didValidateMenuItem(const String& commandName, bool isEnabled, int32_t state);
 
-    void didReceiveEvent(WebEvent::Type, bool handled);
+    void didReceiveEvent(uint32_t opaqueType, bool handled);
 
     void didRunJavaScriptInMainFrame(const String&, uint64_t);
     void didGetRenderTreeExternalRepresentation(const String&, uint64_t);
@@ -265,7 +277,7 @@ private:
     WebPageCreationParameters creationParameters(const WebCore::IntSize&) const;
 
 #if USE(ACCELERATED_COMPOSITING)
-    void didChangeAcceleratedCompositing(bool compositing);
+    void didChangeAcceleratedCompositing(bool compositing, DrawingAreaBase::DrawingAreaInfo&);
 #endif    
 
     PageClient* m_pageClient;
diff --git a/WebKit2/UIProcess/WebPageProxy.messages.in b/WebKit2/UIProcess/WebPageProxy.messages.in
new file mode 100644
index 0000000..1849875
--- /dev/null
+++ b/WebKit2/UIProcess/WebPageProxy.messages.in
@@ -0,0 +1,93 @@
+# 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.
+
+messages -> WebPageProxy {
+    # UI messages.
+    CreateNewPage() -> (uint64_t newPageID, WebKit::WebPageCreationParameters newPageParameters)
+    ShowPage()
+    ClosePage()
+    RunJavaScriptAlert(uint64_t frameID, WTF::String message) -> ()
+    RunJavaScriptConfirm(uint64_t frameID, WTF::String message) -> (bool result)
+    RunJavaScriptPrompt(uint64_t frameID, WTF::String message, WTF::String defaultValue) -> (WTF::String result)
+    MouseDidMoveOverElement(uint32_t modifiers, WebKit::InjectedBundleUserMessageEncoder userData);
+    ContentsSizeChanged(uint64_t frameID, WebCore::IntSize newSize)
+    DidReceiveEvent(uint32_t type, bool handled)
+    DidValidateMenuItem(WTF::String commandName, bool isEnabled, int32_t state)
+    SetCursor(WebCore::Cursor cursor)
+    SetStatusText(WTF::String statusText)
+    SetToolTip(WTF::String toolTip)
+    TakeFocus(bool direction)
+
+    # Policy messages.
+    DecidePolicyForMIMEType(uint64_t frameID, WTF::String MIMEType, WTF::String url, uint64_t listenerID)
+    DecidePolicyForNavigationAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, WTF::String url, uint64_t listenerID)
+    DecidePolicyForNewWindowAction(uint64_t frameID, uint32_t navigationType, uint32_t modifiers, int32_t mouseButton, WTF::String url, uint64_t listenerID)
+
+    # Progress messages.
+    DidChangeProgress(double value)
+    DidFinishProgress()
+    DidStartProgress()
+
+    # Frame lifetime messages.
+    DidCreateMainFrame(uint64_t frameID)
+    DidCreateSubFrame(uint64_t frameID)
+
+    # Frame load messages.
+    DidCommitLoadForFrame(uint64_t frameID, WTF::String mimeType, WebKit::PlatformCertificateInfo certificateInfo, WebKit::InjectedBundleUserMessageEncoder userData)
+    DidFailLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData)
+    DidFailProvisionalLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData)
+    DidFinishDocumentLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData)
+    DidFinishLoadForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData)
+    DidFirstLayoutForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData)
+    DidFirstVisuallyNonEmptyLayoutForFrame(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData)
+    DidReceiveServerRedirectForProvisionalLoadForFrame(uint64_t frameID, WTF::String url, WebKit::InjectedBundleUserMessageEncoder userData)
+    DidRemoveFrameFromHierarchy(uint64_t frameID, WebKit::InjectedBundleUserMessageEncoder userData)
+    DidStartProvisionalLoadForFrame(uint64_t frameID, WTF::String url, WebKit::InjectedBundleUserMessageEncoder userData)
+    DidReceiveTitleForFrame(uint64_t frameID, WTF::String title, WebKit::InjectedBundleUserMessageEncoder userData)
+
+    # Forms messages.
+    WillSubmitForm(uint64_t frameID, uint64_t sourceFrameID, WebKit::StringPairVector textFieldValues, uint64_t listenerID, WebKit::InjectedBundleUserMessageEncoder userData)
+
+    # Callback messages.
+    DidGetRenderTreeExternalRepresentation(WTF::String resultString, uint64_t callbackID)
+    DidGetSourceForFrame(WTF::String resultString, uint64_t callbackID)
+    DidRunJavaScriptInMainFrame(WTF::String resultString, uint64_t callbackID)
+
+    # BackForward messages.
+    BackForwardAddItem(uint64_t itemID)
+    BackForwardGoToItem(uint64_t itemID)
+    BackForwardBackItem() -> (uint64_t itemID)
+    BackForwardCurrentItem() -> (uint64_t itemID)
+    BackForwardForwardItem() -> (uint64_t itemID)
+    BackForwardItemAtIndex(uint64_t itemID) -> (uint64_t itemID)
+    BackForwardBackListCount() -> (int32_t itemID)
+    BackForwardForwardListCount() -> (int32_t itemID)
+
+    # UndoRedo messages.
+    RegisterEditCommandForUndo(uint64_t commandID, uint32_t editAction)
+    ClearAllEditCommands()
+
+#if USE(ACCELERATED_COMPOSITING)
+    # Accelerated compsiting messages.
+    DidChangeAcceleratedCompositing(bool compositing) -> (WebKit::DrawingAreaBase::DrawingAreaInfo newDrawingArea)
+#endif
+}
diff --git a/WebKit2/UIProcess/win/WebView.cpp b/WebKit2/UIProcess/win/WebView.cpp
index b47d371..f54da57 100644
--- a/WebKit2/UIProcess/win/WebView.cpp
+++ b/WebKit2/UIProcess/win/WebView.cpp
@@ -572,7 +572,7 @@ void WebView::setCursor(const WebCore::Cursor& cursor)
     ::SetCursor(platformCursor);
 }
 
-void WebView::registerEditCommand(PassRefPtr<WebEditCommandProxy>, UndoOrRedo)
+void WebView::registerEditCommand(PassRefPtr<WebEditCommandProxy>, WebPageProxy::UndoOrRedo)
 {
 }
 
diff --git a/WebKit2/UIProcess/win/WebView.h b/WebKit2/UIProcess/win/WebView.h
index 02b546d..60254d5 100644
--- a/WebKit2/UIProcess/win/WebView.h
+++ b/WebKit2/UIProcess/win/WebView.h
@@ -95,7 +95,7 @@ private:
     virtual void takeFocus(bool direction);
     virtual void toolTipChanged(const WTF::String&, const WTF::String&);
     virtual void setCursor(const WebCore::Cursor&);
-    virtual void registerEditCommand(PassRefPtr<WebEditCommandProxy>, UndoOrRedo);
+    virtual void registerEditCommand(PassRefPtr<WebEditCommandProxy>, WebPageProxy::UndoOrRedo);
     virtual void clearAllEditCommands();
     virtual void setEditCommandState(const WTF::String&, bool, int);
 
diff --git a/WebKit2/WebKit2.pro b/WebKit2/WebKit2.pro
index 064fae6..caa47c2 100644
--- a/WebKit2/WebKit2.pro
+++ b/WebKit2/WebKit2.pro
@@ -141,10 +141,12 @@ DEFINES += BUILDING_QT__
 
 WEBKIT2_GENERATED_HEADERS = \
     $$OUTPUT_DIR/WebKit2/generated/WebPageMessages.h \
+    $$OUTPUT_DIR/WebKit2/generated/WebPageProxyMessages.h \
     $$OUTPUT_DIR/WebKit2/generated/WebProcessMessages.h
 
 WEBKIT2_GENERATED_SOURCES = \
     $$OUTPUT_DIR/WebKit2/generated/WebPageMessageReceiver.cpp \
+    $$OUTPUT_DIR/WebKit2/generated/WebPageProxyMessageReceiver.cpp \
     $$OUTPUT_DIR/WebKit2/generated/WebProcessMessageReceiver.cpp
 
 HEADERS += \
@@ -176,7 +178,6 @@ HEADERS += \
     Shared/API/c/WKURLResponse.h \
     Shared/CoreIPCSupport/DrawingAreaMessageKinds.h \
     Shared/CoreIPCSupport/DrawingAreaProxyMessageKinds.h \
-    Shared/CoreIPCSupport/WebPageProxyMessageKinds.h \
     Shared/CacheModel.h \
     Shared/DrawingAreaBase.h \
     Shared/ImmutableArray.h \
@@ -185,6 +186,7 @@ HEADERS += \
     Shared/MutableDictionary.h \
     Shared/NativeWebKeyboardEvent.h \
     Shared/NotImplemented.h \
+    Shared/StringPairVector.h \
     Shared/qt/MappedMemory.h \
     Shared/qt/PlatformCertificateInfo.h \
     Shared/qt/UpdateChunk.h \
diff --git a/WebKit2/WebKit2.xcodeproj/project.pbxproj b/WebKit2/WebKit2.xcodeproj/project.pbxproj
index 192dc28..ba8eb4f 100644
--- a/WebKit2/WebKit2.xcodeproj/project.pbxproj
+++ b/WebKit2/WebKit2.xcodeproj/project.pbxproj
@@ -189,8 +189,6 @@
 		BC111B51112F619200337BAB /* PageClientImpl.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC111B4C112F619200337BAB /* PageClientImpl.mm */; };
 		BC111B5D112F629800337BAB /* WebEventFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = BC111B5B112F629800337BAB /* WebEventFactory.h */; };
 		BC111B5E112F629800337BAB /* WebEventFactory.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC111B5C112F629800337BAB /* WebEventFactory.mm */; };
-		BC111B64112F638300337BAB /* WebPageProxyMessageKinds.h in Headers */ = {isa = PBXBuildFile; fileRef = BC111B61112F638300337BAB /* WebPageProxyMessageKinds.h */; };
-		BC111B65112F638300337BAB /* WebProcessMessageKinds.h in Headers */ = {isa = PBXBuildFile; fileRef = BC111B62112F638300337BAB /* WebProcessMessageKinds.h */; };
 		BC131BC911726C2800B69727 /* CoreIPCMessageKinds.h in Headers */ = {isa = PBXBuildFile; fileRef = BC131BC811726C2800B69727 /* CoreIPCMessageKinds.h */; };
 		BC14DF77120B5B7900826C0C /* InjectedBundleScriptWorld.h in Headers */ = {isa = PBXBuildFile; fileRef = BC14DF75120B5B7900826C0C /* InjectedBundleScriptWorld.h */; };
 		BC14DF78120B5B7900826C0C /* InjectedBundleScriptWorld.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC14DF76120B5B7900826C0C /* InjectedBundleScriptWorld.cpp */; };
@@ -351,6 +349,9 @@
 		BCB9F8B01124E07700A137E0 /* WebPolicyClient.h in Headers */ = {isa = PBXBuildFile; fileRef = BCB9F8AE1124E07700A137E0 /* WebPolicyClient.h */; };
 		BCBCB0CB1215E32100DE59CA /* ImmutableDictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBCB0CA1215E32100DE59CA /* ImmutableDictionary.h */; };
 		BCBCB0CD1215E33A00DE59CA /* ImmutableDictionary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBCB0CC1215E33A00DE59CA /* ImmutableDictionary.cpp */; };
+		BCBD3914125BB1A800D2C29F /* WebPageProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBD3912125BB1A800D2C29F /* WebPageProxyMessageReceiver.cpp */; };
+		BCBD3915125BB1A800D2C29F /* WebPageProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD3913125BB1A800D2C29F /* WebPageProxyMessages.h */; };
+		BCBD3C3B125BFA7A00D2C29F /* StringPairVector.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBD3C3A125BFA7A00D2C29F /* StringPairVector.h */; };
 		BCC56F791159957D001CCAF9 /* MachPort.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC56F771159957D001CCAF9 /* MachPort.h */; };
 		BCC5715B115ADAEF001CCAF9 /* WebSystemInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC57159115ADAEF001CCAF9 /* WebSystemInterface.h */; };
 		BCC5715C115ADAEF001CCAF9 /* WebSystemInterface.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCC5715A115ADAEF001CCAF9 /* WebSystemInterface.mm */; };
@@ -641,8 +642,6 @@
 		BC111B4C112F619200337BAB /* PageClientImpl.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PageClientImpl.mm; sourceTree = "<group>"; };
 		BC111B5B112F629800337BAB /* WebEventFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebEventFactory.h; sourceTree = "<group>"; };
 		BC111B5C112F629800337BAB /* WebEventFactory.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebEventFactory.mm; sourceTree = "<group>"; };
-		BC111B61112F638300337BAB /* WebPageProxyMessageKinds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPageProxyMessageKinds.h; sourceTree = "<group>"; };
-		BC111B62112F638300337BAB /* WebProcessMessageKinds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebProcessMessageKinds.h; sourceTree = "<group>"; };
 		BC131BC811726C2800B69727 /* CoreIPCMessageKinds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CoreIPCMessageKinds.h; sourceTree = "<group>"; };
 		BC14DF75120B5B7900826C0C /* InjectedBundleScriptWorld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundleScriptWorld.h; sourceTree = "<group>"; };
 		BC14DF76120B5B7900826C0C /* InjectedBundleScriptWorld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleScriptWorld.cpp; sourceTree = "<group>"; };
@@ -803,6 +802,10 @@
 		BCB9F8AE1124E07700A137E0 /* WebPolicyClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPolicyClient.h; sourceTree = "<group>"; };
 		BCBCB0CA1215E32100DE59CA /* ImmutableDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImmutableDictionary.h; sourceTree = "<group>"; };
 		BCBCB0CC1215E33A00DE59CA /* ImmutableDictionary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImmutableDictionary.cpp; sourceTree = "<group>"; };
+		BCBD38FA125BAB9A00D2C29F /* WebPageProxy.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebPageProxy.messages.in; sourceTree = "<group>"; };
+		BCBD3912125BB1A800D2C29F /* WebPageProxyMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebPageProxyMessageReceiver.cpp; sourceTree = "<group>"; };
+		BCBD3913125BB1A800D2C29F /* WebPageProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebPageProxyMessages.h; sourceTree = "<group>"; };
+		BCBD3C3A125BFA7A00D2C29F /* StringPairVector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringPairVector.h; sourceTree = "<group>"; };
 		BCC56F771159957D001CCAF9 /* MachPort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MachPort.h; sourceTree = "<group>"; };
 		BCC57159115ADAEF001CCAF9 /* WebSystemInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebSystemInterface.h; sourceTree = "<group>"; };
 		BCC5715A115ADAEF001CCAF9 /* WebSystemInterface.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebSystemInterface.mm; sourceTree = "<group>"; };
@@ -1130,6 +1133,7 @@
 				1A0F29CA120B37160053D1B9 /* VisitedLinkTable.h */,
 				BC1DD7B1114DC396005ADAF3 /* WebCoreArgumentCoders.h */,
 				BCF50726124329AA005955AE /* WebCertificateInfo.h */,
+				BCBD3C3A125BFA7A00D2C29F /* StringPairVector.h */,
 				51578B821209ECEF00A37C4A /* WebData.h */,
 				516A4A5B120A2CCD00C05B7F /* WebError.h */,
 				BC032DAF10F4380F0058C15A /* WebEvent.h */,
@@ -1330,6 +1334,7 @@
 				BCEE98C5113314D7006BCC24 /* WebPageNamespace.h */,
 				BC111B0B112F5E4F00337BAB /* WebPageProxy.cpp */,
 				BC032DCB10F4389F0058C15A /* WebPageProxy.h */,
+				BCBD38FA125BAB9A00D2C29F /* WebPageProxy.messages.in */,
 				BCB9F8AD1124E07700A137E0 /* WebPolicyClient.cpp */,
 				BCB9F8AE1124E07700A137E0 /* WebPolicyClient.h */,
 				BCD597FE112B57BE00EC8C23 /* WebPreferences.cpp */,
@@ -1460,8 +1465,6 @@
 				BC9E969911457EDE00870E71 /* DrawingAreaProxyMessageKinds.h */,
 				BCB28CBF120233D9007D99BC /* InjectedBundleMessageKinds.h */,
 				BCCB75C51203A1CE00222D1B /* WebContextMessageKinds.h */,
-				BC111B61112F638300337BAB /* WebPageProxyMessageKinds.h */,
-				BC111B62112F638300337BAB /* WebProcessMessageKinds.h */,
 				BCB7346D11CEE3FF00EC5002 /* WebProcessProxyMessageKinds.h */,
 			);
 			path = CoreIPCSupport;
@@ -1702,6 +1705,8 @@
 				1A8EFA6F1252B84100F7067F /* PluginProxyMessages.h */,
 				C0CE729E1247E71D00BC0EC4 /* WebPageMessageReceiver.cpp */,
 				C0CE729F1247E71D00BC0EC4 /* WebPageMessages.h */,
+				BCBD3912125BB1A800D2C29F /* WebPageProxyMessageReceiver.cpp */,
+				BCBD3913125BB1A800D2C29F /* WebPageProxyMessages.h */,
 				1A043F6712514D8B00FFBFB5 /* WebProcessConnectionMessageReceiver.cpp */,
 				1A043F6812514D8B00FFBFB5 /* WebProcessConnectionMessages.h */,
 				BC3066BC125A442100E71278 /* WebProcessMessageReceiver.cpp */,
@@ -1807,7 +1812,6 @@
 				BC032D8F10F437A00058C15A /* WebPage.h in Headers */,
 				BCEE98C7113314D7006BCC24 /* WebPageNamespace.h in Headers */,
 				BC032DD110F4389F0058C15A /* WebPageProxy.h in Headers */,
-				BC111B64112F638300337BAB /* WebPageProxyMessageKinds.h in Headers */,
 				1A3E736111CC2659007BD539 /* WebPlatformStrategies.h in Headers */,
 				BCB9F8B01124E07700A137E0 /* WebPolicyClient.h in Headers */,
 				BCD597FF112B57BE00EC8C23 /* WebPreferences.h in Headers */,
@@ -1815,7 +1819,6 @@
 				BC032D9710F437AF0058C15A /* WebProcess.h in Headers */,
 				1A6FA02011E1528700DB1371 /* WebProcessMain.h in Headers */,
 				BC032DD310F4389F0058C15A /* WebProcessManager.h in Headers */,
-				BC111B65112F638300337BAB /* WebProcessMessageKinds.h in Headers */,
 				BC032DD510F4389F0058C15A /* WebProcessProxy.h in Headers */,
 				BCB7346E11CEE3FF00EC5002 /* WebProcessProxyMessageKinds.h in Headers */,
 				BCC5715B115ADAEF001CCAF9 /* WebSystemInterface.h in Headers */,
@@ -1938,6 +1941,8 @@
 				BC3065FA1259344E00E71278 /* CacheModel.h in Headers */,
 				BC3066BF125A442100E71278 /* WebProcessMessages.h in Headers */,
 				BC306824125A6B9400E71278 /* WebProcessCreationParameters.h in Headers */,
+				BCBD3915125BB1A800D2C29F /* WebPageProxyMessages.h in Headers */,
+				BCBD3C3B125BFA7A00D2C29F /* StringPairVector.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -2235,6 +2240,7 @@
 				BC3065C412592F8900E71278 /* WebProcessMac.mm in Sources */,
 				BC3066BE125A442100E71278 /* WebProcessMessageReceiver.cpp in Sources */,
 				BC306825125A6B9400E71278 /* WebProcessCreationParameters.cpp in Sources */,
+				BCBD3914125BB1A800D2C29F /* WebPageProxyMessageReceiver.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp b/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp
index 88338c8..c095ae0 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp
+++ b/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp
@@ -36,7 +36,7 @@
 #include "WebFrameLoaderClient.h"
 #include "WebPage.h"
 #include "WebPageCreationParameters.h"
-#include "WebPageProxyMessageKinds.h"
+#include "WebPageProxyMessages.h"
 #include "WebPopupMenu.h"
 #include "WebPreferencesStore.h"
 #include "WebProcess.h"
@@ -57,7 +57,7 @@ void WebChromeClient::chromeDestroyed()
     delete this;
 }
 
-void WebChromeClient::setWindowRect(const FloatRect&)
+void WebChromeClient::setWindowRect(const FloatRect& windowRect)
 {
     notImplemented();
 }
@@ -98,8 +98,7 @@ bool WebChromeClient::canTakeFocus(FocusDirection)
 
 void WebChromeClient::takeFocus(FocusDirection direction)
 {
-    WebProcess::shared().connection()->send(WebPageProxyMessage::TakeFocus, m_page->pageID(),
-                                            direction == FocusDirectionForward ? true : false);
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::TakeFocus(direction == FocusDirectionForward ? true : false), m_page->pageID());
 }
 
 void WebChromeClient::focusedNodeChanged(Node*)
@@ -111,10 +110,9 @@ Page* WebChromeClient::createWindow(Frame*, const FrameLoadRequest&, const Windo
 {
     uint64_t newPageID = 0;
     WebPageCreationParameters parameters;
-    if (!WebProcess::shared().connection()->sendSync(WebPageProxyMessage::CreateNewPage,
-                                                     m_page->pageID(), CoreIPC::In(),
-                                                     CoreIPC::Out(newPageID, parameters),
-                                                     CoreIPC::Connection::NoTimeout)) {
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::CreateNewPage(),
+            Messages::WebPageProxy::CreateNewPage::Reply(newPageID, parameters),
+            m_page->pageID(), CoreIPC::Connection::NoTimeout)) {
         return 0;
     }
 
@@ -236,10 +234,8 @@ void WebChromeClient::runJavaScriptAlert(Frame* frame, const String& alertText)
     // Notify the bundle client.
     m_page->injectedBundleUIClient().willRunJavaScriptAlert(m_page, alertText, webFrame);
 
-    WebProcess::shared().connection()->sendSync(WebPageProxyMessage::RunJavaScriptAlert, m_page->pageID(),
-                                                CoreIPC::In(webFrame->frameID(), alertText),
-                                                CoreIPC::Out(),
-                                                CoreIPC::Connection::NoTimeout);
+    WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::RunJavaScriptAlert(webFrame->frameID(), alertText),
+        Messages::WebPageProxy::RunJavaScriptAlert::Reply(), m_page->pageID(), CoreIPC::Connection::NoTimeout);
 }
 
 bool WebChromeClient::runJavaScriptConfirm(Frame* frame, const String& message)
@@ -250,12 +246,9 @@ bool WebChromeClient::runJavaScriptConfirm(Frame* frame, const String& message)
     m_page->injectedBundleUIClient().willRunJavaScriptConfirm(m_page, message, webFrame);
 
     bool result = false;
-    if (!WebProcess::shared().connection()->sendSync(WebPageProxyMessage::RunJavaScriptConfirm, m_page->pageID(),
-                                                     CoreIPC::In(webFrame->frameID(), message),
-                                                     CoreIPC::Out(result),
-                                                     CoreIPC::Connection::NoTimeout)) {
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::RunJavaScriptConfirm(webFrame->frameID(), message),
+             Messages::WebPageProxy::RunJavaScriptConfirm::Reply(result), m_page->pageID(), CoreIPC::Connection::NoTimeout))
         return false;
-    }
 
     return result;
 }
@@ -267,12 +260,9 @@ bool WebChromeClient::runJavaScriptPrompt(Frame* frame, const String& message, c
     // Notify the bundle client.
     m_page->injectedBundleUIClient().willRunJavaScriptPrompt(m_page, message, defaultValue, webFrame);
 
-    if (!WebProcess::shared().connection()->sendSync(WebPageProxyMessage::RunJavaScriptPrompt, m_page->pageID(),
-                                                     CoreIPC::In(webFrame->frameID(), message, defaultValue),
-                                                     CoreIPC::Out(result),
-                                                     CoreIPC::Connection::NoTimeout)) {
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::RunJavaScriptPrompt(webFrame->frameID(), message, defaultValue),
+             Messages::WebPageProxy::RunJavaScriptPrompt::Reply(result), m_page->pageID(), CoreIPC::Connection::NoTimeout))
         return false;
-    }
 
     return !result.isNull();
 }
@@ -282,7 +272,7 @@ void WebChromeClient::setStatusbarText(const String& statusbarText)
     // Notify the bundle client.
     m_page->injectedBundleUIClient().willSetStatusbarText(m_page, statusbarText);
 
-    WebProcess::shared().connection()->send(WebPageProxyMessage::SetStatusText, m_page->pageID(), statusbarText);
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::SetStatusText(statusbarText), m_page->pageID());
 }
 
 bool WebChromeClient::shouldInterruptJavaScript()
@@ -343,8 +333,8 @@ PlatformPageClient WebChromeClient::platformPageClient() const
 void WebChromeClient::contentsSizeChanged(Frame* frame, const IntSize& size) const
 {
     WebFrame* webFrame =  static_cast<WebFrameLoaderClient*>(frame->loader()->client())->webFrame();
-    WebProcess::shared().connection()->send(WebPageProxyMessage::ContentsSizeChanged, m_page->pageID(),
-                                            CoreIPC::In(webFrame->frameID(), size));
+
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::ContentsSizeChanged(webFrame->frameID(), size), m_page->pageID());
 }
 
 void WebChromeClient::scrollRectIntoView(const IntRect&, const ScrollView*) const
@@ -365,7 +355,7 @@ void WebChromeClient::mouseDidMoveOverElement(const HitTestResult& hitTestResult
     m_page->injectedBundleUIClient().mouseDidMoveOverElement(m_page, hitTestResult, static_cast<WebEvent::Modifiers>(modifierFlags), userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::MouseDidMoveOverElement, m_page->pageID(), CoreIPC::In(modifierFlags, InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::MouseDidMoveOverElement(modifierFlags, InjectedBundleUserMessageEncoder(userData.get())), m_page->pageID());
 }
 
 void WebChromeClient::setToolTip(const String& toolTip, TextDirection)
@@ -376,7 +366,7 @@ void WebChromeClient::setToolTip(const String& toolTip, TextDirection)
         return;
     m_cachedToolTip = toolTip;
 
-    WebProcess::shared().connection()->send(WebPageProxyMessage::SetToolTip, m_page->pageID(), CoreIPC::In(m_cachedToolTip));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::SetToolTip(m_cachedToolTip), m_page->pageID());
 }
 
 void WebChromeClient::print(Frame*)
@@ -476,7 +466,7 @@ void WebChromeClient::chooseIconForFiles(const Vector<String>&, FileChooser*)
 void WebChromeClient::setCursor(const Cursor& cursor)
 {
 #if USE(LAZY_NATIVE_CURSOR)
-    WebProcess::shared().connection()->send(WebPageProxyMessage::SetCursor, m_page->pageID(), CoreIPC::In(cursor));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::SetCursor(cursor), m_page->pageID());
 #endif
 }
 
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp b/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp
index 235f5ce..5852df1 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp
+++ b/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.cpp
@@ -30,7 +30,7 @@
 
 #include "WebFrameLoaderClient.h"
 #include "WebPage.h"
-#include "WebPageProxyMessageKinds.h"
+#include "WebPageProxyMessages.h"
 #include "WebProcess.h"
 #include <WebCore/ArchiveResource.h>
 #include <WebCore/DocumentFragment.h>
@@ -211,8 +211,7 @@ void WebEditorClient::registerCommandForUndo(PassRefPtr<EditCommand> command)
     m_page->addWebEditCommand(webCommand->commandID(), webCommand.get());
     uint32_t editAction = static_cast<uint32_t>(webCommand->command()->editingAction());
 
-    WebProcess::shared().connection()->send(WebPageProxyMessage::RegisterEditCommandForUndo, m_page->pageID(),
-                                            CoreIPC::In(webCommand->commandID(), editAction));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::RegisterEditCommandForUndo(webCommand->commandID(), editAction), m_page->pageID());
 }
 
 void WebEditorClient::registerCommandForRedo(PassRefPtr<EditCommand>)
@@ -221,7 +220,7 @@ void WebEditorClient::registerCommandForRedo(PassRefPtr<EditCommand>)
 
 void WebEditorClient::clearUndoRedoOperations()
 {
-    WebProcess::shared().connection()->send(WebPageProxyMessage::ClearAllEditCommands, m_page->pageID(), CoreIPC::In());
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::ClearAllEditCommands(), m_page->pageID());
 }
 
 bool WebEditorClient::canUndo() const
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp b/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
index 7786f7c..deb90e3 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
+++ b/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
@@ -31,6 +31,7 @@
 #include "InjectedBundleUserMessageCoders.h"
 #include "PlatformCertificateInfo.h"
 #include "PluginView.h"
+#include "StringPairVector.h"
 #include "WebCoreArgumentCoders.h"
 #include "WebErrors.h"
 #include "WebEvent.h"
@@ -38,7 +39,7 @@
 #include "WebFrameNetworkingContext.h"
 #include "WebNavigationDataStore.h"
 #include "WebPage.h"
-#include "WebPageProxyMessageKinds.h"
+#include "WebPageProxyMessages.h"
 #include "WebProcess.h"
 #include "WebProcessProxyMessageKinds.h"
 #include <JavaScriptCore/APICast.h>
@@ -125,7 +126,8 @@ void WebFrameLoaderClient::detachedFromParent2()
     webPage->injectedBundleLoaderClient().didRemoveFrameFromHierarchy(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidRemoveFrameFromHierarchy, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidRemoveFrameFromHierarchy(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())), webPage->pageID());
+
 }
 
 void WebFrameLoaderClient::detachedFromParent3()
@@ -223,7 +225,7 @@ void WebFrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad()
     webPage->injectedBundleLoaderClient().didReceiveServerRedirectForProvisionalLoadForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidReceiveServerRedirectForProvisionalLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), url, InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidReceiveServerRedirectForProvisionalLoadForFrame(m_frame->frameID(), url, InjectedBundleUserMessageEncoder(userData.get())), webPage->pageID());
 }
 
 void WebFrameLoaderClient::dispatchDidCancelClientRedirect()
@@ -295,7 +297,7 @@ void WebFrameLoaderClient::dispatchDidStartProvisionalLoad()
     webPage->injectedBundleLoaderClient().didStartProvisionalLoadForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidStartProvisionalLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), url, InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidStartProvisionalLoadForFrame(m_frame->frameID(), url, InjectedBundleUserMessageEncoder(userData.get())), webPage->pageID());
 }
 
 void WebFrameLoaderClient::dispatchDidReceiveTitle(const String& title)
@@ -310,7 +312,7 @@ void WebFrameLoaderClient::dispatchDidReceiveTitle(const String& title)
     webPage->injectedBundleLoaderClient().didReceiveTitleForFrame(webPage, title, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidReceiveTitleForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), title, InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidReceiveTitleForFrame(m_frame->frameID(), title, InjectedBundleUserMessageEncoder(userData.get())), webPage->pageID());
 }
 
 void WebFrameLoaderClient::dispatchDidChangeIcons()
@@ -331,7 +333,7 @@ void WebFrameLoaderClient::dispatchDidCommitLoad()
     webPage->injectedBundleLoaderClient().didCommitLoadForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidCommitLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), response.mimeType(), PlatformCertificateInfo(response), InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidCommitLoadForFrame(m_frame->frameID(), response.mimeType(), PlatformCertificateInfo(response), InjectedBundleUserMessageEncoder(userData.get())), webPage->pageID());
 }
 
 void WebFrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError& error)
@@ -346,7 +348,7 @@ void WebFrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError& e
     webPage->injectedBundleLoaderClient().didFailProvisionalLoadWithErrorForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFailProvisionalLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidFailProvisionalLoadForFrame(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())), webPage->pageID());
     
     // If we have a load listener, notify it.
     if (WebFrame::LoadListener* loadListener = m_frame->loadListener())
@@ -365,7 +367,7 @@ void WebFrameLoaderClient::dispatchDidFailLoad(const ResourceError& error)
     webPage->injectedBundleLoaderClient().didFailLoadWithErrorForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFailLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidFailLoadForFrame(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())), webPage->pageID());
 
     // If we have a load listener, notify it.
     if (WebFrame::LoadListener* loadListener = m_frame->loadListener())
@@ -384,7 +386,7 @@ void WebFrameLoaderClient::dispatchDidFinishDocumentLoad()
     webPage->injectedBundleLoaderClient().didFinishDocumentLoadForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFinishDocumentLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidFinishDocumentLoadForFrame(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())), webPage->pageID());
 }
 
 void WebFrameLoaderClient::dispatchDidFinishLoad()
@@ -399,7 +401,7 @@ void WebFrameLoaderClient::dispatchDidFinishLoad()
     webPage->injectedBundleLoaderClient().didFinishLoadForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFinishLoadForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidFinishLoadForFrame(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())), webPage->pageID());
 
     // If we have a load listener, notify it.
     if (WebFrame::LoadListener* loadListener = m_frame->loadListener())
@@ -418,7 +420,7 @@ void WebFrameLoaderClient::dispatchDidFirstLayout()
     webPage->injectedBundleLoaderClient().didFirstLayoutForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFirstLayoutForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidFirstLayoutForFrame(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())), webPage->pageID());
 }
 
 void WebFrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout()
@@ -433,7 +435,7 @@ void WebFrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout()
     webPage->injectedBundleLoaderClient().didFirstVisuallyNonEmptyLayoutForFrame(webPage, m_frame, userData);
 
     // Notify the UIProcess.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidFirstVisuallyNonEmptyLayoutForFrame, webPage->pageID(), CoreIPC::In(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidFirstVisuallyNonEmptyLayoutForFrame(m_frame->frameID(), InjectedBundleUserMessageEncoder(userData.get())), webPage->pageID());
 }
 
 Frame* WebFrameLoaderClient::dispatchCreatePage()
@@ -514,8 +516,7 @@ void WebFrameLoaderClient::dispatchDecidePolicyForMIMEType(FramePolicyFunction f
     uint64_t listenerID = m_frame->setUpPolicyListener(function);
     const String& url = request.url().string(); // FIXME: Pass entire request.
 
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DecidePolicyForMIMEType, webPage->pageID(),
-                                            CoreIPC::In(m_frame->frameID(), MIMEType, url, listenerID));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DecidePolicyForMIMEType(m_frame->frameID(), MIMEType, url, listenerID), webPage->pageID());
 }
 
 void WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const NavigationAction& navigationAction, const ResourceRequest& request, PassRefPtr<FormState>, const String& frameName)
@@ -534,8 +535,7 @@ void WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(FramePolicyFun
     uint32_t modifiers = modifiersForNavigationAction(navigationAction);
     int32_t mouseButton = mouseButtonForNavigationAction(navigationAction);
 
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DecidePolicyForNewWindowAction, webPage->pageID(),
-                                            CoreIPC::In(m_frame->frameID(), navigationType, modifiers, mouseButton, url, listenerID));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DecidePolicyForNewWindowAction(m_frame->frameID(), navigationType, modifiers, mouseButton, url, listenerID), webPage->pageID());
 }
 
 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(FramePolicyFunction function, const NavigationAction& navigationAction, const ResourceRequest& request, PassRefPtr<FormState>)
@@ -560,8 +560,7 @@ void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(FramePolicyFu
     uint32_t modifiers = modifiersForNavigationAction(navigationAction);
     int32_t mouseButton = mouseButtonForNavigationAction(navigationAction);
 
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DecidePolicyForNavigationAction, webPage->pageID(),
-                                            CoreIPC::In(m_frame->frameID(), navigationType, modifiers, mouseButton, url, listenerID));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DecidePolicyForNavigationAction(m_frame->frameID(), navigationType, modifiers, mouseButton, url, listenerID), webPage->pageID());
 }
 
 void WebFrameLoaderClient::cancelPolicyCheck()
@@ -592,9 +591,9 @@ void WebFrameLoaderClient::dispatchWillSubmitForm(FramePolicyFunction function,
 
 
     uint64_t listenerID = m_frame->setUpPolicyListener(function);
+    StringPairVector valuesVector(values);
 
-    WebProcess::shared().connection()->send(WebPageProxyMessage::WillSubmitForm, webPage->pageID(),
-                                            CoreIPC::In(m_frame->frameID(), sourceFrame->frameID(), values, listenerID, InjectedBundleUserMessageEncoder(userData.get())));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::WillSubmitForm(m_frame->frameID(), sourceFrame->frameID(), valuesVector, listenerID, InjectedBundleUserMessageEncoder(userData.get())), webPage->pageID());
 }
 
 void WebFrameLoaderClient::dispatchDidLoadMainResource(DocumentLoader*)
@@ -630,21 +629,22 @@ void WebFrameLoaderClient::didChangeEstimatedProgress()
 void WebFrameLoaderClient::postProgressStartedNotification()
 {
     if (WebPage* webPage = m_frame->page())
-        WebProcess::shared().connection()->send(WebPageProxyMessage::DidStartProgress, webPage->pageID(), CoreIPC::In());
+        WebProcess::shared().connection()->send(Messages::WebPageProxy::DidStartProgress(), webPage->pageID());
 }
 
 void WebFrameLoaderClient::postProgressEstimateChangedNotification()
 {
     if (WebPage* webPage = m_frame->page()) {
         double progress = webPage->corePage()->progress()->estimatedProgress();
-        WebProcess::shared().connection()->send(WebPageProxyMessage::DidChangeProgress, webPage->pageID(), CoreIPC::In(progress));
+        WebProcess::shared().connection()->send(Messages::WebPageProxy::DidChangeProgress(progress), webPage->pageID());
+
     }
 }
 
 void WebFrameLoaderClient::postProgressFinishedNotification()
 {
     if (WebPage* webPage = m_frame->page())
-        WebProcess::shared().connection()->send(WebPageProxyMessage::DidFinishProgress, webPage->pageID(), CoreIPC::In());
+        WebProcess::shared().connection()->send(Messages::WebPageProxy::DidFinishProgress(), webPage->pageID());
 }
 
 void WebFrameLoaderClient::setMainFrameDocumentReady(bool)
@@ -948,7 +948,7 @@ PassRefPtr<Frame> WebFrameLoaderClient::createFrame(const KURL& url, const Strin
     RefPtr<WebFrame> subframe = WebFrame::createSubframe(webPage, name, ownerElement);
 
     // Notify the UI process that subframe has been added.
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidCreateSubFrame, webPage->pageID(), CoreIPC::In(subframe->frameID()));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidCreateSubFrame(subframe->frameID()), webPage->pageID());
 
     Frame* coreSubframe = subframe->coreFrame();
 
diff --git a/WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp b/WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp
index 40d81b9..dc3ca69 100644
--- a/WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp
+++ b/WebKit2/WebProcess/WebPage/WebBackForwardListProxy.cpp
@@ -27,7 +27,7 @@
 
 #include "WebCoreArgumentCoders.h"
 #include "WebPage.h"
-#include "WebPageProxyMessageKinds.h"
+#include "WebPageProxyMessages.h"
 #include "WebProcess.h"
 #include "WebProcessProxyMessageKinds.h"
 #include <WebCore/HistoryItem.h>
@@ -119,7 +119,7 @@ void WebBackForwardListProxy::addItem(PassRefPtr<HistoryItem> prpItem)
 
     RefPtr<HistoryItem> item = prpItem;
     uint64_t itemID = historyItemToIDMap().get(item);
-    WebProcess::shared().connection()->send(WebPageProxyMessage::BackForwardAddItem, m_page->pageID(), CoreIPC::In(itemID));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::BackForwardAddItem(itemID), m_page->pageID());
 }
 
 void WebBackForwardListProxy::goBack()
@@ -135,16 +135,16 @@ void WebBackForwardListProxy::goForward()
 void WebBackForwardListProxy::goToItem(HistoryItem* item)
 {
     uint64_t itemID = historyItemToIDMap().get(item);
-    WebProcess::shared().connection()->send(WebPageProxyMessage::BackForwardGoToItem, m_page->pageID(), CoreIPC::In(itemID));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::BackForwardGoToItem(itemID), m_page->pageID());
+
 }
 
 HistoryItem* WebBackForwardListProxy::backItem()
 {
     uint64_t backItemID = 0;
-    if (!WebProcess::shared().connection()->sendSync(WebPageProxyMessage::BackForwardBackItem,
-                                                     m_page->pageID(), CoreIPC::In(),
-                                                     CoreIPC::Out(backItemID),
-                                                     CoreIPC::Connection::NoTimeout)) {
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::BackForwardBackItem(),
+             Messages::WebPageProxy::BackForwardBackItem::Reply(backItemID),
+             m_page->pageID(), CoreIPC::Connection::NoTimeout)) {
         return 0;
     }
 
@@ -158,10 +158,9 @@ HistoryItem* WebBackForwardListProxy::backItem()
 HistoryItem* WebBackForwardListProxy::currentItem()
 {
     uint64_t currentItemID = 0;
-    if (!WebProcess::shared().connection()->sendSync(WebPageProxyMessage::BackForwardCurrentItem,
-                                                     m_page->pageID(), CoreIPC::In(),
-                                                     CoreIPC::Out(currentItemID),
-                                                     CoreIPC::Connection::NoTimeout)) {
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::BackForwardCurrentItem(),
+             Messages::WebPageProxy::BackForwardCurrentItem::Reply(currentItemID),
+             m_page->pageID(), CoreIPC::Connection::NoTimeout)) {
         return 0;
     }
 
@@ -175,10 +174,9 @@ HistoryItem* WebBackForwardListProxy::currentItem()
 HistoryItem* WebBackForwardListProxy::forwardItem()
 {
     uint64_t forwardItemID = 0;
-    if (!WebProcess::shared().connection()->sendSync(WebPageProxyMessage::BackForwardForwardItem,
-                                                     m_page->pageID(), CoreIPC::In(),
-                                                     CoreIPC::Out(forwardItemID),
-                                                     CoreIPC::Connection::NoTimeout)) {
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::BackForwardForwardItem(),
+             Messages::WebPageProxy::BackForwardForwardItem::Reply(forwardItemID),
+             m_page->pageID(), CoreIPC::Connection::NoTimeout)) {
         return 0;
     }
 
@@ -192,10 +190,9 @@ HistoryItem* WebBackForwardListProxy::forwardItem()
 HistoryItem* WebBackForwardListProxy::itemAtIndex(int itemIndex)
 {
     uint64_t itemID = 0;
-    if (!WebProcess::shared().connection()->sendSync(WebPageProxyMessage::BackForwardItemAtIndex,
-                                                     m_page->pageID(), CoreIPC::In(itemIndex),
-                                                     CoreIPC::Out(itemID),
-                                                     CoreIPC::Connection::NoTimeout)) {
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::BackForwardItemAtIndex(itemIndex),
+             Messages::WebPageProxy::BackForwardItemAtIndex::Reply(itemID),
+             m_page->pageID(), CoreIPC::Connection::NoTimeout)) {
         return 0;
     }
 
@@ -239,10 +236,9 @@ void WebBackForwardListProxy::setEnabled(bool enabled)
 int WebBackForwardListProxy::backListCount()
 {
     int backListCount = 0;
-    if (!WebProcess::shared().connection()->sendSync(WebPageProxyMessage::BackForwardBackListCount,
-                                                     m_page->pageID(), CoreIPC::In(),
-                                                     CoreIPC::Out(backListCount),
-                                                     CoreIPC::Connection::NoTimeout)) {
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::BackForwardBackListCount(),
+             Messages::WebPageProxy::BackForwardBackListCount::Reply(backListCount),
+             m_page->pageID(), CoreIPC::Connection::NoTimeout)) {
         return 0;
     }
 
@@ -252,10 +248,9 @@ int WebBackForwardListProxy::backListCount()
 int WebBackForwardListProxy::forwardListCount()
 {
     int forwardListCount = 0;
-    if (!WebProcess::shared().connection()->sendSync(WebPageProxyMessage::BackForwardForwardListCount,
-                                                     m_page->pageID(), CoreIPC::In(),
-                                                     CoreIPC::Out(forwardListCount),
-                                                     CoreIPC::Connection::NoTimeout)) {
+    if (!WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::BackForwardForwardListCount(),
+             Messages::WebPageProxy::BackForwardForwardListCount::Reply(forwardListCount),
+             m_page->pageID(), CoreIPC::Connection::NoTimeout)) {
         return 0;
     }
 
diff --git a/WebKit2/WebProcess/WebPage/WebPage.cpp b/WebKit2/WebProcess/WebPage/WebPage.cpp
index 2d0cedd..312a2fc 100644
--- a/WebKit2/WebProcess/WebPage/WebPage.cpp
+++ b/WebKit2/WebProcess/WebPage/WebPage.cpp
@@ -46,7 +46,7 @@
 #include "WebFrame.h"
 #include "WebInspectorClient.h"
 #include "WebPageCreationParameters.h"
-#include "WebPageProxyMessageKinds.h"
+#include "WebPageProxyMessages.h"
 #include "WebProcessProxyMessageKinds.h"
 #include "WebPreferencesStore.h"
 #include "WebProcess.h"
@@ -142,7 +142,7 @@ WebPage::WebPage(uint64_t pageID, const WebPageCreationParameters& parameters)
     Settings::setMinDOMTimerInterval(0.004);
 
     m_mainFrame = WebFrame::createMainFrame(this);
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidCreateMainFrame, m_pageID, CoreIPC::In(m_mainFrame->frameID()));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidCreateMainFrame(m_mainFrame->frameID()), m_pageID);
 
 #ifndef NDEBUG
     webPageCounter.increment();
@@ -246,10 +246,10 @@ void WebPage::changeAcceleratedCompositingMode(WebCore::GraphicsLayer* layer)
     // Tell the UI process that accelerated compositing changed. It may respond by changing
     // drawing area types.
     DrawingArea::DrawingAreaInfo newDrawingAreaInfo;
-    WebProcess::shared().connection()->sendSync(WebPageProxyMessage::DidChangeAcceleratedCompositing,
-                                                m_pageID, CoreIPC::In(compositing),
-                                                CoreIPC::Out(newDrawingAreaInfo),
-                                                CoreIPC::Connection::NoTimeout);
+
+    WebProcess::shared().connection()->sendSync(Messages::WebPageProxy::DidChangeAcceleratedCompositing(compositing),
+        Messages::WebPageProxy::DidChangeAcceleratedCompositing::Reply(newDrawingAreaInfo),
+        m_pageID, CoreIPC::Connection::NoTimeout);
     
     if (newDrawingAreaInfo.type != drawingArea()->info().type) {
         m_drawingArea = 0;
@@ -263,10 +263,7 @@ void WebPage::changeAcceleratedCompositingMode(WebCore::GraphicsLayer* layer)
 void WebPage::enterAcceleratedCompositingMode(GraphicsLayer* layer)
 {
     changeAcceleratedCompositingMode(layer);
-    
-#if USE(ACCELERATED_COMPOSITING)
     m_drawingArea->setRootCompositingLayer(layer);
-#endif
 }
 
 void WebPage::exitAcceleratedCompositingMode()
@@ -297,7 +294,7 @@ void WebPage::tryClose()
 
 void WebPage::sendClose()
 {
-    WebProcess::shared().connection()->send(WebPageProxyMessage::ClosePage, m_pageID, CoreIPC::In());
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::ClosePage(), m_pageID);
 }
 
 void WebPage::loadURL(const String& url)
@@ -481,8 +478,7 @@ void WebPage::mouseEvent(const WebMouseEvent& mouseEvent)
     CurrentEvent currentEvent(mouseEvent);
 
     bool handled = handleMouseEvent(mouseEvent, m_page.get());
-
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidReceiveEvent, m_pageID, CoreIPC::In(static_cast<uint32_t>(mouseEvent.type()), handled));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidReceiveEvent(static_cast<uint32_t>(mouseEvent.type()), handled), m_pageID);
 }
 
 static bool handleWheelEvent(const WebWheelEvent& wheelEvent, Page* page)
@@ -500,7 +496,7 @@ void WebPage::wheelEvent(const WebWheelEvent& wheelEvent)
     CurrentEvent currentEvent(wheelEvent);
 
     bool handled = handleWheelEvent(wheelEvent, m_page.get());
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidReceiveEvent, m_pageID, CoreIPC::In(static_cast<uint32_t>(wheelEvent.type()), handled));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidReceiveEvent(static_cast<uint32_t>(wheelEvent.type()), handled), m_pageID);
 }
 
 static bool handleKeyEvent(const WebKeyboardEvent& keyboardEvent, Page* page)
@@ -519,21 +515,21 @@ void WebPage::keyEvent(const WebKeyboardEvent& keyboardEvent)
     if (!handled)
         handled = performDefaultBehaviorForKeyEvent(keyboardEvent);
 
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidReceiveEvent, m_pageID, CoreIPC::In(static_cast<uint32_t>(keyboardEvent.type()), handled));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidReceiveEvent(static_cast<uint32_t>(keyboardEvent.type()), handled), m_pageID);
 }
 
 void WebPage::validateMenuItem(const String& commandName)
 {
     bool isEnabled = false;
-    int state = 0;
+    int32_t state = 0;
     Frame* frame = m_page->focusController()->focusedOrMainFrame();
     if (frame) {
         Editor::Command command = frame->editor()->command(commandName);
         state = command.state();
         isEnabled = command.isSupported() && command.isEnabled();
     }
-    
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidValidateMenuItem, m_pageID, CoreIPC::In(commandName, isEnabled, state));
+
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidValidateMenuItem(commandName, isEnabled, state), m_pageID);
 }
 
 void WebPage::executeEditCommand(const String& commandName)
@@ -557,7 +553,7 @@ void WebPage::touchEvent(const WebTouchEvent& touchEvent)
 
     bool handled = handleTouchEvent(touchEvent, m_page.get());
 
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidReceiveEvent, m_pageID, CoreIPC::In(static_cast<uint32_t>(touchEvent.type()), handled));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidReceiveEvent(static_cast<uint32_t>(touchEvent.type()), handled), m_pageID);
 }
 #endif
 
@@ -612,7 +608,7 @@ void WebPage::didReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, ui
 
 void WebPage::show()
 {
-    WebProcess::shared().connection()->send(WebPageProxyMessage::ShowPage, m_pageID, CoreIPC::In());
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::ShowPage(), m_pageID);
 }
 
 void WebPage::setCustomUserAgent(const String& customUserAgent)
@@ -653,13 +649,13 @@ void WebPage::runJavaScriptInMainFrame(const String& script, uint64_t callbackID
     JSValue resultValue = m_mainFrame->coreFrame()->script()->executeScript(script, true).jsValue();
     String resultString = ustringToString(resultValue.toString(m_mainFrame->coreFrame()->script()->globalObject(mainThreadNormalWorld())->globalExec()));
 
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidRunJavaScriptInMainFrame, m_pageID, CoreIPC::In(resultString, callbackID));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidRunJavaScriptInMainFrame(resultString, callbackID), m_pageID);
 }
 
 void WebPage::getRenderTreeExternalRepresentation(uint64_t callbackID)
 {
     String resultString = renderTreeExternalRepresentation();
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidGetRenderTreeExternalRepresentation, m_pageID, CoreIPC::In(resultString, callbackID));
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidGetRenderTreeExternalRepresentation(resultString, callbackID), m_pageID);
 }
 
 void WebPage::getSourceForFrame(uint64_t frameID, uint64_t callbackID)
@@ -667,7 +663,8 @@ void WebPage::getSourceForFrame(uint64_t frameID, uint64_t callbackID)
     String resultString;
     if (WebFrame* frame = WebProcess::shared().webFrame(frameID))
        resultString = frame->source();
-    WebProcess::shared().connection()->send(WebPageProxyMessage::DidGetSourceForFrame, m_pageID, CoreIPC::In(resultString, callbackID));
+
+    WebProcess::shared().connection()->send(Messages::WebPageProxy::DidGetSourceForFrame(resultString, callbackID), m_pageID);
 }
 
 void WebPage::preferencesDidChange(const WebPreferencesStore& store)
diff --git a/WebKit2/win/WebKit2.vcproj b/WebKit2/win/WebKit2.vcproj
index 63fe5e5..720347f 100755
--- a/WebKit2/win/WebKit2.vcproj
+++ b/WebKit2/win/WebKit2.vcproj
@@ -449,6 +449,10 @@
 				>
 			</File>
 			<File
+				RelativePath="..\Shared\StringPairVector.h"
+				>
+			</File>
+			<File
 				RelativePath="..\Shared\UserMessageCoders.h"
 				>
 			</File>
@@ -764,10 +768,6 @@
 					>
 				</File>
 				<File
-					RelativePath="..\Shared\CoreIPCSupport\WebPageProxyMessageKinds.h"
-					>
-				</File>
-				<File
 					RelativePath="..\Shared\CoreIPCSupport\WebProcessProxyMessageKinds.h"
 					>
 				</File>
@@ -2029,6 +2029,14 @@
 				>
 			</File>
 			<File
+				RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\WebPageProxyMessageReceiver.cpp"
+				>
+			</File>
+			<File
+				RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\WebPageProxyMessages.h"
+				>
+			</File>
+			<File
 				RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\WebProcessMessageReceiver.cpp"
 				>
 			</File>

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list