165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# Copyright (C) 2010 Apple Inc. All rights reserved.
265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#
365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# Redistribution and use in source and binary forms, with or without
465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# modification, are permitted provided that the following conditions
565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# are met:
665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# 1.  Redistributions of source code must retain the above copyright
765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#     notice, this list of conditions and the following disclaimer.
865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# 2.  Redistributions in binary form must reproduce the above copyright
965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#     notice, this list of conditions and the following disclaimer in the
1065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#     documentation and/or other materials provided with the distribution.
1165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#
1265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
1365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochimport unittest
2465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochfrom StringIO import StringIO
2565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochimport messages
2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch_messages_file_contents = """# Copyright (C) 2010 Apple Inc. All rights reserved.
2965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#
3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# Redistribution and use in source and binary forms, with or without
3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# modification, are permitted provided that the following conditions
3265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# are met:
3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# 1.  Redistributions of source code must retain the above copyright
3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#     notice, this list of conditions and the following disclaimer.
3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# 2.  Redistributions in binary form must reproduce the above copyright
3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#     notice, this list of conditions and the following disclaimer in the
3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#     documentation and/or other materials provided with the distribution.
3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#
3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
4265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
4665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
4865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
502fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "config.h"
512fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
5265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(WEBKIT2)
5365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochmessages -> WebPage {
5565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    LoadURL(WTF::String url)
5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TOUCH_EVENTS)
5765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    TouchEvent(WebKit::WebTouchEvent event)
5865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    DidReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, uint32_t policyAction)
6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    Close()
6165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    PreferencesDidChange(WebKit::WebPreferencesStore store)
6365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    SendDoubleAndFloat(double d, float f)
6465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    SendInts(Vector<uint64_t> ints, Vector<Vector<uint64_t> > intVectors)
6565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    CreatePlugin(uint64_t pluginInstanceID, WebKit::Plugin::Parameters parameters) -> (bool result)
6765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    RunJavaScriptAlert(uint64_t frameID, WTF::String message) -> ()
682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    GetPlugins(bool refresh) -> (Vector<WebCore::PluginInfo> plugins) DispatchOnConnectionQueue
692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    GetPluginProcessConnection(WTF::String pluginPath) -> (CoreIPC::Connection::Handle connectionHandle) Delayed
702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    TestMultipleAttributes() -> () DispatchOnConnectionQueue Delayed
7265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
732bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC)
7465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    DidCreateWebProcessConnection(CoreIPC::MachPort connectionIdentifier)
752bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
7665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
7765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC)
7865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    # Keyboard support
7965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InterpretKeyEvent(uint32_t type) -> (Vector<WebCore::KeypressCommand> commandName)
8065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
8165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
8265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
8365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
8465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch"""
8565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch_expected_results = {
8765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    'name': 'WebPage',
8865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    'condition': 'ENABLE(WEBKIT2)',
8965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    'messages': (
9065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
9165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'LoadURL',
9265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (
9365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('WTF::String', 'url'),
9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'condition': None,
9665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
9765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'TouchEvent',
9965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (
10065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('WebKit::WebTouchEvent', 'event'),
10165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
10265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'condition': 'ENABLE(TOUCH_EVENTS)',
10365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
10465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
10565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'DidReceivePolicyDecision',
10665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (
10765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('uint64_t', 'frameID'),
10865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('uint64_t', 'listenerID'),
10965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('uint32_t', 'policyAction'),
11065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
11165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'condition': None,
11265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
11365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
11465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'Close',
11565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (),
11665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'condition': None,
11765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
11865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
11965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'PreferencesDidChange',
12065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (
12165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('WebKit::WebPreferencesStore', 'store'),
12265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
12365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'condition': None,
12465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
12565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
12665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'SendDoubleAndFloat',
12765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (
12865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('double', 'd'),
12965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('float', 'f'),
13065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
13165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'condition': None,
13265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
13365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
13465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'SendInts',
13565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (
13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('Vector<uint64_t>', 'ints'),
13765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('Vector<Vector<uint64_t> >', 'intVectors')
13865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
13965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'condition': None,
14065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
14165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
14265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'CreatePlugin',
14365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (
14465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('uint64_t', 'pluginInstanceID'),
14565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('WebKit::Plugin::Parameters', 'parameters')
14665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
14765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'reply_parameters': (
14865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('bool', 'result'),
14965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
15065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'condition': None,
15165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
15265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
15365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'RunJavaScriptAlert',
15465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (
15565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('uint64_t', 'frameID'),
15665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('WTF::String', 'message')
15765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
15865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'reply_parameters': (),
15965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'condition': None,
16065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
16165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
16265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'GetPlugins',
16365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (
16465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('bool', 'refresh'),
16565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
16665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'reply_parameters': (
16765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('Vector<WebCore::PluginInfo>', 'plugins'),
16865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
16965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'condition': None,
17065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
17165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
17265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'GetPluginProcessConnection',
17365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (
17465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('WTF::String', 'pluginPath'),
17565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
17665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'reply_parameters': (
17765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('CoreIPC::Connection::Handle', 'connectionHandle'),
17865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
17965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'condition': None,
18065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
18165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
1822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch            'name': 'TestMultipleAttributes',
1832daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch            'parameters': (
1842daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch            ),
1852daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch            'reply_parameters': (
1862daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch            ),
1872daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch            'condition': None,
1882daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        },
1892daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        {
19065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'DidCreateWebProcessConnection',
19165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (
19265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('CoreIPC::MachPort', 'connectionIdentifier'),
19365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
1942bde8e466a4451c7319e3a072d118917957d6554Steve Block            'condition': 'PLATFORM(MAC)',
19565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
19665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        {
19765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'name': 'InterpretKeyEvent',
19865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'parameters': (
19965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('uint32_t', 'type'),
20065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
20165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'reply_parameters': (
20265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                ('Vector<WebCore::KeypressCommand>', 'commandName'),
20365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            ),
20465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            'condition': 'PLATFORM(MAC)',
20565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        },
20665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    ),
20765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
20865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
20965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
21065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass MessagesTest(unittest.TestCase):
21165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    def setUp(self):
21265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        self.receiver = messages.MessageReceiver.parse(StringIO(_messages_file_contents))
21365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
21465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
21565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass ParsingTest(MessagesTest):
21665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    def check_message(self, message, expected_message):
21765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        self.assertEquals(message.name, expected_message['name'])
21865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        self.assertEquals(len(message.parameters), len(expected_message['parameters']))
21965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        for index, parameter in enumerate(message.parameters):
22065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            self.assertEquals(parameter.type, expected_message['parameters'][index][0])
22165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            self.assertEquals(parameter.name, expected_message['parameters'][index][1])
22265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        if message.reply_parameters != None:
22365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            for index, parameter in enumerate(message.reply_parameters):
22465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                self.assertEquals(parameter.type, expected_message['reply_parameters'][index][0])
22565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch                self.assertEquals(parameter.name, expected_message['reply_parameters'][index][1])
22665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        else:
22765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            self.assertFalse('reply_parameters' in expected_message)
22865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        self.assertEquals(message.condition, expected_message['condition'])
22965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
23065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    def test_receiver(self):
23165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        """Receiver should be parsed as expected"""
23265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        self.assertEquals(self.receiver.name, _expected_results['name'])
23365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        self.assertEquals(self.receiver.condition, _expected_results['condition'])
23465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        self.assertEquals(len(self.receiver.messages), len(_expected_results['messages']))
23565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        for index, message in enumerate(self.receiver.messages):
23665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            self.check_message(message, _expected_results['messages'][index])
23765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
23865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch_expected_header = """/*
23965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2010 Apple Inc. All rights reserved.
24065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *
24165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Redistribution and use in source and binary forms, with or without
24265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * modification, are permitted provided that the following conditions
24365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * are met:
24465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1.  Redistributions of source code must retain the above copyright
24565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *     notice, this list of conditions and the following disclaimer.
24665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 2.  Redistributions in binary form must reproduce the above copyright
24765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *     notice, this list of conditions and the following disclaimer in the
24865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *     documentation and/or other materials provided with the distribution.
24965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *
25065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
25165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
25465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch */
26165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
26265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef WebPageMessages_h
26365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#define WebPageMessages_h
26465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
26565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(WEBKIT2)
26665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
26765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "Arguments.h"
26865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "Connection.h"
26965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "MessageID.h"
27065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "Plugin.h"
27165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <WebCore/KeyboardEvent.h>
27265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <WebCore/PluginData.h>
2732daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#include <wtf/ThreadSafeRefCounted.h>
27465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/Vector.h>
27565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
27665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace CoreIPC {
2772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    class ArgumentEncoder;
2782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    class Connection;
27965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class MachPort;
28065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
28165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
28265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WTF {
28365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class String;
28465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
28565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
28665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebKit {
28765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    struct WebPreferencesStore;
28865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    class WebTouchEvent;
28965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
29065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
29165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace Messages {
29265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
29365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebPage {
29465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
29565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochenum Kind {
29665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    LoadURLID,
29765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TOUCH_EVENTS)
29865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    TouchEventID,
29965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
30065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    DidReceivePolicyDecisionID,
30165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    CloseID,
30265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    PreferencesDidChangeID,
30365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    SendDoubleAndFloatID,
30465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    SendIntsID,
30565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    CreatePluginID,
30665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    RunJavaScriptAlertID,
30765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    GetPluginsID,
30865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    GetPluginProcessConnectionID,
3092daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    TestMultipleAttributesID,
3102bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC)
31165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    DidCreateWebProcessConnectionID,
3122bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
31365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC)
31465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    InterpretKeyEventID,
31565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
31665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
31765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
31865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct LoadURL : CoreIPC::Arguments1<const WTF::String&> {
31965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = LoadURLID;
32065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments1<const WTF::String&> DecodeType;
32165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    explicit LoadURL(const WTF::String& url)
32265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        : CoreIPC::Arguments1<const WTF::String&>(url)
32365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
32465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
32565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
32665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
32765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TOUCH_EVENTS)
32865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct TouchEvent : CoreIPC::Arguments1<const WebKit::WebTouchEvent&> {
32965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = TouchEventID;
33065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments1<const WebKit::WebTouchEvent&> DecodeType;
33165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    explicit TouchEvent(const WebKit::WebTouchEvent& event)
33265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        : CoreIPC::Arguments1<const WebKit::WebTouchEvent&>(event)
33365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
33465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
33565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
33665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
33765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
33865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct DidReceivePolicyDecision : CoreIPC::Arguments3<uint64_t, uint64_t, uint32_t> {
33965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = DidReceivePolicyDecisionID;
34065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments3<uint64_t, uint64_t, uint32_t> DecodeType;
34165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    DidReceivePolicyDecision(uint64_t frameID, uint64_t listenerID, uint32_t policyAction)
34265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        : CoreIPC::Arguments3<uint64_t, uint64_t, uint32_t>(frameID, listenerID, policyAction)
34365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
34465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
34565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
34665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
34765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct Close : CoreIPC::Arguments0 {
34865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = CloseID;
34965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments0 DecodeType;
35065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
35165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
35265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct PreferencesDidChange : CoreIPC::Arguments1<const WebKit::WebPreferencesStore&> {
35365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = PreferencesDidChangeID;
35465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments1<const WebKit::WebPreferencesStore&> DecodeType;
35565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    explicit PreferencesDidChange(const WebKit::WebPreferencesStore& store)
35665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        : CoreIPC::Arguments1<const WebKit::WebPreferencesStore&>(store)
35765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
35865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
35965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
36065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
36165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct SendDoubleAndFloat : CoreIPC::Arguments2<double, float> {
36265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = SendDoubleAndFloatID;
36365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments2<double, float> DecodeType;
36465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    SendDoubleAndFloat(double d, float f)
36565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        : CoreIPC::Arguments2<double, float>(d, f)
36665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
36765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
36865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
36965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
37065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct SendInts : CoreIPC::Arguments2<const Vector<uint64_t>&, const Vector<Vector<uint64_t> >&> {
37165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = SendIntsID;
37265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments2<const Vector<uint64_t>&, const Vector<Vector<uint64_t> >&> DecodeType;
37365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    SendInts(const Vector<uint64_t>& ints, const Vector<Vector<uint64_t> >& intVectors)
37465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        : CoreIPC::Arguments2<const Vector<uint64_t>&, const Vector<Vector<uint64_t> >&>(ints, intVectors)
37565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
37665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
37765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
37865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
37965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct CreatePlugin : CoreIPC::Arguments2<uint64_t, const WebKit::Plugin::Parameters&> {
38065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = CreatePluginID;
38165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments1<bool&> Reply;
38265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments2<uint64_t, const WebKit::Plugin::Parameters&> DecodeType;
38365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    CreatePlugin(uint64_t pluginInstanceID, const WebKit::Plugin::Parameters& parameters)
38465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        : CoreIPC::Arguments2<uint64_t, const WebKit::Plugin::Parameters&>(pluginInstanceID, parameters)
38565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
38665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
38765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
38865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
38965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct RunJavaScriptAlert : CoreIPC::Arguments2<uint64_t, const WTF::String&> {
39065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = RunJavaScriptAlertID;
39165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments0 Reply;
39265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments2<uint64_t, const WTF::String&> DecodeType;
39365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    RunJavaScriptAlert(uint64_t frameID, const WTF::String& message)
39465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        : CoreIPC::Arguments2<uint64_t, const WTF::String&>(frameID, message)
39565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
39665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
39765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
39865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
39965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct GetPlugins : CoreIPC::Arguments1<bool> {
40065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = GetPluginsID;
40165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments1<Vector<WebCore::PluginInfo>&> Reply;
40265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments1<bool> DecodeType;
40365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    explicit GetPlugins(bool refresh)
40465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        : CoreIPC::Arguments1<bool>(refresh)
40565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
40665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
40765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
40865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
40965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct GetPluginProcessConnection : CoreIPC::Arguments1<const WTF::String&> {
41065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = GetPluginProcessConnectionID;
4112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    struct DelayedReply : public ThreadSafeRefCounted<DelayedReply> {
4122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        DelayedReply(PassRefPtr<CoreIPC::Connection>, PassOwnPtr<CoreIPC::ArgumentEncoder>);
4132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        ~DelayedReply();
41465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        bool send(const CoreIPC::Connection::Handle& connectionHandle);
41665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
41765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    private:
41865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        RefPtr<CoreIPC::Connection> m_connection;
4192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        OwnPtr<CoreIPC::ArgumentEncoder> m_arguments;
42065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    };
42165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    typedef CoreIPC::Arguments1<CoreIPC::Connection::Handle&> Reply;
42365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments1<const WTF::String&> DecodeType;
42465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    explicit GetPluginProcessConnection(const WTF::String& pluginPath)
42565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        : CoreIPC::Arguments1<const WTF::String&>(pluginPath)
42665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
42765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
42865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
42965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4302daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochstruct TestMultipleAttributes : CoreIPC::Arguments0 {
4312daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    static const Kind messageID = TestMultipleAttributesID;
4322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    struct DelayedReply : public ThreadSafeRefCounted<DelayedReply> {
4332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        DelayedReply(PassRefPtr<CoreIPC::Connection>, PassOwnPtr<CoreIPC::ArgumentEncoder>);
4342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        ~DelayedReply();
4352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
4362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        bool send();
4372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
4382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    private:
4392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        RefPtr<CoreIPC::Connection> m_connection;
4402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        OwnPtr<CoreIPC::ArgumentEncoder> m_arguments;
4412daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    };
4422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
4432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    typedef CoreIPC::Arguments0 Reply;
4442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    typedef CoreIPC::Arguments0 DecodeType;
4452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch};
4462daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
4472bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC)
44865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct DidCreateWebProcessConnection : CoreIPC::Arguments1<const CoreIPC::MachPort&> {
44965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = DidCreateWebProcessConnectionID;
45065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments1<const CoreIPC::MachPort&> DecodeType;
45165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    explicit DidCreateWebProcessConnection(const CoreIPC::MachPort& connectionIdentifier)
45265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        : CoreIPC::Arguments1<const CoreIPC::MachPort&>(connectionIdentifier)
45365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
45465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
45565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
4562bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
45765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
45865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC)
45965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochstruct InterpretKeyEvent : CoreIPC::Arguments1<uint32_t> {
46065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const Kind messageID = InterpretKeyEventID;
46165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments1<Vector<WebCore::KeypressCommand>&> Reply;
46265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    typedef CoreIPC::Arguments1<uint32_t> DecodeType;
46365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    explicit InterpretKeyEvent(uint32_t type)
46465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        : CoreIPC::Arguments1<uint32_t>(type)
46565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    {
46665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
46765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
46865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
46965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
47065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace WebPage
47165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
47265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace Messages
47365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
47465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace CoreIPC {
47565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
47665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochtemplate<> struct MessageKindTraits<Messages::WebPage::Kind> {
47765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    static const MessageClass messageClass = MessageClassWebPage;
47865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch};
47965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
48065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace CoreIPC
48165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
48265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // ENABLE(WEBKIT2)
48365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
48465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // WebPageMessages_h
48565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch"""
48665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
48765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch_expected_receiver_implementation = """/*
48865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2010 Apple Inc. All rights reserved.
48965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *
49065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Redistribution and use in source and binary forms, with or without
49165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * modification, are permitted provided that the following conditions
49265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * are met:
49365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1.  Redistributions of source code must retain the above copyright
49465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *     notice, this list of conditions and the following disclaimer.
49565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 2.  Redistributions in binary form must reproduce the above copyright
49665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *     notice, this list of conditions and the following disclaimer in the
49765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *     documentation and/or other materials provided with the distribution.
49865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch *
49965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
50065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
50165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
50265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
50365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
50465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
50565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
50665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
50765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
50865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
50965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch */
51065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5112fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "config.h"
5122fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
51365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(WEBKIT2)
51465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
51565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPage.h"
51665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5172bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC)
51865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "ArgumentCoders.h"
5192bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
52065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "ArgumentDecoder.h"
52165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "Connection.h"
52265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "HandleMessage.h"
5232bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC)
52465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "MachPort.h"
5252bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
52665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "Plugin.h"
5272bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC)
52865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebCoreArgumentCoders.h"
5292bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
5302bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(TOUCH_EVENTS)
53165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebEvent.h"
5322bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
53365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPageMessages.h"
53465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebPreferencesStore.h"
53565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochnamespace Messages {
5372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
5382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochnamespace WebPage {
5392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
5402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochGetPluginProcessConnection::DelayedReply::DelayedReply(PassRefPtr<CoreIPC::Connection> connection, PassOwnPtr<CoreIPC::ArgumentEncoder> arguments)
5412daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    : m_connection(connection)
5422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    , m_arguments(arguments)
5432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
5442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
5452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
5462daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochGetPluginProcessConnection::DelayedReply::~DelayedReply()
5472daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
5482daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    ASSERT(!m_connection);
5492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
5502daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
5512daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochbool GetPluginProcessConnection::DelayedReply::send(const CoreIPC::Connection::Handle& connectionHandle)
5522daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
5532daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    ASSERT(m_arguments);
5542daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    m_arguments->encode(connectionHandle);
5552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    bool result = m_connection->sendSyncReply(m_arguments.release());
5562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    m_connection = nullptr;
5572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    return result;
5582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
5592daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
5602daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochTestMultipleAttributes::DelayedReply::DelayedReply(PassRefPtr<CoreIPC::Connection> connection, PassOwnPtr<CoreIPC::ArgumentEncoder> arguments)
5612daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    : m_connection(connection)
5622daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    , m_arguments(arguments)
5632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
5642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
5652daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
5662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochTestMultipleAttributes::DelayedReply::~DelayedReply()
5672daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
5682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    ASSERT(!m_connection);
5692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
5702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
5712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochbool TestMultipleAttributes::DelayedReply::send()
5722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
5732daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    ASSERT(m_arguments);
5742daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    bool result = m_connection->sendSyncReply(m_arguments.release());
5752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    m_connection = nullptr;
5762daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    return result;
5772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
5782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
5792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} // namespace WebPage
5802daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
5812daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} // namespace Messages
5822daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
58365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebKit {
58465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
58565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid WebPage::didReceiveWebPageMessage(CoreIPC::Connection*, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments)
58665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
58765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    switch (messageID.get<Messages::WebPage::Kind>()) {
58865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::LoadURLID:
58965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        CoreIPC::handleMessage<Messages::WebPage::LoadURL>(arguments, this, &WebPage::loadURL);
59065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
59165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(TOUCH_EVENTS)
59265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::TouchEventID:
59365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        CoreIPC::handleMessage<Messages::WebPage::TouchEvent>(arguments, this, &WebPage::touchEvent);
59465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
59565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
59665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::DidReceivePolicyDecisionID:
59765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        CoreIPC::handleMessage<Messages::WebPage::DidReceivePolicyDecision>(arguments, this, &WebPage::didReceivePolicyDecision);
59865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
59965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::CloseID:
60065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        CoreIPC::handleMessage<Messages::WebPage::Close>(arguments, this, &WebPage::close);
60165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
60265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::PreferencesDidChangeID:
60365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        CoreIPC::handleMessage<Messages::WebPage::PreferencesDidChange>(arguments, this, &WebPage::preferencesDidChange);
60465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
60565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::SendDoubleAndFloatID:
60665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        CoreIPC::handleMessage<Messages::WebPage::SendDoubleAndFloat>(arguments, this, &WebPage::sendDoubleAndFloat);
60765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
60865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::SendIntsID:
60965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        CoreIPC::handleMessage<Messages::WebPage::SendInts>(arguments, this, &WebPage::sendInts);
61065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
6112bde8e466a4451c7319e3a072d118917957d6554Steve Block#if PLATFORM(MAC)
61265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::DidCreateWebProcessConnectionID:
61365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        CoreIPC::handleMessage<Messages::WebPage::DidCreateWebProcessConnection>(arguments, this, &WebPage::didCreateWebProcessConnection);
61465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
6152bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif
61665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    default:
61765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
61865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
61965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
62065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    ASSERT_NOT_REACHED();
62165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
62265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochCoreIPC::SyncReplyMode WebPage::didReceiveSyncWebPageMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, CoreIPC::ArgumentEncoder* reply)
62465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
62565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    switch (messageID.get<Messages::WebPage::Kind>()) {
62665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::CreatePluginID:
62765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        CoreIPC::handleMessage<Messages::WebPage::CreatePlugin>(arguments, reply, this, &WebPage::createPlugin);
62865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return CoreIPC::AutomaticReply;
62965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::RunJavaScriptAlertID:
63065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        CoreIPC::handleMessage<Messages::WebPage::RunJavaScriptAlert>(arguments, reply, this, &WebPage::runJavaScriptAlert);
63165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return CoreIPC::AutomaticReply;
63265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::GetPluginsID:
63365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        CoreIPC::handleMessage<Messages::WebPage::GetPlugins>(arguments, reply, this, &WebPage::getPlugins);
63465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return CoreIPC::AutomaticReply;
63565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::GetPluginProcessConnectionID:
6362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        CoreIPC::handleMessageDelayed<Messages::WebPage::GetPluginProcessConnection>(connection, arguments, reply, this, &WebPage::getPluginProcessConnection);
6372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        return CoreIPC::ManualReply;
6382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    case Messages::WebPage::TestMultipleAttributesID:
6392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        CoreIPC::handleMessageDelayed<Messages::WebPage::TestMultipleAttributes>(connection, arguments, reply, this, &WebPage::testMultipleAttributes);
6402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        return CoreIPC::ManualReply;
64165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if PLATFORM(MAC)
64265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    case Messages::WebPage::InterpretKeyEventID:
64365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        CoreIPC::handleMessage<Messages::WebPage::InterpretKeyEvent>(arguments, reply, this, &WebPage::interpretKeyEvent);
64465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return CoreIPC::AutomaticReply;
64565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
64665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    default:
64765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        break;
64865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    }
64965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
65065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    ASSERT_NOT_REACHED();
65165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    return CoreIPC::AutomaticReply;
65265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
65365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
65465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace WebKit
65565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
65665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // ENABLE(WEBKIT2)
65765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch"""
65865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
65965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
66065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass GeneratedFileContentsTest(unittest.TestCase):
66165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    def assertGeneratedFileContentsEqual(self, first, second):
66265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        first_list = first.split('\n')
66365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        second_list = second.split('\n')
66465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
66565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        for index, first_line in enumerate(first_list):
66665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch            self.assertEquals(first_line, second_list[index])
66765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
66865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        self.assertEquals(len(first_list), len(second_list))
66965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
67065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
67165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass HeaderTest(GeneratedFileContentsTest):
67265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    def test_header(self):
67365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        file_contents = messages.generate_messages_header(StringIO(_messages_file_contents))
67465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        self.assertGeneratedFileContentsEqual(file_contents, _expected_header)
67565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
67665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
67765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass ReceiverImplementationTest(GeneratedFileContentsTest):
67865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    def test_receiver_implementation(self):
67965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        file_contents = messages.generate_message_handler(StringIO(_messages_file_contents))
68065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        self.assertGeneratedFileContentsEqual(file_contents, _expected_receiver_implementation)
68165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
68265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
68365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochif __name__ == '__main__':
68465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    unittest.main()
685