18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * Copyright (C) 2010 Apple Inc. All rights reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    documentation and/or other materials provided with the distribution.
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
13f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch * THE POSSIBILITY OF SUCH DAMAGE.
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h"
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "ContextMenu.h"
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
29f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#if USE(CROSS_PLATFORM_CONTEXT_MENUS)
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore {
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
33f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochContextMenu::ContextMenu()
345f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{
355f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian}
36e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block
37f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochstatic const ContextMenuItem* findItemWithAction(unsigned action, const Vector<ContextMenuItem>& items)
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
39f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    for (size_t i = 0; i < items.size(); ++i) {
40f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        const ContextMenuItem& item = items[i];
41f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        if (item.action() == action)
42f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch            return &item;
43f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        if (item.type() != SubmenuType)
44f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch            continue;
45f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch        if (const ContextMenuItem* subMenuItem = findItemWithAction(action, item.subMenuItems()))
46f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch            return subMenuItem;
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
48bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen
49f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    return 0;
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
52f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochContextMenuItem* ContextMenu::itemWithAction(unsigned action)
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
54f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    // FIXME: When more platforms switch over, this fucntion should return a const ContextMenuItem*'s, and the const_cast
55f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    // won't be needed anymore.
56f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    return const_cast<ContextMenuItem*>(findItemWithAction(action, m_items));
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
59231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} // namespace WebCore
60231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block
61f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#endif // USE(CROSS_PLATFORM_CONTEXT_MENUS)
62