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

andersca at apple.com andersca at apple.com
Wed Dec 22 14:23:45 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit fda9e5446aaa30471e2b5f956f081f530ba5641d
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Oct 7 19:32:18 2010 +0000

    Generate the messages sent to the WebPageProxy
    https://bugs.webkit.org/show_bug.cgi?id=47239
    
    Patch by Sam Weinig <sam at webkit.org> on 2010-10-07
    Reviewed by Anders Carlsson.
    
    * DerivedSources.make:
    * DerivedSources.pro:
    * Platform/CoreIPC/Arguments.h:
    * Platform/CoreIPC/HandleMessage.h:
    (CoreIPC::handleMessage):
    * Scripts/webkit2/messages.py:
    * Shared/CoreIPCSupport/WebPageProxyMessageKinds.h: Removed.
    * Shared/StringPairVector.h: Added.
    * UIProcess/API/mac/PageClientImpl.h:
    * UIProcess/API/mac/PageClientImpl.mm:
    (WebKit::PageClientImpl::registerEditCommand):
    * UIProcess/API/qt/qwkpage.cpp:
    (QWKPagePrivate::registerEditCommand):
    * UIProcess/API/qt/qwkpage_p.h:
    * UIProcess/PageClient.h:
    * UIProcess/WebEditCommandProxy.cpp:
    (WebKit::WebEditCommandProxy::unapply):
    (WebKit::WebEditCommandProxy::reapply):
    * UIProcess/WebFormClient.cpp:
    (WebKit::WebFormClient::willSubmitForm):
    * UIProcess/WebFormClient.h:
    * UIProcess/WebPageProxy.cpp:
    * UIProcess/WebPageProxy.h:
    * UIProcess/WebPageProxy.messages.in: Added.
    * UIProcess/win/WebView.cpp:
    (WebKit::WebView::registerEditCommand):
    * UIProcess/win/WebView.h:
    * WebKit2.pro:
    * WebKit2.xcodeproj/project.pbxproj:
    * WebProcess/WebCoreSupport/WebChromeClient.cpp:
    * WebProcess/WebCoreSupport/WebEditorClient.cpp:
    (WebKit::WebEditorClient::registerCommandForUndo):
    (WebKit::WebEditorClient::clearUndoRedoOperations):
    * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
    * WebProcess/WebPage/WebBackForwardListProxy.cpp:
    * WebProcess/WebPage/WebPage.cpp:
    * win/WebKit2.vcproj:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@69329 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index a9138f4..e5c5cdf 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,48 @@
+2010-10-07  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Anders Carlsson.
+
+        Generate the messages sent to the WebPageProxy
+        https://bugs.webkit.org/show_bug.cgi?id=47239
+
+        * DerivedSources.make:
+        * DerivedSources.pro:
+        * Platform/CoreIPC/Arguments.h:
+        * Platform/CoreIPC/HandleMessage.h:
+        (CoreIPC::handleMessage):
+        * Scripts/webkit2/messages.py:
+        * Shared/CoreIPCSupport/WebPageProxyMessageKinds.h: Removed.
+        * Shared/StringPairVector.h: Added.
+        * UIProcess/API/mac/PageClientImpl.h:
+        * UIProcess/API/mac/PageClientImpl.mm:
+        (WebKit::PageClientImpl::registerEditCommand):
+        * UIProcess/API/qt/qwkpage.cpp:
+        (QWKPagePrivate::registerEditCommand):
+        * UIProcess/API/qt/qwkpage_p.h:
+        * UIProcess/PageClient.h:
+        * UIProcess/WebEditCommandProxy.cpp:
+        (WebKit::WebEditCommandProxy::unapply):
+        (WebKit::WebEditCommandProxy::reapply):
+        * UIProcess/WebFormClient.cpp:
+        (WebKit::WebFormClient::willSubmitForm):
+        * UIProcess/WebFormClient.h:
+        * UIProcess/WebPageProxy.cpp:
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebPageProxy.messages.in: Added.
+        * UIProcess/win/WebView.cpp:
+        (WebKit::WebView::registerEditCommand):
+        * UIProcess/win/WebView.h:
+        * WebKit2.pro:
+        * WebKit2.xcodeproj/project.pbxproj:
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        * WebProcess/WebCoreSupport/WebEditorClient.cpp:
+        (WebKit::WebEditorClient::registerCommandForUndo):
+        (WebKit::WebEditorClient::clearUndoRedoOperations):
+        * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
+        * WebProcess/WebPage/WebBackForwardListProxy.cpp:
+        * WebProcess/WebPage/WebPage.cpp:
+        * win/WebKit2.vcproj:
+
 2010-10-07  Brady Eidson  <beidson at apple.com>
 
         Reviewed by BUILD FIX.
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 c802af5..a9b3a21 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
 
+pageproxymessageheader_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
+pageproxymessageheader_generator.depends  = $${SRC_ROOT_DIR}/WebKit2/Scripts/generate-messages-header.py $${SRC_ROOT_DIR}/WebKit2/UIProcess/WebPageProxy.messages.in
+pageproxymessageheader_generator.target   = $${OUTPUT_DIR}/WebKit2/generated/WebPageProxyMessages.h
+generated_files.depends                 += pageproxymessageheader_generator
+QMAKE_EXTRA_TARGETS                     += pageproxymessageheader_generator
+
+pageproxymessagereceiver_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
+pageproxymessagereceiver_generator.depends  = $${SRC_ROOT_DIR}/WebKit2/Scripts/generate-message-receiver.py $${SRC_ROOT_DIR}/WebKit2/UIProcess/WebPageProxy.messages.in
+pageproxymessagereceiver_generator.target   = $${OUTPUT_DIR}/WebKit2/generated/WebPageProxyMessageReceiver.cpp
+generated_files.depends                   += pageproxymessagereceiver_generator
+QMAKE_EXTRA_TARGETS                       += pageproxymessagereceiver_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/HandleMessage.h b/WebKit2/Platform/CoreIPC/HandleMessage.h
index ad6c000..87909ef 100644
--- a/WebKit2/Platform/CoreIPC/HandleMessage.h
+++ b/WebKit2/Platform/CoreIPC/HandleMessage.h
@@ -3,6 +3,8 @@
 
 namespace CoreIPC {
 
+// Dispatch functions with no reply arguments.
+
 template<typename C, typename MF>
 void callMemberFunction(const Arguments0&, C* object, MF function)
 {
@@ -51,6 +53,20 @@ void callMemberFunction(const Arguments7<P1, P2, P3, P4, P5, P6, P7>& args, C* o
     (object->*function)(args.argument1, args.argument2, args.argument3, args.argument4, args.argument5, args.argument6, args.argument7);
 }
 
+// Dispatch functions with reply arguments.
+
+template<typename C, typename MF, typename R1>
+void callMemberFunction(const Arguments0&, Arguments1<R1>& replyArgs, C* object, MF function)
+{
+    (object->*function)(replyArgs.argument1);
+}
+
+template<typename C, typename MF, typename R1, typename R2>
+void callMemberFunction(const Arguments0&, Arguments2<R1, R2>& replyArgs, C* object, MF function)
+{
+    (object->*function)(replyArgs.argument1, replyArgs.argument2);
+}
+
 template<typename C, typename MF, typename P1>
 void callMemberFunction(const Arguments1<P1>& args, Arguments0&, C* object, MF function)
 {
@@ -63,16 +79,81 @@ void callMemberFunction(const Arguments1<P1>& args, Arguments1<R1>& replyArgs, C
     (object->*function)(args.argument1, replyArgs.argument1);
 }
 
+template<typename C, typename MF, typename P1, typename P2>
+void callMemberFunction(const Arguments2<P1, P2>& args, Arguments0&, C* object, MF function)
+{
+    (object->*function)(args.argument1, args.argument2);
+}
+
+template<typename C, typename MF, typename P1, typename P2, typename R1>
+void callMemberFunction(const Arguments2<P1, P2>& args, Arguments1<R1>& replyArgs, C* object, MF function)
+{
+    (object->*function)(args.argument1, args.argument2, replyArgs.argument1);
+}
+
+template<typename C, typename MF, typename P1, typename P2, typename P3, typename R1>
+void callMemberFunction(const Arguments3<P1, P2, P3>& args, Arguments1<R1>& replyArgs, C* object, MF function)
+{
+    (object->*function)(args.argument1, args.argument2, args.argument3, replyArgs.argument1);
+}
+
 template<typename C, typename MF, typename P1, typename P2, typename P3, typename P4, typename R1>
 void callMemberFunction(const Arguments4<P1, P2, P3, P4>& args, Arguments1<R1>& replyArgs, C* object, MF function)
 {
     (object->*function)(args.argument1, args.argument2, args.argument3, args.argument4, replyArgs.argument1);
 }
 
+// Variadic dispatch functions.
+
+template<typename C, typename MF>
+void callMemberFunction(const Arguments0&, ArgumentDecoder* argumentDecoder, C* object, MF function)
+{
+    (object->*function)(argumentDecoder);
+}
+
+template<typename C, typename MF, typename P1>
+void callMemberFunction(const Arguments1<P1>& args, ArgumentDecoder* argumentDecoder, C* object, MF function)
+{
+    (object->*function)(args.argument1, argumentDecoder);
+}
+
+template<typename C, typename MF, typename P1, typename P2>
+void callMemberFunction(const Arguments2<P1, P2>& args, ArgumentDecoder* argumentDecoder, C* object, MF function)
+{
+    (object->*function)(args.argument1, args.argument2, argumentDecoder);
+}
+
+template<typename C, typename MF, typename P1, typename P2, typename P3>
+void callMemberFunction(const Arguments3<P1, P2, P3>& args, ArgumentDecoder* argumentDecoder, C* object, MF function)
+{
+    (object->*function)(args.argument1, args.argument2, args.argument3, argumentDecoder);
+}
+
+template<typename C, typename MF, typename P1, typename P2, typename P3, typename P4>
+void callMemberFunction(const Arguments4<P1, P2, P3, P4>& args, ArgumentDecoder* argumentDecoder, C* object, MF function)
+{
+    (object->*function)(args.argument1, args.argument2, args.argument3, args.argument4, argumentDecoder);
+}
+
+template<typename C, typename MF, typename P1, typename P2, typename P3, typename P4, typename P5>
+void callMemberFunction(const Arguments5<P1, P2, P3, P4, P5>& args, ArgumentDecoder* argumentDecoder, C* object, MF function)
+{
+    (object->*function)(args.argument1, args.argument2, args.argument3, args.argument4, args.argument5, argumentDecoder);
+}
+    
+template<typename C, typename MF, typename P1, typename P2, typename P3, typename P4, typename P5, typename P6>
+void callMemberFunction(const Arguments6<P1, P2, P3, P4, P5, P6>& args, ArgumentDecoder* argumentDecoder, C* object, MF function)
+{
+    (object->*function)(args.argument1, args.argument2, args.argument3, args.argument4, args.argument5, args.argument6, argumentDecoder);
+}
+
+
+// Main dispatch functions
+
 template<typename T, typename C, typename MF>
 void handleMessage(ArgumentDecoder* argumentDecoder, C* object, MF function)
 {
-    typename T::ValueType arguments;
+    typename T::DecodeType::ValueType arguments;
     if (!argumentDecoder->decode(arguments))
         return;
     callMemberFunction(arguments, object, function);
@@ -81,7 +162,7 @@ void handleMessage(ArgumentDecoder* argumentDecoder, C* object, MF function)
 template<typename T, typename C, typename MF>
 void handleMessage(ArgumentDecoder* argumentDecoder, ArgumentEncoder* replyEncoder, C* object, MF function)
 {
-    typename T::ValueType arguments;
+    typename T::DecodeType::ValueType arguments;
     if (!argumentDecoder->decode(arguments))
         return;
 
@@ -90,6 +171,15 @@ void handleMessage(ArgumentDecoder* argumentDecoder, ArgumentEncoder* replyEncod
     replyEncoder->encode(replyArguments);
 }
 
+template<typename T, typename C, typename MF>
+void handleMessageVariadic(ArgumentDecoder* argumentDecoder, C* object, MF function)
+{
+    typename T::DecodeType::ValueType arguments;
+    if (!argumentDecoder->decode(arguments))
+        return;
+    callMemberFunction(arguments, argumentDecoder, object, function);
+}
+
 } // namespace CoreIPC
 
 #endif // HandleMessage_h
diff --git a/WebKit2/Platform/CoreIPC/qt/ConnectionQt.cpp b/WebKit2/Platform/CoreIPC/qt/ConnectionQt.cpp
index 2bdda43..b6610b3 100644
--- a/WebKit2/Platform/CoreIPC/qt/ConnectionQt.cpp
+++ b/WebKit2/Platform/CoreIPC/qt/ConnectionQt.cpp
@@ -28,7 +28,6 @@
 
 #include "ArgumentEncoder.h"
 #include "ProcessLauncher.h"
-#include "WebPageProxyMessageKinds.h"
 #include "WorkItem.h"
 #include <QApplication>
 #include <QLocalServer>
diff --git a/WebKit2/Scripts/webkit2/messages.py b/WebKit2/Scripts/webkit2/messages.py
index 25d5434..c24bf6e 100644
--- a/WebKit2/Scripts/webkit2/messages.py
+++ b/WebKit2/Scripts/webkit2/messages.py
@@ -58,6 +58,9 @@ class MessageReceiver(object):
     def iterparameters(self):
         return (parameter for message in self.messages for parameter in message.parameters)
 
+    def iterreplyparameters(self):
+        return (reply_parameter for message in self.messages for reply_parameter in message.reply_parameters)
+
     @classmethod
     def parse(cls, file):
         destination = None
@@ -107,6 +110,10 @@ class Message(object):
         if self.reply_parameters is not None:
             self.delayed = delayed
         self.condition = condition
+        if len(self.parameters) != 0:
+            self.is_variadic = parameter_type_is_variadic(self.parameters[-1].type)
+        else:
+            self.is_variadic = False
 
     def id(self):
         return '%sID' % self.name
@@ -140,6 +147,13 @@ def messages_to_kind_enum(messages):
     return ''.join(result)
 
 
+def parameter_type_is_variadic(type):
+    variadic_types = frozenset([
+        'WebKit::InjectedBundleUserMessageEncoder',
+    ])
+
+    return type in variadic_types
+
 def function_parameter_type(type):
     # Don't use references for built-in types.
     builtin_types = frozenset([
@@ -150,6 +164,10 @@ def function_parameter_type(type):
         'uint16_t',
         'uint32_t',
         'uint64_t',
+        'int8_t',
+        'int16_t',
+        'int32_t',
+        'int64_t',
     ])
 
     if type in builtin_types:
@@ -177,6 +195,12 @@ def reply_type(message):
     return arguments_type(message.reply_parameters, reply_parameter_type)
 
 
+def decode_type(message):
+    if message.is_variadic:
+        return arguments_type(message.parameters[:-1], reply_parameter_type)
+    return base_class(message)
+
+
 def delayed_reply_type(message):
     return arguments_type(message.reply_parameters, function_parameter_type)
 
@@ -189,6 +213,8 @@ def message_to_struct_declaration(message):
     result.append('    static const Kind messageID = %s;\n' % message.id())
     if message.reply_parameters != None:
         result.append('    typedef %s Reply;\n' % reply_type(message))
+
+    result.append('    typedef %s DecodeType;\n' % decode_type(message))
     if len(function_parameters):
         result.append('    %s%s(%s)' % (len(function_parameters) == 1 and 'explicit ' or '', message.name, ', '.join([' '.join(x) for x in function_parameters])))
         result.append('\n        : %s(%s)\n' % (base_class(message), ', '.join([x[1] for x in function_parameters])))
@@ -299,9 +325,13 @@ def handler_function(receiver, message):
 
 
 def async_case_statement(receiver, message):
+    dispatch_function = 'handleMessage'
+    if message.is_variadic:
+        dispatch_function += 'Variadic'
+
     result = []
     result.append('    case Messages::%s::%s:\n' % (receiver.name, message.id()))
-    result.append('        CoreIPC::handleMessage<Messages::%s::%s>(arguments, this, &%s);\n' % (receiver.name, message.name, handler_function(receiver, message)))
+    result.append('        CoreIPC::%s<Messages::%s::%s>(arguments, this, &%s);\n' % (dispatch_function, receiver.name, message.name, handler_function(receiver, message)))
     result.append('        return;\n')
     return surround_in_condition(''.join(result), message.condition)
 
@@ -324,6 +354,7 @@ def argument_coder_headers_for_type(type):
 
     special_cases = {
         'WTF::String': '"ArgumentCoders.h"',
+        'WebKit::InjectedBundleUserMessageEncoder': '"InjectedBundleUserMessageCoders.h"',
     }
 
     if type in special_cases:
@@ -383,6 +414,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/Shared/CoreIPCSupport/WebPageProxyMessageKinds.h b/WebKit2/Shared/CoreIPCSupport/WebPageProxyMessageKinds.h
index 06bc6d2..e69de29 100644
--- a/WebKit2/Shared/CoreIPCSupport/WebPageProxyMessageKinds.h
+++ b/WebKit2/Shared/CoreIPCSupport/WebPageProxyMessageKinds.h
@@ -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 54f0b1e..b47f310 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 411883b..7d5ec63 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..b7e767d 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>, WebKit::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 f5f5843..11eaf0d 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 cdaece3..2b6fb84 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"
@@ -555,349 +555,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)
@@ -907,105 +566,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)
@@ -1043,91 +605,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();
@@ -1135,18 +785,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()
@@ -1159,19 +823,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)
@@ -1179,48 +843,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)
@@ -1256,8 +957,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;
@@ -1319,13 +1027,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 73fe1a9..4281b3e 100644
--- a/WebKit2/UIProcess/WebPageProxy.h
+++ b/WebKit2/UIProcess/WebPageProxy.h
@@ -67,6 +67,7 @@ class DrawingAreaProxy;
 class NativeWebKeyboardEvent;
 class PageClient;
 class PlatformCertificateInfo;
+class StringPairVector;
 class WebBackForwardList;
 class WebBackForwardListItem;
 class WebData;
@@ -194,10 +195,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(); }
@@ -216,53 +217,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);
@@ -271,7 +283,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 615d2bc..acbda9b 100644
--- a/WebKit2/WebKit2.pro
+++ b/WebKit2/WebKit2.pro
@@ -142,10 +142,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 += \
@@ -178,7 +180,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 \
@@ -187,6 +188,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 d23ee4d..1bee936 100644
--- a/WebKit2/WebKit2.xcodeproj/project.pbxproj
+++ b/WebKit2/WebKit2.xcodeproj/project.pbxproj
@@ -191,8 +191,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 */; };
@@ -353,6 +351,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 */; };
@@ -645,8 +646,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>"; };
@@ -807,6 +806,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>"; };
@@ -1134,6 +1137,7 @@
 				1A0F29CA120B37160053D1B9 /* VisitedLinkTable.h */,
 				BC1DD7B1114DC396005ADAF3 /* WebCoreArgumentCoders.h */,
 				BCF50726124329AA005955AE /* WebCertificateInfo.h */,
+				BCBD3C3A125BFA7A00D2C29F /* StringPairVector.h */,
 				51578B821209ECEF00A37C4A /* WebData.h */,
 				516A4A5B120A2CCD00C05B7F /* WebError.h */,
 				BC032DAF10F4380F0058C15A /* WebEvent.h */,
@@ -1334,6 +1338,7 @@
 				BCEE98C5113314D7006BCC24 /* WebPageNamespace.h */,
 				BC111B0B112F5E4F00337BAB /* WebPageProxy.cpp */,
 				BC032DCB10F4389F0058C15A /* WebPageProxy.h */,
+				BCBD38FA125BAB9A00D2C29F /* WebPageProxy.messages.in */,
 				BCB9F8AD1124E07700A137E0 /* WebPolicyClient.cpp */,
 				BCB9F8AE1124E07700A137E0 /* WebPolicyClient.h */,
 				BCD597FE112B57BE00EC8C23 /* WebPreferences.cpp */,
@@ -1464,8 +1469,6 @@
 				BC9E969911457EDE00870E71 /* DrawingAreaProxyMessageKinds.h */,
 				BCB28CBF120233D9007D99BC /* InjectedBundleMessageKinds.h */,
 				BCCB75C51203A1CE00222D1B /* WebContextMessageKinds.h */,
-				BC111B61112F638300337BAB /* WebPageProxyMessageKinds.h */,
-				BC111B62112F638300337BAB /* WebProcessMessageKinds.h */,
 				BCB7346D11CEE3FF00EC5002 /* WebProcessProxyMessageKinds.h */,
 			);
 			path = CoreIPCSupport;
@@ -1708,6 +1711,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 */,
@@ -1813,7 +1818,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 */,
@@ -1821,7 +1825,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 */,
@@ -1945,6 +1948,8 @@
 				BC3066BF125A442100E71278 /* WebProcessMessages.h in Headers */,
 				BC306824125A6B9400E71278 /* WebProcessCreationParameters.h in Headers */,
 				51A7F2F3125BF820008AEB1D /* Logging.h in Headers */,
+				BCBD3915125BB1A800D2C29F /* WebPageProxyMessages.h in Headers */,
+				BCBD3C3B125BFA7A00D2C29F /* StringPairVector.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -2243,6 +2248,7 @@
 				BC3066BE125A442100E71278 /* WebProcessMessageReceiver.cpp in Sources */,
 				BC306825125A6B9400E71278 /* WebProcessCreationParameters.cpp in Sources */,
 				51A7F2F5125BF8D4008AEB1D /* Logging.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 67acd7a..342c0a8 100755
--- a/WebKit2/win/WebKit2.vcproj
+++ b/WebKit2/win/WebKit2.vcproj
@@ -448,6 +448,13 @@
 				RelativePath="..\Shared\NotImplemented.h"
 				>
 			</File>
+  			<File
+				RelativePath="..\Shared\StringPairVector.h"
+ 				>
+ 			</File>
+ 			<File
+ 				RelativePath="..\Shared\UserMessageCoders.h"
+ 				>			
 			<File
 				RelativePath="..\Shared\UserMessageCoders.h"
 				>
@@ -767,10 +774,6 @@
 					RelativePath="..\Shared\CoreIPCSupport\WebPageProxyMessageKinds.h"
 					>
 				</File>
-				<File
-					RelativePath="..\Shared\CoreIPCSupport\WebProcessProxyMessageKinds.h"
-					>
-				</File>
 			</Filter>
 			<Filter
 				Name="win"
@@ -1512,6 +1515,10 @@
 				RelativePath="..\UIProcess\WebPageProxy.h"
 				>
 			</File>
+  			<File
+				RelativePath="..\UIProcess\WebPageProxy.messages.in"
+				>
+			</File>
 			<File
 				RelativePath="..\UIProcess\WebPolicyClient.cpp"
 				>
@@ -2035,7 +2042,14 @@
 			<File
 				RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\WebPageMessages.h"
 				>
-			</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"
 				>

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list